在工程中,FIFO 是一个经常用到的模块,进行不同时钟域数据的转换。在用FPGA时,FIFO直接调用IP核,简单、实用。
昨天晚上,在网上看到百度一个笔试题,用 SRAM 写一个 FIFO ,于是想到这样一个问题,FIFO的结构式什么样的 ?不用IP 核,自己写效果(速度和面积)会怎么样 ?
1、用 QII 建一个FIFO 工程,使用 IP 核 ,通过 RTL ,可以看到
可以看到,右上角 红色框 是一个 RAM 模块 ,FIFO的IP核就是基于 SRAM 的 。
红色框,点进去,可以看到 RAM
RAM模块,使用的就是FPGA专门存储器模块, 此处是 M9K 。
2、再说说 SRAM ,SRAM是静态随机存储器,和SDRAM区别在于不用时时刷新,比较容易控制。
写FPGA程序,也是直接调用 RAM IP 核,实际生成时,也是使用的硬件存储器 M9K 模块。
读写SRAM 是不需要时钟的(专门的SRAM芯片6116等,也都没有时钟管脚),都是异步操作。然而,我们发现,使用IP核生成的SRAM,读写都是需要时钟的,Why ??
原因很简单,在SRAM的 数据,地址,使能 各端口外接了触发器,使得读写SRAM成了时序控制方式,如下图,RAM IP 核 ,输出寄存器是可以选择的。
放大RAM
3、 SDRAM 芯片内部结构道理一样,内部存储器阵列是没有时钟,由于,模式选择寄存器,地址寄存器,数据寄存器 等等,使得读写SDRAM 也是时序方式。
SRAM的 分类 : 读写共用一套 地址,数据总线,读写使能控制 ; 写一套 地址,数据, 读又一套数据,地址总线 ,读和写时分开的。
自己写 FIFO ,后边再说 ...
文章评论(0条评论)
登录后参与讨论