当前位置: 首页 > news >正文

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)是没有地址线的。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【K8s】【问题排查】k8s只能本地服务器访问服务,其他节点无法访问服务
  • crontab定时任务不执行原因排查
  • 国际网课平台Udemy上的亚马逊云科技AWS免费高分课程和创建、维护EC2动手实践
  • linux高级编程(TCP)(传输控制协议)
  • Java核心技术【二十】Java泛型的基本概念和原理详解
  • 二叉树超详细解析
  • phpstudy框架,window平台,如何开端口给局域网访问?
  • AIGC专栏12——EasyAnimateV3发布详解 支持图文生视频 最大支持960x960x144帧视频生成
  • 【QT中实现摄像头播放、以及视频录制】
  • Consul与CoreDNS的对比
  • 架构设计(2)云原生架构与实例部署
  • 【WebGIS平台】传统聚落建筑科普数字化建模平台
  • MySQL之基本查询(上)-表的增删查改
  • 如何使用 Puppeteer 避免机器人检测?
  • oracle索引字段存储数据过长,导致索引失效
  • [译]前端离线指南(上)
  • 【前端学习】-粗谈选择器
  • Angular6错误 Service: No provider for Renderer2
  • Angular数据绑定机制
  • angular学习第一篇-----环境搭建
  • Cumulo 的 ClojureScript 模块已经成型
  • export和import的用法总结
  • JavaScript HTML DOM
  • pdf文件如何在线转换为jpg图片
  • PHP CLI应用的调试原理
  • vuex 笔记整理
  • 百度地图API标注+时间轴组件
  • 不上全站https的网站你们就等着被恶心死吧
  • 从0到1:PostCSS 插件开发最佳实践
  • 推荐一个React的管理后台框架
  • 一份游戏开发学习路线
  • ​低代码平台的核心价值与优势
  • #include<初见C语言之指针(5)>
  • #每日一题合集#牛客JZ23-JZ33
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (1)(1.9) MSP (version 4.2)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (八十八)VFL语言初步 - 实现布局
  • (超详细)语音信号处理之特征提取
  • (南京观海微电子)——I3C协议介绍
  • (区间dp) (经典例题) 石子合并
  • (十)c52学习之旅-定时器实验
  • (一)插入排序
  • (转)Mysql的优化设置
  • (转)项目管理杂谈-我所期望的新人
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .bat批处理出现中文乱码的情况
  • .DFS.
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net core + vue 搭建前后端分离的框架
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。