forked from cores/microwatt
				
			
						commit
						4433118c91
					
				@ -1,57 +0,0 @@
 | 
			
		||||
library ieee;
 | 
			
		||||
use ieee.std_logic_1164.all;
 | 
			
		||||
use ieee.numeric_std.all;
 | 
			
		||||
 | 
			
		||||
library work;
 | 
			
		||||
use work.common.all;
 | 
			
		||||
use work.crhelpers.all;
 | 
			
		||||
use work.ppc_fx_insns.all;
 | 
			
		||||
 | 
			
		||||
-- 2 cycle ALU
 | 
			
		||||
-- We handle rc form instructions here
 | 
			
		||||
 | 
			
		||||
entity execute2 is
 | 
			
		||||
    port (
 | 
			
		||||
        clk   : in std_ulogic;
 | 
			
		||||
 | 
			
		||||
        e_in  : in Execute1ToExecute2Type;
 | 
			
		||||
        e_out : out Execute2ToWritebackType
 | 
			
		||||
        );
 | 
			
		||||
end execute2;
 | 
			
		||||
 | 
			
		||||
architecture behave of execute2 is
 | 
			
		||||
    signal r, rin : Execute2ToWritebackType;
 | 
			
		||||
begin
 | 
			
		||||
    execute2_0: process(clk)
 | 
			
		||||
    begin
 | 
			
		||||
        if rising_edge(clk) then
 | 
			
		||||
            r <= rin;
 | 
			
		||||
        end if;
 | 
			
		||||
    end process;
 | 
			
		||||
 | 
			
		||||
    execute2_1: process(all)
 | 
			
		||||
        variable v : Execute2ToWritebackType;
 | 
			
		||||
    begin
 | 
			
		||||
        v := rin;
 | 
			
		||||
 | 
			
		||||
        v.valid := e_in.valid;
 | 
			
		||||
        v.write_enable := e_in.write_enable;
 | 
			
		||||
        v.write_reg := e_in.write_reg;
 | 
			
		||||
        v.write_data := e_in.write_data;
 | 
			
		||||
        v.write_cr_enable := e_in.write_cr_enable;
 | 
			
		||||
        v.write_cr_mask := e_in.write_cr_mask;
 | 
			
		||||
        v.write_cr_data := e_in.write_cr_data;
 | 
			
		||||
 | 
			
		||||
        if e_in.valid = '1' and e_in.rc = '1' then
 | 
			
		||||
            v.write_cr_enable := '1';
 | 
			
		||||
            v.write_cr_mask := num_to_fxm(0);
 | 
			
		||||
            v.write_cr_data := ppc_cmpi('1', e_in.write_data, x"0000") & x"0000000";
 | 
			
		||||
        end if;
 | 
			
		||||
 | 
			
		||||
        -- Update registers
 | 
			
		||||
        rin <= v;
 | 
			
		||||
 | 
			
		||||
        -- Update outputs
 | 
			
		||||
        e_out <= r;
 | 
			
		||||
    end process;
 | 
			
		||||
end;
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue