mirror of
https://github.com/Lemonochrme/vhdl_processor.git
synced 2025-06-08 08:50:49 +02:00
54 lines
1.9 KiB
VHDL
54 lines
1.9 KiB
VHDL
library IEEE;
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
|
use IEEE.NUMERIC_STD.ALL;
|
|
use IEEE.STD_LOGIC_ARITH.ALL;
|
|
use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
|
|
|
entity test_alu is
|
|
end test_alu;
|
|
|
|
architecture bench of test_alu is
|
|
component alu is
|
|
port(
|
|
a: in STD_LOGIC_VECTOR(7 downto 0);
|
|
b: in STD_LOGIC_VECTOR(7 downto 0);
|
|
op: in STD_LOGIC_VECTOR(2 downto 0);
|
|
s: out STD_LOGIC_VECTOR(7 downto 0);
|
|
flags : out STD_LOGIC_VECTOR(3 downto 0)
|
|
);
|
|
end component;
|
|
|
|
for all : alu use entity work.alu;
|
|
|
|
signal in1, in2, out1 : STD_LOGIC_VECTOR(7 downto 0);
|
|
signal out2 : STD_LOGIC_VECTOR(3 downto 0);
|
|
signal operation : STD_LOGIC_VECTOR(2 downto 0);
|
|
|
|
-- Test ADD -> 4+(-16)/4+240, then 128+156 -> C = 1
|
|
-- Test SUB -> 32-6 then 4-10 -> N =1
|
|
-- Test AND -> 0b00001111 & 0b11110000 then 0b01010000 & 0b11110001
|
|
-- Test OR -> 0b00001111 | 0b11110000 then 0b01010000 | 0b11110001
|
|
-- Test XOR -> 0b00001111 ^ 0b11110000 then 0b01010000 ^ 0b11110001
|
|
-- Test NOT -> 0b00001111
|
|
-- Test MUL -> 6*3 then 128*3 O = 1
|
|
|
|
begin
|
|
testeur: alu PORT MAP(in1, in2, operation, out1, out2);
|
|
in1 <= "00000100", "10000000" after 2 ns,
|
|
"00100000" after 4 ns, "00000100" after 6 ns,
|
|
"00001111" after 8 ns, "01010000" after 10 ns,
|
|
"00001111" after 12 ns, "01010000" after 14 ns,
|
|
"00001111" after 16 ns, "01010000" after 18 ns,
|
|
"00001111" after 20ns,
|
|
"00000110" after 24ns, "10000000" after 26ns;
|
|
|
|
in2 <= "11110000", "10011100" after 2 ns,
|
|
"00000110" after 4 ns, "00001010" after 6 ns,
|
|
"11110000" after 8 ns, "11110001" after 10 ns,
|
|
"11110000" after 12 ns, "11110001" after 14 ns,
|
|
"11110000" after 16 ns, "11110001" after 18 ns,
|
|
-- in2 is not used for not
|
|
"00000011" after 24ns, "00000011" after 26ns;
|
|
|
|
operation <= "000", "001" after 4ns, "010" after 8ns, "011" after 12ns, "100" after 16ns, "101" after 20ns, "110" after 24ns;
|
|
end bench;
|