题解 | #单端口RAM#
单端口RAM
http://www.nowcoder.com/practice/a1b0c13edba14a2984e7369d232d9793
- testbench在当前周期检测读数据输出,因此要采用电平触发或者连续赋值语句;
- 使用可综合变量integer和可综合循环for完成深度128ram的初始化;
完整代码
`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
);
//*************code***********//
reg[3:0] ram [127:0];
integer i;
always@(posedge clk or negedge rst)begin
if(~rst)
for(i=0;i<128;i=i+1)
ram[i] <= 0;
else
ram[addr] <= enb? w_data: ram[addr];
end
assign r_data=enb? 4'd0: ram[addr];
//*************code***********//
endmodule