Moin, wie kann ich am einfachsten den VHDL-Support in VIVADO2014.4 aktivieren? Die Hilfeseite von XILINX dazu habe ich bereits gefunden, weiß aber nicht genau wie ich diese umsetzen soll. Konkret geht es um das folgende Konstruckt, was es wohl erst ab 2008 gab: with zaehler_segment select Output <= "00000011" when "0000", -- Ziffer '0' "10011111" when "0001", -- Ziffer '1' "00100101" when "0010", -- Ziffer '2' "00001101" when "0011", -- Ziffer '3' "10011001" when "0100", -- Ziffer '4' "01001001" when "0101", -- Ziffer '5' "01000000" when "0110", -- Ziffer '6' "00011111" when "0111", -- Ziffer '7' "00000001" when "1000", -- Ziffer '8' "00001001" when "1001"; -- Ziffer '9'
Den with Befehl habe ich schon 2006 verwendet, da kann was nicht stimmen.
bis auf ein evtl. fehlendes "when others" für die nicht angegebenen Fälle sehe ich da aber auch keinen Fehler. Habe das "with select" auch schon selbst in der ISE verwendet. Schreib uns doch mal die Fehlermeldung die du bekommst und evtl etwas mehr Quellcode drumherum.
Marco G. schrieb: > Konkret geht es um das folgende Konstruckt, was es wohl erst ab 2008 > gab: > > with zaehler_segment select Output <= > > "00000011" when "0000", -- Ziffer '0' > "10011111" when "0001", -- Ziffer '1' > "00100101" when "0010", -- Ziffer '2' > "00001101" when "0011", -- Ziffer '3' > "10011001" when "0100", -- Ziffer '4' > "01001001" when "0101", -- Ziffer '5' > "01000000" when "0110", -- Ziffer '6' > "00011111" when "0111", -- Ziffer '7' > "00000001" when "1000", -- Ziffer '8' > "00001001" when "1001"; -- Ziffer '9' Besteht dein Problem mglw. darin das du with-select (nebenläufig) in einem process verwendest? VHDL ist da sehr pingelig. Innerhalb eines process muss du case-is verwenden, jedenfalls vor VHDL 2008. Kapitel 5.4. und 5.6. in https://www.uni-ulm.de/fileadmin/website_uni_ulm/iui.inst.050/vorlesungen/sose08/LaborpraktikumEingebetteteSysteme/Material/Crashkurs_VHDL.pdf Ab 2008 ist with select auch im process gestattet: Siehe Abschnitt "Conditional and selected sequential statements" in https://www.doulos.com/knowhow/vhdl_designers_guide/vhdl_2008/vhdl_200x_ease/ . Persönlich würde ich den Code auf case umschreiben, damit bleibt er kompatibel. MfG
Stimmt,ich verwende das in einem Process. In der FH hatten wir dies auch gemacht und es hat ohne Probleme funktioniert. Allerdings arbeiten wir dort auch mit Quartus 2014, scheinbar wird dort die Version 2008 schon unterstützt. Ich habe es jetzt in eine case-Strucktur umgewandelt und es funktioniert wie gewünscht. Danke für die Antworten auf meine Frage:)
Marco G. schrieb: > Stimmt,ich verwende das in einem Process. Dann nimm es doch einfach dort raus und lass das nebenher ablaufen. So wie es in der Hardware ja auch umgesetzt wird...
Lothar Miller schrieb: > Dann nimm es doch einfach dort raus und lass das nebenher ablaufen. So > wie es in der Hardware ja auch umgesetzt wird... stimmt, warum im 'process' laenglich hinschreiben, wenn es doch so schoene 'concurrent' statements gibt. Bei den 'concurrent' Anweisungen erkennt man uebrigens auch ziemlich gut, wie komplex das ganze jetzt ist. Ein 'process' kann das ganz uebel verstecken/verschleiern. Und dann kommt noch die Kroenung: Kombinatorik im 'process' und dann noch Variablen verwenden. Wenn du da mal fremden Code verstehen musst, dann geht das 'am Kopf gekratze' echt richtig los... Also, ich stimme dir uneingeschraenkt zu. Keep it simple!
berndl schrieb: > Lothar Miller schrieb: >> Dann nimm es doch einfach dort raus und lass das nebenher ablaufen. So >> wie es in der Hardware ja auch umgesetzt wird... > > stimmt, warum im 'process' laenglich hinschreiben, wenn es doch so > schoene 'concurrent' statements gibt. Bei den 'concurrent' Anweisungen > erkennt man uebrigens auch ziemlich gut, wie komplex das ganze jetzt > ist. Ein 'process' kann das ganz uebel verstecken/verschleiern. Und dann > kommt noch die Kroenung: Kombinatorik im 'process' und dann noch > Variablen verwenden. Wenn du da mal fremden Code verstehen musst, dann > geht das 'am Kopf gekratze' echt richtig los... > > Also, ich stimme dir uneingeschraenkt zu. Keep it simple! Man weiss ja nicht was für ein Process um das Konstrukt steht. Ist es ein kombinatorischer ist natürlich ausserhalb process die IMHO einzig sinnvolle Variante. Ist der proess dagegen "getaktet" wird durch das Auslagern das FF von output entfernt. Aber auch dabei wäre auch meiner Meinung nach Select ausserhalb process die bessere Variante, muss man halt noch eine Zeile und signal für das FF in den process einfügen. MfG, PS: Auch meines Erachtens ist das eine nicht so gelungene Verbesserung in der 2008-Fassung.
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.