Genomströmning av gränssnitt.

Bandbredden för ett datagränssnitt (överföringshastighet) är den maximala hastighet med vilken data kan överföras över ett givet gränssnitt. Blanda inte ihop bandbredden för ett gränssnitt med bandbredden för de enskilda enheterna som är anslutna till det. Många gränssnitt är inte kapabla att överföra data så snabbt som möjligt på grund av deras inneboende overhead. Vissa adaptrar har CPU-lösa maskinvarubearbetningsmöjligheter som förbättrar prestandan, hanterbarheten och tillförlitligheten för dataöverföring över gränssnittet. För gränssnitten som listas i tabellen baseras genomströmningarna på en enportsöverföring i halvduplexläge.

Skillnader i kodningsscheman i bitar och byte

Bandbredder för lagringssystem anges vanligtvis i MB/s. Många gränssnitt använder ett 8b/10b-kodningsschema som mappar 8-bitars byte till 10-bitars tecken för fysisk lageröverföring, med de extra bitarna som används för kontroll. Därför, för sådana gränssnitt, betraktas genomströmningen i MB/s som genomströmningen i Mb/s dividerad med 10. Overheaden för 8b/10b-kodningsschemat är 20 % (10-8)/10.

Från och med 10 Gb Ethernet och 10 Gb Fibre Channel (för ISL), används ett 64b/66b-kodningsschema med förbättrad effektivitet. Schema 64b/66b var designad för hög bandbredd FC och InfiniBand. I sig själv är 64b/66b-kodning inte kompatibel med 8b/10b, men ibland kan enheter på hårdvarunivå stödja implementeringen av det gamla schemat.

16 Gb Fibre Channel har en linjehastighet på 14,025 Gbps, men med ett 64b/66b-kodningsschema har den dubbelt så mycket kapacitet som 8 Gb Fibre Channel, som har en linjehastighet på 8,5 Gbps. 64b/66b-kodning medför 3 % overhead (66-64)/66.

PCIe-versionerna 1.x och 2.x använder 8b/10b-kodningsschemat. PCIe version 3 använder 128b/130b för bara 1,5 % overhead.

Kodningsscheman

Kodningsschema Allmänna omkostnader Gränssnitt
8b/10b 20% 1GbE, FC (upp till 8Gb), IB (SDR, DDR, QDR), PCIe (1.0 och 2.0), SAS (1.0, 2.0 och 3.0), SATA, USB (upp till 3.0)
64b/66b 3% 10GbE, 100GbE, FC(10/16/32Gb), FCoE, IB (FDR och EDR), Thunderbolt 2
128b/130b 1.5% PCIe (3.0 och 4.0)
128b/132b 3% USB 3.1 Gen2 (10 Gbps)
128b/150b14.7% SAS 4.0

Fiberkanals bandbredd

Gränssnitt Bandbredd Linjehastighet Kodningsschema Värdadapter
1 Gb FC 100 MB/s 1,0625GBaud 8b/10b PCI-X
2GB FC 200 MB/s 2,125 GBaud 8b/10b PCI-X
4Gb FC 400 MB/s 4,25 GBaud 8b/10b PCI-X 2.0 eller PCIe 1.0 x4
8Gb FC 800 MB/s 8,5 GBaud 8b/10b PCI-X 1.0 x8 eller PCIe 2.0 x4
16 Gb FC 1600MB/s 14,025 GBaud 64b/66b PCI-X 2.0 x8 eller PCIe 3.0 x4
32 Gb FC 3200MB/s 28,05 GBaud 64b/66b PCIe 3.0 x8
64 Gb FC6400MB/s28,9 GBaud64b/66bPCIe 4.0

Bandbredd InfiniBand


1X 4X 12X Kodningsschema Värdadapter
SDR 2 Gb/s 8 Gb/s 24Gb/s 8b/10b PCIe 1.0 x8
DDR 4 Gb/s 16 Gb/s 48 Gb/s 8b/10b PCIe 1.0 x16 eller PCIe 2.0 x8
QDR 8 Gb/s 32 Gb/s 96 Gb/s 8b/10b PCIe 2.0 x8
Endast FDR-10* Mellanox 10,31 Gb/s 41,25 Gb/s 123,75 Gb/s 64b/66b PCIe 3.0 x8
FDR 13,64 Gb/s 54,55 Gb/s 163,64 Gb/s 64b/66b PCIe 3.0 x8
EDR 25 Gb/s 100 Gb/s 300 Gb/s 64b/66b PCIe 3.0 x16

Jämförelsetabell för gränssnitt

Gränssnitt Antal enheter Max avstånd (m) kabeltyp Implementering av gränssnittskontroller Överföringshastighet (MB/s) Gränssnittsattribut
FC 16M 10 (kopparkabel) eller mer än 10 km (fiberkabel) Koppar eller fiberoptik Valfri adapter (HBA) 100, 200, 400, 800, 1600, 3200 två-portar
FCoE 16M 10 (kopparkabel) eller extra stor (fiberkabel) Koppar eller fiberoptik Converged Network Adapter (CNA) eller 10GbE Network Adapter (NIC) 1150, 4600 två-portar
Infiniband 48M 15 (kopparkabel) eller mycket stor (fiberkabel) Koppar eller fiberoptik Valfri adapter (HCA) 1000, 2000, 4000, 7000, 12500
iSCSI Massa avstånd resp. Ethernet-kabel Koppar eller fiberoptik Nätverksadapter (NIC) eller valfri adapter(HBA) 100, 1000, 2500, 4000
SAS (passiv) 16K 10 Koppar 300, 600, 1200 full duplex, dubbla portar
SAS (aktiv) 16K 20 Koppar Inbäddad i chipset eller tilläggsadapter (HBA) 300, 600, 1200 full duplex, dubbla portar
SAS (aktiv) 16K 100 fiberoptisk Inbäddad i chipset eller tilläggsadapter (HBA) 300, 600, 1200, 2400 full duplex, dubbla portar
SATA 1 1 Koppar Inbäddad i chipset eller tilläggsadapter (HBA) 150, 300, 600 halv duplex, enkel port
Blixt 6 4 Koppar Inbyggd i chipset 1000, 2000, 4000
USB 127 5 koppar eller Trådlös anslutning Integrerad i chipset eller valfri adapter (adapterkort) 0.15, 1.5, 48, 500, 1000 enda port

Gigabit Ethernet-standarden som använder Kategori 5 (Oskärmad Twisted Pair)-kabel som överföringsmedium, beskriven i IEEE 802.3ab, godkändes slutligen den 28 juni 1999.

Tiden har gått, och nu kan vi redan säga att gigabit Ethernet över "koppar" har gått in i utvecklingshistorien. lokala nätverk. Ett kraftigt prisfall som för gigabit nätverkskort 1000Base-T och gigabit-moduler till switchar ledde gradvis till att installationen av sådana adaptrar i servrar blir de facto-standarden. Till exempel har vissa servertillverkare redan börjat integrera 1000Base-T gigabit-adaptrar i servern moderkort, och antalet företag som tillverkar sådana adaptrar nådde 25 i början av detta år. Dessutom började adaptrar designade för installation i arbetsstationer produceras (de skiljer sig åt genom att de är designade för en 32-bitars 33-MHz PCI-buss) . Allt detta gör att vi med tillförsikt kan säga att om ett år eller två gigabit nätverksadaptrar kommer att bli lika vanliga som Fast Ethernet-adaptrar är nu.

Tänk på de grundläggande innovationerna som ingår i IEEE 802.3ab-standarden och som gjorde det möjligt att uppnå en så hög överföringshastighet, samtidigt som man bibehöll samma maximala avstånd mellan två datorer på 100 m, som var fallet i Fast Ethernet-standarden.

Först och främst minns vi att nätverksadaptrar fungerar på de fysiska och datalänkslagren i sju-lagers OSI-modellen (Open System Interconnection). Länkskiktet är vanligtvis uppdelat i två underskikt: MAC och LCC. MAC-underskiktet (Media Access Control) är en undernivå av åtkomstkontroll till dataöverföringsmediet, vilket säkerställer korrekt delning av ett gemensamt delat dataöverföringsmedium, tillhandahållande det i enlighet med en viss algoritm till förfogande för en viss station. LCC (Logical Link Control) underskiktet ansvarar för överföringen av ramar mellan noder med varierande grad av tillförlitlighet, och implementerar även gränssnittsfunktionerna med det tredje (nätverks)skiktet intill det.

Alla skillnader mellan Ethernet och Fast Ethernet är endast koncentrerade till det fysiska lagret. Samtidigt har MAC och LCC inte genomgått några förändringar.

Det fysiska lagret kan grovt delas in i tre element: förhandlingslagret, mediaoberoende gränssnitt (MII) och fysisk lagerenhet (PHY). Den fysiska skiktanordningen kan också delas in i flera underskikt: ett fysiskt kodande underskikt, ett fysiskt mediumfästningsunderskikt, ett fysiskt mediumberoende underskikt och ett automatiskt förhandlingsunderskikt.

Om skillnaderna mellan Ethernet och Fast Ethernet är minimala och inte påverkar MAC-lagret, då när man utvecklar en standard gigabit ethernet 1000Base-T-utvecklare var tvungna att inte bara göra ändringar i det fysiska lagret, utan också påverka MAC-lagret (Fig. 1).

Ändå finns det många likheter mellan alla tre teknologierna. Först och främst är detta en metod för åtkomst till CSMA / CD-dataöverföringsmediet, halv-duplex och full-duplex driftlägen, såväl som Ethernet-ramformat. Samtidigt krävde användningen av en tvinnad kategori 5-kabel stora förändringar av det fysiska skiktets implementering av adaptern.

Det första problemet med att implementera 1 Gbps var att säkerställa en acceptabel nätverksdiameter vid drift i halvduplexläge. Som ni vet är den minsta ramstorleken i Ethernet-nätverk och Fast Ethernet är 64 byte. En ramstorlek på 64 byte vid en överföringshastighet på 1 GB/s leder dock till det faktum att det för tillförlitlig kollisionsdetektion är nödvändigt att den maximala nätverksdiametern (avståndet mellan de två mest avlägsen vän från varandra av datorer) var inte mer än 25 m. Faktum är att framgångsrik kollisionsdetektering endast är möjlig om tiden mellan sändning av två på varandra följande ramar av minsta längd är större än dubbelt så lång signalutbredningstid mellan två noder i nätverket. är så långt ifrån varandra som möjligt. Därför, för att ge en maximal nätverksdiameter på 200 m (två 100 m kablar och en switch), har den minsta ramlängden i Gigabit Ethernet-standarden utökats till 512 byte. För att öka ramlängden till den önskade längden, paddar nätverksadaptern datafältet till en längd av 448 byte med en så kallad förlängning. Tilläggsfältet är ett fält fyllt med förbjudna tecken som inte kan förväxlas med datakoder (Fig. 2). Samtidigt har en ökning av den minsta ramlängden en negativ effekt på överföringen av korta tjänstemeddelanden, såsom kvitton, eftersom den användbara överförda informationen blir betydligt mindre än den totala överförda informationen. För att minska omkostnaderna vid användning av långa ramar för att överföra korta kvitton tillåter Gigabit Ethernet-standarden överföring av flera ramar i rad i läget för exklusiv infångning av mediet, det vill säga utan att överföra mediet till andra stationer. Detta exklusiva inspelningsläge kallas Burst Mode. I detta läge kan stationen sända flera bildrutor i rad med en total längd på högst 8192 byte (BurstLength).

