【FPGA基础篇】XilinxFIFO详细解析 .pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【FPGA基础篇】XilinxFIFO详细解析 FIFO官⽅⼿册要点 FIFO作为FPGA岗位求职过程中最常被问到的基础知识点,也是项⽬中最常被使⽤到的IP,其意义是⾮常重要的。本⽂基于对FIFO Generator的Xilinx官⽅⼿册的阅读与总结,汇总主要知识点如下: 类型 FIFO的类型区分主要根据FIFO在实现时利⽤的是芯⽚中的哪些资源,其分类主要有以下四种: 1. shift register FIFO:通过寄存器来实现的,这种类型的FIFO最好少⽤,因为我们都知道FF资源在FPGA是⾮常珍贵的。 2. built-in FIFO:这种类型的FIFO只有7系列之后(包括UltraScale)才有。笔者的理解是⼀种集成的FIFO硬核 3. Block Ram FIFO:通过块RAM的资源配置形成的FIFO,其本质是Block RAM+⼀些外设电路。 4. Distributed Ram FIFO:通过分布式RAM配置形成的FIFO,与BRAM类似,只是RAM的类型不⼀样。 Reset shift register FIFO和built-in FIFO的复位信号是不可选的,即⼀定存在的。对于shift register FIFO和7系列的built-in FIFO,Xilinx只 提供了异步复位 ;⽽对于UltraScale,复位是同步复位信号,但提供了w_rst_busy和rd_rst_busy输出信号表⽰FIFO是否已经复位完毕。 Block RAM FIFO 和 Distributed RAM FIFO的复位信号是可选的。对于共⽤时钟的FIFO,选择同步复位和异步复位的区别主要在于是否 复位信号是否和共⽤时钟同步;当选择异步复位时,可以Enable Safety Circuit,顾名思义就是让电路更安全,即通过复位完成信号 wr_rst_busy和rd_rst_busy来表⽰是否FIFO已经复位完成。对于独⽴时钟的FIFO,即读和写的时钟分开,Enable Reset Synchronication时只有⼀个rst(实际上这个复位是异步复位),不使能时有两个时钟域的rst,分别为wr_rst和rd_rst,⽽这两个复位信号 实际上是同步于各⾃的时钟的,同时也能Enable Safety Circuit,是不是觉得好像整错了,其实Xilinx的官⽅⽂档就是这么说明的,如果还 是觉得有问题,实践⼀下…… 其实上边的如果不理解,我 ⾃⼰总结了⼀下:看复位是同步复位还是异步复位,只需要看信号的名字,对于srst(Synchronized Reset)和 wr_rst/rd_rst,这⼏个rst是同步复位,⼀个同步于共⽤时钟,其余两个同步于各⾃的时钟域;对于rst,则认为是异步复位。 写操作 写数据只有在din输⼊同时wr_ack被断⾔时才写⼊到FIFO中。这⾥wr_ack是对数据接收的应答,断⾔时表⽰接收成功。当然也可以不使能 wr_ack,这样⼦其实也没什么⼤问题,只是wr_ack的存在会让数据的写⼊更加安全。 需要注意的⼀个关键点是,FIFO被写满时,即使再输⼊数据,写⼊请求还是会被忽略的,FIFO中的数据保持不变。 满标志 满标志有full和almost_full两种。full表⽰不能写数据了,almost_full则表⽰只能再写⼊⼀个数据。当full被断⾔时,写请求会被忽略掉, 同时overflow溢出标志被断⾔。 【注】built-in FIFO不⽀持almost_full标志。 写操作时序分析 上图是从datasheet中copy的⼀个典型的写操作时序图。 1. 当wr_en被使能为1时,表⽰写操作开始,并在时钟上升沿开始写⼊。此时full为低电平表⽰FIFO未满,可以写⼊。 2. 当数据写⼊成功时,wr_ack被断⾔,即拉⾼表⽰数据写⼊成功***(此时我们还是得注意写⼊成功那个时刻,wr_ack实际上还是低电 平,真正能检测到⾼电平的还是得在下个时钟沿)***。 3. 当FIFO只能再⽀持写⼀个数据时,almost_full被断⾔***(应该注意到,这些标志信号都是有⼀个cycle的延迟的,即实际上当我们检测 到amost_full拉⾼时,最后⼀个数据也在同时刻写⼊FIFO,所以FIFO在这个时刻已经满了)***。 4. 当FIFO的almost_full拉⾼时,再次写⼊⼀个数据,则full也被断⾔。 5. 当FIFO的full被断⾔时,再写⼊数据,wr_ack被拉低,同时overflow溢出信号被断⾔。 6. 在FIFO被写满时,如果

您可能关注的文档

文档评论(0)

1636091513dfe9a + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档