Forum: FPGA, VHDL & Co. Integerzahl bitvektor zuweisen


von alex (Gast)


Lesenswert?

Hey, ich bin Anfänger in VHDL.


in meiner Entity habe ich als Port
1
ausgang: std_logic_vector(2 downto 0)

deklariert.

in der architecture habe ich
1
variable counter: integer range 0 to 7 :=3;

deklariert.

bei der zuweisung
1
ausgang <= counter;

kommt eine Fehlermeldung.


Gibt es einen einfachen Mechanismus in VHDL mit dem ich eine gewöhnliche 
Zahl dem Ausgang zuweisen kann und der daraus automatisch eine Binärzahl 
macht?


beste Grüße und Vielen Dank

Alex

von Kest (Gast)


Lesenswert?

Ja, gibt es:

ausgang <= std_logic_vector(to_unsigned(counter, 3))

Kest

von Steffen H. (avrsteffen) (Gast)


Lesenswert?

Hallo Alex

alex schrieb:
> Gibt es einen einfachen Mechanismus in VHDL mit dem ich eine gewöhnliche
> Zahl dem Ausgang zuweisen kann und der daraus automatisch eine Binärzahl
> macht?
Du musst casten. Probier das hier mal. Hab schon lange kein VHDL mehr 
gemacht..
1
ausgang <= std_logic_vector(to_unsigned(integer(counter,ausgang'length)));

Ansonsten schau mal hier:
http://www.lothar-miller.de/s9y/categories/1-VHDL


Gruß Steffen

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


Lesenswert?

alex schrieb:
> variable counter: integer range 0 to 7 :=3;
Wo lernt man heutzutage eigentlich, für jeden schäbigen Zähler eine 
Variable zu verwenden? Siehe dazu den 
Beitrag "Variable vs Signal"

> bei der zuweisung
>   ausgang <= counter;
> kommt eine Fehlermeldung.
Ja, denn da bleibst du an der restriktiven Typprüfung von VHDL hängen. 
Es gibt keinen impliziten Automatismus, der zwischen Vektor, Integer und 
Real-Zahl hin- und her castet wie z.B. bei C oder Basic...

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.