Hallo! Weis hier jemand wie man bei einer Signalzuweisung bestimmte Werte zuweist? Im prinzip was ich machen moechte ist das: mein_16_bis_32_bit_signal <= (2 downto 0=>"010", others=>'0'); So geht es schon mal nicht, aber ich meine ich haette etwas aehnliches schon mal zum laufen gebracht. Danke! Zen
Mein VHDL-Buch sagt, dass die Zuweisungen wie byte_a <= ('0', '0', '0', '1', '1', '1', '1', '0'); byte_b <= ( 4 | 3 | 2 | 1 => '1', others => '0'); byte_c <= ( 4 downto 1 => '1', others => '0'); äquivalent sind. mfG, ejd
Bzw. in Deinem Fall könnte noch mein_16_bis_32_bit_signal <= ( 1 => '1', others=>'0'); durchgehen. mfG, ejd
Kleine Frage noch: Was ist bei Dir (2 downto 0)? Zustandsvariable? mfG, ejd
"mein_signal" ist eine Addresse, oder besser gesagt die oberen bits einer Addresse die konstant sind. Diese Addresse soll nun bei einem Reset initialisiert werden, und zum testen wollte ich halt auch was anderes als nur 0 probieren. Warum fragst du? Zen
> ... Warum fragst du?
Weil Du im Fall einer FSM ein neues type als record definieren
könntest, aber in diesem Fall ist das egal. Habe in die falsche
Richtung gedacht.
mfG,
ejd
Hallo, ich benutze für das "Zusammenschieben" das & Zeichen mein_16_bis_32_bit_signal <= ("010" & "00000" & "00000000"); Es hat einen großen Vorteil, Die Zeile ist gut lesbar.
Das geht aber nur, wenn du genau weisst wie viele Bits dein Signal hat. Es handelt sich hierbei um ein Signal, das per Generic irgendwo zwischen 16 und 32 bit sein kann. Zen
Das stimmt, ander blöde Idee. Ich habe es noch nie ausprobiert. Ist so eine Zuweisung in VHDL definert? mein_16_bis_32_bit_signal <= ("010" & others=>'0'); Würde others die unteren Bits auffüllen? Rene
Sowas waere schoen, aber das geht leider nicht. Zumindest nicht mit dem Syntax. (Laut WebPack 7.1 ;)
Also das "zusammenschieben" (ich nenne es gerne zusammenbasteln :-)) ist die beste möglichkeit wenn man signale außer alles 0 oder 1 braucht ... vor allem wenn man mit nibbles arbeitet ... für einen 13 bit-wert z.b. bei dem das erste bit 1 sein soll ists am einfachsten '0' & X"001" zu schreiben :-) (vor allem erspart man sich das zählen :-)))
wenn die Bitbreite über ein Generic definiert ist, dann sollte doch folgendes gehen: signal fill_zero : std_logic_vector(Gen_def-3 downto 0); signal mein_signal : std_logic_vector(Gen_def downto 0); ... begin ... fill_zero <= (others=>'0'); ... mein_signal <= ("101" & fill_zero); hilft das ?
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.