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?
weil im FPGA nur LookUpTables und FlipFlops drin sind, und das darauf gemappt wird, somit ist die zwischendarstellung, die du anschaust egal
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.