Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: a23_decode.v
- ===================================================================
- --- a23_decode.v (revision 103)
- +++ a23_decode.v (working copy)
- @@ -61,64 +61,64 @@
- // --------------------------------------------------
- // Control signals to execute stage
- // --------------------------------------------------
- -output reg [31:0] o_read_data = 1'd0,
- -output reg [4:0] o_read_data_alignment = 1'd0, // 2 LSBs of read address used for calculating shift in LDRB ops
- +output reg [31:0] o_read_data,
- +output reg [4:0] o_read_data_alignment, // 2 LSBs of read address used for calculating shift in LDRB ops
- -output reg [31:0] o_imm32 = 'd0,
- -output reg [4:0] o_imm_shift_amount = 'd0,
- -output reg o_shift_imm_zero = 'd0,
- -output reg [3:0] o_condition = 4'he, // 4'he = al
- -output reg o_exclusive_exec = 'd0, // exclusive access request ( swap instruction )
- -output reg o_data_access_exec = 'd0, // high means the memory access is a read
- +output reg [31:0] o_imm32,
- +output reg [4:0] o_imm_shift_amount,
- +output reg o_shift_imm_zero,
- +output reg [3:0] o_condition, // 4'he = al
- +output reg o_exclusive_exec, // exclusive access request ( swap instruction )
- +output reg o_data_access_exec, // high means the memory access is a read
- // read or write, low for instruction
- -output reg [1:0] o_status_bits_mode = 2'b11, // SVC
- -output reg o_status_bits_irq_mask = 1'd1,
- -output reg o_status_bits_firq_mask = 1'd1,
- +output reg [1:0] o_status_bits_mode, // SVC
- +output reg o_status_bits_irq_mask,
- +output reg o_status_bits_firq_mask,
- -output reg [3:0] o_rm_sel = 'd0,
- -output reg [3:0] o_rds_sel = 'd0,
- -output reg [3:0] o_rn_sel = 'd0,
- +output reg [3:0] o_rm_sel,
- +output reg [3:0] o_rds_sel,
- +output reg [3:0] o_rn_sel,
- output [3:0] o_rm_sel_nxt,
- output [3:0] o_rds_sel_nxt,
- output [3:0] o_rn_sel_nxt,
- -output reg [1:0] o_barrel_shift_amount_sel = 'd0,
- -output reg [1:0] o_barrel_shift_data_sel = 'd0,
- -output reg [1:0] o_barrel_shift_function = 'd0,
- -output reg [8:0] o_alu_function = 'd0,
- -output reg [1:0] o_multiply_function = 'd0,
- -output reg [2:0] o_interrupt_vector_sel = 'd0,
- -output reg [3:0] o_address_sel = 4'd2,
- -output reg [1:0] o_pc_sel = 2'd2,
- -output reg [1:0] o_byte_enable_sel = 'd0, // byte, halfword or word write
- -output reg [2:0] o_status_bits_sel = 'd0,
- +output reg [1:0] o_barrel_shift_amount_sel,
- +output reg [1:0] o_barrel_shift_data_sel,
- +output reg [1:0] o_barrel_shift_function,
- +output reg [8:0] o_alu_function,
- +output reg [1:0] o_multiply_function,
- +output reg [2:0] o_interrupt_vector_sel,
- +output reg [3:0] o_address_sel,
- +output reg [1:0] o_pc_sel,
- +output reg [1:0] o_byte_enable_sel, // byte, halfword or word write
- +output reg [2:0] o_status_bits_sel,
- output reg [2:0] o_reg_write_sel,
- output reg o_user_mode_regs_load,
- output reg o_user_mode_regs_store_nxt,
- output reg o_firq_not_user_mode,
- -output reg o_write_data_wen = 'd0,
- -output reg o_base_address_wen = 'd0, // save LDM base address register
- +output reg o_write_data_wen,
- +output reg o_base_address_wen, // save LDM base address register
- // in case of data abort
- -output reg o_pc_wen = 1'd1,
- -output reg [14:0] o_reg_bank_wen = 'd0,
- -output reg [3:0] o_reg_bank_wsel = 'd0,
- -output reg o_status_bits_flags_wen = 'd0,
- -output reg o_status_bits_mode_wen = 'd0,
- -output reg o_status_bits_irq_mask_wen = 'd0,
- -output reg o_status_bits_firq_mask_wen = 'd0,
- +output reg o_pc_wen,
- +output reg [14:0] o_reg_bank_wen,
- +output reg [3:0] o_reg_bank_wsel,
- +output reg o_status_bits_flags_wen,
- +output reg o_status_bits_mode_wen,
- +output reg o_status_bits_irq_mask_wen,
- +output reg o_status_bits_firq_mask_wen,
- // --------------------------------------------------
- // Co-Processor interface
- // --------------------------------------------------
- -output reg [2:0] o_copro_opcode1 = 'd0,
- -output reg [2:0] o_copro_opcode2 = 'd0,
- -output reg [3:0] o_copro_crn = 'd0,
- -output reg [3:0] o_copro_crm = 'd0,
- -output reg [3:0] o_copro_num = 'd0,
- -output reg [1:0] o_copro_operation = 'd0, // 0 = no operation,
- +output reg [2:0] o_copro_opcode1,
- +output reg [2:0] o_copro_opcode2,
- +output reg [3:0] o_copro_crn,
- +output reg [3:0] o_copro_crm,
- +output reg [3:0] o_copro_num,
- +output reg [1:0] o_copro_operation, // 0 = no operation,
- // 1 = Move to Amber Core Register from Coprocessor
- // 2 = Move to Coprocessor from Amber Core Register
- -output reg o_copro_write_data_wen = 'd0,
- +output reg o_copro_write_data_wen,
- output o_iabt_trigger,
- output [31:0] o_iabt_address,
- output [7:0] o_iabt_status,
- @@ -1693,6 +1693,51 @@
- end
- //synopsys translate_on
- +initial begin
- +
- + o_read_data = 1'd0;
- + o_read_data_alignment = 1'd0; // 2 LSBs of read address used for calculating shift in LDRB ops
- + o_imm32 = 32'd0;
- + o_imm_shift_amount = 5'd0;
- + o_shift_imm_zero = 1'd0;
- + o_condition = 4'he; // 4'he = al
- + o_exclusive_exec = 1'd0; // exclusive access request ( swap instruction )
- + o_data_access_exec = 1'd0; // high means the memory access is a read
- + o_status_bits_mode = 2'b11; // SVC
- + o_status_bits_irq_mask = 1'd1;
- + o_status_bits_firq_mask = 1'd1;
- + o_rm_sel = 4'd0;
- + o_rds_sel = 4'd0;
- + o_rn_sel = 4'd0;
- + o_barrel_shift_amount_sel = 2'd0;
- + o_barrel_shift_data_sel = 2'd0;
- + o_barrel_shift_function = 2'd0;
- + o_alu_function = 9'd0;
- + o_multiply_function = 2'd0;
- + o_interrupt_vector_sel = 3'd0;
- + o_address_sel = 4'd2;
- + o_pc_sel = 2'd2;
- + o_byte_enable_sel = 2'd0; // byte; halfword or word write
- + o_status_bits_sel = 3'd0;
- + o_write_data_wen = 1'd0;
- + o_base_address_wen = 1'd0; // save LDM base address register
- + o_pc_wen = 1'd1;
- + o_reg_bank_wen = 15'd0;
- + o_reg_bank_wsel = 4'd0;
- + o_status_bits_flags_wen = 1'd0;
- + o_status_bits_mode_wen = 1'd0;
- + o_status_bits_irq_mask_wen = 1'd0;
- + o_status_bits_firq_mask_wen = 1'd0;
- + o_copro_opcode1 = 3'd0;
- + o_copro_opcode2 = 3'd0;
- + o_copro_crn = 4'd0;
- + o_copro_crm = 4'd0;
- + o_copro_num = 4'd0;
- + o_copro_operation = 2'd0; // 0 = no operation;
- + o_copro_write_data_wen = 1'd0;
- +
- +
- +end
- endmodule
- Index: a23_multiply.v
- ===================================================================
- --- a23_multiply.v (revision 103)
- +++ a23_multiply.v (working copy)
- @@ -64,7 +64,7 @@
- output [31:0] o_out,
- output [1:0] o_flags, // [1] = N, [0] = Z
- -output reg o_done = 'd0 // goes high 2 cycles before completion
- +output reg o_done
- );
- @@ -195,6 +195,12 @@
- assign o_out = product[32:1];
- assign o_flags = flags_nxt;
- +initial begin
- +
- + o_done = 1'd0; // goes high 2 cycles before completion
- +
- +end
- +
- endmodule
- Index: a23_execute.v
- ===================================================================
- --- a23_execute.v (revision 103)
- +++ a23_execute.v (working copy)
- @@ -55,19 +55,19 @@
- // high means the memory access is a read
- // read or write, low for instruction
- -output reg [31:0] o_copro_write_data = 'd0,
- -output reg [31:0] o_write_data = 'd0,
- -output reg [31:0] o_address = 32'hdead_dead,
- -output reg o_adex = 'd0, // Address Exception
- -output reg o_address_valid = 'd0, // Prevents the reset address value being a
- +output reg [31:0] o_copro_write_data,
- +output reg [31:0] o_write_data,
- +output reg [31:0] o_address,
- +output reg o_adex, // Address Exception
- +output reg o_address_valid, // Prevents the reset address value being a
- // wishbone access
- output [31:0] o_address_nxt, // un-registered version of address to the
- // cache rams address ports
- -output reg o_priviledged = 'd0, // Priviledged access
- -output reg o_exclusive = 'd0, // swap access
- -output reg o_write_enable = 'd0,
- -output reg [3:0] o_byte_enable = 'd0,
- -output reg o_data_access = 'd0, // To Fetch stage. high = data fetch,
- +output reg o_priviledged, // Priviledged access
- +output reg o_exclusive, // swap access
- +output reg o_write_enable,
- +output reg [3:0] o_byte_enable,
- +output reg o_data_access, // To Fetch stage. high = data fetch,
- // low = instruction fetch
- output [31:0] o_status_bits, // Full PC will all status bits, but PC part zero'ed out
- output o_multiply_done,
- @@ -610,6 +610,21 @@
- //synopsys translate_on
- +initial begin
- +
- + o_copro_write_data = 32'd0;
- + o_write_data = 32'd0;
- + o_address = 32'hdead_dead;
- + o_adex = 1'd0; // Address Exception
- + o_address_valid = 1'd0; // Prevents the reset address value being a
- + o_priviledged = 1'd0; // Priviledged access
- + o_exclusive = 1'd0; // swap access
- + o_write_enable = 1'd0;
- + o_byte_enable = 4'd0;
- + o_data_access = 1'd0; // To Fetch stage. high = data fetch;
- +
- +
- +end
- endmodule
- Index: a23_wishbone.v
- ===================================================================
- --- a23_wishbone.v (revision 103)
- +++ a23_wishbone.v (working copy)
- @@ -73,13 +73,13 @@
- input i_cache_req,
- // Wishbone Bus
- -output reg [31:0] o_wb_adr = 'd0,
- -output reg [3:0] o_wb_sel = 'd0,
- -output reg o_wb_we = 'd0,
- +output reg [31:0] o_wb_adr,
- +output reg [3:0] o_wb_sel,
- +output reg o_wb_we ,
- input [31:0] i_wb_dat,
- -output reg [31:0] o_wb_dat = 'd0,
- -output reg o_wb_cyc = 'd0,
- -output reg o_wb_stb = 'd0,
- +output reg [31:0] o_wb_dat,
- +output reg o_wb_cyc,
- +output reg o_wb_stb,
- input i_wb_ack,
- input i_wb_err
- @@ -300,5 +300,16 @@
- //synopsys translate_on
- +initial begin
- +
- + o_wb_adr = 32'd0;
- + o_wb_sel = 4'd0;
- + o_wb_we = 1'd0;
- + o_wb_dat = 32'd0;
- + o_wb_cyc = 1'd0;
- + o_wb_stb = 1'd0;
- +
- +
- +end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement