UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Visitor mzzhengz
Visitor
939 次查看
注册日期: ‎01-20-2019

SRIO传图丢失数据问题

转到解答

用SRIO从FPGA往DSP里面传图,使用的1x,5G,swrite,在DSP中读取出来的数据发现FPGA传给DSP的每一个256字节的SRIO包的最后8个字节会丢失(FPGA的SRIO IP核输入数据是64位,就是说每个包最后一个时钟发送的数据丢失)。具体演示过程如下:

一 首先初始化DSP中即将通过SRIO接受数据的内存为 0xAF(仅仅是为了方便观察,初始化了一个特殊的数字)

初始化.JPG

二、启动SRIO,发送图像数据,如下图

1.JPG

请先忽略噪点,图像分辨率是512*512,8bit灰度图,可以看到在图像最中央和最右边有两条竖直的线,这两条竖直的线就是每一个256字节的SRIO的最后8个字节。在右边的内存区域也可以看出在最后8字节的内存上,没有数据改变。

再看一下FPGA内部的在线采样的图

2.JPG3.JPG4.JPG

FPGA逻辑是先发送一个包头,然后发送256字节数据,反复发送包头和数据直到发送完一帧图像,然后发送一个doorbell。

tvalid类似于数据有效信号,结合 tx_cnt(发送计数,每个时钟发送8字节数据)可以看出每个包确实发送了一个包头+256字节的数据(包头不算在 tx_cnt 里面,tx_cnt 只计数有效数据)。但是DSP内部相应的地址上确实每个包最后8字节出现了丢失(或者是没有收到?)

请问这是什么原因?

谢谢~

 

 

 

 

 

 

 

 

0 项奖励
1 个已接受解答

已接受的解答
Xilinx Employee
Xilinx Employee
623 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答

你第一个方法是对的。我们PG007文档里面有介绍,也有示意图,如下:

In the packet in Figure 3-8, both the master and slave each stall the interface on a
different cycle (by deasserting TVALID and TREADY respectively). This packet had three
DWORDs and thus only three active cycles on the interface, but took a total of five clock
cycles due to the stalls.

111.jpg

 

你工程做过功能仿真吗?仿真里面也能看到同样行为的

你说有重复的数据,可以先试下IP core近端环回(GT的loopbback=010),看看自发自收,我们SRIO是否也会收到重复数据

建议上板前先仿一下

0 项奖励
13 条回复13
Visitor auhty
Visitor
914 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

您好,我目前也在研究dsp、FPGA通过srio传输图像的问题,也遇到一些问题,如果您不介意的话我们可以探讨一下,我的邮箱是2465697950@qq.com,冒昧打扰

0 项奖励
Visitor mzzhengz
Visitor
899 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

我的邮箱 776580996@qq.com , 欢迎联系~~~

0 项奖励
Xilinx Employee
Xilinx Employee
707 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答

从你的图里面看,是不是有一拍tready拉低,无效的?

只有在tready和tvalid两个信号同时有效的时候,数据才有效。两个信号同时有效的,除了第一拍的header,后面数据好像只有31拍有效?

是不是,请确认下?如果tready有无效,这一拍的数据就没用,要再补一拍这个数。

0 项奖励
Visitor mzzhengz
Visitor
634 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

你好~

家里面的网上不来网站,今天回到学校才上来。

tvalid信号是自己控制的,给IP核输入的,状态机里面有一个判断这一帧有没有发完的状态,这个状态里面把tvalid信号拉低了。

然后就是tready信号,这个之前也注意到了,也做过测试。试验了两种:

一、当tready拉低时,tvalid还保持高,而且给IP核输入的数据不变(其实就是想的既然tready拉低了,直接就把状态停一下,然后tready拉高时继续)。这种情况在DSP内部读出来的数据会有8字节重复的,对比之后发现重复的就是tready拉低时的那8字节的数据。所以说tready信号拉低,而tvalid拉高时,那一拍的信号其实还是发送出去了。

二、当tready拉低时,把tvalid也拉低,这时会出现tready和tvalid反复拉低的情况,就是第一拍tready拉低,第二拍tvalid拉低,第三拍tready拉低,第四拍tvalid拉低(或者是第一拍两个信号拉高,第二拍两个信号拉低,第三拍再拉高,第四拍拉低,,,,一直循环,具体情况记不清了),,,,一直循环。而且这时候虽然可以建立链路,但是DSP内部没有收到数据。

所以做了这些试验之后,自己感觉是tvalid就是给IP核的一个使能信号,在tvalid拉高时直接发送全部256字节数据就好,tready只是一个指示信号,可以不考虑,即使tready拉低一拍,但是IP内部可能会有FIFO之类的机制,根据tvalid信号在IP核空闲时发送。

