Forum: FPGA, VHDL & Co. Vector mit einem ENABLE Signal verUNDen


von Andi Z. (duderino65)


Lesenswert?

hallo,

wie kann ich in vhdl einen std_logic_vector(15 downto 0) mit einem 
einzigen Signal verUNDen, ohne dabei jedes element des vectors mit einem 
normalen "and" mit diesem signal zu verbinden?
also wie kann ich das mit einem kurzen "befehl" machen?

geht sowas in vhdl oder muss ich doch jedes signal einzeln verbinden bzw 
das ganze in einer if abfrage machen?


mfg

Andi

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> wie kann ich in vhdl einen std_logic_vector(15 downto 0) mit einem
> einzigen Signal verUNDen
Bitte genauer. Man kann nicht einfach so 1 Bit mit 1 Vektor verunden. Da 
psst die Breite nicht zusammen.

Oder meinst du das:
Wenn das Signal '0' ist, dann soll der Vektor "00...00" sein?
Dann geht es so:
1
   Ausgangsvektor <= Eingangsvektor when DasSignal = '1' else "000000000";

von Andi Z. (duderino65)


Lesenswert?

hallo,

ja sowas meinte ich. diese lösung hatte ich auch schon im kopf. 
allerdings dachte ich eher an einen befehl der eben alles auf einmal 
verundet.

naja diese lösung ist denk ich besser.

danke

Andi

von Harald F. (hfl)


Lesenswert?

Sorry, ich kann mir das manchmal nicht verkneifen. Das Folgende ist 
off-topic und ich bitte schonmal im voraus um Entschuldigung. Aber wie 
würdest Du das in C schreiben? So:

ausgang = signal ? eingang : 0;

Und genau so schreibt man das auch in Verilog. Da muss man dann auch 
keine Nullen abzählen.

von Christian R. (supachris)


Lesenswert?

Harald Flügel schrieb:

> Da muss man dann auch keine Nullen abzählen.
1
Ausgangsvektor <= Eingangsvektor when DasSignal = '1' else (others => '0');

So auch nicht. :)

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.