Verursacht ein Schieberegister Metastabilität?

Geben Sie hier die Bildbeschreibung ein

Die obige Grafik zeigt die Ausgabe eines Schieberegisters.

Der Ausgang von Qa wird bei der ersten ansteigenden Flanke am Dateneingang abgetastet. Die Spannung baut sich während dieser Zeit auf. Wird es Metastabilität verursachen, da der Ausgang von Qb auch bei der ersten steigenden Flanke von Qa abgetastet wird? Der Ausgang von Qb ist bei der ersten steigenden Flanke Null, bedeutet dies, dass die zu diesem Zeitpunkt abgetasteten Daten Null sind?

Müsste die angegebenen Setup- und Hold-Zeiten für die Eingabe kennen; wie gezeichnet legt der Graph nahe, dass die Setup-Zeit (vor der ansteigenden Flanke von Clk) voraussichtlich null ist. Einige ältere Geräte (wirklich altes Zeug) erfordern, dass die Eingabe einige Zeit vor der Taktflanke stabil ist.
Das gezeigte Diagramm OP impliziert einen einzelnen Teil - ein 4-Bit-Schieberegister mit TTL-, LSTTL- oder CMOS-Vintage. Bei diskreten Komponenten wie diesen stellt der IC-Hersteller sicher, dass die Setup- und Hold-Zeiten der einzelnen Flip-Flops im Inneren des Geräts konstruktionsbedingt eingehalten werden.
@SteveSch. Ich danke Ihnen auch für den Kommentar unten und bestätige ihn, ich habe kürzlich nach Datenblättern von TI, ST und Nexperia für das 4013 D-Flip-Flop gesucht, alle mit der letzten Überarbeitung innerhalb der letzten ~ 5 Jahre, und alle gaben die typisch und max. Laufzeit, aber nicht das Minimum (das notwendig zu sein scheint, um die T H Ö l D der am Ausgang angeschlossenen Komponente). Es scheint nicht möglich zu sein, verschiedene Komponenten/Hersteller zu mischen und trotzdem diese Zusicherung von den Datenblättern zu erwarten.
@devnull - Sie haben Recht, da die meisten Hersteller keine minimalen Stützzeiten angeben, die erforderlich wären, um die Einrichtungs- und Haltezeiten für Besprechungen zu garantieren. In den Tagen des Entwerfens mit diskreten Geräten nahmen viele Ingenieure (mich eingeschlossen) die typische Prop-Zeitzahl und werteten sie um einen Faktor ab, 2X, 3X, 5X, um einen vernünftigen SWAG für minimale Takt-zu-Ausgabe-Verzögerungen zu erhalten.
@SteveSh, aber die Frage des OP ist mit VHDL/Verilog gekennzeichnet, also betrachten sie FPGAs, nicht TTL/CMOS. Ich nehme an, das Bild ist nur eines aus dem Internet. OP, bitte bearbeiten Sie die Frage, um deutlich zu machen, welchen Teil Sie verwenden.
Es gibt nichts in OPs Post, Titel oder Tag, das VHDL, Verilog oder FPGA sagt. Und neben dem Timing-Diagramm, das er mit den Bezeichnungen QA, QB, QC und QD für die Ausgänge zeigte, sind Bezeichnungen, die typischerweise bei diskreten digitalen Geräten verwendet werden. Unter 54LS161 finden Sie ein typisches Beispiel für diese Nomenklatur.
@SteveSh, die Tags waren da, bis jemand sie ohne triftigen Grund entfernte (jetzt zurücksetzen). Die Tags sind kein Ersatz für Details, aber sie sind sehr relevant. Ich bin sehr vertraut mit diskreten Geräten und mit PLD / ASIC und ihren Dokumenten :-) Wie das Zeitdiagramm vielleicht aussehen könnte, ist ein Beweis dafür, dass es sich um ein Internetbild handelt. Daher ist meine Antwort generisch, aber in Richtung PLD geneigt. Wie auch immer, wenn das OP wieder zurückfällt, werden sie es hoffentlich klären. Sie haben keine teile- / schaltungsspezifische Frage gestellt, daher ist die Technologie für eine Antwort unnötig.

Antworten (3)

Datenblätter geben selten eine garantierte Zeit an, für die der Ausgang nach dem Taktimpuls stabil bleibt. Es ist daher schwierig, anhand von Datenblatt-Timings allein an einzelnen Pins zu beweisen, dass Schieberegister-Timings eingehalten werden können.

