Xilinx FPGA:vivado关于fifo的一些零碎知识

一、FIFO概念

       先进先出,是一种组织和操作数据结构的方法。在硬件应用中,FIFO一般由一些读写指针,存储和控制的逻辑组成。

二、xilinx中生成的FIFO的存储类型

(1)shift register FIFO : 移位寄存器FIFO,这种很少用,因为FPGA内部的移位寄存器资源很少。

(2)build in FIFO :内嵌FIFO,使用专用的控制信号线(如满信号、空信号等)+BRAM资源生成FIFO,可以理解为一种内部集成的FIFO。

(3)block ram FIFO :使用可编程逻辑块CLB资源+BRAM生成的存储空间。

(4)distributed ram FIFO :通过LUT资源生成的存储空间。

(         independent clocks :异步时钟            common clock:同步时钟            )

一般选择standard fifo就可以了 ,毕竟数据需要一个稳定的过程。

1个BRAM是36K,60个就是60*36K

同步fifo和异步fifo的主要区别:

在于这里的配置信息

在异步fifo中,存在异步复位和同步复位。

1、异步复位:勾选enable reset synchronization ,读写端实现异步复位,在例化fifo ip 后,只会出现一个异步reset。

异步复位:rst信号最好持续3个及以上的时钟周期(读写时钟不同时,按更慢的时钟算)。当rst信号被写数据端时钟的上升沿检测到后,需要3个写时钟才能完成正确的复位同步。而full(满),almost full(将满), prog full(可编程满)信号在异步复位信号被拉低后5个写时钟周期后才会被拉低,开始正常接收写操作。在此期间,full(满),almost full (将满),prog full (可编程满)信号都被拉高,来保证在复位状态时没有写操作的发生。一般复位信号结束后可以等待多余30-60个时钟周期再读写。

2、同步复位:不勾选enable reset synchronization,例化fifo ip核后会出现两个在各自时钟域同步的reset(信号wr_rst/rd_rst)

同步复位:在各自的时钟域下,信号都是相对同步的,所以不需要额外的同步逻辑。同步复位也需要至少持续一个周期(各自时钟域下)。为了避免发生不可预料的结果,在复位时不要进行任何读写的操作。当读操作复位早于写操作复位时,从复位(读操作)开始到复位(写操作)结束,不进行任意读写操作。如果读操作复位和写操作复位顺序交换,即写操作复位早于读操作复位,从复位(写操作)开始到复位(读操作)结束,不进行任意读写操作。

tips:RAM和FIFO的主要区别是在于地址,RAM之所以被称为随机存储器就在于我们可以随时用RAM的地址去存储一些东西,ROM也是随时可以从地址中去读取一些数据,但是FIFO(first in first out)是没有地址线的。

相关推荐

  1. 关于C++一些知识

    2024-07-09 21:26:08       41 阅读
  2. 关于互联网安全方面需要了解一些知识

    2024-07-09 21:26:08       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 21:26:08       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 21:26:08       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 21:26:08       42 阅读
  4. Python语言-面向对象

    2024-07-09 21:26:08       53 阅读

热门阅读

  1. NI SCXI-1001 模块处理器控制器

    2024-07-09 21:26:08       20 阅读
  2. Oracle数据库自带的内置表和视图、常用内部视图

    2024-07-09 21:26:08       18 阅读
  3. 程序员失业日记2:失业后迷茫

    2024-07-09 21:26:08       22 阅读
  4. uniapp 请求封装

    2024-07-09 21:26:08       23 阅读
  5. Python人生重开器

    2024-07-09 21:26:08       19 阅读
  6. 【3】迁移学习模型

    2024-07-09 21:26:08       19 阅读
  7. Transformer 入门案例教程(大语言模型)

    2024-07-09 21:26:08       25 阅读
  8. 白骑士的C语言教学高级篇 3.4 C语言中的算法

    2024-07-09 21:26:08       21 阅读
  9. flask-apscheduler 定时任务被执行两次

    2024-07-09 21:26:08       20 阅读
  10. 部署Gunicorn + Flask应用到Docker

    2024-07-09 21:26:08       21 阅读
  11. VB 爬虫技术

    2024-07-09 21:26:08       21 阅读
  12. Self-Instruct构造Prompt的例子

    2024-07-09 21:26:08       20 阅读