Som redan noterats, tillsammans med förändringen i MAC-lagret, blev uppnåendet av gigabit-överföringshastigheter möjligt på grund av en betydande förändring i det fysiska lagret, det vill säga tekniken för datapresentation (kodning) under dataöverföring över tvinnat par.

För att förstå de förändringar som har gjorts på den fysiska nivån, låt oss komma ihåg vad en datakabel är och vilka störningar som uppstår under signalöverföring.

Kategori 5 oskärmad kabel består av fyra par ledningar, med varje par tvinnade ihop. En sådan kabel är utformad för att fungera vid en frekvens på 100 MHz (fig. 3).

Det är känt från fysikens lopp att vilken kabel som helst har, förutom aktiva, även kapacitiva och induktiva resistanser, de två senare beror på signalens frekvens. Alla tre typerna av resistans bestämmer den så kallade kretsimpedansen. Närvaron av impedans leder till det faktum att när signalen fortplantar sig längs kabeln, dämpas den gradvis och förlorar en del av sin ursprungliga effekt.

Om den ömsesidiga induktionen beräknas i början av kabeln, kommer motsvarande typ av störning att kallas NEXT (Near-end crosstalk loss). Om störningar orsakade av ömsesidig induktion beaktas i änden av kabeln, kallas de FEXT (Far-end crosstalk loss - Fig. 4).

Dessutom, under signalutbredning, uppstår en annan typ av störning, associerad med en oöverensstämmelse mellan ingångsimpedansen för nätverksadaptern och kabeln. Som ett resultat av denna missanpassning uppstår en reflektion av signalen, vilket också leder till bildandet av brus.

Överföringen av signaler under de ovan beskrivna störningsförhållandena kräver användning av geniala metoder för att säkerställa den nödvändiga överföringshastigheten och samtidigt säkerställa en felfri igenkänning av de sända signalerna.

Låt oss först och främst komma ihåg vilka metoder som används för att representera informationssignaler.

Vid digital kodning av bit "nollor" och "ettor" används antingen potential- eller pulskoder. I potentialkoder (fig. 5) används endast värdet på signalpotentialen för att representera logiska nollor och ettor. Till exempel representeras ett som en högnivåpotential och noll representeras som en lågnivåpotential. Pulskoder tillåter att bitar representeras av ett potentiellt fall i en viss riktning. Så potentialfallet från en låg nivå till en hög nivå kan motsvara en logisk nolla.

Vid användning av rektangulära pulser för dataöverföring är det nödvändigt att välja en kodningsmetod som samtidigt uppfyller flera krav.

För det första, med samma bithastighet, skulle den ha den minsta bredden av spektrumet för den resulterande signalen.

För det andra skulle han ha förmågan att känna igen fel.

För det tredje skulle det ge synkronisering mellan mottagaren och sändaren.

NRZ-kod

I det enklaste fallet med potentialkodning kan en logisk etta representeras av en hög potential och en logisk nolla av en låg potential. Ett liknande sätt att representera signalen kallas "kodning utan återgång till noll, eller kodning av NRZ (Non Return to Zero)". Termen "ingen retur" betyder i detta fall att det inte sker någon förändring i signalnivån under hela klockintervallet. NRZ-metoden är lätt att implementera, har bra feligenkänning, men har inte egensynkroniseringsegenskapen. Bristen på självsynkronisering leder till det faktum att när långa sekvenser av nollor eller ettor dyker upp, kan mottagaren inte avgöra från ingångssignalen de tidpunkter då det är nödvändigt att läsa data igen. Därför kan en liten missanpassning mellan mottagarens och sändarens klockfrekvenser leda till fel om mottagaren läser data vid fel tidpunkt när det behövs. Detta är särskilt viktigt när höga hastigheter sändning när tiden för en puls är extremt kort (vid en överföringshastighet på 100 Mbps är tiden för en puls 10 ns). En annan nackdel med NRZ-koden är närvaron av en lågfrekvent komponent i signalspektrat när långa sekvenser av nollor eller ettor visas. Därför används inte NRZ-koden i sin rena form för dataöverföring.

NRZI-kod

En annan typ av kodning är en något modifierad NRZ-kod som kallas NRZI (Non Return to Zero with one Inverted). NRZI-koden är den enklaste implementeringen av principen för signalnivåändring eller differentialkodning. Med denna kodning, när noll sänds, ändras inte signalnivån, det vill säga signalpotentialen förblir densamma som i föregående cykel. När en enhet överförs inverteras potentialen till det motsatta. Jämförelse av NRZ- och NRZI-koder visar att NRZI-koden har bättre självsynkronisering om det finns fler logiska ettor i den kodade informationen än logiska nollor. Således låter den här koden dig "kämpa" med långa sekvenser av ettor, men ger inte korrekt självsynkronisering när långa sekvenser av logiska nollor visas.

Manchester kod

I Manchester-koden används en potentialskillnad för att koda nollor och ettor, det vill säga kodningen utförs av fronten av pulsen. Potentialfallet sker i mitten av klockpulsen, medan enheten kodas av fallet från låg till hög potential, och noll är vice versa. I början av varje cykel, i händelse av att flera nollor eller ettor i rad dyker upp, kan ett servicepotentialfall inträffa.

Av alla koder vi har övervägt har Manchester den bästa självsynkroniseringen, eftersom signalövergången sker minst en gång per klockcykel. Det är därför Manchester-koden används i Ethernet-nätverk med en överföringshastighet på 10 Mbps (10Base 5, 10Base 2, 10Base-T).

MLT-3-kod

MLT-3-koden (Multi Level Transmission-3) implementeras på samma sätt som NRZI-koden. Nivåändring linjesignal inträffar endast om kodarens ingång är en, men till skillnad från NRZI-koden väljs genereringsalgoritmen på ett sådant sätt att två intilliggande ändringar alltid har motsatta riktningar. Nackdelen med MLT-3-koden är densamma som NRZI-koden - bristen på korrekt synkronisering när långa sekvenser av logiska nollor visas.

Som redan nämnts skiljer sig olika koder från varandra inte bara i graden av självsynkronisering utan också i spektrumets bredd. Signalspektrats bredd bestäms i första hand av de övertoner som utgör huvudenergibidraget till signalbildningen. Grundövertonen är lätt att beräkna för varje typ av kod. I NRZ- eller NRZI-koden motsvarar den maximala frekvensen för grundövertonen (fig. 6) en periodisk sekvens av logiska nollor och ettor, det vill säga när flera nollor eller ettor inte förekommer i en rad. I detta fall är perioden för den grundläggande övertonen lika med tidsintervallet för två bitar, det vill säga vid en överföringshastighet på 100 Mbps bör frekvensen för den grundläggande övertonen vara 50 Hz.

I Manchester-koden motsvarar den maximala frekvensen för den grundläggande övertonen situationen när en lång sekvens av nollor kommer in i kodaringången. I detta fall är perioden för den grundläggande övertonen lika med tidsintervallet för en bit, det vill säga vid en överföringshastighet på 100 Mbps kommer den maximala frekvensen för den grundläggande övertonen att vara 100 Hz.

I MLT-3-koden uppnås den maximala frekvensen för grundövertonen (fig. 7) när långa sekvenser av logiska enheter matas till kodaringången. I detta fall motsvarar perioden för grundövertonen ett tidsintervall på fyra bitar. Därför, vid en överföringshastighet på 100 Mbps, kommer den maximala grundfrekvensen att vara 25 MHz.

Som redan nämnts används Manchester-kodning i 10 Mbps Ethernet-nätverk, vilket är förknippat med både goda självsynkroniserande egenskaper hos koden och den tillåtna maximala frekvensen för den grundläggande övertonen, som, när den arbetar med en hastighet av 10 Mbps, kommer att vara 10 MHz. Detta värde är tillräckligt för en kabel inte bara av den 5: e, utan också av den 3: e kategorin, som är designad för en frekvens på 20 MHz.

Samtidigt är användningen av Manchester-kodning för nätverk med högre hastighet (100 Mbps, 1 Gbps) oacceptabel, eftersom kablarna inte är designade för att fungera vid så höga frekvenser. Därför används andra koder (NRZI och MLT-3), men de utsätts för ytterligare bearbetning för att förbättra kodens självsynkroniserande egenskaper.

Redundanta koder

Sådan ytterligare bearbetning består av logisk blockkodning, när en grupp av bitar ersätts med en annan grupp enligt en viss algoritm. De vanligaste typerna av sådan kodning är 4B/5B, 8B/6T och 8B/10T redundanta koder.

I dessa koder ersätts de ursprungliga grupperna av bitar av nya men längre grupper. I 4B/5B-koden mappas en grupp med fyra bitar till en grupp på fem bitar. Frågan uppstår - varför behöver vi alla dessa komplikationer? Faktum är att sådan kodning är överflödig. Till exempel, i 4B/5B-koden, i den ursprungliga sekvensen av fyra bitar, finns det 16 olika bitkombinationer av nollor och ettor, och i en grupp på fem bitar finns det redan 32 sådana kombinationer. Därför, i den resulterande koden, du kan välja 16 sådana kombinationer som inte innehåller ett stort antal nollor (kom ihåg att i källkoderna NRZI och MLT-3 leder långa sekvenser av nollor till förlust av synkronisering). I det här fallet kan de återstående oanvända kombinationerna betraktas som förbjudna sekvenser. Sålunda, förutom att förbättra källkodens självsynkroniserande egenskaper, tillåter redundant kodning mottagaren att känna igen fel, eftersom uppkomsten av en förbjuden bitsekvens indikerar förekomsten av ett fel. Överensstämmelse mellan initiala och resulterande koder resulteras i tab. ett .

Det kan ses från tabellen att efter användning av den redundanta 4B/5B-koden innehåller de resulterande sekvenserna inte mer än två nollor i rad, vilket garanterar självsynkronisering av bitsekvensen.

I 8B/6T-koden ersätts sekvensen av åtta bitar av den ursprungliga informationen med en sekvens av sex signaler, som var och en kan ta tre tillstånd. Det finns 256 olika tillstånd i en åttabitarssekvens, och i en sekvens med sex trenivåsignaler finns det redan 729 sådana tillstånd (3 6 = 729), så 473 tillstånd anses vara förbjudna.

I 8B/10T-koden ersätts varje åttabitarssekvens med en tiobitarssekvens. I det här fallet innehåller den ursprungliga sekvensen 256 olika kombinationer av nollor och ettor, och den resulterande sekvensen innehåller 1024. Således är 768 kombinationer förbjudna.