Die Fähigkeit, Schieberegister aus Flip-Flops zu bauen, ist jedoch eine so häufige Anforderung, dass in der Praxis alle Flip-Flop-Familien so ausgelegt sind, dass, wenn ein Ausgang einen Eingang derselben Familie ansteuert, die Setup- und Hold-Zeiten gleich sind durch die Ausgangsverzögerungszeiten erfüllt. Eine Flip-Flop-Familie, die diese Anforderung nicht erfüllt, wäre unbrauchbar und würde von allen Benutzern schnell gemieden.

Innerhalb eines FPGA wird das Problem noch umstrittener, da die Layout-/Timing-Tools jedes Bit der variablen Verzögerung durch Signalschaltgeräte berücksichtigen müssen und somit die ganze Arbeit für Sie erledigen (wenn Sie die Einschränkungen richtig festgelegt haben). ).

Es sei denn, es gibt eine übermäßige Verzögerung zwischen dem Takt, der ein D-Typ-Flip-Flop (DFF) des Schieberegisters (SR) erreicht, und dem Takt, der das darauffolgende DFF erreicht.

Jeder DFF aktualisiert seine Q-Ausgänge nicht sofort mit seinem D-Eingangspegel. Es gibt eine Verzögerung, wenn es durch die internen Schaltkreise des DFF wandert. Somit hat kein DFF eine neue Q-Ausgabe erzeugt, während es das Q der vorherigen DFF zwischenspeichert, das ebenfalls keine neue Ausgabe erzeugt hat.

Geben Sie hier die Bildbeschreibung ein

Bei einer perfekten Taktanordnung würde der Takt den Takteingang aller DFFs gleichzeitig erreichen. An der aktiven Flanke des Takts würden die DFFs ihre D-Eingangspegel zwischenspeichern und nach einer Verzögerung ihre Q-Ausgänge aktualisieren.

In Wirklichkeit wird es eine Verschiebung zwischen den Taktsignalen an den Eingängen aller DFFs im SR geben. Ein richtig angeschlossener SR stellt sicher, dass dieser Taktversatz kleiner ist als die DFF D->Q-'Laufzeit'.

Der Versatz kann negativ sein, so dass der Takt zuerst den endgültigen DFF im SR erreicht, dann den DFF etwas früher erreicht und so weiter. Dies wirkt sich jedoch auf das Timing jeder getakteten Logik aus, die das erste DFF im SR ansteuert, so dass dies weitere Timing-Konsequenzen für die Gesamtschaltung hat.

Bei einem PLD (FPGA/CPLD) oder ASIC kümmert sich die Fitter-Software darum, während sie versucht, alle spezifizierten Mindesttaktanforderungen zu erfüllen.

Könnten Sie bitte für einen diskreten DFF-IC mitteilen, welcher Parameter diese minimale "D->Q 'Reisezeit'" angibt . Die Ausbreitungsverzögerung hat häufig nur einen typischen Wert, keine Grenzwerte.
@devnull, das habe ich bedacht, aber bewusst weggelassen. Die Frage von OP ist mit VHDL/Verilog gekennzeichnet, sodass sie sich mit FPGAs und nicht mit 7474s befassen. Werte ändern sich zwischen FPGAs.
@devnull - Viele diskrete digitale ICs geben eine maximale Laufzeit (Laufzeit) für einen bestimmten Temperaturbereich und VCC-Bereich an. Wenn Sie einen Teil verwenden, der dies nicht tut, und Sie sich für diesen Parameter interessieren, müssen Sie einen anderen Teil finden, den Sie verwenden können.

Da diese Frage mit [vhdl] und [verilog] gekennzeichnet ist, werde ich die Frage aus Sicht des ASIC/FPGA-Designs beantworten.

Das von dir beschriebene Problem ist durchaus möglich. Wenn der Takt wesentlich später als die erste Stufe an der zweiten Stufe ankommt, kann die zweite Stufe in einen metastabilen Zustand eintreten, da ihre Eingabe bereits begonnen hat, sich zu ändern. Doch genau das soll die Timing-Analyse verhindern. Moderne Synthesewerkzeuge sind zeitgesteuert und stellen sicher, dass Zellen und Routing so ausgelegt sind, dass keine Metastabilitätsprobleme auftreten können. Wenn das Tool dies aus irgendeinem Grund nicht kann, markiert die abschließende Timing-Analyse den Pfad als Timing-Verletzung.