原创 由 FIFO 引发的一点思考

2014-5-28 10:14 952 11 11 分类: FPGA/CPLD 文集: FPGA

在工程中,FIFO 是一个经常用到的模块,进行不同时钟域数据的转换。在用FPGA时,FIFO直接调用IP核,简单、实用。

昨天晚上,在网上看到百度一个笔试题,用 SRAM 写一个 FIFO ,于是想到这样一个问题,FIFO的结构式什么样的 ?不用IP 核,自己写效果(速度和面积)会怎么样 ?


1、用 QII 建一个FIFO 工程,使用 IP 核 ,通过 RTL ,可以看到

20140528094136281.jpg

可以看到,右上角 红色框 是一个 RAM 模块 ,FIFO的IP核就是基于 SRAM 的 。

红色框,点进去,可以看到 RAM

20140528094513698.jpg

RAM模块,使用的就是FPGA专门存储器模块, 此处是 M9K 。


2、再说说 SRAM ,SRAM是静态随机存储器,和SDRAM区别在于不用时时刷新,比较容易控制。

写FPGA程序,也是直接调用 RAM IP 核,实际生成时,也是使用的硬件存储器 M9K 模块。

读写SRAM 是不需要时钟的(专门的SRAM芯片6116等,也都没有时钟管脚),都是异步操作。然而,我们发现,使用IP核生成的SRAM,读写都是需要时钟的,Why ??

原因很简单,在SRAM的 数据,地址,使能 各端口外接了触发器,使得读写SRAM成了时序控制方式,如下图,RAM IP 核 ,输出寄存器是可以选择的。

20140528095726415.jpg


放大RAM

20140528095955303.jpg


3、 SDRAM 芯片内部结构道理一样,内部存储器阵列是没有时钟,由于,模式选择寄存器,地址寄存器,数据寄存器 等等,使得读写SDRAM 也是时序方式。

 SRAM的 分类 : 读写共用一套 地址,数据总线,读写使能控制 ; 写一套 地址,数据, 读又一套数据,地址总线 ,读和写时分开的。


自己写 FIFO ,后边再说 ...

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条