Forum: FPGA, VHDL & Co. "others=>" gut, aber wie bestimmte?


von Zennehoy (Gast)


Lesenswert?

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

von ejd (Gast)


Lesenswert?

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

von ejd (Gast)


Lesenswert?

Bzw. in Deinem Fall könnte noch

mein_16_bis_32_bit_signal <= ( 1 => '1', others=>'0');

durchgehen.

mfG,
                         ejd

von Zennehoy (Gast)


Lesenswert?

Jau, genau das hab ich gesucht. Vielen Dank!
Zen

von ejd (Gast)


Lesenswert?

Kleine Frage noch: Was ist bei Dir (2 downto 0)? Zustandsvariable?

mfG,

ejd

von Zennehoy (Gast)


Lesenswert?

"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

von ejd (Gast)


Lesenswert?

> ... 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

von dose (Gast)


Lesenswert?

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.

von Zennehoy (Gast)


Lesenswert?

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

von dose (Gast)


Lesenswert?

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

von Zennehoy (Gast)


Lesenswert?

Sowas waere schoen, aber das geht leider nicht. Zumindest nicht mit dem
Syntax. (Laut WebPack 7.1 ;)

von TheMason (Gast)


Lesenswert?

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 :-)))

von FPGA-User (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.