Grå kode

Grå kode
støt Ja
Hamming afstand 1

Den Gray kode er en kontinuerlig kode , hvori tilstødende kodeord kun er forskellige i en enkelt binært ciffer, den Hamming afstanden mellem tilstødende kodeord er 1.Transmission fejl i konstant forandring digitale signaler på multi-core linjer reduceres på denne måde, da der ikke er forskellige transittider kan påvirke. Det fungerer som en kodningsmetode til robust transmission af digitale mængder via analoge signalveje. Koden er opkaldt efter fysikeren Frank Gray , der modtog patent på denne proces i 1953 .

Der kan konstrueres en afbalanceret grå kode, hvor alle cifre (bits) i kodeordene afviger lige så ofte fra nabokodeord. Når alle kodeord gennemgås i den korrekte rækkefølge, ændres hvert ciffer derefter det samme antal gange.

Den grå kode er normalt implementeret som en binær kode , men kan også bruges til transmissionsveje på flere niveauer .

Generering fra binær kode

Logiske operatorer

Følgende punkter viser, hvordan du får et gråkodet binært tal fra en binær kode trin for trin:

  • X1: binært tal i binær kode
  • X2: Højre skift af det binære tal med 1 bit
  • X3: Modulo-2-tilføjelse ( XOR-drift ) af X1 og X2; dette er det ønskede tal i den grå kode.

Det samme som pseudokode:

  • Binær kode X1 → Grå kode: X3 = (X1 XOR X2)

Og som en formel:

Generator matrix

Da den grå kode er en lineær kode , kan den genereres med en generatormatrix . Et binært længdeord kan ses som en vektor i et -dimensionelt -vektorrum . Lad os nu være en linjevektor, så kan kodningen af ​​ordet i kodeordet repræsenteres som følger:

Afkodningen udføres ved at multiplicere den inverse af . Dette har følgende form:

Vektorrummet kan tydeligt repræsenteres med hyperkuber .

Generation som en grå tæller

Du kan også programmere en grå kodetæller direkte i hardware (f.eks. I HDL ). Til dette er det nyttigt at bruge et hjælpe -register, der skifter med hver urcyklus.

 Qh [n+1] = !Qh [n]
 Qh [0  ] =  0     wenn der Gray-Code-Zähler mit Null startet also Q[0]=0, oder Q[0] eine gerade Anzahl an Einsen hat. Bei anderer Initialisierung würde der Zähler rückwärts laufen.

Dette gør kombinatorikken ganske klar:

 Q0  [n+1] = !(Q0  [n] ^   Qh  [n] )
 Q1  [n+1] =   Q1  [n] ^ ( Q0  [n] &  Qh  [n] )
 Q2  [n+1] =   Q2  [n] ^ ( Q1  [n] & !Q0  [n] &  Qh [n] )
 Q3  [n+1] =   Q3  [n] ^ ( Q2  [n] & !Q1  [n] & !Q0 [n] & Qh [n] )
        …
 Qk-1[n+1] =   Qk-1[n] ^ ( Qk-2[n] & !Qk-3[n] & …  & !Q1 [n] & !Q0 [n] & Qh [n])
 Qk  [n+1] =   Qk  [n] ^ (!Qk-2[n] &         …  & !Q1 [n] & !Q0 [n] & Qh [n])

Forskellen mellem formlen for den største bit Q k og de mindre bit Q k-1 er nødvendig, så tælleren er cyklisk, dvs. tælleren springer til den oprindelige værdi Q = 000 ... 00 efter den sidste værdi Q = 100 ... 00. Med en uendelig tæller ville der ikke være nogen forskel.

 ^ := Exklusiv Oder / XOR / Antivalenz
 ! := Inverter / NOT / Negation
& := Und / AND / Konjunktion

betyder

