Getaktetes flankengesteuertes Timing (Verschmutzungsverzögerung)

Ich lese ein Buch über Computerarchitektur, und darin steht, dass bei getakteten flankengesteuerten Geräten die Kontaminationsverzögerung normalerweise nicht Null ist und dass die Kontaminationsverzögerung für Register größer als ihre Haltezeit angenommen wird, "was ihm die wichtige Eigenschaft, dass seine Ein- und Ausgänge gleichzeitig gelesen und geschrieben werden können (d. h. von ähnlichen Geräten, die denselben Takteingang teilen)".

Aber diese Aussage habe ich nicht ganz verstanden. Soweit ich weiß (ich bin sehr neu in diesem Thema), ist die Kontaminationsverzögerung eine Mindestzeit, gemessen nach der aktiven Taktflanke, während der der Ausgang gültig bleibt, nachdem sich der Eingang geändert hat (gemessen nach der aktiven Taktflanke). und die Haltezeit ist eine minimale Zeitanforderung, gemessen von der aktiven Taktflanke, während der die Eingangsdaten stabil gehalten werden müssen. Warum ist die Kontaminationsverzögerung des Registers größer als die Haltezeit, und wie genau ermöglicht diese Tatsache, dass es gleichzeitig gelesen und geschrieben werden kann? Könnte jemand eine genauere Erklärung geben?

Aktualisieren: Ich verstehe grundsätzlich, wie wichtig es ist, dass die Kontaminationsverzögerung in einem flankengesteuerten Flipflop größer als die Haltezeit ist, wenn zwei verkettete Flipflops vorhanden sind (dh der Ausgang des ersten dient als Eingang für den zweiten). ). Wenn der Takt ansteigt, wird der Eingang zum ersten Flip-Flop abgetastet und zum zweiten Flip-Flop weitergeleitet. Dann, nach einer Taktperiode, wenn der Takt wieder ansteigt, tastet das zweite Flipflop seinen Eingang ab. Aber der Eingang des zweiten Flip-Flops muss für mindestens eine Haltezeit auf dem gleichen Wert bleiben, nachdem die Uhr ansteigt, wenn wir wollen, dass er korrekt gespeichert wird. Das erste Flip-Flop muss also garantieren, dass sich sein Ausgang (der der Eingang für das zweite Flip-Flop ist) für mindestens eine Haltezeit nicht ändert. Das ist,

Ist das richtig? Der Teil, den ich nicht verstehe, ist, warum diese Tatsache den Registern "die wichtige Eigenschaft verleiht, dass ihre Ein- und Ausgänge gleichzeitig gelesen und geschrieben werden können (dh von ähnlichen Geräten, die denselben Takteingang teilen)".

Antworten (3)

Aus meinem Lehrbuch, Digital Design and Computer Architecture , Harris and Harris, pg. 88

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Ein wichtiger Hinweis

Wenn Sie versuchen, die Ausbreitungsverzögerung einer kombinatorischen Schaltung mit mehreren Elementen zu finden, müssen Sie die Ausbreitungsverzögerung durch den kritischen Pfad hinzufügen .

Wenn Sie jedoch versuchen, die Kontaminationsverzögerung einer kombinatorischen Schaltung mit mehreren Elementen zu finden, müssen Sie die Kontaminationsverzögerung über den kürzesten Weg addieren .

So viel ist Ihnen wahrscheinlich klar.

Eigentlich klingt es für mich so, als würden Sie sich auf die Kontaminationsverzögerung beziehen. Sie sagten, die Kontaminationsverzögerung ist die Zeit, die gemessen wird, nachdem sich eine Eingabe geändert hat, bis die Ausgabe gültig bleibt. Wenn Sie die vorherige Ausgabe meinen , dann ja, denn das bedeutet dasselbe wie bis die Ausgabe beginnt, sich auf den neuen Wert zu ändern.

Zusatz

Zu Ihrer Frage, wie das mit dem Lesen und Schreiben aus einem Register umgeht. Das hat mich eine Weile verwirrt, aber ich denke, es macht jetzt vollkommen Sinn für mich.

Was Sie also über die Kontaminationsverzögerung und die Haltezeit gesagt haben, ist richtig. Dieses Problem tritt auf, wenn Flip-Flops verkettet sind. Und wenn Sie darüber nachdenken, gilt es auch nur, wenn Sie gleichzeitig lesen und schreiben möchten.

Stellen Sie sich eine Schaltung mit nur 2 Flip-Flops vor. Es muss nicht unbedingt ein Register sein, nur das erste Flip-Flop ist das Speicherelement, in das geschrieben wird , und das 2. Flip-Flop ist das Speicherelement, das das erste liest . Wenn Sie nur in verschiedenen Taktzyklen lesen und schreiben müssten, wäre nichts von diesem Verzögerungszeug von Bedeutung, da das Lesen immer in einem anderen Taktzyklus erfolgen würde, wenn die Ausgabe des ersten stabil wäre, und sich nicht ändern könnte, da das Schreiben möglich ist. t treten im selben Taktzyklus auf.

Wenn Sie jedoch im selben Taktzyklus einen neuen Wert in das 1. Flipflop schreiben und den vorherigen Wert ordnungsgemäß in das 2. einlesen möchten, ist dies genau die von Ihnen beschriebene Situation, bei der die Verschmutzung des ersten kleiner als die Haltezeit des zweiten war, dann würde das Schreiben auf das erste dadurch das Lesen des zweiten verunreinigen. Es macht absolut Sinn. Das Lesen muss erfolgreich erfolgen, bevor das Schreiben beginnt, das Gelesene zu ändern, sonst geht der Wert verloren.

Dieser Druck Ihres Buches war für mich nützlich. Ja, mit Kontaminationsverzögerung meine ich, dass es die Zeit ist, während der die vorherige Ausgabe garantiert gültig bleibt, bevor sie sich aufgrund der Änderung der Eingabe zu ändern beginnt. Was ich nicht ganz verstehe, ist, warum die Kontaminationsverzögerung des Registers größer ist als die Haltezeit. Das Buch, das ich gerade lese, erklärt es mit den Worten, dass es "die wichtige Eigenschaft gibt, dass seine Ein- und Ausgänge gleichzeitig gelesen und geschrieben werden können", aber diese Erklärung erscheint mir etwas vage.
Ja, dein Update ist übrigens richtig. Wenn die Kontaminationsverzögerung kleiner als die Haltezeit wäre, würde der Eingang des zweiten Flip-Flops während der Haltezeit geändert werden, wenn er stabil sein muss, um korrekt abgetastet zu werden.
@anonymous Meine Antwort auf Ihre Frage zum Lesen und Schreiben wurde aktualisiert.
Ich mochte das Buch, das Sie erwähnt haben, es ist sehr gut; Ich werde davon Gebrauch machen. Ich empfehle auch das Buch „Computation Structures“ (Ward und Halstead), das ich selbst studiere, aber einige Teile davon sind schwer zu lesen.

Ich habe den Begriff "Kontaminationsverzögerung" noch nie gehört, aber es hört sich so an, als würden Sie über die Anforderungen an die Eingangshaltezeit sprechen.

Flankengetriggerte Speichergeräte haben ein Zeitfenster relativ zur Taktflanke, während dessen die Eingabe stabil gehalten werden muss, um ihren Wert zuverlässig zu erfassen (und Metastabilitätsprobleme zu vermeiden). Der Beginn dieses Fensters wird "Eingabe-Setup-Zeit" genannt und das Ende des Fensters wird "Eingabe-Haltezeit" genannt. Die Eingangshaltezeit ist oft Null und kann sogar negativ sein.

Der Ausgang eines solchen Geräts hat ein Zeitfenster, in dem er sich ändert, wenn der neue Wert vom alten Wert abweicht. Normalerweise gibt es eine minimale Takt-zu-Ausgabe-Zeit, auch "Ausgangshaltezeit" genannt, die immer ein kleiner positiver Wert ist. Es gibt auch eine maximale Laufzeit von der Uhr zum Ausgang, nach deren Ablauf der Ausgang garantiert den neuen Wert hat.

Ihre Frage bezieht sich auf die Beziehung zwischen der Ausgangshaltezeit und der Eingangshaltezeit. Solange Ersteres größer ist als Letzteres, können Reihen identischer Geräte (z. B. Flip-Flops in einem Schieberegister) direkt miteinander verbunden werden, Ausgang an Eingang, ohne Bedenken hinsichtlich unerwarteten Verhaltens.

