# DSP newbie

#### Do you have a question? Post it now! No Registration Necessary Translate This Thread From English to

• Subject
• Author
• Posted on
• DSP newbie
• FPGA
• 02-28-2008
•       Re: DSP newbie
• FPGA
• 02-28-2008 I have written a process to generate sin wave as below.

-- sine wave constants
amp_sin : real := 10.0;
phase_sin : real := 0.0          -- phase in radians
samples_sin : integer := 1000;                   -- number of
samples
incr_sin : real := 0.001;          -- 1/samples
period_sin : time := 0.001 ns;                      -- period of
sine wave/samples

two : process
variable phase_temp,result : real ;
begin
phase_temp := phase_sin; --phase_sin;
l1 : for i in 1 to samples_sin loop --number_of_samples loop

sine_real <= ((amp_sin*sin(phase_temp)));
phase_temp := phase_temp + incr_sin;
wait for period_sin;
end loop l1;
end process two;

The problem I am facing is, I get sine wave for some values and for
some I just get triangulr wave. Is there any limitation to the sin
function in math_real. Should I be able to generate any type of Re: DSP newbie
I have written a process to generate sin wave as below.

-- sine wave constants
amp_sin : real := 10.0;
phase_sin : real := 0.0                --
samples_sin : integer :=
1000;                   -- number of
samples
incr_sin : real := 0.001;              -- 1/
samples
period_sin : time := 0.001
ns;                         -- period of
sine wave/samples

two : process
variable phase_temp,result : real ;
begin
phase_temp := phase_sin; --phase_sin;
l1 : for i in 1 to samples_sin loop --number_of_samples loop

sine_real <= ((amp_sin*sin(phase_temp)));
phase_temp := phase_temp + incr_sin;
wait for period_sin;
end loop l1;
end process two;

The problem I am facing is, I get sine wave for some values and for
some I just get triangulr wave. Is there any limitation to the sin
function in math_real. Should I be able to generate any type of Re: DSP newbie 10.0; Also, the sine wave does not stop after it takes all the samles, I
keep getting a continous sine wave. Would like to add the option of
generating wave from 0 tp 2pi or 4 pi, etc. I want to make this as
generic as possible Re: DSP newbie :3D% := integ= := time := lo= ((amp_sin*sin(phase_temp)))= To get it to stop after 1 run through the "l1" loop, add "wait;" betwee
the "end loop" and "end process".

Regarding triangular waves, that could happen be when you do not hav
enough samples per period. Does "nyquist theorem" mean anything to you? Re: DSP newbie It's repeating because you havent told the process to wait when it
finishes the loop. Currently the loop finishs, and then the process
restarts and does the whole loop again, and this will repeat for ever.
To stop this simply put "wait;" at the end of the process. Re: DSP newbie I am required to design this using the CORDIC algorithm. Re: DSP newbie - Then why aren't you using the CORDIC algorithm? Google it. Re: DSP newbie I was able to add the wait statement and the problem was solved. I
modified some of the things and not I am able to get waveforms at
different frequencies. FYI,
incr_phase_sin : real :3D% (2.0*MATH_PI)/(real(samples_sin));      -- 2pi/
samples per period
incr_time_sin : time :3D% time(period_sin/samples_sin);                  --
period/samples per period Re: DSP newbie The sine wave function in math_real uses the CORDIC algorithm

#### Site Timeline 