Question de base : soumission d´inputs a une clock
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)
Code:
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; |
le processus precedent est teste dans cette partie:
Code:
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; |
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...
Comment faire pour soumettre e1 e2 e3 a la valeur de la clock ?
Merci d´avance,
Ks.