URL
https://opencores.org/ocsvn/amber/amber/trunk
Subversion Repositories amber
Compare Revisions
- This comparison shows the changes necessary to convert path
/amber/trunk/hw/vlog/amber25
- from Rev 82 to Rev 83
- ↔ Reverse comparison
Rev 82 → Rev 83
/a25_decode.v
94,6 → 94,7
output reg [2:0] o_reg_write_sel, |
output reg o_user_mode_regs_store_nxt, |
output reg o_firq_not_user_mode, |
output reg o_use_carry_in, |
|
output reg o_write_data_wen = 'd0, |
output reg o_base_address_wen = 'd0, // save ldm base address register |
220,6 → 221,7
reg [2:0] status_bits_sel_nxt; |
reg [2:0] reg_write_sel_nxt; |
wire firq_not_user_mode_nxt; |
reg use_carry_in_nxt; |
|
// ALU Function signals |
reg alu_swap_sel_nxt; |
744,7 → 746,8
// default Mux Select values |
barrel_shift_amount_sel_nxt = 'd0; // don't shift the input |
barrel_shift_data_sel_nxt = 'd0; // immediate value |
barrel_shift_function_nxt = 'd0; |
barrel_shift_function_nxt = 'd0; |
use_carry_in_nxt = 'd0; |
multiply_function_nxt = 'd0; |
iaddress_sel_nxt = 'd0; |
daddress_sel_nxt = 'd0; |
818,6 → 821,7
begin |
alu_out_sel_nxt = 4'd1; // Add |
alu_cin_sel_nxt = 2'd2; // carry in from status_bits |
use_carry_in_nxt = 1'd1; |
end |
|
if ( opcode == SUB || opcode == CMP ) // Subtract |
836,6 → 840,7
alu_out_sel_nxt = 4'd1; // Add |
alu_cin_sel_nxt = 2'd2; // carry in from status_bits |
alu_not_sel_nxt = 1'd1; // invert B |
use_carry_in_nxt = 1'd1; |
end |
|
if ( opcode == RSB ) // Reverse Subtract |
844,6 → 849,7
alu_cin_sel_nxt = 2'd1; // cin = 1 |
alu_not_sel_nxt = 1'd1; // invert B |
alu_swap_sel_nxt = 1'd1; // swap A and B |
use_carry_in_nxt = 1'd1; |
end |
|
if ( opcode == RSC ) // Reverse Subtract with carry |
1606,6 → 1612,7
o_barrel_shift_data_sel <= barrel_shift_data_sel_nxt; |
o_barrel_shift_function <= barrel_shift_function_nxt; |
o_alu_function <= alu_function_nxt; |
o_use_carry_in <= use_carry_in_nxt; |
o_multiply_function <= multiply_function_nxt; |
o_interrupt_vector_sel <= next_interrupt; |
o_iaddress_sel <= iaddress_sel_nxt; |
/a25_core.v
122,7 → 122,7
wire [2:0] reg_write_sel; |
wire user_mode_regs_store_nxt; |
wire firq_not_user_mode; |
|
wire use_carry_in; |
wire write_data_wen; |
wire copro_write_data_wen; |
wire base_address_wen; |
264,6 → 264,7
.o_reg_write_sel ( reg_write_sel ), |
.o_user_mode_regs_store_nxt ( user_mode_regs_store_nxt ), |
.o_firq_not_user_mode ( firq_not_user_mode ), |
.o_use_carry_in ( use_carry_in ), |
.o_write_data_wen ( write_data_wen ), |
.o_base_address_wen ( base_address_wen ), |
.o_pc_wen ( pc_wen ), |
356,7 → 357,8
.i_status_bits_sel ( status_bits_sel ), |
.i_reg_write_sel ( reg_write_sel ), |
.i_user_mode_regs_store_nxt ( user_mode_regs_store_nxt ), |
.i_firq_not_user_mode ( firq_not_user_mode ), |
.i_firq_not_user_mode ( firq_not_user_mode ), |
.i_use_carry_in ( use_carry_in ), |
.i_write_data_wen ( write_data_wen ), |
.i_base_address_wen ( base_address_wen ), |
.i_pc_wen ( pc_wen ), |
/a25_execute.v
106,9 → 106,9
input [1:0] i_byte_enable_sel, |
input [2:0] i_status_bits_sel, |
input [2:0] i_reg_write_sel, |
// input i_user_mode_regs_load, |
input i_user_mode_regs_store_nxt, |
input i_firq_not_user_mode, |
input i_use_carry_in, // e.g. add with carry instruction |
|
input i_write_data_wen, |
input i_base_address_wen, // save LDM base address register, |
214,6 → 214,9
wire ldm_flags; |
wire ldm_status_bits; |
|
wire carry_in; |
|
|
// ======================================================== |
// Status Bits in PC register |
// ======================================================== |
558,10 → 561,12
// ======================================================== |
// Instantiate Barrel Shift |
// ======================================================== |
assign carry_in = i_use_carry_in ? status_bits_flags[1] : 1'd0; |
|
a25_barrel_shift u_barrel_shift ( |
.i_clk ( i_clk ), |
.i_in ( barrel_shift_in ), |
.i_carry_in ( status_bits_flags[1] ), |
.i_carry_in ( carry_in ), |
.i_shift_amount ( shift_amount ), |
.i_shift_imm_zero ( i_shift_imm_zero ), |
.i_function ( i_barrel_shift_function ), |