blob: fa7db30b97182066c6e876be5efa6d08f716cd5f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
`timescale 1ns / 1ps
/**
Dual-port Instrcution/Data memory
*/
module dp_memory(
input wire clk,
input wire i_read_en,
input wire [31:0] i_addr,
output wire [31:0] i_instr_out,
input wire d_read_en,
input wire d_write_en,
input wire [31:0] d_addr,
input wire [31:0] d_write_data,
output wire [31:0] d_data_out
);
reg [31:0] mem[0:1023];
initial begin
$readmemh("./sw/test.rom", mem);
end
always @(posedge clk) begin
if (d_write_en)
mem [d_addr] <= d_write_data;
end
assign i_instr_out = i_read_en ? mem[i_addr] : 0;
assign d_data_out = d_read_en ? mem[d_addr] : 0;
endmodule
|