shift_inst : exec_op\r
port map(clk,reset,left_operand, right_operand, op_detail, alu_state, shift_result);\r
\r
-calc: process(cond, op_group, op_detail ,alu_state,and_result,add_result,or_result,xor_result,shift_result)\r
+calc: process(left_operand, right_operand, cond, op_group, op_detail ,alu_state,and_result,add_result,or_result,xor_result,shift_result)\r
variable result_v : alu_result_rec;\r
variable res_prod : std_logic;\r
variable cond_met : std_logic;\r
\r
result_v.result := add_result.result;\r
res_prod := '1';\r
- mem_en := '0';
+ mem_en := '0';\r
addr <= add_result.result;\r
\r
case cond is\r
when COND_ALWAYS =>\r
cond_met := '1';\r
when COND_NEVER =>\r
- cond_met := '0';
+ cond_met := '0';\r
when others => null;\r
end case;\r
\r
end if;\r
\r
result_v.reg_op := not(op_detail(NO_DST_OPT)) and res_prod and cond_met;\r
- result_v.mem_en := mem_en and cond_met;
-
+ result_v.mem_en := mem_en and cond_met;\r
+\r
\r
data <= add_result.result;\r
alu_result <= result_v;\r
complement := inc(not(right_operand));
l_neg := left_operand(gp_register_t'high);
- carry_res := unsigned('0' & left_operand)+addcarry;
+ --carry_res := unsigned('0' & left_operand)+addcarry;
+ carry_res := unsigned('0' & left_operand);
oflo1 := add_oflo(l_neg,'0',carry_res(gp_register_t'high));
if sub = '1' then
type RAM_TYPE is array (0 to (2**ADDR_WIDTH)-1) of RAM_ENTRY_TYPE;
signal ram : RAM_TYPE := (0 => "11100000000000011001000000000000",
- 1 => "11100000000000001001000000000000",
+ 1 => "11110000000000001001000000000000",
2 => "11100000000010001001000000000000",
3 => "11100001000110010111011001101100",
others => x"00000000");