Frage zu std_logic_vector(unsigned.

OP #2659918
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ß
Moderator (Firma: Titel) Persönliche Seite #2659931
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
#2659951
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 ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren