之前在Verilog实现RAM(1)中,对常见存储器件进行了名词扫盲,并通过调用IP核实现了简单的同步读写SRAM;现在接着之前的工作,对同步读写SRAM进行Verilog描述----实现一个位宽8bit,深度16bit的单端口SRAM;
一、原理
输入端口有:
reg [3:0]a;//输入地址(RAM深度为16,对应地址位宽为4)
reg clk;//时钟
reg we;// write enable,写使能时进行RAM写操作
同时添加如下端口:
reg oe;// output enable,输出使能时RAM读取的结果才能输出
reg cs;// 片选信号,选择读取哪一个RAM
输出输出端口有:
wire [7:0]d;//读取RAM时数据输出/写入RAM时数据输入
工作过程如下:
时钟来临时,根据cs/we/oe的值执行不同的操作;cs有效(为1)、we为1时,写使能,将d输入数据写入a对应地址处;cs有效(为1)、we为0时,读使能,oe有效(为1)时将a地址处的数据读出到d上;
二、代码实现
接着之前的工作,对同步读写SRAM进行Verilog描述----实现一个位宽8bit,深度16bit的单端口SRAM;为增加灵活性,通过parameter定义位宽以及深度,实现SRAM位宽、深度可调;使用parameter定义参数以及参数重写见