ADC
De eerste omvormers en de Gray kode
Gray code
De Gray code werd in de eerste analoog naar digitaal omzetters gebruikt, maar wordt tegenwoordig nog altijd toegepast, op plaatsen waar je het niet zou vermoeden.
-

-

Gray code: software oplossing om leesfouten te vermijden

Dit artikel is een gevolg op de eerste analoog naar digitaal omvormers. Het is ten zeerste aangeraden dit artikel eerst te lezen. De codeerbuis (zie artikel) gebruikt geen normale binaire code (gewogen bits), maar een speciale kode. Het betreft in het bijzonder de omvormerbuizen die een parallel signaal leveren en de buizen die een serieel signaal leveren maar geen horizontaal raster hebben.

Bij een binaire code hebben we een progressie van 000, 001, 010, 011, 100, 101, 110 en 111 het aantal bits dat verandert is:
000 [1] 001 [2] 010 [1] 011 [3] 100 [1] 101 [2] 110 [1] 111.

Bij een Gray code is er altijd één bit verschil tussen twee opeenvolgende waarden (Hamming afstand = 1), maar ieder bit op zich heeft geen waarde. Er is daarom geen standaard wat betreft de Gray code. Het is daarbij ook vaak van belang dat er ook maar één bit verschil is tussen de hoogste en laagste waarde.

De binary reflected code is zodanig ontworpen dat de overgang van de hoogste waarde naar de laagste waarde ook een verandering van 1 bit teweg brengt. Hier is dat niet nodig, maar de code wordt bijvoorbeeld ook in bepaalde rotary encoders gebruikt. De kodes die op deze pagina getoond worden zijn allemaal binary reflected codes.

We hebben hier een voorbeeld met een getal met 4 bits. Als de analoge waarde tussen 7 en 8 zit kan de output om het even welke waarde tussen 0000 en 1111 hebben: we kunnen wiskundig aantonen dat daardoor om het even welke meting als onbetrouwbaar beschouwd kan worden.

Bij een codering van Gray kan de waarde enkel 7 (0010) of 8 zijn (0011): tussen 7 en 8 is er maar één bit verschil. De foutmarge wordt dus beperkt tot de resolutie van de omvormer zelf. De Gray code wordt nog in veel toepassingen gebruikt.

Bij de Gray code is het niet mogelijk de waarde van een bit te bepalen en kan men geen berekeningen uitvoeren op Gray 'getallen'.

De kode wordt reflected (weerspiegeld) genoemd, omdat die door recursie samengesteld kan worden om tot het aantal gewenste bits te komen:

  • 00 01 11 10 de basis is twee bits die 4 waarden kunnen vertonen
  • 10 11 01 00 weerspiegeling (van de bitwaarden, niet van de individuele bits)
  • 000 001 011 010 110 111 101 100 0 of 1 bijvoegen en samenvoegen
We hebben nu een 3 bits code en de procedure kan herhaald worden totdat we aan het gewenste aantal bits komen.

De analoog naar digitaal omzetterbuizen zijn verder ontwikkeld tot de jaren 1965, dan zijn de eerste geïntegreerde schakelingen op de markt gekomen. Een 'solid state' omvormer met identieke eigenschappen bestond uit een honderdtal IC's (comparators, AND, OR, XOR funkties en een beetje diodelogica,...). Alle electronicabedrijven wilden toen overschakelen op volledig getransistoriseerde schakelingen en de omzetterbuizen zijn rond die tijd van de markt verdwenen. Maar niet vergeten.

De weergave rechts toont de verandering van de bitwaarde van een Gray kode als men gewogen bits gebruikt: 0 1 3 2 6 7 5 4 12 13 15 14 10 11 9 8 ...



De Gray kode lijkt tegenwoordig weinig nut te hebben, nu dat we over moderne analoog naar digitaal omzetters beschikken. Maar er zijn nog andere plaatsen waar men een analoge waarde moeten omzetten in een digitale waarde, zoals hier: een rotatie encoder met 3 bits om 8 standen te kunnen aangeven.

Hier ook veroorzaakt de overgang van één positie naar de andere een verandering van een enkele bit, zoals ook de overgang van de hoogste naar de laagste positie (van 359° naar 0°).

Indien deze toepassing heel gewoontjes lijkt is de volgende toepassing heel vernuftig. Bij gegevensoverdracht gebruikt men altijd een modulatie zodat men de data kan laten passen in een medium. Bij telefoon- en radiomodems wordt de data gemodulerd zodat de data over telefoonlijnen gestuurd kan worden. Bij radiocommunicatie kan men verschillende datastromen versturen door verschillende frekwenties te gebruiken.

Modulatie werd voor de eerste keer op grote schaal gebruikt bij telefoonmodems, maar wordt tegenwoordig ook gebruikt bij gsm en satellietcommunicatie. Het is nog antijd eenzelfde principe dat toegepast wordt, maar de hardware en de codeertechnieken zijn ondertussen verbeterd.

De tegenwoordig meest gebruikte modulatietechniek is de QAM (quadrature amplitude modulatie) die 16 bits per baud kan versturen. Deze modulatietechniek werd voor het eerst gebruikt bij telefoonlijnen die een bandbreedte van 3000Hz hadden, en dus een maximale baudrate van 2400 baud mogelijk maakte. Door een QAM-16 modulatietechniek toe te passen kon men 38.4kb per seconde versuren.

Iedere bit wordt verstuurd met een verschillende amplitude en faseverschuiving. De 16 bitwaarden die in één baud verstuurd worden zitten zo ver mogelijk van elkaar (wat de amplitude en fase betreft) zodat een kleine fout bij de transmissie geen gevolgen heeft voor de data.

Als je de constellatie bekijkt, merkt je dat de naburige waarden slechts met één bit verschillen. In dit geval is de doorgestuurde bitwaarde 1101. Indien er een sterke verstoring is, kan de kode 1100, 1001, 1111 of 0101 zijn.

De fout kan gemakkelijk gedetecteerd worden als er ook een parateitsbit verstuurd wordt. In meer geëvolueerde systemen kan de fout zelfs automatisch verbeterd worden. En dat is de reden waarom men nog steeds de Gray kode gebruikt.

Publicités - Reklame

-