首页 > 其他 > 详细

FPGA FIFO 的实现

时间:2021-02-15 23:13:11      阅读:24      评论:0      收藏:0      [点我收藏+]

FIFO (First Input First Output),中文名为先入先出存储器。顾名思义,FIFO 的数据进出方式为先入先出。FIFO 常用在两个不同步的信号接口上,用于暂存数据同步两个信号。双端口 FIFO 是比较理想的,可以用于两个不同频率的信号。但是 FPGA 不适合这种逻辑,ASIC 上比较容易实现。所以这里实现的 FIFO是单端口的同步 FIFO,约定 FIFO 位宽的为 8 bit,长度为 16。

FIFO 的读写方式如下图所示:

技术分享图片

技术分享图片

技术分享图片

可以看出几个需要注意的问题:

  1. 读写指针都是独立的。
  2. 读写指针都是循环的,满 16 归零。
  3. 当读写指针都在 0 位置的时候,要注意区分满和空这两种截然不同的状态。

要实现 FIFO,首先要实现的是寄存器组。一个8 * 16 位的寄存器组。

代码如下:

技术分享图片

这个逻辑比较简单,在时钟的上升沿存储数据到对应的端口,接下来编写测试代码来测试这个寄存器组:

测试激励代码截图((⊙﹏⊙) TestBench这个我写的不太好):

技术分享图片

下面是仿真结果:

技术分享图片

Quartus 在调用 Modelsim 的时候总是自作主张的添加信号到波形窗口,然而总是掉了那么几个,视频中删掉原来的信号信息,增加需要的信号到波形窗口,并重新仿真一次。

有了寄存器组,那么FIFO 就呼之欲出了。

下面是 FIFO 的代码:

技术分享图片

这里使用波形仿真,仿真的结果如下:

技术分享图片

好了,FIFO 部分到此结束,(●‘?‘●)。

FPGA FIFO 的实现

原文:https://www.cnblogs.com/SummerSunnyDay/p/14404412.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!