Motivationen for udviklingen af ​​denne kode er følgende problem: På flere kerner i en elektrisk datalinje skal data transmitteres parallelt, der ændres kontinuerligt (dvs. altid kun med et ciffer). B. Signaler fra en temperatursensor eller en roterende encoder . Overført som et binært tal ændres bitene teoretisk nøjagtigt på samme tid for en ny måleværdi på hver berørt linje, både ved input af linjen og ved output. Faktisk ændres bitene på linjen imidlertid ikke på samme tid. Dette kan have forskellige årsager: komponentspredning, driftstider, asymmetri osv. Dette fører til uønskede mellemliggende tilstande og kort (mellem de røde linjer) forkert modtagne værdier:

2-bit grå kode:
00
01
11
10
3-bit grå kode:
000
001
011
010
110
111
101
100
4-bit grå kode:
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
5-bit grå kode:
00000
00001
00011
00010
00110
00111
00101
00100
01100
01101
01111
01110
01010
01011
01001
01000
11000
11001
11011
11010
11110
11111
11101
11100
10100
10101
10111
10110
10010
10011
10001
10000
6-bit grå kode:
000000
000001
000011
000010
000110
000111
000101
000100
001100
001101
001111
001110
001010
001011
001001
001000
011000
011001
011011
011010
011110
011111
011101
011100
010100
010101
010111
010110
010010
010011
010001
010000
110000
110001
110011
110010
110110
110111
110101
110100
111100
111101
111111
111110
111010
111011
111001
111000
101000
101001
101011
101010
101110
101111
101101
101100
100100
100101
100111
100110
100010
100011
100001
100000

Problem med dobbelte kodesignaler

Dobbelt kodesignal

Mens det teoretiske signal i rækkefølgen

  • {0000}, {0001}, {0010}, {0011}, {0100}, {0101}, {0110}, {0111} osv.

sendes, modtages andre signaltilstande kortvarigt ved udgangen:

  • {0000}, {0001}, {0000} , {0010}, {0011}, {0100}, {0101}, {0111} , {0110}, {0111} osv.

Løsning med grå kode

Grå kodesignal

For at undgå dette sendes kontrolsignaltilstandene ved hjælp af en grå kode, så kun en bit ændres ad gangen:

  • Sendt sekvens: {0000}, {0001}, {0011}, {0010}, {0110}, {0111}, {0101}, {0100} osv.
  • Indgående sekvens: {0000}, {0001}, {0011}, {0010}, {0110}, {0111}, {0101}, {0100} osv.

Den samme sekvens ankommer til udgangen som ved indgangen, selvom der opstår betydelige tidsfejl (røde linjer).

Karnaugh-Veitch diagram

I Karnaugh -Veitch -diagrammet kan den grå kode genkendes - flere sekvenser er mulige - fra det faktum, at der kun sker overgange mellem (vandret eller lodret) nabofelter.

Orden af ​​grå kode
¬X 0 X 0 X 0 ¬X 0
¬X 2 0 1 3 2 ¬X 3
X 2 4. 5 7. 6. ¬X 3
X 2 12. 13. 15. 14. X 3
¬X 2 8. 9 11 10 X 3
¬X 1 ¬X 1 X 1 X 1
Rækkefølge af dobbelt kode
¬X 0 X 0 X 0 ¬X 0
¬X 2 0 1 2 3 ¬X 3
X 2 7. 6. 5 4. ¬X 3
X 2 8. 9 10 11 X 3
¬X 2 15. 14. 13. 12. X 3
¬X 1 ¬X 1 X 1 X 1

Koden er også velegnet til cykliske applikationer som f.eks. Disken vist nedenfor, da kun et ciffer ændres ved skift fra det højeste tal til nul.

Værdien af ​​en 1 på positionen i det grå kodenummersystem er (hvor n tæller fra 1, så ... 31, 15, 7, 3, 1). I modsætning til det normale binære system tilføjes de enkelte ikke, men trækkes fra højre. Eksempel: 111 Grå = 7 - (3 - 1) = 5 eller 1111 Grå = 15- (7 - (3 - 1)) = 10. Cifre, der er 0, udelades, eksempel: 101 Grå = 7 - 1 = 6.

