module ram_16x8 #(parameter MASK = 8'hff)( //掩码默认无掩盖效果
input CLK, //时钟
input [3:0] ADDR, //4 位地址
input [7:0] I_DATA, //1byte的数据
input EN,WR, //EN使能,控制读写是否生效,WR控制是写或读操作:1为写,0为读
output reg [7:0] O_DATA); //输出数据寄存器
reg [7:0] RAM [15:0];
initial begin // 初始化 RAM,防止未初始化的值
integer i;
for (i = 0; i < 16; i = i + 1) begin
RAM[i] = 8'h00;
end
end
always @(posedge CLK) begin
if(EN&&WR) begin
RAM[ADDR] <= I_DATA && MASK;
end else if(EN&&!WR) begin
O_DATA <= RAM[ADDR] && MASK;
end else begin
O_DATA <= 8'h00;
end
end
endmodule
补一个16X8的RAM
于 2024-05-07 22:36:51 首次发布