Synchrone serielle Datenübertragung über den
3-Leiter-Bus
Wie der Name schon vermuten läßt, besteht der
3-Leiter-Bus aus drei Leitungen, der Taktleitung (CLK),
der Datenleitung (DATA) und der Enableleitung (ENB). Bei
der synchronen seriellen Datenübertragung über
den 3-Leiter-Bus handelt es sich um eine einfache Bitschiebeoperation
ohne irgendein Protokoll.
(einfaches Linksschieben)
Unter Beispiele
werde ich das Laden von z.B. PLL-ICs über den 3-Leiter-Bus
Schritt für Schritt erleutern.
Was bedeutet nun synchron und seriell?
Synchron bedeutet, daß der Master den Takt angibt,
also mit der ersten CLK-Flanke ein Bit auf die Datenleitung
(DATA) schaltet und mit der zweiten CLK-Flanke der Slave
das Bit in sein internes Schieberegister einliest. Dabei
ist es unerheblich mit welcher Geschwindigkeit und wie regelmäßig
übertragen wird. Alleine der CLK-Takt, den der Master
ausgibt, sagt ja dem Slave wann er das nächste Bit
einlesen soll. Der Master synchronisiert den Slave somit.
Oder man kann auch sagen, die Bits werden taktsynchron übertragen.
Und seriell bedeutet, daß Bit für Bit nacheinander
übertragen wird, das höchstwertigste Bit zuerst.
Um z.B. ein Byte zu übertragen, werden die 8 Bits eben
nacheinander, also seriell übertragen.
Es werden 8 CLK-Takte benötigt um ein Byte zu übertragen.
Da der 3-Leiter-Bus bitorientiert (und nicht byteorientiert)
ist, kann eine beliebige Anzahl von Bits übertragen
werden.
Im folgenden Timing-Diagramm (Bild2) sind es nur fünf.
Wobei meist Bit Nr.1 das höchstwertigste und Bit Nr.5
das niederwertigste Bit ist. Es kann aber auch mal anders
sein, je nachdem ob man links oder rechts schiebt.

Im übrigen ist z.B. der I²C-Bus
auch synchron und seriell, nur wird hier der Slave über
seine Adresse angesprochen und es findet eine Art Handshake
zwischen Master und Slave nach einem bestimmten Protokoll
statt. Der I²C-Bus braucht durch diese Adressierung
keine separaten Enableleitungen mehr. Außerdem ist
der I²C-Bus byteorientiert gegenüber dem 3-Leiter-Bus,
der ja bitorientiert arbeitet.
Ich glaube ich komme gerade vom Thema ab. Zurück zum
3-Leiter-Bus.
Im folgenden Bild ist ein Master mit drei Slaves
dargestellt, die über einen 3-Leiter-Bus verbunden
sind. Wobei ein Slave ein einfaches Schieberegister, PLL-IC,
Display oder sonst etwas sein kann.
Jeder Slave wird mit einer separaten ENB-Leitung vom Master
angesprochen, aber die CLK- und DATA-Leitung wird parallel
genutzt. Mit jedem Takt auf der CLK-Leitung wird ein Bit
auf der DATA-Leitung übertragen. Mit der ENB-Leitung
wird der Slave in geeigneter Form aktiviert, z.B. als ChipSelect
bei einem Schieberegister oder als Übernahmeimpuls
bei einem PLL-IC. Der Datentransfer zwischen Master und
Slave wird immer vom Master gesteuert, sowohl in Richtung
Slave (Schreiben) als auch in Richtung Master (Lesen). Nur
in Richtung Master belegt der Slave die DATA-Leitung (Leseoperation).

Weiterhin ist im Bild oben der Anschluß meines
3-Leiter-Bus Interface angedeutet.
Im Monitor-Mode können so
alle Datentransfers auf dem Bus mitgelesen, und gegebenen
Falls gespeichert werden. Ist kein Master vorhanden, kann
das Interface den Master (mode: master)
ersetzen und die vorher gespeicherten oder die von Hand
eingegebenen Datentransfers durchführen.
Hinweis: Da das Interface bitorientiert aufgebaut
ist, kann man im Strom von Einsen und Nullen schnell den
Überblick verlieren. Das Auswerten von komplexeren
Datentransfers ist dann schon etwas mühsam oder gar
unmöglich.
Das 3-Leiter-Bus Interface ist
hauptsächlich für einfache Schieberegisteroperationen
gedacht.
In meiner Praxis hat sich das Interface allerdings
als sehr nützlich erwiesen um mal schnell ein paar
Bits hin und her zu schieben bzw. eine PLL zu steuern.
Ich werde anhand von Beispielen
das Laden von z.B. PLL-ICs mit Hilfe des 3-Leiter-Bus Interface
Schritt für Schritt erleutern.
|