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:

library ieee;

use ieee.std_logic_1164 .all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

use ieee.math_real.all;

entity triangle_generator is

generic(AMP: real;

OFFSET: real;

FREQ: real;

PHASE :real);

port(wave1: out real);

end triangle_generator;

architecture archi of triangle_generator is

signal tmp1 : real := 0.0;

begin

P1:process

constant delta : real := 1000.0e-12;

constant fin : time := 1000 ps;

variable angle : real := 0.0;

variable t : real := 0.0;

variable PHASE_RAD : real := 0.0;

begin

PHASE_RAD := (math_2_pi * PHASE)/360.0;

loop

angle := math_2_pi * FREQ * t;

t := t + delta;

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

wait for fin;

end loop;

wait;

end process P1;

wave1 <= tmp1;

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.0e-15 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?