Ich arbeite an einem ASIC-Design und muss verschiedene Taktquellen für einen digitalen Block in verschiedenen Betriebsmodi verwenden.
Kann ich Clock-Gating in Kombination mit einem ODER-Gatter sicher verwenden , um den Takt wie im folgenden Diagramm zu erzeugen?
Wenn das in Ordnung ist, welche Einschränkungen benötigen die clk _enable Signale (dh störungsfrei, nicht überlappend, Timing in Bezug auf den jeweiligen clk , ...)?
Beachten Sie, dass die Clock-Gates einen D-Latch verwenden, der transparent ist, wenn der entsprechende clk LOW ist.
Die Ausgereiftheit Ihres Takt-Gatings hängt davon ab, wie stark die nachgeschaltete Logik auf einen schlechten Taktimpuls reagieren wird.
Zum Beispiel: Wenn die Downstream-Logik immer zurückgesetzt wird, nachdem die Uhren umgeschaltet haben, dann können Sie mit fast allem für Ihre Clock-Gating-Logik davonkommen.
Wenn Sie jedoch erwarten, dass die nachgeschaltete Logik weiterhin ordnungsgemäß funktioniert, wenn die Uhren umgeschaltet werden (ohne Zurücksetzen), muss Ihre Gatterlogik so konzipiert sein, dass Sie niemals zu kurze Taktimpulse haben, die Ihre Zeitbeschränkungen verletzen.
Die Gefahr bei kurzen Taktimpulsen, die gegen Ihre Zeitbeschränkungen verstoßen, besteht darin, dass eine Zustandsmaschine in einen ungültigen Zustand versetzt werden kann, von dem sie sich nicht erholen kann. Das ist wirklich einfach, also nimm es nicht als selbstverständlich hin, dass es dir nicht passieren wird.
Das Entwerfen einer guten Clock-Gating-/Switching-Logik, die keine kurzen Taktimpulse erzeugt, ist schwierig und erfordert normalerweise genaue Kenntnisse Ihres ASIC-Prozesses. Anstatt Ihre eigenen zu erfinden, schlage ich vor, dass Sie mit Ihrem ASIC-Haus oder demjenigen sprechen, von dem Sie Ihre ASIC-Bibliotheken erhalten haben. Die Chancen stehen sehr gut, dass sie bereits die Schaltung haben, die Sie benötigen.
Aktualisieren:
Das OP hat angegeben, dass die Clock Gates in den Schaltplänen aus der ASIC-Bibliothek stammen. Wenn diese Gates so konzipiert sind, dass sie keine Störungen verursachen (dh sie erzeugen niemals einen zu kurzen Impuls), besteht der einzige Trick darin, genügend Zeit zwischen dem Deaktivieren einer Uhr und dem Aktivieren der nächsten zu lassen. Auf diese Weise können Sie sauber zwischen Uhren wechseln und haben keine Uhrenstörungen.
Das Entwerfen der Logik dafür (ausreichend Zeit zwischen dem Deaktivieren/Aktivieren lassen) ist immer noch schwierig, aber nicht besonders schwierig. Auf einer Skala von 1-10 wäre dies eine 6. Das Entwerfen eines störungsfreien Clock-Gates wäre dagegen eine 10 oder sogar 12!
EEtimes hat einen Artikel , in dem es um störungsfreie Taktschaltkreise geht. Basierend auf diesem Artikel hat Young Rhoney auch einen guten Blog, 2x1 und Nx1 Clock Switching .
Wie bereits erläutert, besteht die Schlüsselidee zum störungsfreien Umschalten der Uhr darin, eine Uhr auszuschalten, bevor die andere eingeschaltet wird. Der Blog enthält auch eine Schaltung für die Nx1-Taktumschaltung.
Zusätzlich zu Davids Kommentaren: Es gibt Risiken nach kurzen Taktimpulsen. Sofern Sie keine eiserne Garantie für die Gültigkeit der Clock-Enable-Leitungen geben können, möchten Sie vielleicht die Clock-Enables durch den Ausgang eines Decoders steuern, um (zum Beispiel) zu vermeiden, dass mehrere Clock-Signale durch das OR überlagert werden. Wenn Sie garantieren können, dass sie die gleiche Frequenz und Phase haben, ist dies kein Problem, aber dann wäre es wahrscheinlich nicht sinnvoll, überhaupt mehrere Uhren zu haben.
AllInOneBoat
Benutzer924
Benutzer3624
AllInOneBoat
Benutzer924
AllInOneBoat
Benutzer3624