Bonjour a tous,
Je debute dans l´electronique et commence tout juste a apprendre VHDL.
Je joue pour l´instant avec quelques exemples et reste bloque sur un point: je souhaite ecrire un processus qui multiplie 3 bits, et je souhaite que la valeur de ces bits soient donnee par une horloge (aucune utilite pratique, c´est purement pedagogique)
le processus precedent est teste dans cette partie:
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 ---------------------------------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity top is port ( clock : in std_ulogic; e1 : in std_logic; e2 : in std_logic; e3 : in std_logic; s : out std_logic ); end top; architecture Behavioral of top is -- signal clock : std_ulogic := '1'; begin s <= e1 and e2 and e3; end Behavioral;
Je teste mon code avec une simulation, observe bien la clock, apres 100ns les inputs e1 e2 e3 prennent la valeur 1, et puis restent toujours a 1 alors que la clock continue ses cycles...
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY tb IS END tb; ARCHITECTURE behavior OF tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT top PORT( clock : IN std_logic; e1 : IN std_logic; e2 : IN std_logic; e3 : IN std_logic; s : OUT std_logic ); END COMPONENT; --Inputs signal clock : std_logic := '0'; signal e1 : std_logic := '0'; signal e2 : std_logic := '0'; signal e3 : std_logic := '0'; --Outputs signal s : std_logic; -- Clock period definitions constant clock_period : time := 10 ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut: top PORT MAP ( clock => clock, e1 => e1, e2 => e2, e3 => e3, s => s ); -- Clock process definitions clock_process :process begin clock <= '0'; wait for clock_period/2; clock <= '1'; wait for clock_period/2; end process; -- Stimulus process stim_proc: process begin -- hold reset state for 100 ns. wait for 100 ns; --wait for clock_period*10; -- insert stimulus here -- if (clock='1' and clock'event) -- then e1 <= clock; e2 <= clock; e3 <= clock; -- end if; wait; end process; END;
Comment faire pour soumettre e1 e2 e3 a la valeur de la clock ?
Merci d´avance,
Ks.
Partager