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
> 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"; |
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.