VIVADO2014.4 VHDL 2008

OP #4095584
Lesenswert?

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'
Gast #4095968
Lesenswert?

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
OP #4096076
Lesenswert?

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:)
Gast #4096438
Lesenswert?

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!
Gast #4096661
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren