mikrocontroller.net

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


Autor: Zennehoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ejd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ejd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bzw. in Deinem Fall könnte noch

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

durchgehen.

mfG,
                         ejd

Autor: Zennehoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jau, genau das hab ich gesucht. Vielen Dank!
Zen

Autor: ejd (Gast)
Datum:

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

mfG,

ejd

Autor: Zennehoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ejd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Zennehoy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zennehoy (Gast)
Datum:

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

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)))

Autor: FPGA-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.