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!

取消
显示结果 
搜索替代 
您的意思是: 
Contributor
Contributor
424 次查看
注册日期: ‎01-16-2019

vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答

int vdma_config_write() {
int ret = 1;
Xil_Out32(VDMA_BASE_ADDR + 0x30, 0x8B);
Xil_Out32(VDMA_BASE_ADDR + 0xAC, START_ADDR1);
Xil_Out32(VDMA_BASE_ADDR + 0xB0, START_ADDR2);
Xil_Out32(VDMA_BASE_ADDR + 0xB4, START_ADDR3);
Xil_Out32(VDMA_BASE_ADDR + 0xA8, WIDTH * BYTE);
Xil_Out32(VDMA_BASE_ADDR + 0xA4, WIDTH * BYTE);
Xil_Out32(VDMA_BASE_ADDR + 0xA0, HIGH);
return ret;
}

int vdma_config_read() {
int ret = 1;
Xil_Out32(VDMA_BASE_ADDR + 0x00, 0x8B);
Xil_Out32(VDMA_BASE_ADDR + 0x5C, START_ADDR1);
Xil_Out32(VDMA_BASE_ADDR + 0x60, START_ADDR2);
Xil_Out32(VDMA_BASE_ADDR + 0x64, START_ADDR3);
Xil_Out32(VDMA_BASE_ADDR + 0x58, WIDTH * BYTE);
Xil_Out32(VDMA_BASE_ADDR + 0x54, WIDTH * BYTE);
Xil_Out32(VDMA_BASE_ADDR + 0x50, HIGH);
return ret;
}

QQ图片201907292357541.png
QQ图片201907292358042.png
QQ图片20190729235747.png
0 项奖励
1 个已接受解答

已接受的解答
Highlighted
Contributor
Contributor
90 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答

vdma写失败是因为Fsync选择问题,我选择的是tuser模式,但是aurora framming格式只有tlast信号,没有tuser信号,所以写时序没有触发,一直写不进ddr,选择none 模式,传输显示正常

0 项奖励
12 条回复12
Moderator
Moderator
374 次查看
注册日期: ‎05-23-2018

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答

Hi, @mountainfpga 

可以再具体描述一下你的问题吗?

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
Contributor
Contributor
368 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
我用tpg产生图像数据,通过vdma 写入ddr3,再通过vdma读出,分别用lia观测M_AXI_MM2S 和M_AXI_S2MM,发现M_AXI_S2MM端口根本没有数据,而M_AXI_MM2S端口的数据应该是ddr中随机数据,硬件连接是vdma->axi_interconnect(连到了mb的cache端)->ddr3,软件程序如上,没有禁止caches,问题是是在sdk中观测ddr中数据是正确的,在ila上看的数据是不正确的,而实际上ila观测的数据是实际运行数据,应该是vdma写失败,但是我不知道为什么会写失败,正确数据没有写入ddr,而读出来数据是随机值,导致显示结果不正确
0 项奖励
Explorer
Explorer
329 次查看
注册日期: ‎05-29-2018

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
首先你要确定你的VDMA参数配置是对的,其次你要看到video_out IP的lock信号拉高VDMA才会正确读取DDR数据,其他情况都是不对的。
0 项奖励
Xilinx Employee
Xilinx Employee
289 次查看
注册日期: ‎06-02-2017

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答

@mountainfpga 你好,

你确认下cache有没有关闭,应用中直接访问DDR,而debug中看到的可能是cache中的数据

-------------------------------------------------------------------------------------------------------------------------------------------
Kindly note- Please mark the Answer as "Accept as solution" if information provided is helpful.

Give Kudos to a post which you think is helpful and reply oriented.
--------------------------------------------------------------------------------------------------------------------------------------------
0 项奖励
Contributor
Contributor
283 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
locked拉高了, 具体你说的vdma配置 我的配置是 mm2s 24bit advance 默认 读写fifo都是512 我觉得应该没有问题,因为在我之前测试这种配置是可以正确出图的,无非这次我转了一下,用aurora 发送接收一下,发送和接收用ila看的数据是正确的 就是rx data 写不进vdma
0 项奖励
Explorer
Explorer
265 次查看
注册日期: ‎05-29-2018

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
额,你这不是找到问题了吗,数据没写进去啊。
0 项奖励
Contributor
Contributor
246 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
我就是想知道 数据为什么没有写进去?程序在一楼,谢谢
0 项奖励
Explorer
Explorer
242 次查看
注册日期: ‎05-29-2018

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
我看了一下你前面的回复,你为什么不把VDMA的write通过interconnect 直接连接到DDR的AXI4端口上,你上面的连接方式连到了MB的Cache(实际是BRAM)那你的MB有没有把Cache的数据搬运到DDR啊?而且你AXIS端口没有数据那你的tready信号是高还是低啊,如果是高那就是MB没写到DDR,但是有写Cache的操作,如果是低那就是根本没有写操作。
按我的理解,MB的话还是直接用VDMA写DDR,没必要通过MB的Cache。你这种方式是参照PS的方式吧,但是PS内部是有自己的DMA的,会自动搬数据,但是MB没有DMA。
0 项奖励
Contributor
Contributor
225 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答

这是我连接方式,通过cach和ddr通信,在程序中我禁止了cach,我之前用tpg+vdma+mb这种方式显示,是没有问题,然后我直接吧tpg的数据通过aurora 发出去 接回来,发送和接收都是正确的,接收后通过vdma存到ddr中,再显示,现在发现vdma写失败,tready先高低后来一直拉高,第二张图,cach如何写ddr?

QQ图片20190731211913.png
1.png
0 项奖励
Contributor
Contributor
224 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
感谢您,感谢您
0 项奖励
Explorer
Explorer
164 次查看
注册日期: ‎05-29-2018

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答
你这个问题在AXIS的keep信号,它为0啊,这表示数据无效,所以虽然你数据对了,tvalid和tready也握手了,但是没有有效数据。你现在的连接方式就是我说的VDMA直接访问DDR,不过MB连接DDR的这个用法是用来MB通过BOOT在DDR里运行的使用方法,还有你的MB DDR和VDMA地址要分开。
0 项奖励
Highlighted
Contributor
Contributor
91 次查看
注册日期: ‎01-16-2019

回复: vdma 读写 sdk中数据和ila观测数据不同,导致显示结果不正确,什么原因

转到解答

vdma写失败是因为Fsync选择问题,我选择的是tuser模式,但是aurora framming格式只有tlast信号,没有tuser信号,所以写时序没有触发,一直写不进ddr,选择none 模式,传输显示正常

0 项奖励