2016-05-02 29 views
0

Ich habe einen Algorithmus-SHA3-Algorithmus auf 2 Arten entwickelt - kombinatorische und sequenziell. Der sequenzielle Entwurf, der mit der Uhr ist, wenn synthetisiert wird, gibt die Zusammenfassung des Entwurfs alsOb die kombinatorische Schaltung weniger Betriebsfrequenz hat als die sequentielle Schaltung?

Minimale Taktdauer 1,275 ns und maximale Frequenz 784,129 MHz.

Während die kombinatorische eine, die ohne Uhr ausgebildet ist und zwischen dem Eingangs- und Ausgangsregister wird geben Synthesebericht als

Mindesttaktperiode 1701,691 ns und Maximalfrequenz 0,588 MHz umgesetzt.

also ich möchte fragen ist es richtig, dass kombinatorische weniger frequenz als sequenziell haben wird?

Soweit Theorie betrifft, sollte kombinatorisches Design schneller als sequenziell sein. Aber die Simulationsergebnisse, die ich für sequentiell erhalten habe, sind nach 30 Taktzyklen, wo es als Kombination keine Verzögerung in der Ausgabe gibt, da es keine Uhr gibt. Auf diese Weise ist die Kombination schneller, da wir eine sofortige Ausgabe erhalten, aber warum die Häufigkeit der Operation der kombinatorischen eine geringere ist als die sequentielle. Warum dieses Design langsam ist, kann bitte jemand erklären? Das Design wurde in Xilinx simuliert ISE

Jetzt habe ich Pipeline-Lining auf die kombinatorische Logik angewendet, indem Sie die Register zwischen den 5 Hauptblöcken einfügen, die die Berechnung durchführen. Und diese Register werden durch den Takt so gesteuert, dass jetzt diese Pipeline-Design Design Zusammenfassung als

Taktperiode 1,575 ns geben und 634,924 MHz freq

Min Periode 1.718 ns und 581,937 Freq.

Also jetzt ist diese 1,575 ns die Verzögerung zwischen einem der 2 Register, es ist nicht die Ausbreitungsverzögerung des gesamten Algorithmus, also wie kann ich die Laufzeit des gesamten Pipeline-Algorithmus berechnen.

+2

Diese Frage scheint mit der Programmierung nichts zu tun zu haben. Es sollte auf einer Designseite für elektronische Schaltungen sein. – drekka

+1

Die Frage macht keinen Sinn, da nur eine sequentielle Schaltung eine Frequenz hat, da eine kombinatorische Schaltung nur eine maximale Verzögerung hat. –

+0

Meinst du pipelined, indem ich sequenziell sage? Sie sollten Eingangs- und Ausgangsregister um Ihre Schaltkreise legen, um die richtigen Ergebnisse zu erhalten. Andernfalls enthält die statische Zeitanalyse (STA) I/O-Pin-Verzögerungen. – Paebbels

Antwort

0

Was Sie sehen, ist Pipelining und seine Leistungsvorteile. Die kombinatorische Schaltung führt dazu, dass jeder Eingang die Laufzeitverzögerungen des gesamten Algorithmus durchläuft, was bis zu 1701,691 ns auf dem FPGA erfordert, mit dem Sie arbeiten, weil der langsamste kritische Pfad in der kombinatorischen Schaltung, der zur Berechnung des Ergebnisses benötigt wird, benötigt wird bis dahin. Ihr Simulator sagt Ihnen nicht alles, da eine Verhaltenssimulation keine Verzögerung der Gatterausbreitung zeigt. Sie sehen die sofortige Berechnung Ihrer Kombinationsfunktion in Ihrer Simulation.

Im sequenziellen Design haben Sie mehrere kleinere Schritte, wobei der langsamste im schlimmsten Fall 1,275 ns benötigt. Jeder dieser Schritte ist möglicherweise einfacher zu platzieren und zu routen, was bedeutet, dass Sie aufgrund des verbesserten Routings jedes Schritts insgesamt eine bessere Leistung erzielen. Sie müssen jedoch 30 Zyklen auf ein Ergebnis warten, nur weil die Schritte Teil einer synchronen Pipeline sind. Mit dem richtigen Design könnten Sie dies verbessern und eine Ausgabe pro Taktzyklus mit einer Verzögerung von 30 Zyklen erhalten, indem Sie eine vollständige Pipeline verwenden und Daten bei jedem Taktzyklus durchleiten.

+0

Nun habe ich Pipeline-Lining auf die kombinatorische Logik angewendet, indem Sie die Register zwischen den 5 Hauptblöcken einfügen, die die Berechnung durchführen. Und diese Register werden durch die Taktung gesteuert, so dass dieses Pipeline-Design nun eine Entwurfszusammenfassung als Taktperiode 1,575 ns und Frequenz 634,924 MHz und Min-Periode 1,718 ns und Frequenz 581,937 ergibt. Nun ist diese 1,575 ns die Verzögerung zwischen jedem der 2 Register, es ist nicht die Ausbreitungsverzögerung des gesamten Algorithmus, also wie kann ich die Ausbreitungsverzögerung des gesamten Pipeline-Algorithmus berechnen. – june

+0

@june Einfach. Die Verzögerung ist die Register-zu-Register-Verzögerung (1,575 ns) multipliziert mit der Anzahl der Pipeline-Schritte. – hexafraction