Processen med at generere grå kode er symmetrisk.

Da naboværdier kun adskiller sig med et ciffer, er den grå kode velegnet til at afdække fejl i serielle processer.

Geometrisk og grafteoretisk fremstilling

Figur 1 viser hexahedronen for 3 variabler og figur 2 den samme terning med det tilhørende koordinatsystem. Knudepunkterne (hjørnepunkter eller cirkler) på enhedens terning svarer hver til en linje i grå kode. Overgangene (linjernes nabolag) er symboliseret ved terningens kanter. Når du går på kanten, oprettes en grå kode.

lukket 3-bit grå kode
en) b) c) d) e) f)
000 000 000 000 000 000
001 100 010 010 001 100
101 101 110 011 011 110
100 001 100 001 010 010
110 011 101 101 110 011
111 111 111 111 111 111
011 110 011 110 101 101
010 010 001 100 100 001

Præcis 1 bit ændres på hver kant. Den grå kode har lige så mange kvarterer, som terningen har kanter. Fra terningen i figur 1 kan de mulige stier krydses på 6 forskellige måder. Der er således 6 muligheder for at generere en 3-bit grå kode, der opfylder betingelserne for den grå kode (tabel og figur 3). Bortset fra det er Gray -koden cyklisk, og udgangspunktet kan derfor også være på en anden linje. På grund af sin enkle rekursive generationsregel er den binære reflekterede grå kode normalt specificeret (kolonne “e” - næstsidste kolonne i tabellen). Der er en hel klasse af grå koder for en bestemt bitlængde.

Der er nøjagtig lige så mange varianter for en n-bit grå kode, som der er Hamilton-cirkler på en n-dimensionel hyperkube .

lukket 3-bit grå kode
en) b) c) d) e) f)
000 000 010 010 000 100
001 100 110 011 001 110
101 101 100 001 011 010
100 001 101 101 010 011
110 011 111 111 110 111
111 111 011 110 111 101
011 110 001 100 101 001
010 010 000 000 100 000

Da den grå kode, der er vist her, er cyklisk, er koden i kolonne c), d) og f) flyttet et sted op i denne tabel (sammenlignet med tabellen ovenfor), så de tre nuller i tabellens sidste linje . Det kan således ses, at den grå kode i kolonne a) kun er en spejlvendt vending af kolonne b). På samme måde er kolonne c) bagsiden af ​​kolonne d), mens kolonne e) er bagsiden af ​​kolonne f). Der er tre uorienterede Hamilton-cirkler på den tredimensionelle terning, som kun er vist her i forskellige retninger (rettet Hamilton-cirkel).

For en bedre illustration vises kodetabellerne for de 6 varianter af den 3-bit grå kode her igen. Hvorved variant e repræsenterer den binære reflekterede grå kode, som normalt menes, når den grå kode er nævnt. De 6 versioner kan også genereres ved at permutere de 3 kolonner i kodetabellen. Det følger, at med n bits n! Versioner der. Så for 3 bit 3! = 6 versioner af den 3-bit grå kode.

Image
3 bit: a
Image
3 bit: b
Image
3 bit: c
Image
3 bit: d
Image
3 bit: e
Image
3 bit: f
Image
Billede 4
Kode Grå reflekteret cyklisk 1.svg
Kode Grå reflekteret cyklisk 4.svg
Kode Grå reflekteret cyklisk 7.svg
Kode Grå reflekteret cyklisk 2.svg
Kode Grå reflekteret cyklisk 5.svg
... etc. ...

Den 4-bit grå kode kan læses fra hyperkuben i figur 4. Der er 4 for 4 bits! = 24 forskellige grå koder.

Ansøgninger

Image
Skemategning af en disk med grå kodning. De gule prikker repræsenterer lyssensorer.
Image
En grå kode absolut encoder med 13 bits

