Forum: FPGA, VHDL & Co. Cout-Konvention?


von snes (Gast)


Lesenswert?

Es geht um die VHDL-Realisierung eines Volladdierers im Buch 
"VHDL-Synthese".
1
COUT <= (AI and BI) or (CIN and (AI xor BI)); -- VHDL-Synthese, S.17


Warum wird in dem Buch nicht einfach folgender Code benutzt?
1
COUT <= (AI and BI) or (AI and CIN) or (BI and CIN);


Handelt es sich dabei um eine Konvention bei der Realisierung eines 
Volladdierers oder steckt mehr dahinter?

von snes (Gast)


Lesenswert?

Hat es vielleicht etwas mit der Vermeidung von überflüssig vielen 
Operatoren zu tun?

von D. I. (Gast)


Lesenswert?

snes schrieb:
> Hat es vielleicht etwas mit der Vermeidung von überflüssig vielen
> Operatoren zu tun?

Hinsichtlich des Mappings auf eine LUT dürfte das egal sein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Hinsichtlich des Mappings auf eine LUT dürfte das egal sein.
Richtig, denn weil es nur drei Eingangssignale sind (AI, BI und CIN) 
passt das in jedem Fall locker auf eine (4-Input-)LUT.

von Fpgakuechle K. (Gast)


Lesenswert?

Lothar Miller schrieb:
>> Hinsichtlich des Mappings auf eine LUT dürfte das egal sein.
> Richtig, denn weil es nur drei Eingangssignale sind (AI, BI und CIN)
> passt das in jedem Fall locker auf eine (4-Input-)LUT.

Aber die Überträge bei Adder werden in den FPGA's meist nicht per LUT 
sondern per Carry-chain und dedizierten XOR und MUX realisiert. Bei 
breiten Addierer wird der Pfad vom ersten bis zum letzten carry recht 
lang, dann bremsen die LUT interconnects die Schaltung aus. Details z.B 
Spartan3 Userguide UG331, Zitat:
"...
This logic can easily be implemented in two LUTs with three inputs each 
to generate Sum
and Carry. The problem with this implementation is that it requires two 
LUTs for every
input bit, and the Carry propagates through the full LUT delay for each 
bit.
A better implementation is to "look ahead" and determine if the input 
Carry signal needs to
be propagated (the inputs are different) or generated (both inputs are 
High).
..."

Also Adder nicht per AND,XOR etc beschreiben sondern per "+" Operator, 
die Synthese macht dann schon das rechte draus.

MfG,

von Ottmar (Gast)


Lesenswert?

Soso, die einzige Realisierungsform von Logik ist also eine LUT???

@TO
Ganz, ganz früher hätte die erste Beschreibungsform die Synthese 
vielleicht so unterstüzt das weniger gatter dabei herauskommen. Aktuelle 
Synthesetools benötigen (meistens) keine solche unterstützung mehr.

Es ist mir immer wieder ein Rätsel warum in Synthese-Büchern diskrete 
Adder beschrieben werden. Die diskrete Beschreibung ist für die Synthese 
einfach blanker Unfug.

von Ottmar (Gast)


Lesenswert?

Ich hab nochmal drüber nachgedacht. Bei der ersten Beschreibung kann ein 
Teil der Logik vom Summen bit übernommen werden.

Hier ist das ganz gut dargestellt.
http://en.wikipedia.org/wiki/Adder_%28electronics%29

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

> Es ist mir immer wieder ein Rätsel warum in Synthese-Büchern diskrete
> Adder beschrieben werden. Die diskrete Beschreibung ist für die Synthese
> einfach blanker Unfug.

Weil ein Prof von Buch des anderen abschreibt. Und dabei auch noch die 
unseligen Logik-Minimierungsverfahren übernimmt. Zu allem Überfluss wird 
auch noch gezeigt, wie man ein Schieberegister aus diskreten Registern 
zusammenbaut.

Die tägliche Praxis des FPGA-Designs und dass was gelehrt wird, liegt 
meilenweit auseinander. Weitere Beispiele sind FSMs aus zwei oder gar 
drei Prozessen, viele Takte, asynchrone Resets usw.

Strukturelle Optimierungen wie z.B. die Vermeidung von Multiplexern, um 
die Anzahl der Logiklevel zu reduzieren, sind an Unis/FHs noch nicht 
angekommen.

Tom

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.