Uhr verzerrt? Gut oder schlecht?

Also, ich habe mich über den Zeitversatz informiert. Ich bin auf die Tatsache gestoßen, dass Clock Skew unglaublich nützlich sein kann, in dem Sinne, dass positive Skew verwendet werden kann, um die Schaltung zu beschleunigen, indem die Taktfrequenz erhöht wird.
Warum werden dann so viele Maßnahmen ergriffen, um den Taktversatz vollständig zu beseitigen? Es scheint mir, dass eine kontrollierte Menge äußerst vorteilhaft ist? Gibt es schädliche Auswirkungen von Clock Skew?

Clock Skew selbst beschleunigt die Taktfrequenz nicht. Wenn jedoch ein Taktversatz sicherstellt, dass die Daten ankommen, bevor sie benötigt werden, kann dies bedeuten, dass das System sicher mit einer höheren Taktfrequenz laufen könnte. Wenn umgekehrt die Summe aus Skew + Verzögerung bedeutet, dass die Daten später als benötigt ankommen, bedeutet dies, dass entweder die Taktfrequenz oder der Skew reduziert werden muss.
eda360insider.wordpress.com/2011/07/12/… ist eine lohnende Lektüre (ich habe an der Technologie gearbeitet, die es beschreibt; dort ist ein besseres Dokument verlinkt, für das Sie sich registrieren müssen)

Antworten (3)

Taktversatz tritt auf, wenn Taktflanken zu unterschiedlichen Zeiten in verschiedenen Blöcken der Schaltung auftreten. Dies kann auf physische Entfernung, Taktpuffer oder parasitäre Reaktanzen zurückzuführen sein. Der Zeitversatz kann positiv oder negativ sein (Takt antizipiert oder verzögert), je nachdem, welches Signal als Referenz genommen wird.

Normalerweise kann Taktversatz in einem synchronen Netzwerk Fehler in den Daten erzeugen: Ein Beispiel sind dynamische Gatter, bei denen der Ausgang in einer Phase des Takts vorgeladen und in der anderen ausgearbeitet wird. Versatz kann die Ausbreitung des Vorladungszustands anstelle des richtigen verursachen.

In der synchronen Logik wird Skew zusammen mit Latenz, Setup-Zeit und Haltezeit von Gattern und Registern berücksichtigt, um die maximal verwendbare Taktfrequenz zu bestimmen. Wenn der Versatz a priori nicht bekannt ist , muss er als Toleranz betrachtet werden und trägt negativ zur Geschwindigkeit des Systems bei.

Skew kann auch verwendet werden, um die Uhr auf ein Register zu verzögern, wodurch mehr Zeit für die Logik vor diesem Register zum Ausarbeiten zur Verfügung steht. Daher kann ein schnellerer Takt verwendet werden, der dennoch die Erfordernisse der Einrichtungs- und Haltezeit des Registers erfüllt.

Dies ist eine kurze Erklärung und ist möglicherweise nicht klar, aber Sie können jederzeit googeln oder im Wiki nach weiteren Details suchen.

Sie haben sich geirrt, dass der Zeitversatz unglaublich nützlich sein kann. Ja, das Einstellen des richtigen Skews kann Ihnen manchmal helfen, die Taktrate zu erhöhen, aber der Effekt ist eher begrenzt.

Auf der anderen Seite hat ein Kern, der eine Taktverschiebung erfordert, um zu funktionieren, viele Nachteile. Sie können es nicht für FPGAs / ASICs synthetisieren, die keine zusätzliche PLL haben, nur um den richtigen Versatz für Sie zu erzeugen. Wenn Sie nur die FPGA-Familie ändern, müssen Sie wahrscheinlich die erforderliche Skew-Menge neu einschätzen. Das Ändern eines solchen Kerns, der von jemand anderem erstellt wurde, ist ein Albtraum.

Der einzige Fall, in dem ich die Einstellungen verzerren würde, ist, wenn ich ein vollständiges Design für einen bestimmten Chip habe und ich die erforderliche Taktrate nicht auf andere Weise erreichen kann.

Stellen Sie sich die Softwareoptimierung als Beispiel vor: Sie können schneller vorankommen, indem Sie Ihre Funktion in Assembler umschreiben, aber es muss die richtige Funktion sein (die in der heißen Schleife), und Sie verlieren an Portabilität, Wartbarkeit und Wiederverwendung von Code. Vorzeitige Optimierung steht auf der Top-Liste der Fehler, die unerfahrene Programmierer machen.

In vielen digitalen Logiksystemen gibt es Kombinationen von Ereignissen (nennen wir sie X und Y), die nicht gleichzeitig auftreten dürfen. Das System verhält sich auf definierte Weise, wenn X vor Y eintritt, und verhält sich in einer (normalerweise unterschiedlichen) definierten Funktion, wenn Y vor X eintritt, aber sein Verhalten ist undefiniert, wenn sie gleichzeitig auftreten (da die meisten interessierenden Ereignisse a kleiner, aber ungleich Null Zeit; Ereignisse gelten als gleichzeitig, wenn sich Teile überschneiden).

Wenn die Ereignisse X und Y durch den Taktgeberimpuls ausgelöst werden, muss häufig sichergestellt werden, dass die Zeit zwischen diesem Impuls und X entweder definitiv länger ist als die Zeit zwischen diesem Impuls und Y, oder aber definitiv kürzer ist. Taktversatz in einem System hat im Allgemeinen den Effekt, dass die Zeitspanne zwischen dem Moment, in dem der Taktgenerator beginnt, einen Impuls auszugeben, und den Zeitpunkten, zu denen unterschiedliche Ereignisse auftreten, geändert wird. Taktversatz, der Ereignisse zeitlich näher zusammenschieben würde, ist schlecht und kann zu Fehlfunktionen führen, wenn sich die Zeiten überschneiden. Taktversatz, der die Trennung zwischen Ereignissen erhöhen würde, die getrennt sein sollen, ist im Allgemeinen gut, vorausgesetzt, dass er die Trennung zwischen anderen Ereignissen, die ebenfalls getrennt sein müssen, nicht zu sehr verringert .

Viele Systeme haben eine Vielzahl von zusammenhängenden zeitlichen Beschränkungen; Während es möglich sein könnte, die Timing-Margen zu verbessern, wenn man eine ausreichend genaue Kontrolle über den Timing-Versatz hätte, wäre es in der Praxis oft schwierig, einige kritische Timing-Margen durch Hinzufügen von Timing-Versatz ohne Herstellung zu verbessern andere ebenso kritische Timing-Margen sind schlechter. Aus technischer Sicht ist es im Allgemeinen einfacher, zu versuchen, den Versatz zu minimieren, als ihn zu "optimieren". Das ist es also, was Implementierungen im Allgemeinen tun.