Überlegungen zum Hinzufügen von Reset-Fähigkeiten zu einem FPGA-Design

Software Testing Tutorials for Beginners (Dezember 2018).

Anonim

Überlegungen zum Hinzufügen von Reset-Fähigkeiten zu einem FPGA-Design


In diesem Artikel werden einige der Konsequenzen des Hinzufügens eines Reset-Eingangs zu einem FPGA-Design behandelt.

In diesem Artikel werden einige grundlegende Überlegungen zum Codieren einer bestimmten Funktionalität mit einer Reset-Eingabe erläutert. Die Konsequenzen der Verwendung einer Rücksetzeingabe können vom Entwickler übersehen werden, aber eine unpassende Rücksetzstrategie kann leicht schwere Strafen auferlegen. Die Rücksetzfunktion kann die Geschwindigkeit, den Bereich und den Stromverbrauch eines FPGA-Designs beeinträchtigen.

Bevor wir mit unserer Diskussion fortfahren, lohnt es sich, auf ein grundlegendes Prinzip hinzuweisen: FPGAs sind programmierbare Geräte, aber das bedeutet nicht, dass wir jedes Feature in einem FPGA programmieren können. Dieses Grundprinzip wird im weiteren Verlauf des Artikels näher erläutert.

Lesen Sie die Details sorgfältig, bevor Sie eine Reset-Eingabe hinzufügen

Abbildung 1 zeigt ein D-Flip-Flop (DFF), das in den FPGAs der Xilinx 7-Serie verfügbar ist.

Abbildung 1. FDRE D-Flip-Flop der FPGAs der Xilinx 7-Serie. Bild mit freundlicher Genehmigung von Xilinx.

Dieses spezielle DFF, das einen synchronen Reset (R) und einen Taktfreigabe- (CE) -Eingang aufweist, wird im Xilinx-Bibliotheksführer als FDRE (Flipflop, Typ D, synchroner Reset, mit Taktfreigabe) bezeichnet. Die Logiktabelle dieses Elements ist in Abbildung 2 dargestellt.

Abbildung 2. Die Logiktabelle des FDRE D-Flipflops der FPGAs der Xilinx 7-Serie. Bild mit freundlicher Genehmigung von Xilinx.

Hier sind R, CE, D und C die Eingänge des DFF und stehen für Rücksetzen, Taktfreigabe, Dateneingabe bzw. Takt. X steht für "do not-care" und ↑ für die steigende Taktflanke. Der Reset ist synchron, weil er den Ausgang nur an der steigenden Flanke des Takts zurücksetzen kann.

Dieses DFF ist ein Designelement, das als ein Baustein eines größeren Designs verwendet werden kann. Wir können damit ein gewünschtes Signal registrieren. Und wir können die Rücksetz- und Taktfreigabe-Eingänge des FDRE frei verwenden, wie wir wollen.

Wir können wählen, ob wir ein verfügbares Merkmal eines Bausteins verwenden möchten oder nicht. Allerdings können wir einem gegebenen Baustein keine nicht unterstützte Funktion hinzufügen. Betrachten Sie als Beispiel das oben diskutierte FDRE-Element. Dieses Design-Element unterstützt nur einen synchronen Reset. Wenn wir sowohl asynchrone als auch synchrone Resets benötigen, können wir den FDRE-Flipflop nicht verwenden. In diesem Fall muss das Synthesewerkzeug eine andere Ressource verwenden oder es kann sogar auf eine Kombination der verfügbaren Bausteine ​​zurückgegriffen werden, um das gewünschte Design zu realisieren. Wie Sie sehen können, sind die Low-Level-Funktionen der FPGAs festgelegt, aber sobald diese Design-Elemente konfiguriert sind, verbinden wir sie miteinander und bauen ein größeres Design auf.

