]> rtime.felk.cvut.cz Git - fpga/pwm.git/blob - tb/tb_mcc_exec.vhd
MCC_EXEC entity support for multiple axes control.
[fpga/pwm.git] / tb / tb_mcc_exec.vhd
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
6 entity tb_mcc_exec is
7 end tb_mcc_exec;
8
9 --------------------------------------------------------------------------------
10
11 architecture testbench of tb_mcc_exec is
12
13   constant period : time := 500 ns;
14   constant offset : time := 0 us;
15
16   signal CLK_I : std_logic;
17   signal RST_I : std_logic;
18
19   
20   signal MCC_AXIS_O : std_logic_vector (1 downto 0);
21   signal MCC_DONE_O : std_logic;
22   signal MCC_EXEC_I : std_logic;
23   signal MCC_ERR_O  : std_logic;
24   
25   signal MCC_ACK_I  : std_logic;
26   signal MCC_STB_O  : std_logic;
27   
28 --------------------------------------------------------------------------------
29
30 begin
31
32   uut : entity work.mcc_exec
33     generic map (
34       AXIS_CNT   => 3,
35       AXIS_CNT_W => 2)
36     port map (
37       CLK_I      => CLK_I,
38       RST_I      => RST_I,
39       MCC_AXIS_O => MCC_AXIS_O,
40       MCC_DONE_O => MCC_DONE_O,
41       MCC_EN_I   => '1',
42       MCC_EXEC_I => MCC_EXEC_I,
43       MCC_ERR_O  => MCC_ERR_O,
44       MCC_ACK_I  => MCC_ACK_I,
45       MCC_STB_O  => MCC_STB_O);
46
47   MCC_EMULATION : process is
48   begin
49     MCC_ACK_I  <= '0';
50     loop
51       wait until MCC_STB_O = '1';
52       wait for 4*period;
53       MCC_ACK_I <= '1';
54       wait until MCC_STB_O <= '0';
55       MCC_ACK_I <= '0';
56     end loop;
57   end process MCC_EMULATION;
58   
59   
60   SYSCON_CLK : process is
61   begin
62     CLK_I <= '0';
63     wait for offset;
64     loop
65       CLK_I <= '1';
66       wait for period/2;
67       CLK_I <= '0';
68       wait for period/2;
69     end loop;
70   end process;
71
72   SYSCON_RST : process is
73   begin
74     RST_I <= '0';
75     wait for offset;
76     wait for 0.75*period;
77     RST_I <= '1';
78     wait for 2*period;
79     RST_I <= '0';
80     wait;
81   end process;
82
83 --------------------------------------------------------------------------------
84
85   UUT_FEED : process is
86   begin
87     MCC_EXEC_I <= '0';
88         
89     wait for offset;
90     wait for 4*period;
91
92     for i in 0 to 1 loop
93       wait for 0.25*period;
94       MCC_EXEC_I <= '1';
95       wait for period;
96       MCC_EXEC_I <= '0';
97
98       wait until MCC_DONE_O = '1';
99       wait for 8*period;
100     end loop;
101     
102     wait;
103   end process;
104   
105 end testbench;
106