Clock Delay für Schieberegister

Gast #5801036
Lesenswert?

Guten Morgen Forum,

ich habe ein Verständnisproblem zum Thema Schieberegister. Angenommen 
ich habe ein Schieberegister. Dieses besitzt einen Daten Eingang und 
einen Daten Ausgang, dazu kommt noch ein Clock Eingang, dann würde man 
mehrere dieser Schieberegister ja wie folgt zusammen schalten. Register 
1 mit seinem Dateneingang an den µController. Register 2 mit dem Daten 
Eingang an den Datenausgang des ersten Registers. Register 3 mit seinem 
Daten Eingang an den Daten Ausgang des zweiten Registers und so weiter 
und so fort. Das Clock Signal wird jedoch nicht durch den 
Schieberegister Baustein geleitet, sondern alle Register erhalten den 
gleichen Takt. Werden also parallel mit diesem Verbunden.
Nun sollte es aber einen Delay zwischen dem Moment, wo der Clock 
schaltet und dem Moment, wo am Daten Ausgang die Daten verfügbar werden, 
geben. Demnach würde jedes Schieberegister ein Delay in die Daten 
einfügen und wenn man zu viele Register hintereinander schaltet dürfte 
doch irgendwann das Timing zwischen Daten und Clock verletzt werden, 
oder täusche ich mich da?
Müsste man dann nicht zu jedem Schieberegister noch einen weiteren 
Baustein spendieren, der das Clock Signal entsprechend dieser Eingang / 
Ausgang Verzögerung der Daten ebenfalls verzögert?

Danke für die Erleuchtung,
Tom
Gast #5801041
Lesenswert?

Tom schrieb:
> Nun sollte es aber einen Delay zwischen dem Moment, wo der Clock
> schaltet und dem Moment, wo am Daten Ausgang die Daten verfügbar werden,
> geben.

Guck dir mal anhand eines konkreten Schieberegisters das Timing an, 
insbesondere mit welcher Clock-Flanke die Daten vom Eingang übernommen 
werden und wann die Daten am Ausgang gültig werden.
#5801046
Lesenswert?

Tom schrieb:
> Guten Morgen Forum,
>
> ich habe ein Verständnisproblem zum Thema Schieberegister. Angenommen
> ich habe ein Schieberegister. Dieses besitzt einen Daten Eingang und
> einen Daten Ausgang, dazu kommt noch ein Clock Eingang, dann würde man
> mehrere dieser Schieberegister ja wie folgt zusammen schalten.

Spar dir die Lyrik und zeichne einen Schaltplan, siehe Netiquette.

> Nun sollte es aber einen Delay zwischen dem Moment, wo der Clock
> schaltet und dem Moment, wo am Daten Ausgang die Daten verfügbar werden,
> geben.

Sicher, das ist immer so.

> Demnach würde jedes Schieberegister ein Delay in die Daten
> einfügen und wenn man zu viele Register hintereinander schaltet dürfte
> doch irgendwann das Timing zwischen Daten und Clock verletzt werden,
> oder täusche ich mich da?

Du täuscht dich, denn es ist ja keine Verzögerung (neudeutsch delay), 
welche sich über mehrere Stufen summiert sondern nur bis zu nächsten 
Stufe des Schieberegisters läuft. Dort ist wieder ein Eingang eines 
FlipFlops, der erst bei der nächsten Taktflanke die neuen Daten 
übernimmt.

> Müsste man dann nicht zu jedem Schieberegister noch einen weiteren
> Baustein spendieren, der das Clock Signal entsprechend dieser Eingang /
> Ausgang Verzögerung der Daten ebenfalls verzögert?

Da das so ziemlich alle Schaltungen dieser Welt NICHT tun, ist doch wohl 
eher deine Theorie falsch ;-)
#5801047
Lesenswert?

Tom schrieb:
> Müsste man dann nicht zu jedem Schieberegister noch einen weiteren
> Baustein spendieren, der das Clock Signal entsprechend dieser Eingang /
> Ausgang Verzögerung der Daten ebenfalls verzögert?

