OpenCores
URL https://opencores.org/ocsvn/amber/amber/trunk

Subversion Repositories amber

[/] [amber/] [trunk/] [hw/] [vlog/] [amber25/] [a25_execute.v] - Diff between revs 83 and 86

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 83 Rev 86
Line 183... Line 183...
                                                    // case of data abort
                                                    // case of data abort
wire [31:0]         read_data_filtered1;
wire [31:0]         read_data_filtered1;
wire [31:0]         read_data_filtered;
wire [31:0]         read_data_filtered;
wire [31:0]         read_data_filtered_c;
wire [31:0]         read_data_filtered_c;
reg  [31:0]         read_data_filtered_r = 'd0;
reg  [31:0]         read_data_filtered_r = 'd0;
reg  [3:0]          load_rd_r = 'd0;
reg  [5:0]          load_rd_r = 'd0;
wire [3:0]          load_rd_c;
wire [5:0]          load_rd_c;
 
 
wire                write_enable_nxt;
wire                write_enable_nxt;
wire                daddress_valid_nxt;
wire                daddress_valid_nxt;
wire                iaddress_valid_nxt;
wire                iaddress_valid_nxt;
wire                priviledged_nxt;
wire                priviledged_nxt;
Line 481... Line 481...
 
 
 
 
// ========================================================
// ========================================================
// Use read value from data memory instead of from register
// Use read value from data memory instead of from register
// ========================================================
// ========================================================
assign rn = i_rn_use_read && i_rn_sel == load_rd_c ? read_data_filtered_c : reg_bank_rn;
assign rn = i_rn_use_read && i_rn_sel == load_rd_c[3:0] && status_bits_mode == load_rd_c[5:4] ? read_data_filtered_c : reg_bank_rn;
assign rm = i_rm_use_read && i_rm_sel == load_rd_c ? read_data_filtered_c : reg_bank_rm;
assign rm = i_rm_use_read && i_rm_sel == load_rd_c[3:0] && status_bits_mode == load_rd_c[5:4] ? read_data_filtered_c : reg_bank_rm;
assign rs = i_rs_use_read && i_rs_sel == load_rd_c ? read_data_filtered_c : reg_bank_rs;
assign rs = i_rs_use_read && i_rs_sel == load_rd_c[3:0] && status_bits_mode == load_rd_c[5:4] ? read_data_filtered_c : reg_bank_rs;
assign rd = i_rd_use_read && i_rs_sel == load_rd_c ? read_data_filtered_c : reg_bank_rd;
assign rd = i_rd_use_read && i_rs_sel == load_rd_c[3:0] && status_bits_mode == load_rd_c[5:4] ? read_data_filtered_c : reg_bank_rd;
 
 
 
 
always@( posedge i_clk )
always@( posedge i_clk )
    if ( i_wb_read_data_valid )
    if ( i_wb_read_data_valid )
        begin
        begin
        read_data_filtered_r <= read_data_filtered;
        read_data_filtered_r <= read_data_filtered;
        load_rd_r            <= i_wb_load_rd[3:0];
        load_rd_r            <= {i_wb_load_rd[6:5], i_wb_load_rd[3:0]};
        end
        end
 
 
assign read_data_filtered_c = i_wb_read_data_valid ? read_data_filtered : read_data_filtered_r;
assign read_data_filtered_c = i_wb_read_data_valid ? read_data_filtered : read_data_filtered_r;
assign load_rd_c            = i_wb_read_data_valid ? i_wb_load_rd[3:0]  : load_rd_r;
 
 
// the register number and the mode
 
assign load_rd_c            = i_wb_read_data_valid ? {i_wb_load_rd[6:5], i_wb_load_rd[3:0]}  : load_rd_r;
 
 
 
 
// ========================================================
// ========================================================
// Set mode for the destination registers of a mem read
// Set mode for the destination registers of a mem read
// ========================================================
// ========================================================

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.