diff --git a/lib/CPUs/MIPS/src/core/mips_shifter.vhd b/lib/CPUs/MIPS/src/core/mips_shifter.vhd index 34036a2..7f047ec 100644 --- a/lib/CPUs/MIPS/src/core/mips_shifter.vhd +++ b/lib/CPUs/MIPS/src/core/mips_shifter.vhd @@ -54,10 +54,12 @@ architecture Behavioral of shifter is function gen_fill_mask_rom(data_width : natural) return fill_mask_rom_t is variable result : fill_mask_rom_t; begin - for i in 0 to data_width-1 loop + result(0) := (data_width-1 downto 0 => '0'); + for i in 1 to data_width-1 loop result(i) := (data_width-1-i downto 0 => '0') & (i-1 downto 0 => '1'); end loop; - for i in 0 to data_width-1 loop + result(data_width) := (data_width-1 downto 0 => '0'); + for i in 1 to data_width-1 loop result(data_width+i) := (i-1 downto 0 => '1') & (data_width-1-i downto 0 => '0'); end loop; return result;