在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7588|回复: 13

[求助] FIFO空满的验证思路

[复制链接]
发表于 2018-8-26 18:03:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
请教fifo空满的验证思路???????简单说下我了解的,fifo空时不能读数据,满时不能写数据。
对于数据包来说,满时会触发反压,那fifo满时紧接着来的下一包数据怎么处理,丢弃?如何判断丢的是不是整包
                      空时。。。不懂,没验过
 楼主| 发表于 2018-8-26 18:12:37 | 显示全部楼层
达到fifo满时,包大小的控制
发表于 2018-8-27 10:52:42 | 显示全部楼层
正常设计FIFO前一级会接收到FIFO的满信号反压自己的发送,否则,在FIFO的入口,会丢弃满状态时,上一级送过来的包
发表于 2018-8-27 10:55:21 | 显示全部楼层
验证需要对设计支持的规格和场景有充分的理解,才能谈验证思路。对于FIFO的满的验证,需要考虑如果设计用满作反压,那么就是要求,FULL有效后,立即停止发包,因此Drive必须要要有这种的功能。同时也需要考虑异常场景,即FIFO满后,仍然往FIFO发包,FIFO正常丢包,不挂死,当FIFO 满撤销后,还能正常继续工作。
 楼主| 发表于 2018-8-28 19:16:28 | 显示全部楼层
回复 4# rosshardware


   如果来了7个包没有满,第8个包来时只存进去一半,这种正常吗??如何控制包大小和fifo满的关系??
对于存进去的这半个包会不会继续往后走?
 楼主| 发表于 2018-8-28 19:21:18 | 显示全部楼层
回复 4# rosshardware


   另外,设计中存放大量数据包的缓存会采用伪双口ram来做,一个口只读,一个口只写,但是此缓冲只需要来的数据按顺序一个个存进去,过一会再一个个读出来,不需要地址线的控制。那如何在一个控制单元确保读写指针是一个个递增那???而且读写时钟不同??
发表于 2018-8-29 10:14:06 | 显示全部楼层
回复 6# 乐在其中296
你说的这种RAM,其实一种FIFO,这个读写地址控制需要在RAM 外部自己作FIFO控制器来完成
发表于 2018-8-29 10:16:34 | 显示全部楼层
回复 5# 乐在其中296


    如果要需要存在整包,那就只能通过afull来进行反压,FIFO预留一个包的空间,FIFO还剩余一个包的空间就产生反压。 如果需求不是存整包,则上一级模块需要收到反压后,停止发包,等待FIFO撤离,再将剩余报文发送出去。
 楼主| 发表于 2018-8-29 10:34:51 | 显示全部楼层
回复 8# rosshardware


   对,现在我参与的项目就是你说的这样,通过水位进行控制,水位与真实满预留超过一个最长包的大小。超过水位就进行反压,停止发包。
我的疑问就是就算设置了水位线,由于发送的包大小不一,如何确保达到水位线时,里面存的是整包,而没有一半的包那(7个包达不到水位线,7个半包达到了水位线)??

当然,真实的情况下如果读写正常,不会达到水位线,如果连续发送超长包或者后续模块存在反压就会达到水位线
 楼主| 发表于 2018-8-29 10:35:30 | 显示全部楼层
回复 8# rosshardware


   重点是包的大小不一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-6 22:53 , Processed in 0.027404 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表