<返回更多

什么是FIFO?

2022-02-10    争取个有趣的灵魂
加入收藏
什么是FIFO?

 

什么是FIFO?

FIFO一般用于不同时钟域之间的数据传输,也常用来实现不同位宽的接口的数据匹配。

  1. “不同时钟域间传输数据”时,FIFO类似缓存,根据时钟A,向FIFO中写入数据,根据时钟B,读取FIFO数据。
什么是FIFO?

 

  1. “不同位宽传输数据”时,FIFO同样类似缓存,将FIFO接收配置为8位数据,输出配置为16位数据。FIFO接收到的8位数组,按照高低组合为16位数据进行输出。
什么是FIFO?

 

配置FIFO的ip核

参考:如何创建使用IP核-PPL?

在“菜单栏 - Tools - MegaWizard Plug-In Manage”创建“FIFO”核。

什么是FIFO?

 

  1. 位宽与时钟配置
    输入与输出均为8字节宽度,有256个字的缓存深度,输入与输出为不同时钟。
什么是FIFO?

 

  1. DCFIFO1(FIFO优化,平衡性能与资源消耗)
什么是FIFO?

 

  1. DCFIFO2(控制标志信号)
    “full”:表示缓存满“empty”:表示缓存空“usedw”:可被读取的缓存容量
什么是FIFO?

 

  1. 读请求模式、Blk类型
什么是FIFO?

 

正常模式:数据正常被读取

什么是FIFO?

 

前显模式:相比较正常模式前移一字节,导致处于读取状态下,实际读取的是第二个数据。

什么是FIFO?

 

  1. 电路保护等选项
    电路保护使用默认选项,不勾选即为开启电路保护。资源使用默认选项,使用FIFO中自带的存储资源
  2. 仿真
    altera_mf文件,提供仿真功能。
什么是FIFO?

 

  1. summary总结界面
    勾选后,可生产对应的文件。需要“fifo_inst.v”例化文件
什么是FIFO?

 

  1. 例化
    在工程文件夹下“paripcore”中的“fifo_inst.v”为例化文件,可在顶层文件中使用此例化,替换传参即可。
什么是FIFO?

 

移植到顶层文件中

什么是FIFO?

 

工程配置

工程框架
通过写模块,向FIFO中写入数据;
通过读模块,从FIFO中获取数据;

什么是FIFO?

 

  1. 顶层文件
    分别例化fifo的ip核、读模块、写模块
什么是FIFO?

 

  1. 读模块
    通过状态机形式,默认处于“等待读取”状态,先检查是否存在读满信号,存在则进入“允许读取”状态;在“允许读取”状态下,判断是否存在读空信号,若存在读空信号,进入“等待读取”,若不存在读空信号,持续读取。
什么是FIFO?

 

  1. 写模块
    同样通过状态机的形式进行。默认“等待写空”
什么是FIFO?

 

  1. 验证
    编译后,通过“SignalTap”进行验证。
什么是FIFO?

 

波形变化,可以观察到从读数据到写数据的变化情况

什么是FIFO?

 

之前配置fifo的ip核时,设置256字,故显示0-255。
再修改为128字,则结果如下:

什么是FIFO?

 


什么是FIFO?

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>