------------------------------------------------------------------------------- -- EE126 Project #1, part I Testbench -- by: Frank Bruno ------------------------------------------------------------------------------- ENTITY test_alu_1 IS END test_alu_1; ARCHITECTURE b_alu_1 OF test_alu_1 IS COMPONENT alu_1 PORT(opcode : IN bit_vector(2 DOWNTO 0); a : IN bit; b : IN bit; cin : IN bit; clock : IN bit; s : OUT bit; cout : OUT bit); END COMPONENT; SIGNAL opcode : bit_vector(2 DOWNTO 0); SIGNAL a : bit; SIGNAL b : bit; SIGNAL cin : bit; SIGNAL s : bit; SIGNAL cout : bit; SIGNAL clock : bit; BEGIN -- b_alu_1 u1: alu_1 PORT MAP(opcode => opcode, a => a, b => b, cin => cin, clock => clock, s => s, cout => cout); clock_gen: PROCESS BEGIN clock <= '0' AFTER 40 ns; WAIT FOR 40 ns; clock <= '1' AFTER 40 ns; WAIT FOR 40 ns; END PROCESS; PROCESS VARIABLE state : integer := 0; VARIABLE jump : integer; BEGIN WAIT UNTIL clock'EVENT AND clock ='1'; CASE state IS WHEN 0 => a <= '0'; b <= '0'; cin <= '0'; jump := 1; state := 1; WHEN 1 => opcode <= "000"; state := 2; WHEN 2 => opcode <= "001"; state := 3; WHEN 3 => opcode <= "010"; state := 4; WHEN 4 => opcode <= "011"; state := 5; WHEN 5 => opcode <= "100"; state := 6; WHEN 6 => opcode <= "101"; state := 7; WHEN 7 => opcode <= "110"; state := 8; WHEN 8 => opcode <= "111"; state := (8 + jump); WHEN 9 => a <= '0'; b <= '0'; cin <= '1'; jump := 2; state := 1; WHEN 10 => a <= '0'; b <= '1'; cin <= '0'; jump := 3; state := 1; WHEN 11 => cin <= '1'; jump := 4; state := 1; WHEN 12 => a <= '1'; b <= '0'; cin <= '0'; jump := 5; state := 1; WHEN 13 => cin <= '1'; jump := 6; state := 1; WHEN 15 => b <= '1'; cin <= '0'; jump := 7; state := 1; WHEN 16 => cin <= '1'; jump := 8; state := 1; WHEN OTHERS => END CASE; END PROCESS; END b_alu_1; CONFIGURATION config1 OF test_alu_1 IS FOR b_alu_1 FOR u1: alu_1 USE ENTITY work.alu_1; END FOR; END FOR; END config1;