Nibo-IR-Protokoll

Aus Nibo Wiki
Version vom 26. Januar 2011, 13:29 Uhr von Workwind (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Dieses Protokoll befindet sich noch in der Entwicklung und ist noch nicht implementiert!

Hardware

Die Übertragung findet mit 940 nm Infrarotlicht statt. Das Licht wird mit 36 kHz moduliert. Der Tastgrad beträgt dabei 25%, das heisst bei einem Einzelnen Puls mit einer Dauer von 27,777 µs wird das IR Licht für 6,944 µs eingeschaltet und für 20,833 µs ausgeschaltet.

Codierung

Ein einzelnes Bit wird mit 6 IR-Pulsen übertragen. 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 Ausgangssignals wechselt, wenn eine Eins übertragen werden soll und dass 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 bit/s.

Sym Nibble Code
0 0000 01010
1 0001 01011
2 0010 10010
3 0011 10011
Sym Nibble Code
4 0100 01110
5 0101 01111
6 0110 10110
7 0111 10111
Sym Nibble Code
8 1000 01001
9 1001 11001
a 1010 11010
b 1011 11011
Sym Nibble Code
c 1100 01101
d 1101 11101
e 1110 11110
f 1111 10101

Zusätzlich sind die folgenden Symbole definiert:

Symbol Code Kommentar
Suspend x0000
00000
Das Suspend Symbol leitet den Idle Zustand ein, im Idle Zustand werden nur noch Nullen übertragen.
Resume 00101
00110
Das Resume Symbol beendet den Idle Zustand.
Break x0000 01101
11111 10110
Das Break-Symbol dient zur Resynchronisation und setzt das Protokoll immer in einen definierten Zustand zurück, auch aus dem Idle Zustand.

Die beiden Symbole Suspend und Break 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. Mit Suspend und Resume können Übertragungspausen überbrückt werden.

Beispiel

Übertragung: [Break], 0x1f, 0x05, (Pause), 0x06

NRZI:  ...XXX 1111110110 01101 00110 01100 01010 00000 ... 00110 01100 11011 00000...
GCR:   ...XXX X000001101 01011 10101 01010 01111 00000 ... 00101 01010 10110 10000...
Daten: ...XXX Break      0001  1111  0000  0101  Suspend..Resume 0000  0110  Suspend...
COM           [Break]    1f          05                          06