En mulig anvendelse er bestemmelsen af ​​den absolutte position af en rude eller strimmel, der er markeret med sort -hvide søjler, som er scannet med lysbarrierer eller andre sensorer. Denne position bruges derefter til at måle vinkel eller rotationshastighed.

En anden applikation er randprojektion . Der projiceres en sekvens af mønstre af parallelle striber på et objekt. Antallet af striber er grå-kodet og kan beregnes for hver pixel af et observationskamera.

En anden applikation er asynkron læsning af data. For eksempel bruges den grå kode til at aflæse tælleraflæsninger i korrelatorer uden fejl. Selv i værste fald, når man læser ind under en skiftende bit, er resultatet altid korrekt, fordi en skiftende bit ikke er defineret, og den kun gør en forskel på ± 1. Denne type læsning kræver ingen synkronisering og kun meget lidt CPU -tid.

Andre mulige anvendelser er vindretningsmålere eller vandstandsmålere, kortlægning af bilens position i elevatorer.

Den reflekterede grå kode har et tæt forhold til at løse problemet med tårne ​​i Hanoi , og den beskriver også løsningen af ​​de kinesiske ringe .

eksempel

Decimaltallet svarer til den grå kode . Afkodningen i decimalrepræsentationen følger derefter reglen . Hvis flere dem vises i en række Gray kode, vil de blive trukket fra hinanden: The Gray kode dekodes som følger: .

Generel procedure: I en konvertering er den afgørende faktor placeringen af ​​dem. Stillingen påvirker regningen. Hvis vi ser på tallet 100, så er den i position 3 (fra højre til venstre). Faktoren for en opnås ved at overveje det maksimale antal decimaler, der kan lagres i binær form i et 3-bit tal. Der kan maksimalt lagres 7 (111) i 3-bit binær kode. Hvis vi nu tager et større binært tal, fungerer det praktisk talt analogt. Binært nummer: 11010 (1 i position 5.4 og 2). 5-bit binært tal: maks. 31 4-bit binært tal: maks. 15 2-bit binært tal: maks. 3

Beregning:

Genberegn en grå kode

  for I := NumBits - 1 downto 0 do        // jedes einzelne Bit vom letzten bis zum ersten
    Value := Value or (                   // das Ergebnis jedes errechneten Bits dem Gesamtergebnis hinzufügen
      (((1 shl (I + 1)) and Value) shr 1) // das Bit der Stelle zuvor im Ergebnis
      xor                                 // xor mit
      ((1 shl I) and GrayCode)            // der aktuellen Stelle des Codes
                       );

historie

Selv før begrebet Gray Code blev introduceret, var der allerede matematiske puslespil, hvor princippet blev anvendt. Først senere tiltrak koden ingeniørernes opmærksomhed. Allerede i 1874 brugte Otto Schäffler, der producerede og forbedrede telegrafer og telefoner i Wien, den reflekterede grå kode. Den franske Jean-Maurice-Émile Baudot brugte Grå koder til elektrisk telegrafi i 1874 . Han modtog den franske æreslegion for sit arbejde .

Det blev opkaldt efter Frank Gray , en forsker ved Bell Laboratories , der genopdagede koden beskrevet af George Stibitz i 1941 til hans formål. Et patent på et gråkodende elektronrør blev udstedt den 17. marts 1953 med titlen Pulse Code Communications , U.S. patent nr. 2.632.058 .

Lignende koder

Weblinks

Commons : Grå kode  - samling af billeder, videoer og lydfiler

Individuelle beviser

  1. patent US2632058 : Pulse code kommunikation. Udgivet 17. marts 1953 , opfinder: Frank Gray.
  2. Girish S. Bhat, Carla D. Savage: Balancerede grå koder . I: The Electronic Journal of Combinatorics . 28. august 1996, ISSN  1077-8926 , s. R25 - R25 , doi : 10.37236 / 1249 ( combinatorics.org [åbnet 22. maj 2021]).
  3. U.S. patentnummer 2.632.058 freepatentsonline.com