www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik USB und NRZI codierung


Autor: Kai Scheddin (zeusosc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi leuts, ich habe gerade ein kleines verständnissproblem mit NRZI,

also ist das richtig das NRZI vom Ausgangszustand abhängig ist??
also


-------------------------------------------
D+   | 0 | 0 1 0 1 0 1 0 1 1
-------------------------------------------
D-   | 1 | 1 0 1 0 1 0 1 0 0
-------------------------------------------
Phy  | K | K J K J K J K J J
-------------------------------------------
NRZI | x | 1 0 0 0 0 0 0 0 1

grüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Kai Scheddin (zeusosc)

>Hi leuts, ich habe gerade ein kleines verständnissproblem mit NRZI,

>also ist das richtig das NRZI vom Ausgangszustand abhängig ist??

Ja. Eine Null wird als Null übertragen, eine 1 erzeugt eine 
Pegelwechsel.
Kombiniert mit der maximalen Lauflänge von 6 bit (?) bei USB hat man 
mindesten alle 6 Bit einen Pegelwechsel im Signal. Die Taktrückgewinnung 
wird es dir danken.

Mfg
Falk

Autor: Kai Scheddin (zeusosc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok,
zu den 6 bit:
ich dachte es wird nur bei konstanter polarität alle 6bit ein polwechsel 
intigriert???
oder kommt wirklich alle 6bit ein polwechsel??
also: (beispiel sync packet)

-------------------------------------------
D+   | 0 | 0 1 0 1 0 1 1 0 1
-------------------------------------------
D-   | 1 | 1 0 1 0 1 0 0 1 0
-------------------------------------------
Phy  | K | K J K J K J J K J
-------------------------------------------
NRZI | x | 1 0 0 0 0 0 1 0 0
------------------------------------------
Sync | x | 1 0 0 0 0 0 x 0 0

??? also der polwechsel wird rausgefiltert???? grüüße

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Kai Scheddin (zeusosc)

>ich dachte es wird nur bei konstanter polarität alle 6bit ein polwechsel
>intigriert???

Ja, stimmt.

>oder kommt wirklich alle 6bit ein polwechsel??

Nein, spätestens nach 6 Bit. Wenn du konstant 1 überträgst ergibt das 
nach jedem Bit einen Polwechechsel.

>also der polwechsel wird rausgefiltert????

Nein, nur die Stopfbits. Wenn 6 Nullen aufeinanderfolgen wird eine 1 
eingefügt, die mit dem Datenstrom eigentlich nix zu tun hat. Der 
Empfänger erkennt dann auch wieder 6 aufeinanderfolgende Nullen und 
weiss dann, dass die nächste 1 ein Stopfbit ist und wieder rausgefiltert 
werden muss. Man muss hier einfach trennen zwischen NRZI-Kodierung und 
Bitstopfen. Das sind zwei getrennte Prozesse, auch wenn sie in Summe 
einen speziellen Zweck erfüllen.

MFG
Falk

Autor: Kai Scheddin (zeusosc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>>also der polwechsel wird rausgefiltert????
ja ich meinte das durch den polwechsel erzeugte stopFbit, gut dann denke 
ich das richtig verstanden zu habe. Zum zwecke nochmal:

nach definition ist D+=1 D-=0 ein High, auch J (für low/full speed)
und D+=0 und D-=1 ein low, auch K;

sollten 6 aufeinander folgende J's oder K's gesendet werden folgt ein 
polwechsel,.. der nicht im phystrom auftaucht,
der fertige phystrom geht dann in die NRZI decodierung

(phy: gemeint ist der physische datenstrom resultierend aus den 
differntiellen leitungen D+ und D-)

------------------------------    |
D+   | 0 | 0 1 0 1 0 1 1 0 1      |
------------------------------    |
D-   | 1 | 1 0 1 0 1 0 0 1 0      |
------------------------------   \ /
Phy  | K | K J K J K J x K J      |
------------------------------    |
NRZI | x | 1 0 0 0 0 0 x 0 0      |
------------------------------   \ /
Sync | x | 1 0 0 0 0 0 x 0 0      °

>edit --------------------------------
der polwechsel am bit 6 soll nur demonstrativ sein...
>edit ende----------------------------

Noch eine frage zu den differential leitungen:
In der Netzlektüre "USB in a Nutshell"  wird gesagt das der reciever
D+ als 1 erkennt wenn dieser 200mV größer als D- ist, obwohl die 
transmission mit D+ > 2.8 V und D- <0,3V ist,..
das macht mich gerade ein bissl konfuss,...

grüüße und danke,..

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Kai Scheddin (zeusosc)

>In der Netzlektüre "USB in a Nutshell"  wird gesagt das der reciever
>D+ als 1 erkennt wenn dieser 200mV größer als D- ist, obwohl die
>transmission mit D+ > 2.8 V und D- <0,3V ist,..
>das macht mich gerade ein bissl konfuss,...

Du musst zwischen differentiellen und Gleichtaktsignalen unterscheiden. 
Das macht USB bissel komisch. Die Daten werden differentiell codiert, so 
wie RS485 oder LVDS, also der Vergleich zwischen D+ und D-. Aber das 
Paketende über ein Gleichtaktsignal, was quasi CMOS mit 0..3V 
entspricht.

MFG
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.