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

Subversion Repositories yifive

[/] [yifive/] [trunk/] [caravel_yifive/] [verilog/] [rtl/] [syntacore/] [scr1/] [src/] [top/] [scr1_mem_axi.sv] - Diff between revs 11 and 21

Show entire file | Details | Blame | View Log

Rev 11 Rev 21
Line 21... Line 21...
    input   logic                           axi_reinit,
    input   logic                           axi_reinit,
    // Core Interface
    // Core Interface
    output  logic                           core_idle,
    output  logic                           core_idle,
    output  logic                           core_req_ack,
    output  logic                           core_req_ack,
    input   logic                           core_req,
    input   logic                           core_req,
    input   type_scr1_mem_cmd_e             core_cmd,
    input   logic                           core_cmd,
    input   type_scr1_mem_width_e           core_width,
    input   logic [1:0]                     core_width,
    input   logic [SCR1_ADDR_WIDTH-1:0]     core_addr,
    input   logic [SCR1_ADDR_WIDTH-1:0]     core_addr,
    input   logic [31:0]                    core_wdata,
    input   logic [31:0]                    core_wdata,
    output  logic [31:0]                    core_rdata,
    output  logic [31:0]                    core_rdata,
    output  type_scr1_mem_resp_e            core_resp,
    output  logic [1:0]                     core_resp,
 
 
    // AXI
    // AXI
    output  logic [SCR1_AXI_IDWIDTH-1:0]    awid,
    output  logic [SCR1_AXI_IDWIDTH-1:0]    awid,
    output  logic [SCR1_ADDR_WIDTH-1:0]     awaddr,
    output  logic [SCR1_ADDR_WIDTH-1:0]     awaddr,
    output  logic [ 7:0]                    awlen,
    output  logic [ 7:0]                    awlen,
Line 78... Line 78...
);
);
 
 
 
 
// Local functions
// Local functions
function automatic logic [2:0] width2axsize (
function automatic logic [2:0] width2axsize (
    input   type_scr1_mem_width_e    width );
    input   logic [1:0]              width );
    logic [2:0] axsize;
    logic [2:0] axsize;
begin
begin
    case (width)
    case (width)
        SCR1_MEM_WIDTH_BYTE :  axsize = 3'b000;
        SCR1_MEM_WIDTH_BYTE :  axsize = 3'b000;
        SCR1_MEM_WIDTH_HWORD:  axsize = 3'b001;
        SCR1_MEM_WIDTH_HWORD:  axsize = 3'b001;
Line 93... Line 93...
    width2axsize = axsize; // cp.11
    width2axsize = axsize; // cp.11
end
end
endfunction
endfunction
 
 
typedef struct packed {
typedef struct packed {
    type_scr1_mem_width_e                               axi_width;
    logic [1:0]                                         axi_width;
    logic                    [SCR1_ADDR_WIDTH-1:0]      axi_addr;
    logic                    [SCR1_ADDR_WIDTH-1:0]      axi_addr;
    logic                                   [31:0]      axi_wdata;
    logic                                   [31:0]      axi_wdata;
} type_scr1_request_s;
} type_scr1_request_s;
 
 
typedef struct packed {
typedef struct packed {
Line 127... Line 127...
logic               [$clog2(SCR1_REQ_BUF_SIZE)-1:0]     req_aval_ptr;
logic               [$clog2(SCR1_REQ_BUF_SIZE)-1:0]     req_aval_ptr;
logic               [$clog2(SCR1_REQ_BUF_SIZE)-1:0]     req_proc_ptr;
logic               [$clog2(SCR1_REQ_BUF_SIZE)-1:0]     req_proc_ptr;
logic               [$clog2(SCR1_REQ_BUF_SIZE)-1:0]     req_done_ptr;
logic               [$clog2(SCR1_REQ_BUF_SIZE)-1:0]     req_done_ptr;
logic                                                   rresp_err;
logic                                                   rresp_err;
logic                                       [31:0]      rcvd_rdata;
logic                                       [31:0]      rcvd_rdata;
type_scr1_mem_resp_e                                    rcvd_resp;
logic [1:0]                                             rcvd_resp;
logic                                                   force_read;
logic                                                   force_read;
logic                                                   force_write;
logic                                                   force_write;
 
 
 
 
 
 
Line 306... Line 306...
 
 
 
 
assign wdata = (force_write)?                       core_wdata << (8*                       core_addr[1:0]) :
assign wdata = (force_write)?                       core_wdata << (8*                       core_addr[1:0]) :
                              req_fifo_axi_wdata[req_proc_ptr] << (8* bShift1);
                              req_fifo_axi_wdata[req_proc_ptr] << (8* bShift1);
 
 
 
wire [SCR1_ADDR_WIDTH-1:0] CurAddr2 = req_fifo_axi_addr[req_done_ptr];
 
wire [1:0]  bShift2 = CurAddr2[1:0];
 
 
// Read data adaptation
// Read data adaptation
always_comb begin
always_comb begin
   case (req_fifo_axi_width[req_done_ptr])
   case (req_fifo_axi_width[req_done_ptr])
        SCR1_MEM_WIDTH_BYTE :  rcvd_rdata = rdata >> (8*bShift2);
        SCR1_MEM_WIDTH_BYTE :  rcvd_rdata = rdata >> (8*bShift2);

powered by: WebSVN 2.1.0

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