Meine Interpretation ist, dass sich "Kontaminationsverzögerung" effektiv auf die Zeitspanne bezieht, nachdem sich der Eingang einer stabilen Schaltung geändert hat, während der sich der Ausgang garantiert nicht ändert. im Wesentlichen "minimale Ausbreitungsverzögerung" oder "Ausgangshaltezeit", obwohl ich den Begriff "Kontamination" [den ich in diesem Zusammenhang vorher noch nicht gehört hatte] vielleicht besser finde als "minimale Ausbreitungszeit", da "Ausbreitung" impliziert, dass eine "korrekte "Wert breitet sich auf eine Weise aus, die "Kontamination" nicht tut.
@supercat: Das Buch, das ich gerade studiere, sagt auch Folgendes: "Komtaminationsverzögerungen werden gelegentlich als minimale Ausbreitungsverzögerungen bezeichnet, was irreführend ist. Ausbreitung und Kontamination finden im Allgemeinen zu unterschiedlichen Zeiten statt, wobei die Kontamination früher erfolgt."
@anonymous: Was ist der physikalische Mechanismus, der "Kontamination" zugrunde liegt, die nicht mit der Änderung der Eingänge zusammenhängt (minimale Ausbreitungsverzögerung)?
@DaveTweed: Ich bin mir nicht sicher, ob ich deine Frage verstanden habe. Ich bin neu in diesem Thema, aber soweit ich weiß, hängt die Kontamination immer mit der Änderung der Eingaben zusammen.
@anonymous: Wie ist das dann keine Ausbreitungsverzögerung, insbesondere "minimale Ausbreitungsverzögerung"? Mit anderen Worten, wie genau unterscheidet sich die Kontaminationsverzögerung von der Ausbreitungsverzögerung, was die Quelle, die Sie zitieren, behauptet? Ich verstehe nicht, warum wir für dieses Konzept einen neuen Begriff brauchen.
@DaveTweed: Ich weiß nicht, warum die Autoren nicht den Begriff "minimale Ausbreitungsverzögerung" verwenden wollten, der, wie sie behaupten, gelegentlich verwendet wird. Dieses Thema ist neu für mich, daher kann ich es nicht genau beurteilen. Vielleicht ist es nur, um Verwechslungen mit der Verwendung des Begriffs "Fortpflanzungsverzögerung" im selben Buch zu vermeiden. Die Unterscheidung zwischen den Autoren besteht darin, dass die Kontaminationsverzögerung die minimale Zeit ist, bevor sich die Ausgabe zu ändern beginnt (nachdem sie nicht mehr garantiert gültig ist), und die Ausbreitungsverzögerung die maximale Zeit ist, in der die Ausgabe den endgültigen Wert erreicht (und ist garantiert gültig).
@DaveTweed: Ich habe sicherlich den Begriff "minimale Ausbreitungsverzögerung" gesehen, kann aber auch ein starkes Argument für die Verwendung eines anderen Begriffs sehen: Wenn es 3 ns dauert, bis ein Eingangssignal von Vil auf Vih ansteigt, ist die Zeit, in der die Ausgabe garantiert nicht ändert, sollte ab Beginn dieses 3-ns-Intervalls gemessen werden, während die Zeit, während der die Ausgabe nicht garantiert gültig ist, ab Ende dieses Intervalls gemessen werden sollte. Wenn das Wort „Eingang“ immer im Ausdruck „Eingangshaltezeit“ verwendet würde, dann wäre „Ausgangshaltezeit“ vielleicht ein besserer Begriff, aber …
... da die Eingangshaltezeit oft einfach als "Haltezeit" bezeichnet wird, würde der Begriff "Ausgangshaltezeit" zu mehr Mehrdeutigkeit führen als ein völlig anderer Begriff; "Kontaminationsverzögerung" erscheint vernünftig.
@supercat: Ich denke, ich sehe einige der Nuancen, auf die Sie hinweisen, aber ich sehe nicht den praktischen Nutzen davon. Als Logikdesigner kümmere ich mich hauptsächlich um die Start- und Endzeiten, wenn die Ausgabe eines Gatters garantiert gültig ist ; Ich interessiere mich wirklich nicht für die Feinheiten, warum oder wie es ungültig wurde. Die Berechnung dieser Zeiten für eine Logikkette basiert vollständig auf minimalen und maximalen Ausbreitungsverzögerungen.
@DaveTweed: Die Zeitspanne zwischen dem Zeitpunkt, an dem die Eingabe einer Schaltung ungültig wird, und dem Zeitpunkt, an dem die Ausgabe ebenfalls ausgeführt wird, und die Zeit zwischen dem Zeitpunkt, an dem die Eingabe einer Schaltung gültig wird und deren Ausgabe ebenfalls ausgeführt wird, können beide als "Laufzeit" und in bezeichnet werden In vielen praktischen Schaltungsrealisierungen werden sie von denselben physikalischen Faktoren beeinflusst, aber konzeptionell sind sie unabhängige Größen. Stellen Sie sich zum Beispiel einen asynchronen ROM-Chip mit einer Zeitschaltung an jedem Eingang vor, um zu sagen, ob er in den letzten 50-75 ns hoch war, eine ähnliche Schaltung, um zu sagen, ob er niedrig war, und ...
[streichen Sie dieses Beispiel – ich werde versuchen, meinem Artikel ein Beispiel hinzuzufügen, wenn ich den 5-Minuten-Bearbeitungstimer nicht habe.]
@DaveTweed: Nach einigen weiteren Überlegungen denke ich, dass der Wunsch des Autors, die Begriffe aufzuteilen, mit der Tatsache zusammenhängt, dass im Allgemeinen das aggregierte Minimum und Maximum einer bestimmten Menge die Summe einer Reihe von Minima und die Summe einer Reihe sein sollte von Maxima der gleichen Größen , aber die Zeit, bis die Ausgabe ungültig werden kann, wird oft verschiedene Schaltungselemente von der Zeit beinhalten, bis die Ausgabe gültig wird. Darüber hinaus können einige Schaltungselemente ein "analoges" Verhalten aufweisen, so dass z. B. ein Ausgang 50 ns gültig ist, nachdem der Eingang 1/3 Schiene erreicht hat, oder 25 ns nachdem er 2/3 Schiene erreicht hat ...
... was zuletzt eintritt. Es könnte auch spezifizieren, dass es nicht ungültig geworden ist, bis mindestens 15 ns, nachdem die Eingabe den Halbschienenpunkt passiert hat. Wenn man die Steigung der Eingangswelle kennt, kann man die Dinge vielleicht in Form von minimaler und maximaler Ausbreitungsverzögerung ausdrücken, aber eine echte Eingangsspezifikation geht möglicherweise weit mehr ins Detail als nur diese beiden Zahlen.
Hast du meine Antwort bemerkt? Wie würden Sie das Timing der dort beschriebenen Schaltung parametrieren? Würde die Zeit, in der sich der Übertrag durch die Flops ausbreitet, als "Ausbreitungsverzögerung" für die Schaltung als Ganzes angesehen werden? Ich vermute, dass "Min- und Max-Ausbreitung" wahrscheinlich eine gute und angemessene Terminologie für ein System ist, bei dem alles vollständig kombinatorisch ist, außer Latches, die einen gemeinsamen Takt teilen, einige reale Schaltungen (insbesondere im Bereich mit geringem Stromverbrauch) jedoch nicht haben Sie den Luxus einer Uhr, deren Geschwindigkeit alles andere dominiert.

