Hi all,
I'm stuck on a simple issue but can't get out of it: I would like to
generate severals waveform signals for my future testbench but the
frequency of my signals are not correct.
Below is the code I want to simulate:
1  library ieee;

2  use ieee.std_logic_1164 .all;

3  use ieee.std_logic_arith.all;

4  use ieee.std_logic_unsigned.all;

5  use ieee.math_real.all;

6  
7  entity triangle_generator is

8  
9  generic(AMP: real;

10  OFFSET: real;

11  FREQ: real;

12  PHASE :real);

13 

14  port(wave1: out real);

15 

16  end triangle_generator;

17  
18  architecture archi of triangle_generator is

19  
20  signal tmp1 : real := 0.0;

21  
22  
23  begin

24  
25  P1:process

26 

27  constant delta : real := 1000.0e12;

28  constant fin : time := 1000 ps;

29 

30  variable angle : real := 0.0;

31  variable t : real := 0.0;

32  variable PHASE_RAD : real := 0.0;

33 

34  begin

35 

36  PHASE_RAD := (math_2_pi * PHASE)/360.0;

37  
38  loop

39  angle := math_2_pi * FREQ * t;

40  t := t + delta;

41 

42  tmp1 <= OFFSET+(AMP/2.0)*(2.0/math_pi)*arcsin(sin(angle));

43  
44  wait for fin;

45 

46  end loop;

47 

48  wait;

49 

50  end process P1;

51 

52  wave1 <= tmp1;

53 

54  end archi;

When I simule this code with FREQ=100 000 000 Hz I get the waveform in
attachment, not really what I wanted. So I was thinking, if I write
delta = 1000.0e15 maybe it will be right, but absolutly not. When I
change the value of delta, the frequency of the waveform is wrong.
So can you help me to get through this please?