A.13 组合逻辑实例三:存储器
什么是存储器?
用于存储数据的地方,那要存储的话,至少就需要地址和数据,也就是说它至少要包括一个二维的数组类型的变量。
设计模块
//文件路径:a.13/src/memory.v
module memory(enable,rw,addr,data);
parameter ADDR_WIDTH = 8;
parameter DATA_WIDTH = 16;
parameter MEM_WIDTH = 256;
input enable;
input rw;//0 write,1 read
input[ADDR_WIDTH-1:0] addr;
inout[DATA_WIDTH-1:0] data;//可输入输出的双向读写端口
reg[DATA_WIDTH-1:0] memory_data [0:MEM_WIDTH-1];
always@(enable or rw or addr or data)begin
if(enable & (~rw)) //write
memory_data[addr] = data;
end
//read
assign data = (enable & rw)? memory_data[addr] : {DATA_WIDTH{1'bz}};
endmodule
测试模块
//文件路径:a.13/sim/testbench/demo_tb.sv
module top;
parameter ADDR_WIDTH = 8;
paramet