Gast
#1698621
Liebe Kollegen! Ich habe eine Frage zu (others => '0') wenn ich mein Signal so fülle
1 | |
2 | |
funktioniert es. Wiso geht das nicht?
1 | |
??????????
|
Anzeige
|
(others => '0')
Gast
#1698621
Liebe Kollegen! Ich habe eine Frage zu (others => '0') wenn ich mein Signal so fülle
funktioniert es. Wiso geht das nicht?
?????????? Woran machst du fest, dass es nicht geht? Bekommst du eine Fehlermeldung beim Simulieren bzw. Synthetisieren?
Gast
#1698718
probier mal
3 ist die Länge des Vectors, der angehängt wird. >> Wiso geht das nicht? >> s_mem <= (X"33333", others => '0'); Woher soll der Synthesizer wissen, wohin die x"33333" in den Vektor gehören? > probier mal > s_mem <= (X"33333", (3 => '0')); Das wird nicht gehen: damit würde nur das 3. Element definiert... Das dürfte gehen, hier ist alles definiert: s_mem <= (22 downto 3 => X"33333", others => '0'); Der erste Ansatz ist ein literal, der sich aus zwei zusammengesetzten literalen ergibt. Das zweite ist der Versuch eine Art aggregate expression zu bilden. Die wiederum kann keine string literals enthalten, sondern nur einzelne Zuweisungen. Versuch mal das hier:
-- Marcus Lothar Miller schrieb: > Das dürfte gehen, hier ist alles definiert: > s_mem <= (22 downto 3 => X"33333", others => '0'); Man kann meines Wissens nach in aggregates keine literals unterbringen. Questa sagt dazu: Bit string literal found where non-array type std.standard.bit was expected. -- Marcus > Man kann meines Wissens nach in aggregates keine literals unterbringen.
Aua, da habe ich mich ins Abseits gestellt :-/
Die Zuweisung über einen Bereich ginge natürlich bestenfalls so:
s_mem <= (22 downto 3 => '1', others => '0');
Gast
#2947848
Marcus Harnisch schrieb:
Sorry, dass ich einen so alten Thread ausgrabe, aber das gleiche Problem wie der Fragensteller hatte ich auch gerade. Bei dem oben zitierten VHDL-Code meckert ModelSim allerdings: s_mem sei ja schon "als Ganzes" definiert. Für mich ist das auch irgendwo nachvollziehbar, da diese spezielle Stelle des Signals nicht zwei verschiedene Werte zur gleichen Zeit annehmen kann. Abhilfe schafft da glaube ich nur:
Ich lasse mich aber auch gerne eines Besseren belehren.
Gast
#2947905
Die erste Schreibweise mußt Du in einen process stecken. Deine funktioniert überall. Duke Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|