Universal Serial Bus — Änderungen 7308 → 7309

Zeile 522: Zeile 522:
  
 
=== Isochronoustransfers ===
 
=== Isochronoustransfers ===
−
Das Toggle-Bit-Verhalten von Isochronoustransfers [[#Data-Toggle|wurde bereits besprochen]]. Ebenso [[#Nicht-Handshake-Datentransfers|wurde bereits gezeigt]], dass Übertragungen von und zu Isochronousendpunkten kein Handshake besitzen. Und mehr ist dazu auch nicht zu sagen, man könnte hier nur das bereits gezeigte Beispiel nochmals zeigen:
+
Das Toggle-Bit-Verhalten von Isochronoustransfers [[#Isochronous_2|wurde bereits besprochen]]. Ebenso [[#Nicht-Handshake-Datentransfers|wurde bereits gezeigt]], dass Übertragungen von und zu Isochronousendpunkten kein Handshake besitzen. Und mehr ist dazu auch nicht zu sagen, man könnte hier nur das bereits gezeigte Beispiel nochmals zeigen:
  
 
{| {{Prettytable}} cellpadding="5"
 
{| {{Prettytable}} cellpadding="5"
Zeile 529: Zeile 529:
 
{{USB-Transfer|dir=in|type=DATA0|data=0x4D 0x6F 0x69 0x6E 0x2C 0x20 0x6D 0x6F 0x69 0x6E 0x2C 0x20 0x47 0x65 0x6E 0x6F 0x73 0x73 0x65 0x6E 0x5C 0x21|crc=0x04A9}}
 
{{USB-Transfer|dir=in|type=DATA0|data=0x4D 0x6F 0x69 0x6E 0x2C 0x20 0x6D 0x6F 0x69 0x6E 0x2C 0x20 0x47 0x65 0x6E 0x6F 0x73 0x73 0x65 0x6E 0x5C 0x21|crc=0x04A9}}
 
|}
 
|}
 +
 +
=== Beispiel ===
 +
So, nachdem wir all das durchgekaut haben, können wir uns jetzt wieder an einem lustigen kleinen Beispiel versuchen, zum Beispiel dem Transfer des Strings „Lowlevel?“ als Bulk-OUT-Transfer. Wie wir gesehen haben, sieht das in der Zusammenfassung so aus:
 +
 +
{| {{Prettytable}} cellpadding="5"
 +
{{USB-Transferliste}}
 +
{{USB-Transfer|dir=out|type=OUT|addr=42|endp=1|crc=0x1C}}
 +
{{USB-Transfer|dir=out|type=DATA0|data=0x4C 0x6F 0x77 0x6C 0x65 0x76 0x65 0x6C 0x3F|crc=0x80F2}}
 +
{{USB-Transfer|dir=in|type=ACK}}
 +
|}
 +
 +
Dies wird zu den einzelnen Paketen (zwischen Feldern jeweils ein Leerzeichen und Little Endian!):
 +
 +
<pre>10000111 0101010 1000 00111
 +
 +
11000011 001100101111011011101110001101101010011001101110101001100011011011111100
 +
0100111100000001
 +
 +
01001011</pre>
 +
 +
Jetzt lassen wir die Leerzeichen weg und führen das Bitstuffing durch (das immer noch an nur einer Stelle durchzuführen ist):
 +
 +
<pre>100001110101010100000111
 +
 +
11000011001100101111011011101110001101101010011001101110101001100011011011111100
 +
0100111100000001
 +
 +
01001011</pre>
 +
 +
Jetzt zum NRZI mit SOP und EOP (Leerzeichen zur Verdeutlichung, zuerst Idle-Zustand, dann SOP, dann Paket, dann EOP, alles Full-Speed), dabei gilt _ als SE0:
 +
 +
<pre>J KJKJKJKK KJKJKKKKJJKKJJKKJKJKJJJJ __J
 +
 +
J KJKJKJKK KKJKJKKKJKKKJKKJJJJJKKKJJJJKKKKJKJJJKKKJJKKJKKKJKKKJJJJKKJJKJJJKJKKKJ
 +
JJKKKKKKKJKJJKJJJJJKJKJKJKK __J
 +
 +
J KJKJKJKK JJKJJKKK __J</pre>
 +
 +
Lassen wir jetzt die Leerzeichen und auch die Pausen zwischen den Paketen weg (bzw. setzen da 16 Bitzeiten J hin):
 +
 +
<pre>JJJJJJJJJJJJJJJJKJKJKJKKKJKJKKKKJJKKJJKKJKJKJJJJ__JJJJJJJJJJJJJJJJKJKJKJKKKKJKJK
 +
KKJKKKJKKJJJJJKKKJJJJKKKKJKJJJKKKJJKKJKKKJKKKJJJJKKJJKJJJKJKKKJJJKKKKKKKJKJJKJJJ
 +
JJKJKJKJKK__JJJJJJJJJJJJJJJJKJKJKJKKJJKJJKKK__JJJJJJJJJJJJJJJJ</pre>
 +
 +
Jetzt ein hübscheres „Diagramm“, auf dem man den Zustand der D+- und D--Leitung sehen kann (Full-Speed!):
 +
 +
<pre>D+ ----------------_-_-_-___-_-____--__--__-_-_----__----------------_-_-_-____-
 +
 +
D- ________________-_-_-_---_-_----__--__--_-_-______________________-_-_-_----_</pre>
 +
 +
<pre>D+ _-___-___-__-----___----____-_---___--__-___-___----__--_---_-___---_______-_
 +
 +
D- -_---_---_--_____---____----_-___---__--_---_---____--__-___-_---___-------_-</pre>
 +
 +
<pre>D+ --_-----_-_-_-____----------------_-_-_-__--_--_____----------------
 +
 +
D- __-_____-_-_-_--__________________-_-_-_--__-__---__________________</pre>
 +
 +
So, wer das jetzt unbedingt ausprobieren will, kann das ja gerne tun, sich eines dieser extrem teuren USB-Analysegeräte kaufen, an 5&nbsp;V anschließen und dann zwei Taster mit 12&nbsp;MHz betätigen. Aber Achtung: Dies kann zu akuten Muskelbeschwerden im Armbereich führen.
  
 
== Links ==
 
== Links ==