Alla betraktade redundanta koder används i Ethernet-nätverk. Således används 4B/5B-koden i 100Base-TX-standarden och 8B/6T-koden används i 100Base-4T-standarden, som praktiskt taget inte används längre. 8B/10T-koden används i 1000Base-X-standarden (när fiber används som överföringsmedium).

Förutom användningen av redundant kodning används också en annan metod för att förbättra koders initiala egenskaper - det här är den så kallade förvrängningen.

Förvrängning

Förvrängning (scramble - mixning) är att blanda den ursprungliga sekvensen av nollor och ettor för att förbättra de spektrala egenskaperna och självsynkroniserande egenskaperna hos den resulterande bitsekvensen. Kryptering utförs genom bitvis exklusivt ELLER (XOR) av den ursprungliga sekvensen med en pseudo-slumpmässig sekvens. Resultatet är en "krypterad" ström, som återställs på mottagarsidan med hjälp av en descrambler.

Ur hårdvarusynpunkt består en scrambler av flera XOR-grindar och skiftregister. Kom ihåg att det logiska elementet XOR (exklusivt ELLER) utför en logisk operation på två booleska operander x och y, som kan ta värdet 0 eller 1, baserat på sanningstabellen (tabell 2).

Huvudegenskapen för XOR-operationen följer direkt från denna tabell:

Dessutom är det lätt att se att kombinationslagen gäller för XOR-operationen:

I diagrammen är det logiska XOR-elementet vanligtvis betecknat som visas i fig. åtta.

Som redan noterats är en annan komponent i förvrängaren skiftregistret. Skiftregistret består av flera elementära lagringsceller kopplade i serie med varandra, gjorda på basis av triggerkretsar och sänder en informationssignal från ingång till utgång via en styrsignal - en tidspuls. Skiftregister kan svara på både den positiva flanken av klockpulsen (det vill säga när styrsignalen går från tillstånd 0 till tillstånd 1), och till den negativa flanken.

Betrakta den enklaste lagringscellen i skiftregistret, styrd av den positiva flanken på klockpulsen C (fig. 9).

Vid tidpunkten för ändring av tidspulsen från tillstånd 0 till tillstånd 1, sänds signalen som fanns vid dess ingång vid föregående tidpunkt, det vill säga när styrsignalen C var lika med 0, till cellutgången. att utgångstillståndet inte ändras (cellen är låst) fram till ankomsten av nästa positiva flank på klockpulsen.

Med hjälp av en kedja som består av flera sekventiellt anslutna minnesceller med samma styrsignal är det möjligt att skapa ett skiftregister (fig. 10), i vilket informationsbitar kommer att sekventiellt överföras från en cell till en annan synkront längs den positiva kanten av klockpuls.

Ett integrerat element i varje scrambler är en pseudo-slumpmässig sekvensgenerator. En sådan generator bildas från skiftregistret vid skapandet respons mellan ingångarna och utgångarna från lagringscellerna i skiftregistret genom XOR-logikelement.

Betrakta pseudo-slumpsekvensgeneratorn som visas i fig. elva . Låt vid det inledande ögonblicket alla fyra minnescellerna lagra något förinställt tillstånd. Till exempel kan vi anta att Q1=1, Q2=0, Q3=0 och Q4=1, och vid ingången av den första cellen D=0. Efter ankomsten av tidspulsen kommer alla bitar att skifta med en bit, och en signal kommer att anlända till ingång D, vars värde kommer att bestämmas av formeln:

Med hjälp av denna formel är det lätt att bestämma värdena för utgångarna från lagringscellerna vid varje klockcykel för generatorn. I tabell. 3 visar tillståndet för utsignalerna från minnescellerna hos pseudoslumpsekvensgeneratorn vid varje operationscykel. Samtidigt är det lätt att se att i det första ögonblicket och efter 15 cykler upprepas generatorns tillstånd helt, det vill säga 15 arbetscykler är upprepningsperioden för vår pseudo-slumpmässiga sekvens (det är från närvaron av en upprepningsperiod som sekvensen kallas pseudo-slumpmässig). I allmänhet, om generatorn består av n celler, är upprepningsperioden:

Generatorn som vi ansåg använde ett godtyckligt initialtillstånd för cellerna, det vill säga den hade en förinställning. Men istället för en sådan förinställning använder scramblers ofta själva originalsekvensen, som krypteras. Sådana scramblers kallas självsynkroniserande. Ett exempel på en sådan scrambler visas i fig. 12 .

Om vi ​​anger den binära siffran i källkoden, mottagen vid den i:te arbetscykeln vid ingången till förvrängaren, genom Ai, och den binära siffran för den resulterande koden som erhålls vid den i:te arbetscykeln, genom Bi, då är det lätt att se att förvrängaren i fråga utför följande logiska operation: , där Bi -3 respektive Bi -4 - binära siffror i den resulterande koden som erhållits i de föregående cyklerna av förvrängaren, 3 och 4 cykler tidigare än det aktuella ögonblicket.

Efter avkodning av den sålunda erhållna sekvensen används en avkodare på mottagarsidan. Det mest fantastiska är att descramblerens krets är helt identisk med scramblerns krets. Det är inte svårt att verifiera att så verkligen är fallet med enkla resonemang. Om vi ​​betecknar med B i den binära siffran i källkoden som kommer till den i:te arbetscykeln vid ingången till avkodaren, och den binära siffran för den resulterande koden som erhålls vid den i:te arbetscykeln, med C i , sedan måste avkodaren, som arbetar enligt samma schema som förvrängaren, implementera följande algoritm:

Därför, om avkodningsschemat matchar förvrängningsschemat, återställer avkodaren fullständigt den ursprungliga sekvensen av informationsbitar.

Den betraktade fyra-bitars scrambler-kretsen är en av de enklaste. 1000Base-T-teknologin använder en mycket mer komplex 33-bitars scrambler, som ökar repetitionsperioden till 8 589 934 591 bitar (2 33 -1), det vill säga de genererade pseudoslumpmässiga sekvenserna upprepas var 68,72:e s.

PAM-5-kodning

Efter att ha tagit reda på vilka koder som används för att representera data och överväga metoder för att förbättra dessa koders självklockning och spektrala egenskaper, kommer vi att försöka ta reda på om dessa åtgärder är tillräckliga för att säkerställa dataöverföring med en hastighet av 1000 Mbps med hjälp av en fyra-par Kategori 5-kabel.

Som redan noterats har Manchester-kodning goda självsynkroniserande egenskaper och kräver i denna mening inga modifieringar, men den maximala frekvensen för den grundläggande övertonen är numeriskt lika med datahastigheten, det vill säga antalet överförda bitar per sekund. Detta är tillräckligt för dataöverföring med en hastighet av 10 Mbps, eftersom kabeln i den tredje kategorin (och i 10Base-T-standarden kan en sådan kabel användas) är begränsad till frekvenser på 16 MHz. Manchester-kodning är dock inte lämplig för dataöverföringshastigheter på 100 Mbps eller högre.

Användningen av NRZI-koden, efter ytterligare förfining med en redundant 4B/5B-blockkod och förvrängning, samt en trepositions MLT-3-kod (för att reducera den maximala frekvensen av den grundläggande övertonen), tillåter data att överföras vid en hastighet på 100 Mbps över en kategori 5-kabel. När MLT-3-koden används är den maximala frekvensen för den grundläggande övertonen numeriskt lika med en fjärdedel av dataöverföringshastigheten, det vill säga vid en överföringshastighet på 100 Mbps överstiger inte grundfrekvensen 25 MHz, vilket räcker för en kategori 5-kabel. Denna metod är dock inte lämplig för dataöverföring med en hastighet på 1000 Mbps.

Därför använder 1000Base-T-standarden en fundamentalt annorlunda kodningsmetod. För att minska klockfrekvensen till värden som gör att data kan överföras över kategori 5-tvinnade par, representeras data på linjen i den så kallade PAM-5-koden (Fig. 13). I den har den sända signalen en uppsättning av fem fasta nivåer (-2, -1, 0, +1, +2). Fyra av dem används för att koda informationsbitar, och den femte är för felkorrigering. På en uppsättning av fyra fasta nivåer kan ett diskret signaltillstånd koda två informationsbitar samtidigt, eftersom en kombination av två bitar har fyra möjliga kombinationer (de så kallade dibitarna) - 00, 01, 10 och 11.

Genom att byta till dibit kan du dubbla bithastigheten. För att skilja mellan bit, eller information, hastighet och hastigheten för olika diskreta signaltillstånd, introduceras begreppet baudhastighet. Baud är antalet olika diskreta signaltillstånd per tidsenhet. Därför, om två bitar är kodade i ett diskret tillstånd, är bithastigheten två gånger baudhastigheten, dvs 1 baud = 2 bps.

Om vi ​​tar hänsyn till att kabeln i den 5:e kategorin är designad för en frekvens på 125 MHz, det vill säga den kan fungera med en baudhastighet på 125 MBaud, kommer informationshastigheten över ett tvinnat par att vara 250 Mbps. Kom ihåg att det finns fyra tvinnade par i kabeln, så om du använder alla fyra paren (fig. 14), kan du öka överföringshastigheten till 250 Mbps4 = 1000 Mbps, det vill säga uppnå önskad hastighet.

Som redan nämnts finns det fem diskreta nivåer i PAM-5-kodning, men endast fyra nivåer används för att överföra dibitar. Den femte redundanta kodnivån (Forward Error Correction, FEC) används för konstruktionsmekanismen för felkorrigering. Den implementeras av en Trellis-kodare och en Viterbi-avkodare. Användningen av felkorrigeringsmekanismen gör det möjligt att öka mottagarens brusimmunitet med 6 dB.

Spaljékodning

Låt oss överväga principerna för spaljékodning baserad på den enklaste kodaren som består av två lagringsceller och XOR-element (Fig. 15). Låt ingången på en sådan kodare ta emot en bitsekvens 0101110010 med en hastighet av k bitar/s. Om en läscell är installerad vid kodarens utgång, som arbetar med dubbelt så hög frekvens som bithastigheten vid kodaringången, hastigheten för utströmmen kommer att vara dubbelt så hög som hastigheten för ingångsströmmen. I detta fall läser läscellen för kodarens första halvcykel data först från det logiska elementet XOR 2 och den andra halvan av cykeln - från det logiska elementet XOR 3. Som ett resultat tilldelas varje ingångsbit två utgångsbitar, det vill säga en dibit, vars första bit utgörs av element XOR 2, och den andra - element XOR 3. Från tidsdiagrammet för kodartillståndet är det lätt att se att med ingångsbitsekvensen 0101110010, utgångssekvensen blir 00 11 10 00 01 10 01 11 11 10.

Låt oss notera en viktig egenskap hos principen för bildandet av dibiter. Värdet på varje genererad dibit beror inte bara på den inkommande informationsbiten utan också på de två föregående bitarna, vars värden lagras i två minnesceller. Om det antas att Ai är en inkommande bit, så bestäms värdet på XOR 2-elementet av uttrycket och värdet på XOR 3-elementet bestäms av uttrycket . Sålunda bildas en dibit av ett par bitar, varav värdet på den första är , och den andra är . Därför beror dibitvärdet på tre tillstånd: värdet på ingångsbiten, värdet på den första lagringscellen och värdet på den andra lagringscellen. Sådana kodare kallas tri-state (K = 3) faltningskodare med en utmatningshastighet på ½.

