Diese Frage ist eine Folgefrage der bestehenden Frage: "Wann werden Latches besser verwendet als Flip-Flops in einem fpga, das beides unterstützt?" .
Wenn die Verwendung von Latches in FPGAs auf seltenste oder seltenste Situationen beschränkt ist, warum haben FPGAs überhaupt Latches? Ich meine, die meisten FPGA-Designs verwenden es nicht. Warum sollten Sie dann FPGA-Hardware für eine solche Logik verschwenden?
Antworten:
Ich werde dies mit dem Vorbehalt versehen, dass ich in Bezug auf das Innenleben der jüngsten FPGA-Architekturen nicht so aktuell bin. Daher ist diese Antwort möglicherweise nicht angemessen. Abhängig davon, ob die FPGA-Tools den Entwurfsablauf unterstützen, werde ich diskutieren.
Es ist wahrscheinlich wahr, dass das Gesamtvolumen der auf den Markt gelieferten Rohtore wahrscheinlich auf Riegel basierende Designs sind. Dies ist auf das Überwiegen der Mikroprozessorbeiträge zur Gesamtzahl der Versandtransistoren zurückzuführen. Also ja, eine künstliche Maßnahme. Insgesamt gibt es relativ wenige Leute, die auf diese Weise entwerfen, aber die meisten Prozessoren verwenden ein Schema von:
Logikwolke -> Latch (+ ve Uhr) -> Logikwolke -> Latch (-ve Uhr) -> Semi-Ad-Infinitum wiederholen.
Was, wenn Sie es betrachten, das kanonische Format für einen Master-Slave FF ist, aber mit mehr Logik zwischen dem Master und dem Slave eingefügt.
Die überwiegende Mehrheit der Menschen verwendet in Bezug auf die Gesamtzahl der Designs (wie in Bezug auf die Anzahl der Designs) eine einzelne Taktdomänenflanke, die ausgelöst wird. Um Dally und Poulton (Digital Systems Engineering) zu zitieren: "Flankengetriggertes Timing wird jedoch selten in High-End-Mikroprozessoren und Systemdesigns verwendet, hauptsächlich weil es zu einer minimalen Zykluszeit führt, die vom Taktversatz abhängt." Die Verwendung von Latches, die von nicht überlappenden Zweiphasenuhren angetrieben werden, führt zu einem sehr robusten Timing, das weitgehend unempfindlich gegen Versatz ist. Dies erhöht die Komplexität des Entwurfs, da Signale aus einer Taktdomäne nicht gemischt werden können.
Der andere Nachteil ist, dass es selten in Schulen unterrichtet wird.
Wenn dies eine Frage zum digitalen Design von High-End-Systemen wäre. Das wäre deine Antwort. Wenn dies für FPGAs gilt - ich weiß es nicht genau, aber ich schlage vor, dass dies der Grund sein könnte.
Übrigens - ich würde dieses Buch jedem empfehlen, der es mit fortschrittlichem digitalem VLSI-Design ernst meint.
"Dally, William J. und John W." Poulton. Digital Systems Engineering. Cambridge University Press.
quelle
Hier ist eine grobe Liste, warum Latches in FPGAs vorhanden sind:
Und das ist alles, woran ich denken kann. In den letzten 10 Jahren habe ich einen Latch nur einmal verwendet und er diente als Schnittstelle zu einem PowerPC, bei dem für den Multiplex-Adress- / Datenbus ein Latch zum Aufheben des Multiplex erforderlich war.
quelle
Der Hauptzweck eines FPGA besteht darin, eine Vorrichtung in Silizium zu implementieren, die ein gewünschtes Verhalten implementiert; Manchmal muss ein Gerät einige Funktionen ausführen, während der Haupttakt heruntergefahren ist, oder auf Impulse reagieren, die im Verhältnis zur Taktperiode kurz sind. Nehmen wir als einfaches Beispiel an, man entwarf eine Platine mit einem diskreten 74HC373, den man eliminieren wollte, und hatte 17 Ersatzstifte an der CPLD (angenommen, die OE des 373 war niedrig geschnallt). Diese Pins sollten sich grundsätzlich wie folgt verhalten:
Jedes Mal, wenn Enable hoch ist und D0-D7 10 ns oder länger gültig war, ist Q0-Q7 gültig und spiegelt die Werte auf D0-D7 wider. Die Qn-Pins können als ungültig angesehen werden, jeder kann irgendetwas ausgeben, für die ersten 10 ns nach dem Aktivieren geht hoch, jedes Mal, wenn Dn ungültig ist oder sich ändert, und für 10 ns danach. Alle Q0-Q7, die gültig sind, wenn die Aktivierung niedrig wird, behalten ihren Wert bis zum nächsten Mal, wenn die Aktivierung hoch geht.
Beachten Sie, dass sich D0-D7 jederzeit relativ zur ansteigenden Flanke von Enable ändern kann. Daher kann die ansteigende Flanke von Enable nicht als Uhr verwendet werden. Beachten Sie auch, dass, da der Ausgang eines Flops erst einige Zeit nach einer Taktflanke gültig ist, Q0-Q7 jedoch zum Zeitpunkt der Aktivierung gültig sein müssen, wenn D0-D7 für die vorhergehenden 10 ns gültig war, der Abfall Die Flanke von Enable kann auch nicht als Uhr verwendet werden.
Während man theoretisch diskrete Gates verwenden könnte, um asynchrone Latching-Schaltungen aufzubauen, funktionieren solche Techniken in FPGAs nicht gut. Das Problem ist, dass eine solche Schaltung, um richtig zu funktionieren, einen oder mehrere Knoten haben muss, deren Ausbreitungsverzögerung garantiert größer als Null ist. Trotz der Tatsache, dass echte Gates fast immer eine positive Laufzeitverzögerung haben (bei sich langsam ändernden Logikpegeln kann sich der Ausgang eines Gates ändern, bevor sein Eingang vollständig geschaltet hat), können sich FPGA-Gates so verhalten, als hätten sie eine negative Laufzeitverzögerung. Wenn die falschen Knoten in einer Rückkopplungsschleife eine negative Verzögerung haben, funktioniert die Schaltung möglicherweise nicht wie beabsichtigt. Die Verwendung expliziter Verriegelungselemente, bei denen eine positive Rückkopplungsverzögerung garantiert ist, kann solche Probleme vermeiden.
quelle
Ich denke, die Verwirrung rührt von der Behauptung her, dass "die meisten FPGA-Architekturen sowohl Latches als auch Flip-Flops nativ unterstützen". Die meisten von ihnen enthalten ein Flip-Flop und ein ausreichendes Routing, sodass Sie die logischen Ressourcen verwenden können, um eine Schaltung zu erstellen, die sich als Latch verhält. Das folgende Schema zeigt eine vereinfachte, aber ziemlich übliche Struktur für eine einzelne Logikzelle in LUT-basierten FPGAs. Indem Sie einen Eingang für die Rückkopplungsfunktionalität mit MUX2 opfern und gleichzeitig MUX1 so einstellen, dass das Flipflop umgangen wird, können Sie einen Latch mit zwei Eingängen implementieren. Beachten Sie, dass diese Muxes im Allgemeinen Teil der Konfiguration sind und während des Betriebs nicht geändert werden können. Ein solcher Latch ist nicht so vorhersehbar oder schnell wie die Verwendung des synchronen Registers - insbesondere, wenn Sie nur einen asynchronen Satz oder Reset benötigen (normalerweise jeweils nur einen), den sie normalerweise haben.und Leistung. Es gibt jedoch viele Variationen des Designs, wie zum Beispiel den Cyclone IV, der andere Signale durch ein solches nicht verwendetes Register leiten kann, aber ich habe noch keine FPGA-Architektur gesehen, die selbst einen Latch bereitstellt. Wenn Sie eines kennen, sagen Sie es mir bitte.
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Was die Verwendung der Latch-Logik betrifft, kann ich mir zwei Szenarien vorstellen. Erstens müssen Sie Ereignisse schneller als Ihre Uhr erkennen, z. B. Glitch-Marker in einem Logikanalysator hinzufügen (das Flipflop kann dies auf Kosten eines Set / Reset-Netzes tun). Zweitens muss eine Schicht von Registern umgangen werden, um eine Pipeline (in Zyklen gezählt) zu verkürzen, wenn die Frequenzskalierung niedrig genug ist, um eine tiefere Logik zu ermöglichen. Beides sind eher spezielle Situationen, für die FPGA-Tools im Allgemeinen nicht entwickelt wurden. Letzteres ist tatsächlich ein Bypass wie MUX1, kein Latch, verursacht jedoch wahrscheinlich eine Latch-Warnung, gerade weil die Tools dies nicht erwarten (und MUX1 nicht durch Logiksignale steuerbar ist), und eine mögliche Implementierung verwendet einen transparenten Latch .
quelle