双口RAM之IP核使用与验证

双口RAM之IP核使用与验证

上篇在FPGA器件结构资源中提到存储器结构是由一列列的M9K存储器模块组成的,通过对这些M9K存储器模块进行配置,可以实现各种存储器功能,如RAM,ROM,移位寄存器以及fifo缓冲器,具体IP核设置如下图所示
双口RAM之IP核使用与验证_第1张图片
本篇先从双口RAM说起,说起双口RAM,本人也是从前辈的代码中认识到这个IP核,才逐渐树立起FPGA模块架构设计以及对数据流的分析。

下面先从数据的乒乓操作到双口RAM的IP核设置开始讲起。

双口RAM之乒乓操作

我们知道乒乓操作是用于对数据流控制的一种处理技巧,具体操作如下图所示,外部输入的数据流通过“输入数据选择单元”模块送入两个数据缓冲区中,数据缓冲区可以为任何存储模块。
双口RAM之IP核使用与验证_第2张图片
操作流程如下:

1.在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”中。

2.在第二个缓冲周期,“输入数据流选择单元”模块将输入数据流缓存到“数据缓冲模块2”中,同时,“输出数据选择单元”将“数据缓冲模块1”中第一周期缓存到的数据送到“数据流运算处理模块”进行后续数据处理。

3.在第三个缓冲周期中,同第二个缓冲周期一致,是将数据流缓存到“数据缓冲模块1”中,同时取出“数据缓冲模块2”在第二缓冲周期缓存的数据,送到“数据流运算处理模块”中

4.如此不断循环。

上面的步骤利用了乒乓操作对数据的无缝缓冲和处理。乒乓操作可以通过对“输入数据选择单元”和“输出数据选择单元”的按节拍,相互配合地进行无缝切换,可以将经过缓冲的数据流没有停顿的送到“数据流运算处理模块”中。

双口RAM之IP核设置

(1)首页

首先IP核设置首页如下图所示
双口RAM之IP核使用与验证_第3张图片
在上面可以看出设置为一个读端口和一个写端口,设置存储器大小的方式是按字节数来确定的。

在首页的左侧可以看出模块的输入输出端,输入输出信号都采用同一个clock时钟,当有wren写请求信号时(wren高电平有效),就会将data[7:0]中的数据写到相应的地址中去,输出q[7:0]的数据是读地址端口rdaddress[4:0]上的地址数据。其中数据输入输出都会经过一个寄存器。下图不同选择对比电路可以看出差异。

双口RAM之IP核使用与验证_第4张图片
因此该页选择设置一般而言的简单双端口RAM还是真正的双端口RAM。

(2)第二页

上篇提到一个M9K存储器最多有8192个存储位,因此下图8192刚好使用一个M9K存储器,一旦超过该位数,就会使用其他的查找表逻辑来选择多余的寄存器。
双口RAM之IP核使用与验证_第5张图片
上图选择的输入和输出数据端口使用不同的位宽,其输入输出数据位宽根据实际应用而来。

存储器使用的存储块类型和存储器深度为软件自动选择,一般默认就行了。

(3)第三页

第三页时钟选择有单时钟,读和写使用不同时钟,输入和输出选择不同时钟,根据实际需要,一般选择单时钟即可。
双口RAM之IP核使用与验证_第6张图片
一般我们也不需要创建读使能信号,以及选择字节使能信号(byteena),具体在Cyclone IV器件手册中提到,所以在进行FPGA学习时,一定要过一遍器件手册,上篇是个人在学习器件手册时,输出的学习笔记,一定要有输出产物。

(4)第四页

在这一页可以看出输入数据,写请求,写地址,读地址以及读使能都默认选择的寄存器,而输出数据q的寄存器是可选的,,一般我们选择输出数据通过寄存器进行寄存。
双口RAM之IP核使用与验证_第7张图片
在这一页还问我们是否创建时钟使能信号和异步复位端口,具体在上图电路中已有所体现,但是一般我们不会创建时钟使能信号和异步复位端口,需注意这里的复位并不是对RAM中的数据进行复位,而是对寄存器上的值进行复位。

具体观察体现在读地址rdaddress[7:0]和输出数据q[7:0]上的寄存器的底部有一个异步复位的信号。

(5)第五页

该页是对数据读取的一个判断,比如说如果对同一地址既要写又要读的话,那么它该输出什么呢?
这一页给出了两个选择:一是设置为此时写入数据之前的存储数据,二是选择不关心。

双口RAM之IP核使用与验证_第8张图片

(6)第六页

因为本文使用的是RAM,所以不对其进行初始化,在后面使用ROM时必须要进行初始化。
双口RAM之IP核使用与验证_第9张图片
最后点击finish即可。

激励仿真

在这里插入图片描述
上图为仿真激励图,可以看出数据在wren使能信号为高电平时,写入数据,将输入数据写到相应的地址位上,但是仿真输出波形总是延迟一个系统时钟周期读取数据。因为读地址为初始位置为0,因此写入0位的数据32存在时间较长。

为此,我们将读地址位初始化一个不用的常值,进行仿真,仿真图如下
双口RAM之IP核使用与验证_第10张图片
对照上图,看出设置的双口RAM的IP核正常工作。

你可能感兴趣的:(FPGA)