Forum: FPGA, VHDL & Co. Frage zu std_logic_vector(unsigned.


von M. K. (marc1234)


Lesenswert?

Hallo,
ich beschäftige mich zur Zeit mit VHDL und FPGAs und habe eine 
Verständnisfrage zu einem Code von Lother Miller

http://www.lothar-miller.de/s9y/archives/57-Sinusausgabe-mit-PWM.html

Die zeile verstehe ich noch nicht:

1
  sinusplusoffset <= std_logic_vector(unsigned(sinus)+to_unsigned(128,8));


warum macht man dort unsigned(sinus) ?

das + to_unsigned(128,8) erstellt mir ein 8 Bit Signal welches den 
dezimal wert 128 hat, oder?

gruß

von P. K. (pek)


Lesenswert?

Der Operator "+" ist für unsigned definiert, nicht aber für 
std_logic-vector.

Wenn Du das Casten nicht willst, einfach generell unsigned benutzen.

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


Lesenswert?

Marc K. schrieb:
> warum macht man dort unsigned(sinus) ?
"Man" macht das dort, weil "man" mit uneingeschränkten Vektoren wie 
std_logic_vect nicht rechnet!
Und weil sinus als std_logic_vector definiert ist, muss der für die 
Addition erst mal nach unsigend umgewandelt werden.

> das + to_unsigned(128,8) erstellt mir ein 8 Bit Signal welches den
> dezimal wert 128 hat, oder?
Das '+' addiert einen 8-Bit unsigned Wert, der aus einem integer 
(128) erzeugt wurde, zum sinus dazu.

Sieh dir das mal an:
http://www.lothar-miller.de/s9y/archives/14-Numeric_Std.html

von Clemens M. (panko)


Lesenswert?

Aus der entity DDFS kommt der Sinus Wert als std_logic_vektor, der aber 
einen signed Repräsentiert.
Für die pwm wird das Ganze in den positiven Bereich verschoben. Also 
entsprechend der halben Amplitude, nämlich 128. Macht ja sonst auch 
keinen Sinn.
Ist das vielleicht die Frage? und eine Antwort ;-)

von M. K. (marc1234)


Lesenswert?

vielen dank für die schnellen antworten :-) jetzt hab ich es auch 
verstanden

ist eigentlich logisch :-)

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.