Ich denke, der Begriff "Kontaminationsverzögerung" wird verwendet, um sich auf die minimal mögliche Dauer zwischen dem Zeitpunkt zu beziehen, an dem die Eingänge ihre alten gültigen Eingangspegel nicht mehr halten, und dem frühesten Moment, an dem die Ausgänge möglicherweise nicht mehr ihre alten gültigen Ausgangspegel halten. Der Begriff "minimale Ausbreitungsverzögerung" wird häufig für diesen Zweck verwendet, aber eine solche Verwendung impliziert, dass der Begriff "Ausbreitungsverzögerung" tatsächlich zwei Dinge misst:

  • Die Zeitspanne zwischen dem Zeitpunkt, an dem eine Eingabe zum ersten Mal aufhört, eine gültige Darstellung der alten Ebene zu sein, und dem Zeitpunkt, an dem die Ausgabe zum ersten Mal als gültige Ebene angesehen werden darf.

  • Die Zeitspanne zwischen dem Zeitpunkt, zu dem ein Eingang einen stabilen gültigen Logikpegel annimmt, und dem Zeitpunkt, bis zu dem der Ausgang einen stabilen Logikpegel angenommen haben muss.

Wenn man davon ausgeht, dass ein Eingang gleichzeitig aufhört, ein gültiges Low zu sein und ein gültiges High wird, oder umgekehrt, ist die Startreferenz für diese beiden Zeiten dieselbe. In einigen Fällen können sie jedoch unterschiedlich sein. Ferner impliziert der Begriff "Fortpflanzungsverzögerung" im Allgemeinen, dass etwas Nützliches weitergegeben wird, aber in einigen Fällen kann ein Eingangsstimulus dazu führen, dass eine Ausgabe, die gültig war und in ihrem gegenwärtigen Zustand bleiben sollte, vorübergehend ungültig wird, bevor sie in den Zustand zurückkehrt es hatte zuvor gehalten.