Als ein subtileres Beispiel dafür, wie die FPGA-Granularität die Implementierung beeinflussen kann, ist zu beachten, dass der Reset (R) -Eingang des FDRE gemäß der obigen Logiktabelle eine höhere Priorität hat als der Clock-Enable (CE) -Eingang die erste Zeile der Tabelle, dass, wenn R 1 ist, CE nicht relevant ist). Nehmen wir nun an, dass unser HDL-Code ein DFF mit Rücksetz- und Taktfreigabe-Eingängen verwendet. Und die HDL-Beschreibung gibt der CE-Eingabe die höhere Priorität als der R-Eingabe. Auch in diesem Fall muss das Synthesewerkzeug eine andere Ressource als das FDRE verwenden oder es muss eine Kombination der verfügbaren Bausteine ​​verwenden, um die gewünschte Funktionalität zu realisieren. Weitere Informationen zu diesem Beispiel finden Sie in diesem Xilinx-Whitepaper.

Die obige Diskussion zeigt, dass wir, um ein effizientes Design zu haben, die Details der FPGA-Designelemente genau studieren müssen, wenn wir das Datenblatt einer diskreten Komponente untersuchen, bevor wir sie verwenden. Im Rest des Artikels werden Sie einige andere Beispiele dieses Prinzips sehen.

Schicht-Register-Nachschlagetabelle (SRL16)

Das Xilinx-Synthesewerkzeug kann LUT-basierte Schieberegister realisieren, die viel kompakter und schneller sind als die Struktur, die durch einfaches Kaskadieren einiger DFFs erhalten wird. Diese effizienten Schieberegister, genannt SRLs, unterstützen keine Reset-Eingabe. Wenn Ihr Schieberegister keinen Reset benötigt, sollten Sie es daher vermeiden, damit das Synthesewerkzeug auf eine effiziente SRL-basierte Realisierung für das Schieberegister schließen kann. Wenn Ihr Code ein Schieberegister mit Reset beschreibt, wird XST den Entwurf mit DFFs implementieren, oder es wird zusätzliche Logik um den SRL verwendet, um eine Reset-Funktion zu ermöglichen. SRLs können aus einfachen Verkettungsoperatoren abgeleitet werden (Siehe Seite 154 des XST-Benutzerhandbuchs).

Blockiere RAMs

Ähnlich dem Fall von SRLs können wir den Inhalt eines Block-RAMs nicht mit einem expliziten Reset zurücksetzen. Deshalb sollten wir beim Zuordnen eines Designs zu Block-RAMs keinen Reset verwenden. Hier finden Sie weitere Details.

Multiplikatoren

Im Gegensatz zu einem SRL oder einem Block-RAM, der kein Zurücksetzen unterstützt, haben einige Module, beispielsweise Multiplizierer, Beschränkungen für den Typ des Zurücksetzens. Diese Module unterstützen nur einen synchronen Reset. Bei einem gegebenen Multiplizierer kann das Ersetzen eines asynchronen Reset durch eine synchrone Strategie die Betriebsfrequenz um einen Faktor von zwei oder mehr erhöhen.

Zusammenfassend verhindert eine unsachgemäße Rücksetzstrategie, dass das Synthesewerkzeug die optimierten Module, die im FPGA verfügbar sind, effizient nutzt. Dies kann die Fläche, Leistung und Geschwindigkeit eines Designs beeinträchtigen. Sehen wir uns nun einige Beispiele an, in denen die Synthesis-Software den Reset-Port der DFFs verwendet, um einige Optimierungen durchzuführen.

Verwendung von Set / Reset-Eingaben zur Optimierung der Implementierung

Es wird normalerweise empfohlen, die Verwendung von Setz- und Rücksetzeingängen so weit wie möglich zu vermeiden. Dies hilft dem Synthesewerkzeug, eine Optimierung anzuwenden, bei der die Setz- / Rücksetzeingaben der DFFs untersucht werden, um die Implementierung zu vereinfachen. Um dies weiter zu verdeutlichen, nehmen wir an, dass wir das in Abbildung 3 gezeigte Schema implementieren wollen.

Abbildung 3. Ein besonderer Fall, der durch die Synthese-Software optimiert werden kann. Bild mit freundlicher Genehmigung von Advanced FPGA Design.

Wenn in Fig. 3 "Signal A" logisch hoch ist, geht die DFF-Ausgabe an der Taktflanke hoch, egal was der Ausgang der Kombinationsschaltung "Kammlogik" ist. Aus diesem Grund kann die Synthesesoftware, wie in 4 gezeigt, das ODER-Gatter beseitigen und "Signal A" an den synchronen Setzeingang des DFF anlegen. Wenn "Signal A" logisch hoch ist, wird das DFF an der Taktflanke hoch eingestellt. Andernfalls wird die Ausgabe durch die Kombinationsschaltung "Comb Logic" bestimmt. Das neue Design bietet die gewünschte Funktionalität, aber jetzt wird das ODER-Gatter eliminiert und sowohl die Geschwindigkeit als auch die Fläche des Designs können verbessert werden.

Figur 4 . Die optimierte Form der Schaltung in Abbildung 3. Bild mit freundlicher Genehmigung von Advanced FPGA Design.

Es ist interessant festzustellen, dass das Synthesetool manchmal entscheiden kann, die obige Optimierung umgekehrt durchzuführen und das in Abbildung 3 gezeigte Schema von Abbildung 4 zu implementieren! Dies liegt an der Tatsache, dass in 7 Reihen alle DFFs in einem Slice dieselben CK-, SR (set / reset) - und CE-Signale teilen. Dies bedeutet, dass ein DFF, dessen SR-Eingang mit "Signal A" verbunden ist, nicht in der gleichen Scheibe sein kann, die ein DFF hat, dessen SR-Eingang mit einem anderen Signal als "Signal A" verbunden ist. Wenn die Steuersignale, dh CK, SR und CE, nicht gleich sind, müssen die DFFs in verschiedenen Scheiben angeordnet sein. Dies kann zu einer ineffizienten Slice-Verwendung in einem Design führen, das viele Reset-Signale mit geringem Fanout verwendet. Tatsächlich verwendet jedes Rücksetzsignal mit niedrigem Fanout einige DFFs eines Slice und die verbleibenden DFFs des Slices werden verschwendet. In solchen Fällen kann das Synthesewerkzeug das in 4 gezeigte Schema von 4 implementieren. Dieser Prozess wird zu DFF führen, die ihre Rücksetzeingaben nicht verwenden. Folglich können diese DFF dieselben Steuersignale teilen und können in demselben Slice platziert werden. Daher wird die Geräteauslastung verbessert.

In den 3 und 4 haben wir gesehen, dass ein ODER-Gatter gefolgt von einem DFF durch ein DFF ersetzt werden kann, das seine Setzeingabe verwendet. In ähnlicher Weise können wir ein AND-Gatter, gefolgt von einem DFF, durch ein DFF ersetzen, das seinen Rücksetzeingang verwendet (siehe Fig. 5 unten).

Abbildung 5. Bild mit freundlicher Genehmigung von Xilinx.

In Abbildung 5 gibt das SRVAL-Attribut den Ausgabewert des DFF nach dem Aktivieren der SR-Eingabe an. Daher wird für den mittleren DFF auf der linken Seite der SR-Eingang als ein Set-Port spezifiziert. Für den unteren DFF auf der linken Seite ist der SR-Eingang jedoch tatsächlich ein Rücksetzeingang. Das obere DFF verwendet keinen Reset-Eingang.

Die drei DFFs auf der linken Seite können nicht in derselben Schicht platziert werden, da sie unterschiedliche Steuersignale haben. Mit den oben diskutierten Umwandlungen erhalten wir jedoch drei DFFs mit dem gleichen Satz von Steuersignalen. Daher können wir die drei DFFs in dieselbe Scheibe legen. Beachten Sie, dass die oben genannten Konvertierungen bei asynchronen Set / Reset-Signalen nicht gültig sind. Aus diesem Grund wird in der Regel empfohlen, synchrone Set / Reset-Signale anstelle von asynchronen zu verwenden.

Verweise

  • Wie setze ich mein FPGA zurück? von Srikanth Erusalagandi, Xilinx.
  • Erhalten Sie Ihre Prioritäten richtig - Machen Sie Ihr Design um bis zu 50% kleiner von Ken Chapman, Xilinx.
  • Advanced FPGA Design: Architektur, Implementierung und Optimierung von Steve Kilts.
  • HDL Coding Practices zur Beschleunigung der Designleistung von Philippe Garrault, Xilinx.
  • Get Smart Über Reset: Denken Sie lokal, nicht global von Ken Chapman, Xilinx.

Um eine vollständige Liste meiner Artikel zu sehen, besuchen Sie bitte diese Seite.