这是之前那篇博客的实验篇。
上一篇博文遇到了axidma接收的问题,经过各种实验和搜索,终于找到了一篇有用的文档,我在第一篇进行了介绍。不过,实验是自己的,虽然作者分析的错误原因很详细,很可信,但是得亲自验证。下面就介绍下我的验证结果。
验证结果出了之前压根都没想到的现象,特此记录。
一:axidma什么时候出现第一个有效的信号(相关ready和vaild信号都为高)?
实验前:之前看ip核的介绍,axidma开始出现第一个有效的数据,是在配置好了长度寄存器,开始传输的时候。
实验后:根据SDK调试,发现在axidma复位后会出现4个有效信号,真正配置长度寄存器以后,传的是第5个数据了。另外一种情况,axidma把数据发给ps的时候,如果,输入给axidma的数据中(我的实验是AD给的数据),出现last信号,axidma收到last信号后,同样会出现4个有效信号。
注:实验中每个有效信号的数据是32位。
二:axidma接收时,具体的接收长度怎么规定
实验前:看写入长度寄存器的值。写1000就收1000,写500就收500
实验后:和写入长度寄存器无直接关系。感觉设定值的作用就是判断接收有没有出错。实验工程的不同,有两种情况
情况一:
axidma的接收通AD数据的信号线上last信号,写1000可能收了1064,反正大于1000就对了,这个多的量具体不好说。axidma应该自己有记数功能,当它判断出实际接收的数据大于长度寄存器的设置值