打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
FIFO使用情况
userphoto

2023.02.16 北京

关注

1.异步FIFO需满和需空的问题

异步FIFO读时钟是写时钟的100倍,或者写是读的100倍会出现什么问题?

快慢时钟相差倍数并不是这个的问题根源。至于你说的快时钟到慢时钟,指针会漏掉,这是很正常的现象,但是漏掉指针如果导致FIFO功能出错,那就是你FIFO设计出错了。异步FIFO需要保证空满信号及时报出,满了不要去写,空了不要去读。异步FIFO的空满由于异步传递延时的问题,只会出现提前报出虚空虚满的问题,而不会出现漏掉空满的问题。满信号的产生是写时钟域下,当前周期写指针与两个写时钟周期前的读指针比较,如果判断满了,当下不会再写,但是读时钟域有可能在这两个周期有读动作,只会造成FIFO实际上被读出成非满状态,而此时即使报出满状态是没有关系的,这个时候就是虚满的状态。空状态与之类似,自己分析一下。异步FIFO读写频率能不能相差百倍以上,自己写一个FIFO验证一下就完了,不要想当然觉得漏掉指针就一定有问题。

上面回答总结一下就是异步FIFO的读和写的时钟不同,若读时钟较快,则会导致FULL信号有效之后在下一个写时钟到来前,会读走一些数据,而此时FIFO为非满状态,但是写时钟还没到来,也就没有对读指针和写指针进行对比从而更改FLL信号状态,从而出现FULL信号有效而实际FIFO并没有满的情况,这种情况就是虚满。如果FIFO深度较浅而读时钟速度太快,感觉可能会导致FULL有效的同时EMPTY也有效,但是这种情况只会停留到写时钟到来前(最后这个情况纯属揣测,并没验证,对FIFO的认识不足,有待查看FIFO具体原理进行确认)。

  虚空:虚空状态就是在写时钟比读时钟快的情况下产生的,例如EMPTY信号有效之后,表示此时FIFO为空,但是写时钟会在下一个读时钟到来前迅速的写FIFO进去一些数据,导致EMPTY有效而FIFO实际并不为空。这种情况就是虚空。

2.这个问题是我前几天遇到的,问题描述如下:

外部ADC采样数据和内部时钟不同步,采用异步FIFO解决该问题,这两个时钟的时钟树是同源的,而且都是200 M(如果两个时钟时钟树不同源,FIFO不适合长时间大量数据读取,因为时钟可能会有几Hz的偏差,导致FIFO空或者满),为了防止相位偏移产生亚稳态情况,用一个异步FIFO解决该问题。我设置的是只要FULL信号不有效就往里写,EMPTY信号不有效就读,结果就发现都出来的数据有随机性很强的噪点,最后发现是异步FIFO出现了亚稳态情况,也就是非空就读非满就写的情况导致我只写一个数据然后我就又只取一个数据,频繁的读写一位数据,导致了读出的数据有噪点,最后是加了一个可编程空解决的,判断可编程空实现的数据跨时钟域转换的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
同步FIFO和异步FIFO原理
一天一个设计实例-FIFO先进先出模块程序设计
【精品博文】基于FPGA的异步FIFO验证(1)
异步FIFO中的几个难点问题思考与解释
异步FIFO原理及Verilog实现 – xiaoairen
异步FIFO的读写冲突如何解决???
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服