题解主体
单口RAM的实现原理:
建立一个reg的数组,将数据存储进来,进行的是读、写互不干扰的读写机制,即要么读要么写。这个时侯需要设置enb,进行读写的开关控制。需要注意的是,写是对寄存器进行写,因此必须有时序电路构成。
硬件代码如下:
reg [3:0]mem[127:0];
integer i;
always @(posedge clk or negedge rst) begin
if(!rst) begin
for (i=0; i<1023 ; i=i+1) begin
mem[i] <= 'b0;
end
end
else if (enb) begin
mem[addr] <= w_data;
end
end
assign r_data = (!enb)?mem[addr]:'b0;
参考答案
`timescale 1ns/1ns module RAM_1port( input clk, input rst, input enb, input [6:0]addr, input [3:0]w_data, output wire [3:0]r_data ); reg [6:0]mem[127:0]; integer i; always @(posedge clk or negedge rst) begin if(!rst) begin for (i=0; i<127 ; i=i+1) begin mem[i] <= 'b0; end end else if (enb) begin mem[addr] <= w_data; end end assign r_data = (!enb)?mem[addr]:'b0; endmodule