Bonjour a tous,
Je suis en train de me prendre la tete sur un truc qui peut paraitre simple a permiere vue mais l'approche du week end n'aide pas a ma concentration ^^
Voila j'ai cree plusieurs signaux en VHDL pour pouvoir les utiliser pour mes futurs testbench. J'ai donc cree un signal sinusoidal, carre, triangulaire , etc,...
Mon probleme est le suivant, je n'arrive pas a avoir une resolution assez precise sur mes signaux, ou alors quand je change la resolution le signal n'a pas la bonne frequence. Je vous donne le code que j'ai ecrit pour un signal triangulaire et la courbe que j'obtiens en simulation lorsque je choisis comme frequence 100 000 000 Hz:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 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;
Pouvez-vous me dire ce que vous en pensez s'il vous plait ? Merci d'avance
Partager