FPGA-Maximalfrequenz: begrenzender Faktor

Ich würde gerne wissen, was im Allgemeinen die maximale Taktfrequenz einer in FPGA implementierten Schaltung begrenzen kann. Im konkreten Fall baue ich einige FIR-Filter mit Quartus und simuliere sie auf einem FPGA der Cyclone II-Familie.

Aus meiner Simulation ergibt sich, dass eine FIR II. Ordnung mit Direktaddierern mit höherer Frequenz getaktet werden kann als eine FIR II. Ordnung mit transponierten Addierern (420 MHz gegenüber 387 MHz). Ich hatte das nicht erwartet, da der kritische Pfad des Direkten größer ist (2sum+1mult) als der des Transponierten (1s+1m).

Liegt dies daran, dass die direkte Architektur paralleler ist als die transponierte und das FPGA dies „mag“? img1) direkt img2) transponiert

Direkte

transponiert

Antworten (2)

Ich vermute, dass der Unterschied auf den negativen Koeffizienten im 2. Fall (gemäß der Reihenfolge Ihrer Diagramme) zurückzuführen ist.

Da Ihre Multiplikationskoeffizienten alle Potenzen von 2 sind, können Ihre Multiplikationen alle durch einfache Bitauswahl erfolgen. Angenommen, Sie machen beispielsweise 16-Bit-Mathematik, x*0.25kann so einfach berechnet werden {2'b0, x[15:2]}(unter Verwendung der Verilog-Notation).

Dies bedeutet, dass Ihre Multiplikationen mit positiven Koeffizienten im Wesentlichen kostenlos sind und überhaupt keine Zeit in Anspruch nehmen.

Das Multiplizieren mit einem negativen Koeffizienten bedeutet jedoch, eine 2er-Komplement-Berechnung durchzuführen, was das Invertieren der Bits und das Addieren von 1 erfordert. Dieser Schritt des "Addierens von 1" impliziert eine Übertragskette mit einer Verzögerung, die einem Addierer derselben Breite entspricht.

Jetzt vergleichen Sie also effektiv zwei Systeme, die beide einen kritischen Pfad haben, der zwei Addierern entspricht, und es hängt vom Glück ab, welches mit weniger Verzögerung synthetisiert wird.

Wenn Sie SystemVerilog oder ein anderes Synthesetool auf höherer Ebene verwenden, bemerkt das Tool möglicherweise sogar, dass eine der Summen in der ersten Version gepipelinet (einen Taktzyklus im Voraus berechnet) werden kann und somit den kritischen Pfad auf einen einzigen Addierer reduziert .

Vielen Dank für Ihre Antwort, ich hatte auch diesen Verdacht und versuchte, den ersten (LPF) mit der zweiten Architektur zu implementieren, und es ergab sich, dass der maximale Takt fq gleich war (wieder 420 vs. 387), also kam ich zu dem Schluss, dass der Betrieb keinen Unterschied macht aber das problem ist ein anderes. Ich habe die Multiplikation (bzw. Division) in vhdl mit einer Bit-Verschiebung implementiert (und die +1 wenn negativ). Du hast mir einige Denkanstöße gegeben, danke.
@ AM93, beachte meinen letzten Absatz. Ihr erstes Formular kann von geändert werden 0,25 X + 0,5 X z 1 + 0,25 X z 2 Zu 0,25 X + ( 0,5 X + 0,25 X z 1 ) z 1 , wobei der kritische Pfad auf einen einzelnen Addierer reduziert wird (und jeder Unterschied im Überlaufverhalten vernachlässigt wird).

Es gibt viele, viele Pfade in einem FPGA, und natürlich begrenzt der langsamste die Gesamtgeschwindigkeit.

Viele dieser Pfade sind empfindlich gegenüber Ihrem speziellen Design. Viele sind leider von der Platzierung abhängig, die der Placer / Router erreicht hat. Daher ist es ziemlich üblich, dass ein Design, das mit einer bestimmten Frequenz ausgeführt wurde, plötzlich in der Frequenz abfällt, wenn ein ziemlich unbedeutendes (Sie denken) zusätzliches Teil hinzugefügt wird.

Jeder FPGA-Anbieter wird Handwerk einsetzen, um dieses oder jenes Design zu beschleunigen. Wenn Ihr Layout mit einem der gut optimierten Layouts übereinstimmt, wenn Sie das Pferd in die Richtung reiten, in die es geht, dann erhalten Sie ein schnelles Design. Wenn nicht, müssen zusätzliche Schalter und Fanouts und Leitungen verwendet werden, wodurch die Geschwindigkeit verringert wird.

Da FPGAs so komplex sind, übersteigt es den Verstand der meisten Menschen, genau herauszufinden, wie hoch die Geschwindigkeit vor dem Layout sein wird. Sie müssen es nur ausführen und sehen und Erfahrungen sammeln. Im Allgemeinen geht es am schnellsten von Registrierung zu Registrierung mit wenig Zwischenverarbeitung, aber das wussten Sie bereits.