Warum ist das Modifizieren (durch Hinzufügen zusätzlicher Gates) von Takteingängen unerwünscht?

Ich besuche einen Kurs in digitaler Elektronik an der Universität. Ich studiere Maschinenbau im zweiten Jahr, aber ich fand es wichtig, etwas Elektronik zu verstehen. Der Dozent in einer der Folien sagte, als er darüber sprach, einen binären Synchronzähler aus T-Flip-Flops zu machen

Es ist unerwünscht, Takteingänge zu modifizieren

Ich verstehe nicht, warum das so ist. Ich habe ein bisschen darüber nachgedacht, und ich kann nur an die Ausbreitungsverzögerung denken, die die Frequenz beeinflusst!? Aber für nMOS und pMOS sind es sicherlich <ein paar Nanosekunden. Wenn Sie nur wenige MHz Takt haben, ist der Unterschied nicht einmal der Rede wert.

Kann jemand erklären, warum dies unerwünscht ist / mich korrigieren, wenn ich falsch liege.

"ändern"? Wie ändern? Von wem?
Durch Hinzufügen zusätzlicher Gates im Pfad des Clock/Enable-Eingangs. @EugenSch.
Oh, fügen Sie es besser der Frage hinzu, um es zu klären.
Wenn die Prop-Verzögerung < 1 % des Taktzyklus beträgt, kein Problem, aber wenn mehr als bei Verwendung von Timing-Verzögerungen, muss die Taktflanke vorhersehbar und stabil sein, um RAM-Fehler beim Betrieb mit GHz-Raten zu vermeiden. DRAM im CPU-BIOS verwendet Wartezustände der Kernuhr, um alle WR-, RD- und Add-Verzögerungen in Zählungen für RAM nach Anzahl der Kernuhren zu timen, um eine optimale Taktgeschwindigkeit zu erhalten, die der Prop-Verzögerung im RAM entspricht. Sie haben das wahrscheinlich schon einmal gesehen ... mit 4 oder mehr aufeinanderfolgenden Zahlen mit Bindestrichen.
@ TonyM Natürlich ist es nach der Klarstellung klar, die nach meinem Kommentar hinzugefügt wurde. Aber was fügt Ihr Kommentar der Frage hinzu?
@EugeneSh., war ohne Klärung in Ordnung. Ich bitte Sie, klare Kommentare für das OP zu schreiben, wenn das für Sie in Ordnung ist. Ich kann mich nicht beschweren, dass eine Frage mit einem unverblümten kryptischen Kommentar kryptisch ist. Scheint fair zu sein. OPs sind oft neu.

Antworten (5)

Ich bin mir ziemlich sicher, dass er mit "modifizieren" eine Art Gating gemeint hat, das durch Feedback von den Zählerausgängen gesteuert wird. Das Problem dabei ist, dass Sie sehr, sehr darauf achten müssen, dass Ihr Gate-Signal sauber ist. Wenn Sie beispielsweise die Uhr ausschalten, wenn sich zwei Ausgänge ändern, ändern sich die beiden möglicherweise nicht genau zur gleichen Zeit. Dies erzeugt einen sogenannten Skew-Fehler (die beiden Signale sind zueinander „verschoben“) und dies kann eine falsche Flanke in der Uhr erzeugen. Diese falsche Flanke erzeugt wiederum einen unerwünschten Übergang in den Flip-Flops und kann bewirken, dass sich die Schaltung in einen unerwünschten Zustand bewegt. Diese Art von Fehlerbedingungen kann sehr schwer zu erkennen sein und kann von Dingen wie der Temperatur des Schaltkreises abhängen. Es ist also eine sehr schlechte Idee, es überhaupt zu versuchen, es sei denn, Sie wissen, was Sie tun.

Es gibt wahrscheinlich noch mehr Gründe, aber ich nenne drei, die mir in den Sinn kommen:

Wie Sie bereits sagten, wirkt sich die Laufzeit der Gates auf die Platzierung der Taktflanken aus und kann den Zeitspielraum der Schaltung verringern. Dies spielt möglicherweise bei langsameren Takten wie den von Ihnen erwähnten wenigen MHz keine Rolle, spielt jedoch eine Rolle, wenn Sie in einem schnelleren System ausgeführt werden.

Zweitens, je nachdem, was die anderen Eingänge zu den Gattern sind, können die Gatterausgänge Teiltaktzyklen sein und Flanken erzeugen, die weit von den erwarteten Taktflanken entfernt sind (oder Runt-Impulse oder Glitches), in die falsche Daten getaktet werden können die Flipflops.

Und drittens, wenn das Schaltungsdesign in einer integrierten Produktionsschaltung verwendet wird, kann das Design so modifiziert werden, dass es unter Verwendung eines Scan-Tests auf Defekte getestet werden kann. In diesem Modus müssen die Uhren aller Flip-Flops auf dem Chip miteinander verbunden werden. Clock-Gating kann in diesem Fall problematisch sein.