Det är bekvämt att överväga kodarens arbete på basis av inte tidsdiagram, utan det så kallade tillståndsdiagrammet. Kodarens tillstånd kommer att indikeras med två värden - värdena för den första och andra minnescellen. Till exempel, om den första cellen lagrar värdet 1 (Q1=1) och den andra cellen lagrar 0 (Q2=0), så beskrivs kodartillståndet av värdet 10. Det finns fyra olika kodartillstånd: 00, 01, 10 och 11.

Låt kodarens tillstånd vara lika med 00 vid någon tidpunkt. Vi är intresserade av vad kodarens tillstånd kommer att bli vid nästa tidpunkt och vilken dibit som kommer att genereras i detta fall. Det finns två möjliga utfall, beroende på vilken bit som går till kodarens ingång. Om 0 tas emot vid kodaringången kommer nästa tillstånd för kodaren också att vara 00, men om 1 tas emot kommer nästa tillstånd (det vill säga efter skiftet) att vara 10. Värdet på dibitarna som genereras i detta fall beräknas med formlerna och . Om kodarens ingång är 0, kommer dibit 00 () att genereras, om ingången är 1, kommer dibit 11 () att genereras. Det är bekvämt att visualisera resonemanget ovan med hjälp av tillståndsdiagrammet (fig. 16), där kodartillstånden indikeras i cirklar, och den inkommande biten och den genererade dibiten skrivs med ett snedstreck. Till exempel, om den inkommande biten är 1 och den genererade dibiten är 11, så skriver vi: 1/11.

Med fortsatt liknande resonemang för alla andra möjliga tillstånd hos kodaren är det lätt att konstruera ett komplett tillståndsdiagram, på basis av vilket värdet på dibiten som genereras av kodaren lätt kan beräknas.

Med hjälp av kodartillståndsdiagrammet är det enkelt att bygga ett timingdiagram av övergångar för den inmatade bitsekvensen 0101110010 som vi redan har övervägt. För att göra detta byggs en tabell, vars kolumner indikerar kodarens möjliga tillstånd, och rader visar tidpunkterna. De möjliga övergångarna mellan olika tillstånd hos kodaren indikeras med pilar (baserat på det fullständiga kodartillståndsdiagrammet - Fig. 17), ovanför vilka indikeras den ingångsbit som motsvarar denna övergång och motsvarande dibit. Till exempel, för de första två gångerna ser kodartillståndsdiagrammet ut som det som visas i fig. arton . Den röda pilen visar övergången som motsvarar den betraktade bitsekvensen.

Om vi ​​fortsätter att visa de möjliga och faktiska övergångarna mellan olika tillstånd hos kodaren motsvarande olika tidpunkter (fig. 19, , ), får vi ett komplett tidsdiagram över kodartillstånden (fig. 22).

Den största fördelen med ovanstående trelliskodningsmetod är dess brusimmunitet. Som kommer att visas senare, på grund av kodningsredundansen (kom ihåg att varje informationsbit är tilldelad en dibit, det vill säga kodredundansen är 2), även i fallet med mottagningsfel (till exempel, dibit 10 tas emot av misstag istället för dibit 11), kan den ursprungliga bitsekvensen omisskännligt återställas.

För att återställa den ursprungliga bitsekvensen på mottagarsidan används en Viterbi-avkodare.

Viterbi avkodare

Viterbi-avkodaren vid felfri mottagning av hela sekvensen av dibitar 00 11 10 00 01 10 01 11 11 10 kommer att ha information om denna sekvens, såväl som om kodarens struktur (det vill säga om dess tillstånd diagram) och om dess initiala tillstånd (00). Baserat på denna information måste han återställa den ursprungliga bitsekvensen. Låt oss överväga hur återställningen av den ursprungliga informationen sker.

Genom att känna till det initiala tillståndet för kodaren (00), såväl som möjliga förändringar i detta tillstånd (00 och 10), konstruerar vi ett tidsdiagram för de två första tidpunkterna (fig. 22). I detta diagram finns det bara två möjliga vägar från tillstånd 00, motsvarande olika ingångsdibiter. Eftersom avkodarens ingångsdibit är 00, fastställer vi, med hjälp av tillståndsdiagrammet för Trellis-kodaren, att nästa tillstånd för kodaren kommer att vara 00, vilket motsvarar den ursprungliga biten 0.

Vi har dock ingen 100 % garanti för att den mottagna dibiten 00 är korrekt, så vi bör ännu inte avfärda den andra möjliga vägen från tillstånd 00 till tillstånd 10, motsvarande dibit 11 och den ursprungliga biten 1. De två vägarna som visas i diagrammet skiljer sig från varandra andra så kallade felmått, som för varje väg beräknas enligt följande. För övergången som motsvarar den mottagna dibiten (det vill säga för den övergång som anses korrekt) tas felmåttet lika med noll, och för de återstående övergångarna beräknas det från antalet olika bitar i den mottagna dibiten och dibit motsvarande övergången i fråga. Till exempel, om den mottagna dibiten är 00 och dibiten som motsvarar övergången i fråga är 11, då är felmåttet för den övergången 2.

Under nästa tidsögonblick som motsvarar den mottagna dibiten 11 kommer två initiala kodartillstånd att vara möjliga: 00 och 10, och det kommer att finnas fyra sluttillstånd: 00, 01, 10 och 11 (fig. 23). Följaktligen, för dessa sluttillstånd, finns det flera möjliga vägar som skiljer sig från varandra i felmåttet. Vid beräkning av felmåttet är det nödvändigt att ta hänsyn till måttet för det tidigare tillståndet, det vill säga om måttet för tillstånd 10 för föregående gång var lika med 2, då när man flyttar från detta tillstånd till tillstånd 01, är felet måttenhet för det nya tillståndet (måttet för hela vägen) blir lika med 2 + 1 = 3 .

För nästa ögonblick som motsvarar den mottagna dibiten 10, noterar vi att två vägar leder till tillstånden 00, 01 och 11 (fig. 24). I det här fallet är det nödvändigt att endast lämna de övergångar som motsvarar ett mindre felmått. Dessutom, eftersom övergångar från tillstånd 11 till tillstånd 11 och till tillstånd 01 förkastas, kan övergången från tillstånd 10 till tillstånd 11 som motsvarar den föregående tidpunkten inte ha en fortsättning och kan därför också förkastas. På liknande sätt förkastas övergången som motsvarar det föregående tidsögonblicket från tillstånd 00 till 00.

Med fortsatt liknande resonemang kan vi beräkna metriken för alla möjliga vägar och avbilda alla möjliga vägar.

Samtidigt visar sig antalet möjliga vägar i sig inte vara så stort som det kan tyckas, eftersom de flesta av dem kasseras i byggprocessen, eftersom de inte har någon fortsättning (Fig. 25). Till exempel, på den sjätte cykeln av avkodaren, enligt den beskrivna algoritmen, återstår endast fyra möjliga vägar.

På liknande sätt, vid den sista cykeln av avkodaren, finns det endast fyra möjliga vägar (fig. 26), och den sanna vägen, som unikt återställer den ursprungliga bitsekvensen 0101110010, motsvarar felmåttet lika med 0.

När man konstruerar de övervägda tidsdiagrammen är det bekvämt att visa den ackumulerade felmätningen för olika kodartillstånd i form av en tabell. Det är denna tabell som är källan till informationen på grundval av vilken det är möjligt att återställa den ursprungliga bitsekvensen (tabell 4).

I det ovan beskrivna fallet antog vi att alla dibitar som togs emot av avkodaren var felfria. Betrakta vidare situationen när den mottagna sekvensen av dibiter innehåller två fel. Låt istället för den korrekta sekvensen 00 11 10 00 01 10 01 11 11 10, avkodaren får sekvensen 00 11 11 00 11 10 01 11 11 10, där den tredje och femte debiteringen är felaktig. Låt oss försöka tillämpa Viterbi-algoritmen som diskuterats ovan, baserat på att välja vägen med det minsta felmåttet, på en given sekvens och ta reda på om vi kan återställa den ursprungliga bitsekvensen i rätt form, det vill säga korrigera dåliga fel.

Fram till mottagandet av den tredje (misslyckade) dibiten skiljer sig inte algoritmen för beräkning av felmåttet för alla möjliga övergångar från det tidigare fallet. Fram till denna punkt hade vägen markerad i fig. 1 det minsta ackumulerade felmåttet. 27 i rött. Efter att ha tagit emot en sådan dibit finns det inte längre en väg med ett kumulativt felmått lika med 0. Men i det här fallet kommer två alternativa vägar med måttet 1. Därför är det omöjligt att ta reda på det i detta skede vilken bit av den ursprungliga sekvensen som motsvarar den mottagna dibiten.

En liknande situation kommer att uppstå när den femte (också felaktiga) dibiten tas emot (fig. 28). I det här fallet kommer det redan att finnas tre vägar med ett lika stort mått av ackumulerade fel, och det är möjligt att fastställa den sanna vägen endast när följande dibitar tas emot.

