Wie ich mir synchrone digitale Netzwerke vorstelle, funktionieren: Datenleitungen werden bei steigender Taktflanke abgetastet, eine Reihe von Transienten tritt auf, das System beruhigt sich und Datenleitungen werden bei der nächsten steigenden Flanke erneut abgetastet. Ich würde Transienten an fallenden Taktflanken platzieren, damit sowohl die Tsu- als auch die Th-Zeit für die Abtastung klar sind. (Etwas ähnlich dem Verhalten des SPI-Busses.)
Was in einem Datenblatt eines realen Geräts (74595) zu sehen ist: D-Flipflops, die in Reihe geschaltet sind und einen gemeinsamen Takt haben. Am Ausgang des ersten Flipflops folgt eine Transiente auf der Datenleitung auf eine steigende Taktflanke mit Tpd. Das nächste Flipflop benötigt nach der ansteigenden Flanke die Th-Zeit einer stabilen Datenleitung, um korrekt zu arbeiten. Natürlich funktioniert es, weil Tpd>Th, aber es ist nur eine Frage von Nanosekunden.
Mein Problem mit all dem ist, dass es nicht robust ist (vielleicht nicht das beste Wort). Die Visualisierung von Dingen auf einem Logikanalysator ist weniger nützlich, da sich die Datenleitungen praktisch synchron mit der steigenden Flanke des Takts ändern. Zufällige Fehler, die durch Th>Tpd verursacht werden, sind nicht wirklich sichtbar und bleiben unentdeckt. Wenn ich ein weiteres Schieberegister einer anderen Technologie in Reihe schalte, das längere Haltezeiten erfordert, funktioniert die Schaltung nicht, egal wie langsam ich den Takt wähle.
Ist dies die Art und Weise, wie am häufigsten synchrone digitale Schaltungen aufgebaut sind? Nur die Laufzeitverzögerung von Komponenten macht es möglich? Bin ich zu idealistisch? :)
Sie haben recht in Ihrem Bauchgefühl, dass es ein potenzielles Problem gibt. Innerhalb eines Chips haben sich die Chipdesigner darum gekümmert. Wenn Sie eine Kette von beispielsweise 74x595 anschließen, können Sie tatsächlich in Schwierigkeiten geraten, insbesondere bei einer langen Kette, einem schwachen Treiber und einer Taktverdrahtung, die am "ersten" Chip (demjenigen, der die Daten empfängt) beginnt. Eine 'Standard'-Lösung besteht darin, die Uhr beginnend mit dem letzten Chip zu füttern.
Eine bessere Lösung ist die Verwendung eines Chips wie dem CD4094, der eine verzögerte Ausgabe hat. Es hat ein zusätzliches Flipflop, das auf der gegenüberliegenden Flanke getaktet wird. Die Verwendung dieses Ausgangs zur Speisung des nect SR eliminiert alle Setup/Hold-Probleme (aber es reduziert die maximale Taktfrequenz).
Ich denke, Sie können den gleichen Effekt erzielen (eine Art Armenimplementierung der verzögerten Ausgabe), indem Sie die geraden 595er mit dem einfachen Takt und die ungeraden 595er mit dem invertierten Takt takten. Aber ich habe das nie wirklich hinbekommen.
Ja, aber was der Schaltplan nicht zeigt, ist, dass der IC-Designer eine kleine Verzögerung auf der Datenleitung eingebaut hat. In einer normalen Situation würden die Daten einige Logikgatter durchlaufen und "echte Arbeit" leisten, bevor sie abgetastet werden
Mein Problem mit all dem ist, dass es nicht robust ist (vielleicht nicht das beste Wort). Die Visualisierung von Dingen auf einem Logikanalysator ist weniger nützlich, da sich die Datenleitungen praktisch synchron mit der steigenden Flanke des Takts ändern. Zufällige Fehler, die durch Th>Tpd verursacht werden, sind nicht wirklich sichtbar und bleiben unentdeckt. Wenn ich ein weiteres Schieberegister einer anderen Technologie in Reihe schalte, das längere Haltezeiten erfordert, funktioniert die Schaltung nicht, egal wie langsam ich den Takt wähle.
Sie sprechen zwei Probleme an. Nennen wir die beiden synchronen Schaltungen A und B, wobei A in B einspeist und beide den gleichen Takt teilen
Die Schaltung funktioniert nicht, wenn Gesamt-T pd(A) < T h(B) ist , wobei T pd die kombinatorische Verzögerung der Uhr ist. Ist das wahr? Absolut!Sie sind der Schaltungsdesigner und es liegt in Ihrer letzten Verantwortung sicherzustellen, dass die Schaltung funktioniert. In Wirklichkeit ist es normalerweise kein Grund zur Sorge; Selbst wenn Sie einen Registerausgang direkt in den Eingang eines anderen einspeisen, ist der Designspielraum der Chipspezifikationen hoch. Für einen NXP 74HC595 beispielsweise beträgt die typische Ausbreitungsverzögerung bei einer 4,5-V-Versorgung 19 ns, die erforderliche Haltezeit 3 ns und die typische Haltezeit -2 ns - kein Problem. Für einen TI SN74LV595A bei 5 V beträgt die typische Ausbreitungsverzögerung 4,5 ns, die minimale Ausbreitungsverzögerung 1 ns und die erforderliche Haltezeit 2 ns. Könnte dies ein Problem sein, wenn die Ausbreitungsverzögerung und die Haltezeiten im ungünstigsten Fall sind? Absolut. Könnte es ein Problem sein, wenn Sie einen SN74LV595A in einen NXP74HC595 kaskadieren? Absolut.
„Die Visualisierung von Dingen auf einem Logikanalysator wird weniger nützlich sein, da sich die Datenleitungen praktisch synchron mit der steigenden Taktflanke ändern.“ WAHR. Nehmen Sie einen Tipp von SPI-Bussen und stellen Sie den Logikanalysator so ein, dass er die Daten an der fallenden Taktflanke abtastet. Die Regeln von SPI sind einfach: Sie aktualisieren die Ausgänge an einer Kante und tasten die Eingaben an der anderen ab .
Superkatze
Wouter van Ooijen
Superkatze
Wouter van Ooijen
Superkatze
Superkatze
Wouter van Ooijen
Superkatze