Files
APS/Labs/07. Load-store unit/miriscv_top.sv
Andrei Solodovnikov f4c0960704 Initial commit
2023-09-07 17:06:55 +03:00

75 lines
1.9 KiB
Systemverilog

module miriscv_top
#(
parameter RAM_SIZE = 256, // bytes
parameter RAM_INIT_FILE = ""
)
(
// clock, reset
input clk_i,
input rst_n_i
);
logic [31:0] instr_rdata_core;
logic [31:0] instr_addr_core;
logic [31:0] data_rdata_core;
logic data_req_core;
logic data_we_core;
logic [3:0] data_be_core;
logic [31:0] data_addr_core;
logic [31:0] data_wdata_core;
logic [31:0] data_rdata_ram;
logic data_req_ram;
logic data_we_ram;
logic [3:0] data_be_ram;
logic [31:0] data_addr_ram;
logic [31:0] data_wdata_ram;
logic data_mem_valid;
assign data_mem_valid = (data_addr_core >= RAM_SIZE) ? 1'b0 : 1'b1;
assign data_rdata_core = (data_mem_valid) ? data_rdata_ram : 1'b0;
assign data_req_ram = (data_mem_valid) ? data_req_core : 1'b0;
assign data_we_ram = data_we_core;
assign data_be_ram = data_be_core;
assign data_addr_ram = data_addr_core;
assign data_wdata_ram = data_wdata_core;
miriscv_core core (
.clk_i ( clk_i ),
.arstn_i ( rst_n_i ),
.instr_rdata_i ( instr_rdata_core ),
.instr_addr_o ( instr_addr_core ),
.data_rdata_i ( data_rdata_core ),
.data_req_o ( data_req_core ),
.data_we_o ( data_we_core ),
.data_be_o ( data_be_core ),
.data_addr_o ( data_addr_core ),
.data_wdata_o ( data_wdata_core )
);
miriscv_ram
#(
.RAM_SIZE (RAM_SIZE),
.RAM_INIT_FILE (RAM_INIT_FILE)
) ram (
.clk_i ( clk_i ),
.rst_n_i ( rst_n_i ),
.instr_rdata_o ( instr_rdata_core ),
.instr_addr_i ( instr_addr_core ),
.data_rdata_o ( data_rdata_ram ),
.data_req_i ( data_req_ram ),
.data_we_i ( data_we_ram ),
.data_be_i ( data_be_ram ),
.data_addr_i ( data_addr_ram ),
.data_wdata_i ( data_wdata_ram )
);
endmodule