Forum: FPGA, VHDL & Co. Warum wird ein XOR nicht als ein Gatter implementiert?


von Som (Gast)


Lesenswert?

Steige gerade in die Vhdl  Programmierung ein, verwende ise webpack von 
xilinx.

Ich habe in einem vhdl-Modul ein Signal angelegt, dem eine xor 
Verknüpfung aus zwei Eingängen zugewiesen wird, das Ergebnis wird dann 
mehrfach in weiteren Verknüpfungen verwendet.

Z.B.:


Signal Tmp : Std_logic

Tmp  <= b XOR c;

Out1 <= Tmp XOR d;
Out2 <= Tmp XOR e;

Das funktioniert soweit auch. Die Ausgaben sind korrekt.
Aber kann mir jemand erklären, warum ise bei der Synthese im RTL 
Schaltplan für die beiden letzten Verknüpfungen je ein XOR verwendet, 
für die erste Verknüpfung, die das Zwischenergebnis enthält verwendet 
ise aber eine Reihenschaltung aus einem OR Gatter mit je einem AND ( mit 
einem invertiertem Eingang) am Eingang. Die logische Funktion ist schon 
korrekt aber warum werden hier drei statt einem Gatter und somit auch 
doppelte Durchlaufzeit verwendet? Kann man da Einfluss nehmen?

Wie kann ich Vhdl dazu zwingen es so zu bauen, wie ich es notiert habe?

von user (Gast)


Lesenswert?

weil im FPGA nur LookUpTables und FlipFlops drin sind, und das darauf 
gemappt wird, somit ist die zwischendarstellung, die du anschaust egal

von Som (Gast)


Lesenswert?

Ja das ist mir schon klar, nur hab ich angenommen, wenn es im RTL 
Schaltplan als drei Gatter dargestellt wird, dass auch drei logikzellen 
mit je einer lookup table und einem flipflop verwendet werden. Ist dem 
nicht so?

von Klaus (Gast)


Lesenswert?

Nein, das RTL-Viewer ist nur ne gepimpte Darstellung der Netzliste. Das 
hat nichts mit der späteren Implementierung zu tun (außer dass die 
Schaltung funktionell identisch ist). Bevor das im FPGA landet, 
passieren noch ne Menge Dinge. Logikoptimierung, mappen der Bauteile auf 
tatsächlich im FPGA vorhandene, etc...

Bei Quartus könntest du dir den technologie map viewer verwenden, und 
die tatsächliche Schaltung zu sehen. Bei Xillinx gibts bestimmt was 
ähnliches.

von Schlumpf (Gast)


Lesenswert?

Wie ja schon beschrieben wurde, ist die RTL-Darstellung nur eine 
Umsetzung dessen, was du in VHDL beschrieben hast, auf Schaltplan-Logik.
Im FPGA selber gibt es keine "Gatter", sondern Lookup-Tables.
Diese haben in der Regel n Eingänge und einen Ausgang. Die Synthese 
fasst dann die Logikfunktionen, die du beschrieben hast, zusammen, 
optimiert sie nach den boolschen Regeln und bildet daraus eine 
Wahrheitstabelle. Diese Tabelle wird in die Lookup-Table (LUT) abgelegt.

Du kannst auf die Umsetzung nur sehr eingeschränkt Einfluss nehmen, aber 
das ist auch gar nicht notwendig. I.d.R. macht die Synthese das schon 
alles recht gut.

Btw: Ich finde es sehr gut, dass du dir als Einsteiger die Ergebnisse 
der Synthese anschaust. So bekommst du ein Gefühl dafür, was aus deinen 
VHDL-Konstrukten im FPGA wird.

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


Lesenswert?

Schlumpf schrieb:
> Ich finde es sehr gut, dass du dir als Einsteiger die Ergebnisse
> der Synthese anschaust. So bekommst du ein Gefühl dafür, was aus deinen
> VHDL-Konstrukten im FPGA wird.
Und hast ab&zu überraschende Erlebnisse. Wie z.B. hier (im Abschnitt 
"als kleiner Gimmick") mit zwei exakt gleichen Beschreibungen, deren 
Text einfach nur anders formatiert ist:
http://www.lothar-miller.de/s9y/archives/52-Kompakte-Flankenerkennung.html

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.