Forum: FPGA, VHDL & Co. Vergleich: unsigned mit Konstante


von marc (Gast)


Lesenswert?

Hallo zusammen,

ich versuche in VHDL verzweifelt einen unsigned-Vektor mit einer 
konstante zu vergleichen... also:
1
control_done: out std_logic;
2
signal len: unsigned ( ADDRESSWIDTH-1 downto 0);
3
4
control_done <= (len = 0);

Quartus bringt mir dabei jedoch immer folgende Meldung:
can't determine definition of operator ""="" -- found 0 possible 
definitions

Mir ist klar, dass er nicht kapiert wie er eine Konstante mit unsigned 
vergleichen kann. Wie mach ich dies jedoch richtig?
Kann mir da jemand auf die Sprünge helfen?

Besten Dank
Marc

von Engineer (Gast)


Lesenswert?

Du musst len mit einem Vektor vergleichen:
1
control_done <= (len = (others => '0'));

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


Lesenswert?

Engineer schrieb:
> control_done <= (len = (others => '0'));
Das wird (vermutlich) nicht gehen, weil
1. die Länge des Vektors nicht bekannt    und
2. der Ergebnistyp des Vergelcih boolean, control done aber std_logic 
ist. Ich schlage das hier vor:

 control_done <= '1' when len = (len'range => '0') else '0';

von Klaus (Gast)


Lesenswert?

Lothar Miller schrieb:
> Ich schlage das hier vor:
>
>  control_done <= '1' when len = (len'range => '0') else '0';

Oder:

control_done <= '1' when len = to_unsigned(0, len'length) else '0';

Hat der Vorteil, dass du jede beliebige Zahl im Dezimalformat eintragen 
kannst.

von marc (Gast)


Lesenswert?

danke leute,
habt mir weiter geholfen.

grüsse

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.