www.mikrocontroller.net

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


Autor: snes (Gast)
Datum:

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


Warum wird in dem Buch nicht einfach folgender Code benutzt?
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?

Autor: snes (Gast)
Datum:

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

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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,

Autor: Ottmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ottmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.