0 项奖励
Xilinx Employee
Xilinx Employee
624 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答

你第一个方法是对的。我们PG007文档里面有介绍,也有示意图,如下:

In the packet in Figure 3-8, both the master and slave each stall the interface on a
different cycle (by deasserting TVALID and TREADY respectively). This packet had three
DWORDs and thus only three active cycles on the interface, but took a total of five clock
cycles due to the stalls.

111.jpg

 

你工程做过功能仿真吗?仿真里面也能看到同样行为的

你说有重复的数据,可以先试下IP core近端环回(GT的loopbback=010),看看自发自收,我们SRIO是否也会收到重复数据

建议上板前先仿一下

0 项奖励
Visitor mzzhengz
Visitor
607 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

功能仿真没有做过,当时是直接上的板子。

还有个问题是FPGA的回环测试是在IP核里面设置的吗?需不需要外部把GT收发器的收发引脚连起来?还是说回环测试不需要GT收发器。之前也想过这样测试一下,不过一直没有找到方法

谢谢~

0 项奖励
Xilinx Employee
Xilinx Employee
603 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答
不需要连引脚。GT有内部环回模式,设置下就行了,可以参考GT的文档
有个名字叫loopback的输入信号,3bits的,平时是000,改到010,就自动做内部近端PMA环回,数据在TX出GT前,在GT内部就直接送给RX侧
0 项奖励
Visitor mzzhengz
Visitor
589 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

我在IP核中勾选了 Additional transceiver control and status ports,在IP核的端口上所有的dubug端口都使能了,很多端口的定义在GT的文档里面没找到具体的解释,我可以不对他们进行设置吗?

谢谢~

0 项奖励
Xilinx Employee
Xilinx Employee
581 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答

是的,产生IP core的example design,都已经连接好了,你不用动,可以正常工作的

有需要再去修改

0 项奖励
Visitor mzzhengz
Visitor
575 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

SRIO部分的内容是自己写的,之前没有用到debug的接口。

最开始是提示的

[Opt 31-67] Problem: A LUT2 cell in the design is missing a connection on input pin I1, which is used by the LUT equation. This pin has either been left unconnected in the design or the connection was removed due to the trimming of unused logic. The LUT cell name is: g/srio_gen2_0_inst/inst/srio_gen2_0_block_inst/srio_gt_wrapper_inst_i_1.

这个应该是在SRIO的顶层里面只引用了选择回环测试的那个端口,没有引用其他新加入的那些debug端口。

然后把引用了所有端口,产生bit文件的时候提示license的问题,可能是license的权限不够

[Common 17-69] Command failed: This design contains one or more cells for which bitstream generation is not permitted:
g/srio_gen2_0_inst/inst/srio_gen2_0_block_inst/srio_gen2_v4_1_2_unifiedtop_inst/phy_core_inst (srio_gen2_0_srio_gen2_v4_1_2_phy)
g/srio_gen2_0_inst/inst/srio_gen2_0_block_inst/srio_gen2_v4_1_2_unifiedtop_inst/log_core_inst (srio_gen2_0_srio_gen2_v4_1_2_log)
g/srio_gen2_0_inst/inst/srio_gen2_0_block_inst/srio_gen2_v4_1_2_unifiedtop_inst/buf_core_inst (srio_gen2_0_srio_gen2_v4_1_2_buf)
If a new IP Core license was added, in order for the new license to be picked up, the current netlist needs to be updated by resetting and re-generating the IP output products before bitstream generation.

不过之前的解决办法是每个包补位,第二个包补第一个的8字节,第三个包补第二个的8+8字节.....以此类推,就是结构比较复杂,但是也能发完全。license的问题我再咨询一下之前购买的人吧。

0 项奖励
Xilinx Employee
Xilinx Employee
564 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答
在Vivado里面敲report_ip_status可以确认所有用到的IP core的License状态
0 项奖励
Visitor mzzhengz
Visitor
560 次查看
注册日期: ‎01-20-2019

回复: SRIO传图丢失数据问题

转到解答

请问这里面显示的IP是个什么状态?其他的都是 Included ,只有SRIO的是Design_Lin 

谢谢~

QQ截图20190227171630.jpg
0 项奖励
Xilinx Employee
Xilinx Employee
553 次查看
注册日期: ‎05-02-2013

回复: SRIO传图丢失数据问题

转到解答
Design Linking就是没license了,跟提供你license的人联系下吧
https://www.xilinx.com/support/answers/42379.html
0 项奖励