Efter att ha mottagit den tionde dibiten kommer antalet möjliga vägar med olika mätvärden för ackumulerade fel att bli ganska stort (fig. 29), men i diagrammet ovan (med hjälp av tabell 5, som visar måtten för ackumulerade fel för olika vägar), det är inte svårt att välja den enda vägen med det minsta måttet (på fig. 29

Det övervägda exemplet på en faltningskodare hade bara fyra olika tillstånd: 00, 01, 10 och 11. 1000Base-T-tekniken använder en faltningskodare för åtta olika tillstånd (med tre fördröjningselement), därför kallas den en åttapositionskodare . Dessutom, eftersom tecknen sänds på alla fyra tvinnade paren av kabeln samtidigt med PAM-5-kodning på fem nivåer, kallas denna kodning fyrdimensionell 4D/PAM-5.

En annan betydande skillnad på Trellis-kodaren som används i 1000Base-T-tekniken är övergångsalgoritmen mellan olika tillstånd hos kodaren. I vårt enklaste exempel bestämdes kodarens tillstånd vid nästa ögonblick enbart av det aktuella tillståndet och ingångsbiten. Så om Nuvarande tillstånd 00, och ingångsbiten är 1, då kommer nästa tillstånd, det vill säga bitskiftsfältet i minnescellerna, att motsvara 10. I en riktig åttapositions Trellis-kodare finns det två styrbitar (ingångs) och övergångar mellan olika tillstånd bestäms av algoritmen för det största avståndet mellan konstellationer. Som följer av fig. 30 implementerar Trellis-kodaren förhållandet:

där d6, d7 och d8 är databitarna på raderna 6, 7 och 8.

Låt oss förklara detta med ett specifikt exempel.

Kom ihåg att PAM-5-koden använder fem nivåer för signalering: -2, -1, 0, +1, +2. Samtidigt motsvarar +2/–2 nivåerna en spänning på +1/–1 V, och +1/–1 nivåerna motsvarar en spänning på +0,5/–0,5 V. Med hänsyn till att fyra signaler nivåer sänds samtidigt över fyra tvinnade par och var och en av dessa nivåer kan ta ett av fem värden, totalt får vi 625 (5x5x5x5) olika kombinationer av signaler. Det är lämpligt att avbilda de olika möjliga signaltillstånden på det så kallade signalplanet. På detta plan representeras varje möjligt signaltillstånd av en signalpunkt, och uppsättningen av alla signalpunkter kallas en signalkonstellation. Naturligtvis är det inte möjligt att avbilda ett fyrdimensionellt utrymme, därför, för tydlighetens skull, låt oss överväga en tvådimensionell 5x5 signalkonstellation. En sådan konstellation kan formellt motsvara två tvinnade par. Låt oss rita punkter längs X-axeln som motsvarar ett tvinnat par, och längs Y-axeln - det andra. Då kommer vår 2D-konstellation att se ut som visas i fig. 31 .

Observera att det minsta avståndet mellan två punkter i en sådan konstellation är 1.

Under påverkan av brus och signaldämpning genomgår signalkonstellationen förvrängningar (fig. 32), som ett resultat av vilka positionen för varje signalpunkt är suddig och avståndet mellan dem minskas. Som ett resultat blir punkterna i signalkonstellationen svåra att särskilja och det finns en stor sannolikhet för att de ska förväxlas.

Därför är en av Trellis-kodarens uppgifter att bilda en signalkonstellation som skulle ge det maximala avståndet mellan olika signalpunkter. För att förstå hur detta går till betecknar vi nivåerna för signalerna -1 och +1 till X, och nivåerna -2, 0, +2 till Y. Sedan kan den initiala konstellationen avbildas som visas i Fig. 33 .

Genom att dela upp denna konstellation i två underkonstellationer, varav den ena är bildad av punkterna XX och YY, och den andra från punkterna XY och YX, är det möjligt att öka avståndet mellan signalpunkterna till (Fig. 34).

När du använder två tvinnade par är uppgiften för Trellis-kodaren att endast skicka symboler som tillhör någon av signalkonstellationerna, till exempel D0=XX+YY, över ett tvinnat par, och symboler som tillhör en annan konstellation, till exempel D1= XY+YX. Då blir avståndet mellan de skickade symbolerna dubbelt så stort som det var i den ursprungliga konstellationen. Som ett resultat förbättras igenkänningen av punkter i signalkonstellationen, det vill säga att brusimmuniteten ökar.

En riktig spaljékodare fungerar ungefär på samma sätt och genererar symboler som skickas över fyra tvinnade par, men eftersom varje punkt i konstellationen motsvarar fyra koordinater (en för varje par) och varje punkt kan anta värdet X eller Y, då finns det är 16 olika kombinationer för att bilda åtta underkonstellationer:

I de resulterande underkonstellationerna är minimiavståndet mellan punkter dubbelt så stort som i den ursprungliga konstellationen. Dessutom är minimiavståndet mellan punkterna i två olika subkonstellationer lika med 2. Det är dessa åtta signalkonstellationer som bildar tillståndsdiagrammet för Trellis-kodaren. Till exempel motsvarar kodartillståndet 000 en kombination av punkter från konstellationerna D0D2D4D6 i den meningen att punkter från konstellationen D0 sänds på det första paret, punkter från konstellationen D2 på det andra paret, och så vidare. Nästa möjliga tillstånd för kodaren kommer att motsvara en sådan kombination där minimiavståndet mellan de skickade symbolerna för varje par är 2.

Användningen av trelliskodning enligt det beskrivna schemat gör det möjligt att minska signal-brusförhållandet (SNR) med 6 dB, det vill säga att avsevärt öka brusimmuniteten under dataöverföring.

ComputerPress 2 "2002

Varje typ av dator har sin egen interna kodning för datarepresentation - tecken och textinformation. De vanligaste koderna är ASCII (American Standard Code for Information Interchange) och EBCDIC (Extended Binary Coded Decimal Interchange Code).

ASCII är en 8-bitars kodning för att representera decimalsiffror, latinska och nationella alfabet, skiljetecken och kontrolltecken. Den första halvan av kodtabellen (0 - 127) är upptagen av US-ASCII-tecken, som inkluderar 95 utskrivbara och 33 kontrolltecken (utvecklade av ANSI - American National Standards Institute). Den andra halvan av tabellen (128 - 255) innehåller nationella typsnitt (kyrilliska) och pseudografiska symboler. Denna kod används i personliga datorer och i icke-IBM-kompatibla stora maskiner. Stora datorer (stordatorer) använder 8-bitars EBCDIC-koden som utvecklats av IBM. Vid överföring av data från en dator till en annan kan teckenkonvertering krävas, vilket utförs av den sändande eller mottagande datorns system MO. Dessa åtgärder är funktioner i presentationslagret i OSI-modellen. Tänk sedan på de vanligaste kodningsmetoderna i det fysiska lagret.

De flesta datorer använder standardsignalnivåer (logiska nivåer) för att representera "0" och "1", som bestäms av typen av mikrokrets. TTL-logik representerar 0,5V som "0" och 5V som "1". ECL- och CMOS-logik representerar -1,75V som "0" och -0,9V som "1". För dataöverföring, till exempel i fiberoptiska system, installeras ett speciellt chip i transceivern (transceivern), som bearbetar eventuell logik och avger en styrsignal till ljuskällan med en omvandling av 0,5V och 5V TTL till 0 mA och 50 mA, respektive (tänd ljuset, släck ljuset) .

Mest dator nätverk digitala data överförs med hjälp av digital signal, dvs. sekvens av impulser. Mer än två signalnivåer kan användas för dataöverföring, medan en enda signalpuls inte kan representera en bit, utan en grupp av bitar. Den omvända situationen är möjlig när två signalpulser kan användas för att sända en bit.

Digital överföring använder potential- och impulskoder. I potentialkoder används endast värdet på signalen under bitintervallet för att representera logiska ettor och nollor, och signalkanterna som bildar kompletta pulser tas inte med i beräkningen. Pulskoder representerar en logisk nolla och en logisk etta genom ett potentiellt fall i en viss riktning. Värdet på pulskoden inkluderar hela pulsen tillsammans med dess kanter.

En tågpulssignal har ett oändligt spektrum. Signalens huvudenergi är koncentrerad i frekvensområdet från noll till frekvensen f=1/t o (den första loben i signalens energispektrum), där t o är baudintervallet, det vill säga varaktigheten av en enda puls av en linjär signal.

Teoretiskt, i enlighet med Nyquist-gränsen, den maximalt tillåtna förändringshastigheten för diskreta signalvärden (B=1/t o, baudhastighet) vid sändning av en sekvens av rektangulära pulser över en kommunikationskanal, vars ekvivalent är en idealisk lågpassfilter med ett rektangulärt frekvenssvar och ett linjärt fassvar och med en gränsfrekvens f gr, lika med B max =2f gr. Denna begränsning beror på närvaron av transienter vid lågpassfiltrets utgång, medan stig-/falltiden för signalfronten definieras som

Vid den maximalt tillåtna signalöverföringshastigheten t o =t n. Om intervallet t ca

Den fysiska digitala kodningsmetoden som används bör uppnå flera mål:

  • Tillhandahåll den minsta bredden av signalspektrat vid en given informationsöverföringshastighet N (Bit/s). Minimera värdet på den konstanta komponenten i den linjära signalens spektrum.
  • Ge mottagaren möjligheten att klocksynkronisera (klockning). De så kallade självsynkroniserande koderna tillåter mottagaren att extrahera klockfrekvensfluktuationen från den mottagna digitala strömmen och sedan bilda klockpulser från den vid valfri bitströmsstatistik vid sändarens ingång.
  • Har förmågan att känna igen misstag
  • Ha en låg kostnad för genomförandet.

Tänk på metoderna för fysisk digital kodning av signaler.

Potentiell kod utan återgång till noll NRZ (Non Return to Zero)

Signalen i linjen har två nivåer: den nedre nivån motsvarar noll, den övre motsvarar en. Övergångar sker vid gränsen för bitintervallet. När en sekvens av ettor sänds återgår inte signalen till noll under bitintervallet.

Tänk på speciella fall av dataöverföring med NRZ-koden (Fig. 4.1): en alternerande sekvens av nollor och ettor, en sekvens av nollor och en sekvens av ettor. Låt oss bestämma frekvensen för den grundläggande övertonen i signalspektrumet i vart och ett av dessa fall.

Fig.4.1. NRZ-kodning

Vid alternerande ettor och nollor och överföringshastigheten N (Bit/s) är perioden för grundövertonen i signalspektrat lika med T=2t 0 =2/N (s). Grundfrekvensen fo är lika med fo =N/2 (Hz).

Vid sändning av endast ettor, eller endast nollor, är signalen i ledningen en likström.

Spektrumet för en verklig signal förändras ständigt beroende på strukturen för de data som sänds över kommunikationslinjen. Vid sändning av långa sekvenser av nollor eller ettor skiftar signalspektrumet mot låga frekvenser. En linjär NRZ-signal innehåller vanligtvis en DC-komponent och tillåter inte alltid mottagaren att synkronisera med den inkommande signalen. Å andra sidan är NRZ-koden lätt att implementera, har bra brusimmunitet (på grund av två skarpt olika signalnivåer). Huvudsignalenergin i NRZ-koden är koncentrerad till frekvenser från 0 till N/2 (Hz).

I sin rena form används inte NRZ-koden i nätverk. Ändå används dess olika modifieringar, där både dålig självsynkronisering och närvaron av en konstant komponent framgångsrikt elimineras.

Potentiell kod med invertering vid en NRZI (Non Return to Zero with ones Inverted, NRZI)

Med denna kodningsmetod motsvarar överföringen av noll signalnivån som ställdes in i föregående bitintervall (signalnivån ändras inte), och när en sänds ändras nivån till den motsatta.

Koden används vid sändning över fiberoptiska kablar, där mottagaren på ett tillförlitligt sätt känner igen två signaltillstånd - ljus och mörk.

Fig.4.2. NRZI-kodning

Låt oss bestämma frekvenserna för huvudövertonerna för en linjär signal för speciella fall av bitsekvenser.

För en sekvens av alternerande ettor och nollor är signalperioden T=4t 0 (s), signalens huvudfrekvens är f o =N/4 (Hz), med en sekvens av ettor - f o =N/2 (Hz ), vid sändning av en sekvens av nollor f o =0 - likström i ledningen (eller brist på ljus).

NRZI-koden använder endast två signalnivåer och har därför god brusimmunitet. De spektrala komponenterna i signalen runt frekvensen N/4 (Hz) har maximal energi. Det bör noteras att NRZI-koden har blivit den viktigaste i utvecklingen av förbättrade kodningsmetoder för dataöverföringssystem.

Metod för bipolär kodning med alternativ inversion (bipolär alternativ markinversion, AMI, kvasi-ternär kod)

Denna metod använder tre signalvärden - "-1", "0" och "+1". För att skilja mellan de tre nivåerna är det nödvändigt bästa förhållandet signal/brus vid mottagarens ingång. Den extra nivån kräver en ökning av sändareffekten med cirka 3 dB för att ge samma bittrohet på linjen. Detta är en vanlig nackdel med flertillståndskoder jämfört med binivåkoder.

För att koda en logisk nolla används en nollpotential, en logisk enhet kodas växelvis antingen av en positiv potential eller en negativ.

Fig.4.3. Kvasiternär kodning (AMI)

Vid sändning av någon bitsekvens innehåller signalen på linjen inte en konstant komponent. Vid sändning av enheter har signalens grundöverton en frekvens f o =N/2 (Hz). I fallet med en alternerande uppsättning av ettor och nollor, har den grundläggande övertonen en frekvens f o =N/4 (Hz), som är två gånger mindre än den för NRZ-koden. Men det kvarstår ett synkroniseringsproblem när man sänder en sekvens av nollor.

I allmänhet, för olika bitkombinationer, resulterar användningen av AMI-koden i ett smalare signalspektrum än för NRZ-koden. AMI-koden tillhandahåller också vissa funktioner för att känna igen felaktiga signaler. Så, brott mot den strikta växlingen av signalernas polaritet indikerar en falsk impuls eller försvinnandet av den korrekta impulsen.

Manchester Code (Manchester)

Manchesterkoden tillhör de självsynkroniserande koderna och har två nivåer, vilket ger bra brusimmunitet. Varje bitintervall är uppdelat i två delar. Informationen kodas av ett nivåfall som sker i mitten av varje intervall.

En enhet kodas av en hög-till-låg signalnivå, och en nolla kodas av en omvänd flank. I början av varje bitintervall kan en serviceflank för signalen uppstå (när flera ettor eller nollor sänds i rad).

Fig.4.4. Manchester-kodning

Vid sändning av någon bitsekvens innehåller signalen inte en konstant komponent. Varaktigheten av en enda puls av den linjära signalen to är lika med halva bitintervallet, det vill säga B=2N. Frekvensen för signalens grundöverton beror på bitsekvensens natur och ligger inom området f o =N/2 - N (Hz).

Manchester-kod används i Ethernet-nätverk med en överföringshastighet på 10 Mbps (10Base-T-specifikation).

För närvarande har utvecklare kommit till slutsatsen att det i många fall är mer rationellt att tillämpa potentiell kodning, vilket eliminerar dess brister med hjälp av den s.k. logisk kodning(se nedan i detta avsnitt).

Potentiell kod 2B1Q

Detta är en potentiell kod med fyra signalnivåer för att koda data. Namnet återspeglar essensen av kodning - varannan bit (2V) sänds i en cykel av en signal på en viss nivå (1Q). Linjesignalen har fyra tillstånd.

Dibit "00" motsvarar en potential på -2,5 V (-3), "01" - en potential på -0,833 V (-1), "11" - en potential på +0,833 V (+1), "10" - en potential på +2, 5 V (+3). Signalöverföringshastigheten B med denna kodning är 2 gånger lägre än informationsöverföringshastigheten N. Figur 4.6 visar en signal som motsvarar bitsekvensen: 01 01 10 00.

Fig.4.6. Signal i 2B1Q-kod

Grundfrekvensen för signalen överstiger inte f ca =N/4 Hz. Men för att implementera denna kodningsmetod måste sändareffekten vara högre så att de fyra potentiella värdena tydligt urskiljs av mottagaren mot bakgrund av störningar.

Kod MLT3 (Multi Level Transmission - 3).

Tre nivåer av den linjära signalen används: "-1", "0", "+1". En logisk enhet motsvarar en obligatorisk övergång från en signalnivå till en annan. När en logisk nolla sänds ändras inte nivån på den linjära signalen.

Vid sändning av en sekvens av ettor inkluderar signalnivåändringsperioden fyra bitar. I detta fall f ungefär =N/4 (Hz). Detta är den maximala grundfrekvensen för signalen i MLT-3-koden. I fallet med en alternerande sekvens av nollor och ettor, är den grundläggande övertonen för signalen vid en frekvens f ungefär =N/8 (Hz).

Fig.4.7. Signal i MLT-3-kod

Logisk kodning utförs av sändaren före den fysiska kodningen som diskuterats ovan, typiskt med hjälp av det fysiska lagret. På scenen för logisk kodning kämpar de med bristerna i fysiska digitala kodningsmetoder - bristen på synkronisering, närvaron av en konstant komponent. Således bildas först korrigerade datasekvenser med hjälp av logiska kodningsverktyg, som sedan sänds över kommunikationslinjer med hjälp av fysiska kodningsmetoder.

Logisk kodning innebär att bitarna i den ursprungliga informationssekvensen ersätts med en ny bitsekvens som bär samma information, men som dessutom har ytterligare egenskaper.

Det finns två metoder för logisk kodning:

  • redundanta koder;
  • klättring.

Redundanta koder baseras på att dela upp den ursprungliga bitsekvensen i grupper och ersätta varje originalgrupp i enlighet med en given tabell med ett kodord som innehåller stor kvantitet bit.

Logisk kod 4V/5V ersätter de ursprungliga grupperna (orden) med en längd på 4 bitar med ord med en längd på 5 bitar. Som ett resultat är det totala antalet möjliga bitkombinationer 25=32 större än för de ursprungliga grupperna 24=16. Kodtabellen innehåller 16 kodord som inte innehåller mer än två nollor i rad, och använder dem för dataöverföring. Koden garanterar att inte mer än tre på varandra följande nollor kan förekomma på raden för någon kombination av kodord.

De återstående kodkombinationerna används för att sända servicesignaler (överföringssynkronisering, datablockstart, datablockslut, överföringskontroll). Oanvända kodord kan användas av mottagaren för att detektera fel i dataströmmen. Priset för fördelarna som erhålls med denna metod för datakodning är en minskning av överföringshastigheten för användbar information med 25%.

Det finns också koder med tre signaltillstånd, till exempel i 8B / 6T-koden används kodord av 6 element för att koda 8 bitar av initial information, som var och en kan ta ett av tre värden. Redundansen för 8B/6T-koden är högre än den för 4B/5B-koden, eftersom det finns 36=729 resulterande kombinationer för 28=256 initiala kombinationer.

kod 8B/10V var 8:e bit av den ursprungliga sekvensen ersätts med tio bitar av kodordet. Samtidigt finns det 1024 resulterande kombinationer för 256 initiala kombinationer. Vid byte i enlighet med kodtabellen, observeras följande regler:

  • ingen resulterande kombination bör ha mer än 4 identiska bitar i rad;
  • ingen resulterande kombination bör innehålla fler än 6 nollor eller 6 ettor;

Alla betraktade redundanta koder används i Ethernet-nätverk, som är mest använda. Således används 4B/5B-koden i 100Base-TX/FX-standarderna, och 8B/6T-koden används i 100Base-T4-standarden, som praktiskt taget inte används längre. 8B/10V-koden används i 1000Base-X-standarden, 64/66-koden i 10 GbE-standarden (när fiber används som dataöverföringsmedium).

Utför logisk kodning av nätverksadaptrar. Eftersom användningen av en uppslagstabell är en mycket enkel operation, komplicerar inte den logiska redundanskodningsmetoden de funktionella kraven för denna utrustning.

För att tillhandahålla en given linjekapacitet måste en sändare som använder en redundant kod arbeta med en ökad hastighet (klockfrekvens). Så för att ge en informationsöverföringshastighet på 100 Mbps med 4V/5V + NRZI-kodning, måste sändaren arbeta med en hastighet av 125 Mbaud. I detta fall utökas den linjära signalens spektrum. Signalspektrumet för den redundanta potentialkodsignalen är emellertid smalare än det för den Manchester-kodade signalen, vilket motiverar det extra logiska kodningssteget och den högre bithastigheten för mottagaren och sändaren.

Förvrängningär en "blandning" av den ursprungliga datasekvensen på ett sådant sätt att sannolikheten för förekomst av ettor och nollor på linjen blir nära 0,5. Enheter (eller mjukvarumoduler) att utföra en sådan operation kallas scramblers (scramble - dump, slumpmässig montering).

Förvrängaren i sändaren utför omvandlingen av strukturen för den ursprungliga digitala strömmen. Avkodaren i mottagaren återställer den ursprungliga bitsekvensen. Nästan den enda operationen som används i scramblers och descramblers är XOR - "bitvis XOR" (modulo 2 addition).

Fig.4.8. Förvrängningsimplementeringsalternativ

Låt till exempel scramblern implementera relationen Вi=Ai+Bi-5+Bi-7.

Här är Bi biten av den resulterande koden som erhålls på den i:te cykeln av förvrängaren; Ai är biten av källkoden som kommer i sändaren till ingången på förvrängaren på den i:te cykeln; Bi-5 och Bi-7 är bitar av den resulterande koden som erhållits under de föregående cyklerna av förvrängningsoperationen, på "i-5" respektive "i-7"-cykler.

Avkodaren i mottagaren rekonstruerar den ursprungliga sekvensen med hjälp av relationen Ci=Bi+Bi-5+Bi-7=(Ai+Bi-5+Bi-7)+Bi-5+Bi-7=Ai

fynd

I höghastighetsdatanätverk används olika typer av logisk och fysisk datakodning. Den logiska kodningen utförs av sändaren före den fysiska kodningen med hjälp av det fysiska lagret. På scenen för logisk kodning kämpar de med bristerna i fysiska digitala kodningsmetoder - bristen på synkronisering, närvaron av en konstant komponent. De genererade korrigerade datasekvenserna sänds sedan över kommunikationslinjerna med användning av fysiska kodningsmetoder.

Ytterligare information.

Guide till Unified Networking Technologies. Cisco system. Inc. Williams. 2004

Testfrågor.

  • Vilken typ av logisk signalkodning används i höghastighetsfiberoptiska system?
    • Manchester
    • 8B10B
  • Avkoda en 2B1Q linjesignal: en symbol - ett chip +1 -1 +1 -1 +3 +3 +3 -3 +1
    • 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1
    • 1 0 0 1 1 1 0 0 0 1 0 1 1 0 1 0
    • 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 0
    • 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 0
  • Bestäm linjesignalöverföringshastigheten (V, Baud) i Manchester-kodning, om informationsöverföringshastigheten är N=64Kbps:
    • 131072 Baud
    • 65536 Baud
    • 64 Kbaud
    • 128 kbaud

Detta är en fortsättning på en artikel om felkorrigerande kodning, som har legat i utkast väldigt länge. I den sista delen finns inget intressant ur praktisk synvinkel - bara allmän information om varför det behövs, var det tillämpas osv. Den här delen kommer att titta på några (de enklaste) koderna för att upptäcka och/eller korrigera fel. Låt oss gå.

Jag försökte beskriva allt så enkelt som möjligt för en person som aldrig har sysslat med kodningsinformation, och utan några speciella matematiska formler.

När vi sänder ett meddelande från en källa till en mottagare kan ett fel (störningar, utrustningsfel etc.) uppstå under dataöverföringen. För att upptäcka och korrigera ett fel används felkorrigerande kodning, d.v.s. koda meddelandet på ett sådant sätt att den mottagande parten vet om ett fel har inträffat eller inte, och kan korrigera fel om de uppstår.

Faktum är att kodning är tillägget av ytterligare verifieringsinformation till den ursprungliga informationen. För kodning på sändningssidan används kodare, och på den mottagande sidan - använd avkodare för att få det ursprungliga meddelandet.
Kodredundansär mängden verifieringsinformation i meddelandet. Det beräknas enligt formeln:

k/(i+k), var
k - antal kontrollbitar,
i - antal informationsbitar.
Till exempel sänder vi 3 bitar och lägger till 1 kontrollbit till dem - redundansen blir 1/(3+1) = 1/4 (25%).

Paritetskod

Paritetskontroll är en mycket enkel metod för att upptäcka fel i ett överfört datapaket. Med den här koden kan vi inte återställa data, men vi kan bara upptäcka ett enda fel.

Varje datapaket innehåller en paritetsbit, eller den sk paritetsbit. Denna bit ställs in när data skrivs (eller skickas) och beräknas sedan och jämförs när data läses (mottages). han är lika med summan modulo 2 alla databitar i paketet. d.v.s antalet 1:or i en batch kommer alltid att vara jämnt. Att ändra denna bit (till exempel från 0 till 1) rapporterar ett fel.
Blockschemat för kodaren för denna kod visas nedan.

och och avkodare

Exempel:

Initial data: 1111
0 (1 + 1 + 1 + 1 = 0 (mod 2))
Mottagen data: 1 0 110 (andra biten ändrad)
Som vi kan se är antalet enheter i det mottagna paketet udda, därför uppstod ett fel under överföringen.

Som nämnts tidigare tjänar denna metod endast till att fastställa ett enda fel. I fallet med en förändring av tillståndet för två bitar är det möjligt att beräkningen av styrbiten kommer att sammanfalla med den som skrevs. I det här fallet kommer systemet inte att upptäcka ett fel, vilket inte är bra. Till exempel:
Initial data: 1111
Data efter kodning: 1111 0 (1 + 1 + 1 + 1 = 0 (mod 2))
Mottagen data: 1 00 10 (bitar 2 och 3 ändrade)
Antalet ettor i den mottagna datan är jämnt, och därför kommer avkodaren inte att upptäcka ett fel.

Eftersom cirka 90 % av alla oregelbundna fel uppstår med ensiffriga siffror är jämn paritet tillräcklig för de flesta situationer.

Hamming-kod

Som nämnts i föregående del gjorde Richard Hamming mycket för felkorrigerande kodning. I synnerhet har han utvecklat en kod som upptäcker och korrigerar enstaka fel med så få extra kontrollbitar som möjligt. För varje antal kontrolltecken används en speciell markering av formen (k, i), där k är antalet tecken i meddelandet, i är antalet informationstecken i meddelandet. Till exempel finns det koder (7, 4), (15, 11), (31, 26). Varje kontrollsymbol i Hamming-koden representerar modulo 2-summan av någon dataundersekvens. Låt oss titta på ett exempel direkt, när antalet informationsbitar i i blocket är 4 - detta är koden (7,4), antalet kontrolltecken är 3. Klassiskt är dessa tecken placerade i positioner lika med potenser av två i stigande ordning:
första kontrollbiten på 2 0 = 1;
andra kontrollbiten på 21 = 2;
tredje kontrollbiten på 22 = 4;

men du kan också placera dem i slutet av det överförda datablocket (men då kommer formeln för att beräkna dem att vara annorlunda).
Låt oss nu beräkna dessa kontrollsymboler:
r1 = i1 + i2 + i4
r2 = i1 + i3 + i4
r3 = i2 + i3 + i4

Så i det kodade meddelandet får vi följande:
r1 r2 i1 r3 i2 i3 i4

I princip analyseras denna algoritms funktion i detalj i artikeln Hamming Code. Ett exempel på hur algoritmen fungerar, så jag ser inte poängen med att beskriva i detalj i den här artikeln. Istället kommer jag att ge blockdiagram kodare:

och avkodare


(kanske ganska förvirrande, men det gick inte bättre)

E0,e1,e2 definieras som funktioner beroende på bitarna k1 - k7 som tas emot av avkodaren:

e0 = k1 + k3 + k5 + k7 mod 2
e1 = k2 + k3 + k6 + k7 mod 2
e2 = k4 + k5 + k6 + k7 mod 2

Uppsättningen av dessa värden e2e1e0 det finns en binär post över positionen där ett fel inträffade vid överföring av data. Avkodaren beräknar dessa värden, och om de inte alla är lika 0 (det vill säga, det kommer inte att fungera 000), korrigerar sedan felet.

Koder fungerar

I kommunikationskanalen, förutom enstaka fel orsakade av brus, finns det ofta burstfel orsakade av impulsljud, blekning eller bortfall (under digital videoinspelning). I det här fallet påverkas hundratals, eller till och med tusentals bitar av information i rad. Det är tydligt att ingen felkorrigerande kod klarar av ett sådant fel. För att kunna hantera sådana fel används produktkoder. Funktionsprincipen för en sådan kod visas i figuren:


Den överförda informationen kodas två gånger: i de externa och interna kodarna. En buffert är installerad mellan dem, vars funktion visas i figuren:

Informationsord passerar sedan den första felkorrigerande kodaren, kallad extern den och dess motsvarande avkodare är belägna vid kanterna av det felkorrigerande kodningssystemet. Här läggs kontrolltecken till dem, och de i sin tur matas in i bufferten kolumn för kolumn och matas ut rad för rad. Denna process kallas blandning eller interfoliering.

När strängar matas ut från bufferten läggs kontrolltecken från den interna koden till i dem. I denna ordning sänds information över en kommunikationskanal eller registreras någonstans. Låt oss komma överens om att både den inre och yttre koden är Hamming-koder, med tre kontrollsymboler, det vill säga båda kan korrigera ett fel i kodordet vardera (antalet "kuber" i figuren är inte kritiskt - det är bara ett diagram) . I den mottagande änden finns det exakt samma minnesarray (buffert), i vilken information matas in rad för rad och matas ut kolumn för kolumn. När ett skurfel inträffar (kryssar i figuren på tredje och fjärde raden) fördelas det i små delar i kodorden för den yttre koden och kan korrigeras.

Syftet med den externa koden är tydlig - åtgärda batchfel. Varför behöver vi en intern kod? Figuren, förutom satsen ett, visar ett enda fel (fjärde kolumnen, översta raden). Det finns två fel i kodordet i den fjärde kolumnen, och de kan inte korrigeras, eftersom den yttre koden är utformad för att fixa ett enda fel. För att komma ur den här situationen behövs bara den interna koden, som kommer att korrigera detta enstaka fel. Den mottagna datan passerar först genom den interna avkodaren, där enstaka fel korrigeras, sedan skrivs den till bufferten rad för rad, matas ut i kolumner och matas till den externa avkodaren, där skurfelet korrigeras.

Användningen av produktkoder ökar kraften hos den felkorrigerande koden kraftigt med tillägg av en liten redundans.

P.S.: Jag arbetade nära med detta ämne för 3 år sedan, när jag skrev mitt examensprojekt, kanske jag missade något. Alla rättelser, kommentarer, önskemål - vänligen genom personliga meddelanden

Ofta används namnet på mediaåtkomstprotokollet i lämplig konfiguration - "loop with access arbitration" (Fibre Channel Arbitrated Loop, FC-AL) - som en motsvarighet till namnet på Fibre Channel-tekniken. Men ironiskt nog ingick inte protokollet som fick sådan berömmelse i den ursprungliga versionen av standarden och antogs först senare som ett tillägg till den.

Nedan kommer vi att överväga de viktigaste procedurerna, protokollen och teknikerna för FC-1-överföringsskiktet och FC-2-signalskiktet och i synnerhet själva åtkomstskiljeförfarandet.

KODNING 8B/10B

Figur 1. 8V/10V omvandling.

FC-1-lagret definierar överföringsprotokollet, inklusive kodning och avkodningsregler, specialtecken och felkontroll. Enligt 8B/10B-kodningsschemat omvandlas 8-bitars datablock till 10-bitars datablock. Denna krets utvecklades ursprungligen av IBM för ESCON och gör det i synnerhet möjligt att tillhandahålla DC-spänningsbalans.

Den okodade informationen är uppdelad i block om 8 bitar: A, B, C, D, E, F, G, H, plus kontrollvariabeln Z (se figur 1). Det senare kan vara D för normala datatecken (D-typ) eller K för specialtecken (K-typ). Denna information omvandlas i enlighet med 8B/10B-reglerna till den så kallade Transmission Character på 10 bitar: a, b, c, d, e, i, f, g, h, j. Reglerna föreskriver i synnerhet att den sända symbolen av D-typ måste innehålla minst fyra nollor och ettor, och antalet på varandra följande nollor eller ettor får inte överstiga fyra. Varje betydelsefull sänd symbol har sin egen beteckning Zxx.y i enlighet med följande konvention: Z är en kontrollvariabel; xx är decimalvärdet för det binära talet som består av E-, D-, C-, B- och A-bitarna och y är decimalvärdet för det binära talet som består av H-, G- och F-bitarna. Till exempel det överförda tecknet för en speciell (d.v.s. K-typ) byte betecknas 10111100 som K28.5. Ibland kallas det också komma (komma).

Varje databyte eller specialtecken har två (möjligen samma) överförda koder, d.v.s. varje överfört tecken har två representationer, i synnerhet kan K28.5 representeras både som en tiobitarssekvens 0011111010 och som 1100000101. Vilken av de två möjliga representationer kommer att väljas för överföring beror på värdet av den "nuvarande obalansen" (Running Disparity, RD). Den binära parametern RD beräknas baserat på balansen mellan 0:or och 1:or i de sända symbolsubblocken. 1 motsvarar en signal med högre optisk effekt (för optiska kanaler) eller en signal med högre spänning på +-kontakten än på --kontakten (vid kopparledningar). Strömobalansen beräknas efter de första sex bitarna av varje sänd symbol och sedan efter de fyra sista bitarna av den. Obalansen kan vara positiv (fler ettor än nollor) eller negativ (fler nollor än ettor). Ett sådant system är utformat för att säkerställa likheten mellan nollor och ettor över tiden.

Det finns fler möjliga 10-bitarskombinationer än vad som faktiskt används för att representera 256 vanliga tecken. Sålunda, vid mottagande av en 10-bitars bitsekvens som inte matchar vare sig D-typen eller K-typen, signalerar mottagaren ett kodningsfel. Dessutom beräknar både avsändaren och mottagaren ett nytt värde för den aktuella obalansen. Om den mottagna symbolen har ett annat obalansvärde än förväntat (som mottagaren bestämmer baserat på det tidigare värdet), så signalerar mottagaren ett obalansfel. Detta tillvägagångssätt låter dig implementera felkontroll. I allmänhet är sannolikheten för att ett fel inträffar under dataöverföring ett försumbart värde på 10-12.

ACCESS ARBITRAGE

Till skillnad från de andra två Fibre Channel-topologierna måste enheterna i slingan konkurrera med varandra om åtkomst till överföringsmediet i fallet med en åtkomstskiljekrets. Överlåtelserätten tillerkänns den som vinner skiljeförfarandet. Skiljeförfarande utförs enligt följande.

Om det finns data att överföra måste enheten först få kontroll över slingan. För att göra detta skickar den ett kodord- primitiv arbitration ARBx (Arbitrate Primitive Signal), där x motsvarar den fysiska adressen (Arbitrated Loop Physical Address, AL_PA). Om ARBx-primitiven returneras tillbaka, tar enheten kontroll över slingan, varefter den kan skicka en Open Primitive Signal (OPN) primitiv till destinationen. Därefter interagerar de två enheterna praktiskt taget direkt. Alla andra enheter mellan dem fungerar endast som passiva repeatrar av överförda data.

Om flera enheter vill komma åt slingan samtidigt, jämför de adressen som finns i ARB-primitiven med sin egen. Om enheten som deltar i skiljeförfarandet har en högre adress, skickar den den mottagna primitiva vidare utan ändringar; om den har en lägre adress, dras den mottagna primitiva ur cirkulationen, och denna anordning sänder primitivet med sin adress. Således vinner skiljedom enheten med den lägsta adressen. Enheten som får kontroll över slingan kan behålla den på obestämd tid. Det är sant att standarden tillhandahåller en Access Fairness Algorithm, enligt vilken en enhet inte har rätt att omarbitra förrän alla andra enheter ges möjlighet att etablera kontroll över slingan. Tyvärr är implementeringen av denna algoritm valfri.

LOOP INITIALISERING

Slingans funktion är möjlig endast efter dess initialisering och efter uppkomsten av en ny enhet i slingan eller frånkoppling av den befintliga från den, måste hela proceduren upprepas på nytt. Initiering består i att tilldela fysiska adresser AL_PA till enheter (mer exakt deras portar).

AL_PA-adressen skrivs i den låga byten av adressidentifieraren på tre byte (Native Address Identifier, S_ID för avsändaren och D_ID för mottagaren). Men för att upprätthålla en balans mellan nollor och ettor kan adressen AL_PA faktiskt bara anta 127 olika värden. Om slingan ansluter fler än 127 enheter kommer några av dem inte att få adressen, och de kommer att överföras till passivt läge (Icke-deltagande läge). I det här läget upprepar enheten bara orden som sänds över slingan. Om slingan är autonom, d.v.s. inte ansluten till en switch, lämnas de första två byten av identifieraren tomma.

Slinginitieringsproceduren består av tre steg och börjar med sändningen av en Loop Initialization Primitive (LIP). Vid uppstart sänder en port en LIP och initierar därigenom överföring av denna primitiva av alla andra portar. Enheterna i slingan måste sedan välja en master för att styra adressvalsprocessen. När en slinga är ansluten till en switch, tilldelas switchporten som masterport; annars väljs porten med det minsta namnet (Port_Name) som master. Slutligen väljer portarna sina adresser enligt följande prioriteringar: tilldelad av switchen, använd under den tidigare initieringen, programmerad av tillverkaren, fri från de återstående. I slutet skickar den mastervalda porten en CLS-primitiv som indikerar slutförandet av initieringsproceduren.

ADRESSERING

Till skillnad från många andra LAN-tekniker som använder en fast 6-byte MAC-adress, använder Fibre Channel adresser som tilldelas dynamiskt under registreringen – de så kallade adressidentifierarna. Adresser i intervallet FFFFF0 till FFFFFE (hädanefter i detta avsnitt i hexadecimal notation) tilldelas vissa destinationer - växlingsstrukturen (Fabric), multicast-servern (Multicast Server), etc. Adressen FFFFFF är reserverad för sändning. Adresser tilldelas vid registrering med växlingsstrukturen. Före registreringen är adressidentifieraren inte definierad och är lika med 000000.

Som beskrivits i föregående avsnitt använder enheter i slingan fysiska AL_PA-adresser med en byte. Efter att loopinitiering är klar och AL_PA-adresser erhållits, försöker publika portar av typen NL_Port att registrera sig med kopplingsstrukturen, i synnerhet för att erhålla en adressidentifierare. Detta lämnar vanligtvis AL_PA-adressen oförändrad och placerar den i den minst signifikanta av adressidentifierarens tre byte.

För att initialisering och registrering överhuvudtaget ska vara möjlig, det vill säga för att adressidentifierare ska tilldelas, måste dock portar identifieras på något sätt. Detta uppnås genom användning av fasta namngivna identifierare (Name_Identifier). Namnidentifierare används för att identifiera portar (Port_Name), noder (Node_Name) och switchar (Fabric_Name).

STRÖMKONTROLL

Flödeskontrollen som tillämpas på FC-2-nivån gör det möjligt att koordinera hastigheten för sändning av ramar med kapaciteten hos omkopplingsstrukturen och slutenheterna-mottagare för deras bearbetning. Den bakomliggande idén är ganska enkel: en enhet kan bara sända ramar när en annan enhet är redo att ta emot dem.

I enlighet med reglerna för Fibre Channel, när du upprättar en anslutning mellan dem, måste enheter gå igenom ömsesidig registrering (inloggning). Ett av resultaten av registreringen är öppnandet av lån. Kredit är antalet ramar som avsändaren kan sända utan att få bekräftelse på att de har behandlats. Fibre Channel använder två typer av flödeskontroll: buffert-till-buffert och ände-till-ände. Vilken av mekanismerna som används i varje fall beror på tjänsteklassen (för tjänsteklasser, se Fibre Channel-artikeln i föregående LAN-nummer). Flödeskontroll från ände till ände används i fallet med klass 1 och mellan buffertflödeskontroll används för klass 3; i fallet med klass 2 gäller båda typerna av flödesreglering.

Buffertflödeskontroll utförs på båda ändarna av framåtlänken mellan en N_Port-nodport och en F_Port-omkopplingsport, eller mellan två N_Port-nodportar i en punkt-till-punkt-konfiguration. Portarna på båda sidor av länken utbyter med varandra antalet BB_Credit-ramar som var och en är villig att acceptera. Till exempel är port A redo att ta emot X-ramar, och port B är redo att ta emot Y-ramar. Således är BB_Credit för port A satt till Y, och för port B kommer det att sättas till X. Dessa kreditvärden förblir desamma under hela registreringsperioden.

Varje port håller ett register över antalet ramar som skickats till den som inte har bekräftats. Initialvärdet för denna BB_Credit_CNT-räknare sätts till 0 och ökar med 1 för varje sänd ram. Vid mottagande av en primitiv om mottagarens beredskap att ta emot (Receiver_Ready Primitive Signal, R_RDY), reduceras räknarvärdet med 1. R_RDY-signalen betyder att mottagaren har bearbetat ramen, frigjort utrymme i bufferten och redo att ta emot nästa ram. När BB_Credit_CNT når ett värde lika med BB_Credit, avbryts överföringen tills R_RDY tas emot.

Kontrollproceduren från ända till ända liknar i stort sett den som beskrivs ovan, med ett betydande undantag: växelkursen koordineras av de två ändenheterna. Som i det föregående fallet förhandlar de två samverkande enheterna under registreringen storleken på EE_Credit-mottagningsbuffertarna. Vid sändning av varje ram, ökas värdet på EE_Credit_CNT-räknaren med 1. När en ram med bekräftelse (ACK Link Control) tas emot, minskas räknarvärdet med det belopp som anges i bekräftelsen (ACK-ramar låter dig bekräfta mottagandet av nästa bildruta, flera bildrutor eller hela sekvensen av ramar).

SYNTAX STRUKTUR

All information i Fibre Channel sänds i block med fyra sända tecken. Dessa block kallas överföringsord. Ord som börjar med tecknet K28.5 är service (beställt set). Signaleringsprotokollet definierar tre typer av serviceord.

Start- och slutramavgränsare (Start-Of-Frame, SOF och End-Of-Frame, EOF) definierar ramgränser. Separata primitiver (Primitive Signal) Idle respektive Receiver Ready-signal, portens beredskapsläge för att ta emot/sända och tillgången på buffertutrymme för att ta emot efterföljande ramar. Primitiva sekvenser (Primitive Sequence) Not Operational (NOS), Link Reset (LR), etc. är upprepade serviceord (minst 3 gånger i rad) och signalerar ett specifikt tillstånd för porten.

I sin tur, under överföring, kombineras ord (förutom primitiver) till ramar (se figur 2). Ramen börjar med ramstartavgränsaren SOF. Den följs av ett ramhuvud på sex ord, som i synnerhet anger mottagarens och avsändarens adresser. Ramens huvudinnehåll är nyttolasten (i princip kan den vara frånvarande). Nyttolastfältet kan också innehålla en extra rubrik. Ramen slutar med CRC-styrsekvensen och ytterligare ett serviceord EOF. Således varierar ramlängden från 9 ord (36 10-bitars byte) till 537 ord (2148 bytes) vid maximal nyttolast. Det är ramarna som omkopplingsstrukturen verkar på.

Varje ram kan innehålla självförsörjande information (till exempel ett SCSI-kommando) eller en del av en integrerad informationsmatris (till exempel en fil) nedbruten för att underlätta överföringen. Ett sådant logiskt sammanhängande datablock kallas en sekvens (Sequence), eller, i traditionell terminologi, ett paket. Varje sekvens identifieras av ett Seq_ID i ramhuvudet, och en rams position i sekvensen identifieras av dess sekvensnummer, Seq_Cnt. Således kan mottagaren återställa den korrekta sekvensen av ramar, även om de anländer i en annan ordning än den i vilken de skickades.

Interaktion mellan applikationer sker i samband med ett utbyte eller en session (utbyte) mellan initiatorn (upphovsmannen) och mottagaren (svararen). Vid sändning av den första ramen tilldelar initiatorn ett OX_ID-nummer till denna dialog, denna identifierare kommer sedan att indikeras i alla ramar som sänds av mottagaren som Exchange_ID. I sin tur, i den första svarsramen, anger mottagaren RX_ID-numret som han tilldelade detta utbyte, kommer denna identifierare då också att indikeras i alla ramar som sänds av initiatorn. Således kan både mottagaren och avsändaren entydigt bestämma vilket högnivåprotokoll eller applikation de ska överföra mottagna data till.

FÖR ALLA ANLÄGEN

Fibre Channel-tekniken hittar många applikationer, inklusive kluster och Storage Area Networks (SAN). Vi kommer att titta på de viktigaste tillämpningarna av Fibre Channel i nästa nummer.

Dmitry Ganzha - Ansvarig redaktör för LAN. Han kan kontaktas på:

Dela med sig