mirror of
https://github.com/MPSU/APS.git
synced 2025-09-16 01:30:10 +00:00
75 lines
1.9 KiB
Systemverilog
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
|