"others=>" gut, aber wie bestimmte?

Gast #203595
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
Gast #203596
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
Gast #203600
"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
Gast #203601
> ... 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
Gast #203602
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.
Gast #203603
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
Gast #203604
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
Gast #203606
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 :-)))
Gast #203607
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 ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.