Schaltungen, die um einen synchronen Takt herum ausgelegt sind, gehen oft davon aus, dass alle flankengetriggerten Speicherelemente wie Flip-Flops gleichzeitig getaktet werden. Der Grund dafür ist, dass sich unmittelbar nach dem Takten der Zustand aller Flip-Flops gleichzeitig ändert und ihre neuen Zustände sich in einigen Nanosekunden durch die Verdrahtung ausbreiten, um den nächsten Takt-/Zustandswechsel vorzubereiten. Wenn der Takt ausreichend spät an einem Flip-Flop ankommt, können sich seine Eingangsdaten ändern, bevor er eine Chance hat, sie zu verarbeiten. Ein Design, das auf einer einzigen synchronisierten Uhr laufen soll, schlägt also fehl, weil einige Geräte im Wesentlichen ein anderes Taktsignal empfangen, das von der ursprünglichen Uhr abgeleitet ist, aber eine verzögerte Version.

Wenn Sie den Pfad der Uhr zu einigen der Flip-Flops mit einer Art zusätzlicher Logik ändern, können Sie ihn ausreichend verzögern, um dieses Problem zu verursachen.

Mit dem Modifizieren von Uhren meint er, sie auf irgendeine Weise zu steuern, um eine neue Uhr zu erzeugen, die von einem Logikgatter kommt.

Das ist in einem FPGA/CPLD oft verlockend: Takte zur Steuerung oder zum Erhalten eines geringen Stromverbrauchs mit AND zu verknüpfen, einen Zähler laufen zu lassen und den Ausgang eines Flip-Flops als neuen CLKIN-geteilt-durch-n-Takt zu nehmen. Ein Beispiel könnte die Herstellung eines Kommunikationscontrollers (I2C, UART, SPI) sein, indem ein Takt nahe der Bitfrequenz erzeugt wird.

Das Problem ist, dass es eine neue Uhr erzeugt (nennen Sie es CLKG), die sich kurz nach der ursprünglichen CLKIN ändert.

Dies wird unten gezeigt, wobei sich der Ausgang von DFF1 ändert, während DFF2 in seinem Pegel taktet. Dies kann dazu führen, dass DFF2 metastabil wird oder den falschen Pegel annimmt, weil die Ausgangsspannung von DFF1 nicht weit genug übergegangen ist.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Dies könnte die Situation in Ihrer Kommunikationssteuerungsschaltung sein, die Datenbytes von der schnellen CLKIN-Logik an das CLKG-Schieberegister zur Übertragung weiterleitet.

Es ist möglich, getaktete Taktschaltungen perfekt zu entwerfen, Schaltungen, die diese Probleme ausschließen oder umgehen. Sie werden sie routinemäßig in ASICs sehen. Die Schaltung ist jedoch von anderen komplizierter zu entwerfen und zu warten. Das einfachste und zuverlässigste Taktschema ist ein einzelner logischer Takt, der von einer PLL oder einem Eingangspin zu allen Flip-Flop-Takten geht. Die Synthesesoftware erfordert von Ihnen den geringsten Aufwand, um eine zuverlässige Schaltung zu erstellen. Verwenden Sie mehr als eine Taktdomäne sparsam und weil Sie es unbedingt müssen.

Erstens scheinen Sie die Bedeutung von Ausbreitungsverzögerungen zu unterschätzen. Ein paar Nanosekunden Taktverschiebung sind viel , selbst bei niedrigen Frequenzen. Wenn Sie Ihren Takt um 5-10 ns vorziehen , ist das nicht so schlimm, da Sie Ihre Setup-Zeiten verletzen , und eine Reduzierung Ihrer Schaltung, z. B. von 10 MHz auf 9 MHz, wirkt dem entgegen. Eine Verzögerung Ihrer Uhr ist viel schlimmer, da Sie die Haltezeiten verletzen und es nicht hilft, Ihr Design einfach mit einer langsameren Taktrate auszuführen. Wenn der Taktimpuls für einen Trigger früher eintrifft, erscheint der Takt beim nächsten Trigger natürlich verzögert, sodass der schlimmste Fall fast garantiert eintritt.

Zweitens (und noch wichtiger) sind kombinatorische Schaltungen anfällig für Gefahren oder Störungen , wie z. B. hier beschrieben :

Geben Sie hier die Bildbeschreibung ein

Gefahren erzeugen zusätzliche steigende/fallende Flanken auf Ihrem Signal, bevor es einen stabilen Wert erreicht. Das spielt keine große Rolle für Datensignale, die am Ende des Taktzyklus abgetastet werden, wenn sie stabil sind. In einer Taktschaltung führen solche Störungen jedoch zu einem undefinierten Verhalten, da sie zusätzliche Taktflanken erzeugen und die Timing-Anforderungen all Ihrer Trigger verletzen.