module ram #( parameter DW = 16, parameter AW = 13, parameter RAM_AW = 7 )( input clk, //时钟 input rst, //同步复位,高电平有效 input [DW-1:0] din, //数据输入 input [AW-1:0] addr, //地址输入 input we, //高电平写使能 output [DW-1:0] dout //数据输出 ); reg [DW-1:0] mem_r [(2**RAM_AW)-1:0];//内存定义 always @(posedge clk) begin if(we) mem_r[addr[RAM_AW-1:0]] <= din;//写入 end reg [RAM_AW-1:0] addr_r;//地址寄存器 always @(posedge clk) begin if (~we) addr_r <= addr[RAM_AW-1:0];//读行为同步 end assign #0.1 dout = mem_r[addr_r[RAM_AW-1:0]]; endmodule