您好
我是k7给6678发swrite包,每次发送120包(每包256B)时,fpga的ireq_ready信号就不能正常拉高,会出现延迟几十个时钟周期才拉高,中间出现卡壳,检查6678寄存器发现
Input_Retry_STP |
输入端口进入重传停止状态 |
置1了。
所以我判断是dsp收数出了问题,但不知道怎么解决?
补充:
srio速率设置为3.125或者5.0都会出现这种情况。。所以综合下来,两张速率设置下,实际速度几乎都是500MB/s。
fpga的ip核fifo=16时,是第90包开始ireq_ready信号不稳定
fpga的ip核fifo=32时,是第120包开始ireq_ready信号不稳定
根据论坛上srio错误判决的帖子,“设备B发现一些临时问题导致不能接收报文(比如没有空闲buffer可以接收),那么设备B丢弃该报文,进入input retry stop状态(该bit置1,同时input retry encounter也置位)。” 可能是rx 没有空闲buffer。。那怎么解决?
谢谢!
qiao qian:
今天增加了测试,发现只要传输速度超过500MB/s,DSP的input retry stp就会置位,FPGA的ireq ready信号就会不稳定。
例如:4x,1.25Gbps,上述情况就不会出现,因为理论速度就是在500MB/s左右
或者2x,2.5gbps,也不会出现
但是4x,2.5gbps,上述错误就会出现,导致实际传输速率只要500MB/s
我感觉是,fpga与dsp直接连接时,用direct io方式发送swrite包,感觉dsp接受的速度上限只有500MB/s。
不知道有其它人遇到这种情况??希望有人尽快帮助,都要调疯了
d vince:
回复 qiao qian:
朋友,你好。我们教研室目前在做这个 6657与K7 的SRIO 通信,完全没有任何经验与参考,FPGA IP核调出来了,两端链接建立起来之后,不知道该怎么控制数据收发?弄了3周了,不知道该怎样从IP核提供的"example_top"修改 来传输数据,尝试过几种参数修改,还是不能传数。想请教一下 在FPGA端 该怎样来控制数据的传输?