OSDN Git Service

adc renamed.
[motonesfpga/motonesfpga.git] / simulation / cpu / alu / testbench_alu.vhd
1
2 library IEEE;
3 use IEEE.std_logic_1164.all;
4 --use ieee.std_logic_unsigned.all;
5 use ieee.std_logic_arith.all;
6 use std.textio.all;
7
8
9 entity testbench_alu is
10 end testbench_alu;
11
12 architecture stimulus of testbench_alu is 
13     component alu
14     port (  a, b, m     : in std_logic_vector (7 downto 0);
15             o           : out std_logic_vector (7 downto 0);
16             cin         : in std_logic;
17             cout        : out std_logic;
18             n, v, z     :   out std_logic;
19             reset       :   out std_logic
20         );
21     end component;
22     signal aa, bb, oo, mm : std_logic_vector (7 downto 0);
23     signal ccin, ccout, nn, vv, zz, rreset : std_logic;
24     constant interval : time := 20 ns;
25 begin
26     dut : alu port map (aa, bb, mm, oo, ccin, ccout, nn, vv, zz, rreset);
27
28     --aa <= "00000000";
29     --bb <= "00000000";
30     --mm <= "00000000";
31     --ccin <= '0';
32
33     p : process
34     variable out_line : line;
35     variable i,j : integer;
36     begin
37         wait for interval;
38
39         write(out_line, string'("adc test 1"));
40         writeline(output, out_line);
41         aa <= x"74";
42         bb <= x"70";
43         mm <= "01100101";
44         ccin <= '0';
45         wait for interval;
46
47         write(out_line, string'("adc test 2"));
48         writeline(output, out_line);
49         aa <= x"80";
50         bb <= x"84";
51         mm <= "01100001";
52         ccin <= '0';
53         wait for interval;
54
55         write(out_line, string'("adc test 3"));
56         writeline(output, out_line);
57         aa <= x"a0";
58         bb <= x"cf";
59         mm <= "01100001";
60         ccin <= '0';
61         wait for interval;
62
63         write(out_line, string'("adc test 4"));
64         writeline(output, out_line);
65         aa <= conv_std_logic_vector(10#40#, 8);
66         bb <= conv_std_logic_vector(10#120#, 8);
67         mm <= "01111101";
68         ccin <= '0';
69         wait for interval;
70
71         write(out_line, string'("adc test 5"));
72         writeline(output, out_line);
73         aa <= conv_std_logic_vector(10#40#, 8);
74         bb <= conv_std_logic_vector(10#51#, 8);
75         mm <= "01111101";
76         ccin <= '0';
77         wait for interval;
78
79         write(out_line, string'("adc test 6"));
80         writeline(output, out_line);
81         aa <= x"f5";
82         bb <= x"14";
83         mm <= "01111101";
84         ccin <= '0';
85         wait for interval;
86
87         write(out_line, string'("and test 1"));
88         writeline(output, out_line);
89         aa <= x"55";
90         bb <= x"f0";
91         mm <= "00100001";
92         ccin <= '0';
93         wait for interval;
94
95         write(out_line, string'("and test 2"));
96         writeline(output, out_line);
97         aa <= x"55";
98         bb <= x"aa";
99         mm <= "00100001";
100         ccin <= '0';
101         wait for interval;
102
103         write(out_line, string'("and test 3"));
104         writeline(output, out_line);
105         aa <= x"ef";
106         bb <= x"aa";
107         mm <= "00100001";
108         ccin <= '0';
109         wait for interval;
110
111         write(out_line, string'("test done"));
112         writeline(output, out_line);
113         wait;
114     end process;
115
116 end stimulus ;
117