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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4271|回复: 10

[求助] 关于AXI接口的FIFO的疑问

[复制链接]
发表于 2021-12-1 20:38:48 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 rv_1101 于 2021-12-1 20:39 编辑

小弟目前在使用xilinx 官方的 fifo generator,配置为axi lite接口,Read Only 模式,且只有R channel配置为FIFO, AR 设置为 pass through wire。但是使用当中发现波形不是很正常。 image.png
从上图看出,一次AXI读FIFO,RREADY信号却拉高两次,这是为什么呢?

根据官方文档,在FIFO可读的时候,empty 取反后,用作rvalid。这个rvalid 明显没有依赖arvlid和arready信号啊。从波形上看,只要FIFO非空,始终为高。
是我哪里设置错了,还是官方IP有问题?
提前谢谢各位大佬了。。

image.png

image.png


image.png
image.png
发表于 2021-12-1 21:13:17 | 显示全部楼层
被你问懵了。


根据官方文档,在FIFO可读的时候,empty 取反后,用作rvalid。

你特意将官方文档中empty信号到*valid信号的路径框出来了: image.png

仿真结果:


从波形上看,只要FIFO非空,始终为高。

FIFO非空,empty为低,取反后为高,没问题呀。
 楼主| 发表于 2021-12-2 09:45:57 | 显示全部楼层


innovation 发表于 2021-12-1 21:13
被你问懵了。
你特意将官方文档中empty信号到*valid信号的路径框出来了:


可是根据AXI 协议, valid 信号不能一直为高,他是在arvalid 和 arready 有效之后才能有效地啊。
而且仿真里,读一次,rready却两次拉高,这也不正常啊。因此我就怀疑,是否与valid一直高有关系。。。
发表于 2021-12-2 14:07:50 | 显示全部楼层


rv_1101 发表于 2021-12-2 09:45
可是根据AXI 协议, valid 信号不能一直为高,他是在arvalid 和 arready 有效之后才能有效地啊。
而且仿 ...


我翻了一下Xilinx pg057 v12.3,才第7页就是你截图的位置呀,你的截图下面紧接着就讲了呀:数据源端(你现在看的FIFO读端口就是源端)保持valid有效,目的端控制ready,数据真实传输周期是在valid和ready同时有效的周期发生的,就你的仿真来说,valid是FIFO控制的,ready得是你控制的呀。就在你截图的第7页下面,文档里面是这样的: image.png
话说,人两百多页的手册,才第7页,别慌,慢慢看。



 楼主| 发表于 2021-12-2 14:26:00 | 显示全部楼层


innovation 发表于 2021-12-2 14:07
我翻了一下Xilinx pg057 v12.3,才第7页就是你截图的位置呀,你的截图下面紧接着就讲了呀:数据源端(你 ...


问题就是他这个波形就很正确,因为他的ready很正确,是在读地址完成之后。
而我的ready源自mcu 读操作。这个读操作的信号细节,ready什么时候拉高,信号间的依赖关系,完全不受我决定啊,这个是接口协议实现细节的差异吧。

然后我查了axi 标准协议的要求,ready没有依赖valid,可以过早拉起来的,而valid 必须在arvalid 和 arready 之后拉高才对。然后我就感觉是因为这个FIFO的 valid信号没有严格遵守协议要求,却对数据源端的ready信号要求太严格导致的问题。所以我倾向于认为这个FIFO IP 设计的不好。。。
不知道我的想法对不对。。。
lQLPDhrrbNboIALNAvvNBMqwUmjBgn2s3BQBrvaffkC6AA_1226_763.png
发表于 2021-12-2 16:06:14 | 显示全部楼层
本帖最后由 innovation 于 2021-12-2 16:29 编辑


rv_1101 发表于 2021-12-2 14:26
问题就是他这个波形就很正确,因为他的ready很正确,是在读地址完成之后。
而我的ready源自mcu 读操作。 ...


你这个FIFO的读端口,FIFO这边是AX4-Master,没意见吧(难道你不小心把Master/Slave方向弄反了)?然后你贴图里面是这样说的:
image.png
发表于 2021-12-2 16:10:52 | 显示全部楼层


rv_1101 发表于 2021-12-2 14:26
问题就是他这个波形就很正确,因为他的ready很正确,是在读地址完成之后。
而我的ready源自mcu 读操作。 ...


另外:

而我的ready源自mcu 读操作。这个读操作的信号细节,ready什么时候拉高,信号间的依赖关系,完全不受我决定啊,这个是接口协议实现细节的差异吧。

如果你要把两个器件或IP互连起来,分析二者之间接口兼容性及互连要求,这本来就是你的工作,如果不能直接互连,你要嘛推翻这个方案,要嘛设计中间接口让他们兼容啊。
 楼主| 发表于 2021-12-2 16:30:11 | 显示全部楼层


innovation 发表于 2021-12-2 16:10
另外:如果你要把两个器件或IP互连起来,分析二者之间接口兼容性及互连要求,这本来就是你的工作,如果不 ...


这个确实,看起来AXI FIFO 确实对兼容有要求。
多谢大佬给的建议!!
发表于 2021-12-2 16:42:29 | 显示全部楼层


rv_1101 发表于 2021-12-2 16:30
这个确实,看起来AXI FIFO 确实对兼容有要求。
多谢大佬给的建议!!
...


任何接口都有兼容性要求。但感觉你还是倾向于过早的下结论(担心你开始跑去弄啥中间接口了)。从你在5#的贴图划红线位置来看,你似乎倾向于认为FIFO的读端口是一个AXI4-Slave接口?但你在1#的贴图已经明确反映出这个FIFO的读端口是一个AXI4-Master的接口哦
 楼主| 发表于 2021-12-2 18:13:53 | 显示全部楼层


innovation 发表于 2021-12-2 16:42
任何接口都有兼容性要求。但感觉你还是倾向于过早的下结论(担心你开始跑去弄啥中间接口了)。从你在5#的 ...


那个图只是用来说明一下empty跟valid的关系的啦
实际上,数据读在左侧,挂总线上的。

不过没想到论坛里不仅能增长技术还能感受到关怀哈~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-20 18:33 , Processed in 0.025113 second(s), 7 queries , Gzip On, Redis On.

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