Nibo-IR-Protokoll
From Nibo
(→GCR-Codierung) |
(→GCR-Codierung) |
||
Line 60: | Line 60: | ||
| Break || x000001101<br><span style="color:red;">1111110110</span> || | | Break || x000001101<br><span style="color:red;">1111110110</span> || | ||
|} | |} | ||
- | Beide Symbole können an beliebigen Stellen auftreten | + | Beide Symbole können an beliebigen Stellen auftreten. Die NRZI-Codierung wird zurückgesetzt, indem das erste Bit je nach Zustand Eins oder Null gesetzt wird. Dadurch werden durch die NRZI unabhängig vom Zustand immer die <span style="color:red;">roten</span> Codierungen erzeugt. Das Break-Symbol dient zur Resynchronisation und setzt das Protokoll immer in einen definierten Zustand zurück. |
==Beispiel== | ==Beispiel== |
Revision as of 17:54, 21 August 2007
Dieses Protokoll befindet sich noch in der Entwicklung und ist noch nicht implementiert!
Contents |
Hardware
Die Übertragung findet mit 940 nm Infrarotlicht statt. Das Licht wird mit 36 kHz moduliert.
Codierung
Ein einzelnes Bit wird mit 6 IR-Pulsen übertragen. Ein einzelner Puls dauert dabei 1/36000 Sekunde. Ein Bit wird somit in 1/6000 Sekunde übertragen, dies entspricht einer Roh-Datenrate von 6000 Baud.
NRZI-Codierung
Die Daten werden direkt vor dem Senden NRZI-codiert, das bedeutet, dass der Pegel des Ausgangssignal wechselt wenn eine Eins übertragen werden soll und das der Pegel beibehalten wird wenn eine Null übertragen werden soll. Dies ermöglicht zusammen mit dem nachfolgenden Verfahren eine Rekonstruktion des Übertragungstaktes.
Beispiel:
NRZI: 0001111011010101 Daten: 0001000110111111
GCR-Codierung
Damit das Ausgangssignal nicht länger als drei Bitzeiten den selben Pegel hat darf der NRZI-Codierer nicht mehr als zwei Nullen in Folge codieren. Dies erreicht man durch GCR-Codierung, die in nachfolgender Tabelle gezeigt ist. Somit müssen für jeweils vier zu übertragende Roh-Bits 5 GCR-codierte Bits übertragen werden. Daraus resultiert eine Nutz-Datenrate von 4800 Baud.
Nibble | Code |
---|---|
0000 | 01010 |
0001 | 01011 |
0010 | 10010 |
0011 | 10011 |
0100 | 01110 |
0101 | 01111 |
0110 | 10110 |
0111 | 10111 |
1000 | 01001 |
1001 | 11001 |
1010 | 11010 |
1011 | 11011 |
1100 | 01101 |
1101 | 11101 |
1110 | 11110 |
1111 | 10101 |
Zusätzlich sind die beiden folgende Symbole definiert:
Bedeutung | Code | Kommentar |
---|---|---|
Idle | x0000...00101 00000...00110 | mindestens 10 Bit lang, beliebig viele zusätzliche Nullen |
Break | x000001101 1111110110 |
Beide Symbole können an beliebigen Stellen auftreten. Die NRZI-Codierung wird zurückgesetzt, indem das erste Bit je nach Zustand Eins oder Null gesetzt wird. Dadurch werden durch die NRZI unabhängig vom Zustand immer die roten Codierungen erzeugt. Das Break-Symbol dient zur Resynchronisation und setzt das Protokoll immer in einen definierten Zustand zurück.
Beispiel
Übertragung: [Break], 0x1f, 0x05, (Pause), 0x06
NRZI: ...00110 1111110110 01101 00110 01100 01010 000000...0110 01100 11011 00000... GCR: ...00101 1000001101 01011 10101 01010 01111 000000...0101 01010 10110 10000... Daten: ...Idle Break 0001 1111 0000 0101 Idle 0000 0110 Idle... COM [Break] 1f 05 06