用verilog设计双端口RAM(带下载链接)

简单双端口RAM设计(带下载链接)

1,设计需求
设计一个双端口的RAM,具有独立的读写时钟,独立读写地址和数据端口,具有复位功能,并具有读和写的使能信号。


2,端口设计

写通道(write)
Wrclk 输入端口 写通道的时钟信号Aclear 输入端口 RAM复位信号Wren 输入端口 RAM写使能信号Wraddr[…]输入端口 RAM写数据的地址端口Wdata[…]输入端口 RAM的写数据端口
读通道(read)
Rdclk输入端口 读通道的时钟信号Rden 输入端口 读通道的使能信号Raddr[…] 输入端口 要读出的数据的地址信息Rdata[…]输出端口 读出的数据
3,设计框图
 



4,代码设计
(1)参数定义
数据宽度和地址宽度
 



(2)输入输出端口
各个信号的含义如第二小节所示。
 



(3)双端口RAM定义

定义了一个位宽为 data_width,深度为 2^addr_width 的ram存储器。

 



4)在写时钟的驱动下,双端口RAM写数据以及复位功能设计
在本写时钟下给出写地址和写数据,在下一个写时钟周期,数据被写入到RAM中。



(5)再读时钟的驱动下,双端口RAM读数据的功能设计
本读时钟给出读地址信息,在下一个读时钟信号,输出对应地址的数据。
 



5,功能仿真(仿真代码
(1)信号初始化,并复位
 



(2)进行写数据仿真
模拟产生写地址信息以及写数据,并使写使能信号有效。
写地址和写数据在本时钟上升沿产生,并在下一个时钟的上升沿写入RAM中。
 



(3)进行读数据仿真
模拟产生读地址信号,并使读使能信号有效。
读地址在本时钟上升沿产生,数据在下一个时钟的上升沿从RAM中读出。
 



6,仿真波形
(1)写数据过程的仿真波形
可以看出,写地址和写数据在本时钟上升沿产生,并在下一个时钟的上升沿写入RAM中。
 


(2)读数据过程的仿真波形
可以看出,读地址在本时钟上升沿产生,数据在下一个时钟的上升沿从RAM中读出。
 




7,源代码下载

关注公众号“数字积木”,在公众号对话框内回复


双端口RAM

即可得到工程文件下载链接。

本工程基于 Quartus 18.2 ,联合 Modelsim 进行功能仿真。

posted @ 2020-04-25 21:51  数字积木  阅读(93)  评论(0编辑  收藏  举报