Siehe Datenblatt: solange die Zeit zwischen Daten und Clock abzüglich 
der Verzögerung über der Setup Time bleibt, ist alles OK.
Gast #5801097
Lesenswert?

Nun, das Datenblatt zeigt das Timing, das fuer ein korrektes 
Funktionieren erforderlich ist. Welche Setup und Holdzeiten einzuhalten 
sind. Die Gedanken des Posters gehen in die richtige Richtung. Und bei 
sehr schnellen Schieberegistern muss man sich diesbezueglich 
tatsaechlich Muehe geben.
Bis dorthin .. einfach die passende Logikfamilie waehlen, die schnell 
genug ist.
Ende der Fahnenstange ist dann bei MC100EP446 fuer parallel to serial 
und MC100EP445 fuer serial to parallel. Beide fuer bis GHz.

Schneller geht dann nur noch mit SERDES, aber dort nimme man dann 
fertige Loesungen, zB 32Bit parallel zu 6GBit Serial oder so.
Gast #5801135
Lesenswert?

Gut, dann mit Bild.

Die Daten werden mit der fallenden Clock Flanke am Ausgang des 
Schieberegisters gültig. Mit der steigenden Flanke werden sie ins 
Register übernommen. Td ist das Delay zwischen fallender Flanke und dem 
gültigen Anliegen der Daten am Ausgang. Ergo ist Clock für alle 
Schieberegister gleich, müssten sich diese Td aufaddieren, bis man bei 
genügend Bausteinen eine Timingverletzung hat. Allerdings ist ja nicht 
der Zeitpunkt wann die Daten anliegen der Bezugszeitpunkt, sonder der 
Moment wo die Flanke fällt. Nach dieser Denkweise fügt zwar jeder 
Baustein das Td zwischen Clock und Ausgang ein, aber das ist bei allen 
Bausteinen gleich und addiert sich nicht, da die Daten durch die 
steigende Flanke des Clock um Td früher übernommen werden.
Angehängte Dateien:
#5801192
Lesenswert?

Tom schrieb:
> Gut, dann mit Bild.
>
> Die Daten werden mit der fallenden Clock Flanke am Ausgang des
> Schieberegisters gültig.

Nicht zwingend. Das was du beschreibst ist ein SPI-Modus.

> Mit der steigenden Flanke werden sie ins
> Register übernommen. Td ist das Delay zwischen fallender Flanke und dem
> gültigen Anliegen der Daten am Ausgang. Ergo ist Clock für alle
> Schieberegister gleich, müssten sich diese Td aufaddieren, bis man bei
> genügend Bausteinen eine Timingverletzung hat.

Nö. Ich sagte nicht umsonst, zeichne einen SCHALTPLAN! Dann würdest du 
sehen, daß nun die allererste Stufe des ersten Schieberegisters dieses 
Timing sieht.

> Allerdings ist ja nicht
> der Zeitpunkt wann die Daten anliegen der Bezugszeitpunkt, sonder der
> Moment wo die Flanke fällt. Nach dieser Denkweise fügt zwar jeder
> Baustein das Td zwischen Clock und Ausgang ein, aber das ist bei allen
> Bausteinen gleich und addiert sich nicht, da die Daten durch die
> steigende Flanke des Clock um Td früher übernommen werden.

Naja, fast richtig. Genauer. In den einzelnen Stufen des 
Schieberegisters startet das Timing immer neu, es gibt ein zeitliches 
Auffrischen, neudeutsch retiming der Daten. Damit kann man tausenden 
FlipFlops in Reihe schalten, ohne daß diese Kette langsamer wird. 
Lediglich der Takt muss mit elativ geringer Verzögerung und auch geinger 
Toleranz (Verschiebung, nedeutsch skew) an die vielen FlipFlops geführt 
werden. Siehe Taktung FPGA/CPLD.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren