Entwerfen einer Nachschlagetabelle (LUT) für Halbaddierer in FPGA

Ich möchte einen Halbaddierer mit FPGA implementieren. Dafür muss ich CLB entwerfen, genauer gesagt LUT für Halbaddierer. Ich weiß, LUT gibt nur einen Ausgang. Aber für einen Halbaddierer erhalten wir zwei Ausgänge. Einer für Sum und der andere für Carry.

Wie kann ich CLB für Halbaddierer entwerfen?

Wie kann ich zwei Ausgaben von LUT erhalten? Was mache ich falsch?

Geben Sie hier die Bildbeschreibung ein

Aus der Studie habe ich über FPGA verstanden, dass dieses Bild einen Baustein von FPGA darstellt, der CLB ist. CLB besteht aus LUT, D-Flipflop und MUX.

LUT wird verwendet, um jede Art von Logikgattern zu konfigurieren. UND, ODER, NICHT oder jedes andere komplexe Logikgatter. Durch die Verwendung des Programms speichern wir die Ausgabe der Wahrheitstabelle für beispielsweise ein UND-Gatter in LUT. Und während wir dem FPGA Eingaben geben, durchläuft es die LUT über die Adressleiste und greift auf eine bestimmte Speicheradresse in der LUT zu. Und dann geht die Ausgabe der LUT durch zwei Pfade. Hier müssen wir wählen, ob wir unsere Ausgabe über eine kombinatorische Schaltung oder eine sequentielle Schaltung wünschen. Wir verwenden MUX für diesen Auswahlzweck. 0 für Kombischaltung und 1 für Folgeschaltung.

Habe ich richtig verstanden, was ich bisher verstanden habe?

Wann müssen wir eine sequentielle Schaltung und eine kombinatorische Schaltung wählen?

Welche FPGA-Familie? Viele haben spezielle Merkmale in ihrem Logikblock, um das Entwerfen von Addierern ohne einen zweiten CLB zu ermöglichen. Aber um Ihnen zu zeigen, welche Funktionen Sie haben, müssen wir wissen, auf welches FPGA Sie abzielen.
Sie möchten fast nie direkt auf FPGA-Fabric in dieser Größenordnung abzielen; Sie tun es manchmal für spezielle Funktionsblöcke (Speicher, IO, DLL, Multiplikator ...), aber für grundlegende Logik schreiben Sie einfach logische (oder noch besser arithmetische) Ausdrücke und lassen sie von den Tools optimal zuweisen. In Bezug auf sequenziell oder kombinatorisch wählen Sie, was Ihre Anwendung benötigt, aber beachten Sie, dass lange kombinatorische Pfade zwischen den Registern die erreichbaren Taktraten einschränken.
@ThePhoton FPGA, das ich verwende, ist dieses: tequipment.net/Digilent/ZedBoard
Ihre Frage ist, als ob Sie ein UND-Gatter mit Transistoren im Steckbrett bauen möchten, während Sie dafür bereits dedizierte Chips haben. Warum Sie es überhaupt tun wollen, wenn der Punkt beim Entwerfen in FPGA darin besteht, CLBs ZU VERWENDEN, DIE BEREITS IN FPGA SIND.

Antworten (1)

Sie haben ein Zynq-7020-Gerät, das einen Artix-7-FPGA-Chip enthält. Der CLB für dieses FPGA wird hier beschrieben . Es ist viel komplexer, als Sie es sich vorgestellt haben. Der CLB enthält zwei Slices, und jedes Slice hat 4 LUTs und 8 Speicherelemente (Flip-Flops oder Latches).

Die Scheibe sieht in etwa so ausGeben Sie hier die Bildbeschreibung ein

Außerdem hat jede LUT zwei Ausgänge, O5 und O6. O5 ist mit einer "Übertragskette" verbunden, die eine sehr kurze Verbindung zu einer benachbarten Nachschlagetabelle, einem Slice oder CLB bereitstellt. Dies ist speziell als Übertragsausgang eines Addierers oder Zählers ausgelegt.

Wie von Chris in den Kommentaren erwähnt, erzielen Sie mit modernen Synthesewerkzeugen (dh Werkzeugen, die in den letzten 20 Jahren entwickelt wurden) normalerweise bessere Ergebnisse, anstatt zu versuchen, all diese Komplexität selbst zu bewältigen, indem Sie einfach in Ihr Verilog schreiben, als zu versuchen, es zu assign X = A + B;konfigurieren den CLB selbst.