kleinigkeiten
authorStefan Rebernig <stefan.rebernig@gmail.com>
Sun, 19 Dec 2010 17:24:17 +0000 (18:24 +0100)
committerStefan Rebernig <stefan.rebernig@gmail.com>
Sun, 19 Dec 2010 17:24:17 +0000 (18:24 +0100)
cpu/src/r_w_ram_b.vhd
cpu/src/writeback_stage_b.vhd

index e735c203e428d8429ad454e54fff09d9798bb59b..a120a29dd6263a1f5226ad2e1ff4f5236a7de1a0 100644 (file)
@@ -10,7 +10,7 @@ architecture behaviour of r_w_ram is
        subtype RAM_ENTRY_TYPE is std_logic_vector(DATA_WIDTH -1 downto 0);
        type RAM_TYPE is array (0 to (2**ADDR_WIDTH)-1) of RAM_ENTRY_TYPE;
        
-       signal ram : RAM_TYPE;
+       signal ram : RAM_TYPE := (others => x"00000000");
        
 begin
        process(clk)
index a1b08b8f09dbf18a97eda8b4e958fed5e356ca3a..585e0e2002a3669e684b848e88490ece053802ab 100755 (executable)
@@ -192,7 +192,7 @@ end process;
 
 
 
-out_logic: process(write_en, result_addr, wb_reg, alu_jmp, wb_reg_nxt, data_ram_read_ext, calc_mem_res, data_ram_read, ext_anysel)
+out_logic: process(write_en, result_addr, wb_reg, alu_jmp, wb_reg_nxt, data_ram_read_ext, calc_mem_res, data_ram_read, ext_anysel, result)
 variable reg_we_v : std_logic;
 variable data_out : gp_register_t;
 begin
@@ -222,7 +222,7 @@ begin
                data_out(4*byte_t'length-1 downto 3*byte_t'length) := (others => '0');
        end if;
        
-       data_out := to_stdlogicvector(to_bitvector(data_out) srl to_integer(unsigned(wb_reg.address(BYTEADDR-1 downto 0)))); 
+       data_out := to_stdlogicvector(to_bitvector(data_out) srl to_integer(unsigned(wb_reg.address(BYTEADDR-1 downto 0)))*byte_t'length); 
        
        if (wb_reg_nxt.address(DATA_ADDR_WIDTH+2) /= '1') then
                data_addr(DATA_ADDR_WIDTH+1 downto 0) <= wb_reg_nxt.address(DATA_ADDR_WIDTH+1 downto 0);
@@ -231,6 +231,10 @@ begin
        
        regfile_val <= data_out;
        
+       if wb_reg.dmem_en = '0' then
+               regfile_val <= result;
+       end if;
+       
        reg_we <= reg_we_v;
        
 end process;