Stellen Sie sich zum Beispiel eine Schaltung vor, die "high" ausgeben soll, wenn ein 16-Bit-Ripple-Ripple-Zähler einen Wert von 32767 bis einschließlich 65534 hat. Idealerweise würde die Schaltung genau beim Eintreffen des 32.767. Impulses ein "Hoch" ausgeben (unter der Annahme, dass der Zähler bei Null gestartet ist) und beim Eintreffen des 65.535. Impulses auf "Low" gehen. Ohne zusätzliche Schaltkreise kann die Schaltung jedoch sehr gut beim Eintreffen des 32.768. Impulses kurz auf Low gehen (wenn sie gerade hoch sitzen sollte) und beim Eintreffen des 65.536. Impulses kurz auf High gehen (wenn sie gerade sitzen sollte niedrig). Abhängig davon, was der "compare"-Ausgang tut, kann die Tatsache, dass er bei diesen Impulsen kurzzeitig ungültig wird, ein Problem sein oder auch nicht, aber es scheint ein wenig umständlich, sein Verhalten in Bezug auf "

Ich habe einen Tippfehler in deinem Beispiel korrigiert. Und die Terminologie ist überhaupt nicht „umständlich“ – das ist genau das, was minimale und maximale Ausbreitungsverzögerung immer bedeutet haben. Das einzige, was hier peinlich ist, ist Ihr hoch erfundenes und pathologisches Beispiel. Mit im Wesentlichen der gleichen Menge an Logik können Sie die Ausgabe ganz einfach völlig störungsfrei machen, mit einer konstant kleinen Ausbreitungsverzögerung.
@DaveTweed: In diesem speziellen Beispiel wäre es nicht schwierig, die Logik zu ändern, um den Fehler zu vermeiden, aber in einigen anderen Fällen wäre es schwierig. Viele reale Geräte haben alle möglichen seltsamen Timing-Verhalten, und manchmal ist es notwendig, mit solchen Dingen zu interagieren. Wenn man den Luxus hat, Ein- und Ausgänge mit einem gemeinsamen Takt zu synchronisieren, ist es einfach, störungsfreie Ausgänge zu machen, aber manchmal braucht man Schaltkreise, die vollständig statisch sind, außer wenn etwas "Interessantes" passiert und man nicht weiß, was für " interessante" Sache wird zuerst passieren.
@DaveTweed: Stellen Sie sich einen Sensor mit mehreren Eingängen vor, der einen Strobe-Eingang, einen "bereiten" Ausgang und einige Datenausgänge hat. Die Datenausgaben sind zwischen einem Moment von 5 ns, nachdem der Strobe aktiviert wurde, und einem Moment von 2 ns, bevor "Bereit" aktiv wird, unspezifiziert (was bis zu 1 ms nach der Aktivierung des Strobes nicht passieren kann). Würden Sie die minimale/maximale Ausbreitungsverzögerung zwischen Strobe und Daten als 5 ns und 1 ms betrachten, oder würden Sie die 5 ns und 1 ms als unterschiedliche Dinge betrachten?
In einem solchen Szenario würde ich mir nicht einmal Gedanken über die Verzögerung von Strobe bis Ready machen. Alles, was mich interessiert, ist die Setup-Zeit (2 ns) zwischen der Gültigkeit der Daten und der Bereitstellung. Die große variable Verzögerung von Strobe bis Ready könnte Auswirkungen auf Systemebene haben, aber das ist nicht eines der Timing-Probleme für das Low-Level-Logikdesign.
@DaveTweed: Man könnte das Bereitschaftssignal als Zeitreferenz verwenden, aber wenn man für seine Anwendung zB 1000 Messwerte pro Sekunde nehmen und etwas damit machen müsste, könnte man das Bereitschaftssignal ignorieren und einfach 1.000 Stroboskope/Sekunde ausgeben, Erfassen Sie jeden Messwert zur gleichen Zeit, während einer den nächsten blitzt. Wenn man 1.000 Abtastungen/s haben möchte, unabhängig davon, wie schnell das Gerät abtasten könnte, kann ein solcher Ansatz einfacher sein als die Koordinierung mit dem „Bereit“-Signal.