注意这里的addr既是写地址,又是读地址。同时注意ram的初始化方法。
`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: write_ram
if(~rst) begin
for(i = 0; i < 128; i = i + 1)
ram[i] <= 4'b0;
end
else if(enb)
ram[addr] <= w_data;
end
assign r_data = (!enb) ? ram[addr] : 4'b0;
//*************code***********//
endmodule