明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 62348|回复: 0

关于FIFO产品的讨论帖【汇总贴】

[复制链接]

27

主题

46

帖子

2459

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2459

荣誉管理论坛元老

QQ
发表于 2020-2-26 12:04:15 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
【问题1】关于FIFO的深度计算问题,可以看此贴:http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=887
    此答案来自于明德扬的书籍《手把手教你学FPGA》,电子版可以在此贴下载:http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=469

【问题2】FIFO总共128个数据,都读到128个数据后,usedw对应还是1,而不是预期的0。
    原因:此FIFO使用了SHOW AHEAD模式,所谓的“读到128个数据“指的是从总线看有128个数据,而非产生了128个读使能。
    总结:对于FIFO出现了”莫名其妙问题“时,需要严谨检查和确认。
    建议的方法:
    a. 直接看FIFO这个IP核的输入输出信号,例如读使能、写使能、写数据、空信号、满信号等。写一个,确认;读一个,再确认。
    b. 注意FIFO满时不要再写,FIFO空的时候不要再读,否则会出现意想不到的错误。

【问题3】对于双时钟  show ahead  模式,给出第一个读使能为啥读出数据不对呢?
TIM图片20200417110745.png
回复:首先,从波形图看到的信息,数据为“0”,而不是“没有数据”。
          其次,假如第一个数据不对,需要看前面的第一个写使能有效的时候,写数据是多少。即检查第一个写数据和第一个读到的数据正不正确。


【问题4】FIFO中的空信号有延迟怎么办?
回复:
1.写数据之后,过一段时间empty信号才变低,这个延时是FIFO的特性,是固有的;
2.其次,这个空指示信号的延时不会对设计有影响:空信号一般用于读侧,有数据就读,没数据就不读,是不关心延时的。
3.FIFO里空信号和满信号都是绝对是准确的,但是usedw信号的延时是不确定的,所有要严格要求时序对齐的就不要用usedw这个信号。


【问题5】关于用寄存器矩阵搭建一个8x32的fifo,用6位的计数器指示读写指针和表示空满,但是跨时钟域需要打拍,那该如何准确的判断空满信号呢?

答:该问题应该是有一个认识误区,认为“准确判断”指的是“立刻实时指示”,也就是误以为,写一个数据进去,空信号立刻变成非空状态。这“立刻”其实是没有必要的。 正确的做法是,写一个数据进去,然后内部做跨时钟域处理,隔几个时钟后,空信号才变成非空。虽然有延时,但不影响状态的判断。

【问题6】vivado  fifo(深度为32),almost_full是不是在写了31个后为1,此时full为0?同理almost_empty是不是在读剩下1个深度数据的时候为1,并且此时emtpy为0?

答:almost_full是指将要满,almost_empty是指将要空,至于什么是“将要”,一般可由用户来定义。建议看数据手册。



FIFO在FPGA开发中经常使用,围绕着FIFO,可以完成很多功能开发,如想学习,可以购买FIFO专题课。










上一篇:视频讲解二进制如何转换成十进制?
下一篇:FPGA工程师关于代码化简的笔试面试题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号-1

GMT+8, 2020-10-29 04:55 , Processed in 0.534344 second(s), 16 queries , File On.

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表