uestc19 发表于 2015-4-22 19:40:11

Cyusb3014 USB 3.0芯片传到电脑端的数据错误

具体情况是这样的:我通过FPGA发送的数据经过Cyusb3014 USB 3.0芯片传输到电脑端,Cyusb 3014配置为同步Slavefifo 传输,16位数据总线,接口频率100MHZ。现在出现的问题是如果FPGA发送的数据刚好是100MHZ,那么出来的数据是没问题的;但是如果FPGA以20MHZ的速率发送数据,那接收到的数据同一个数会出来5次,如下图1所示;50MHZ那么一个数出来2次,以此类推。感觉USB3.0那块片子一直以100MHZ的速率往电脑端发,完全没有理会我这边发送的是20MHZ的数据,空了之后继续以原来那个数据传到电脑直到下一个数据更新。不知到是什么原因,感谢大神指导!{:smile:}

wye11083 发表于 2015-4-23 11:35:01

你FPGA给的时钟始终是100MHz{:lol:}{:lol:}

uestc19 发表于 2015-4-23 16:33:34

wye11083 发表于 2015-4-23 11:35
你FPGA给的时钟始终是100MHz

我现在改了FPGA输出给USB 3.0的时钟为20MHZ,仿真出来的也是20MHZ,如图2中的clk_out是输出给usb 3.0芯片的;但是这么一来PC端就收不到数据了,如图3中显示的BULK IN transfer       BULK IN transfer failed with Error Code:997
这是怎么回事呢{:sad:} ;谢谢~~~

uestc19 发表于 2015-4-23 16:38:54

wye11083 发表于 2015-4-23 11:35
你FPGA给的时钟始终是100MHz

对了,仿真图里面的16位 fdata就是发送给usb芯片传到电脑端的数据,当clk_out改回为100MHZ的时候PC端又能收到数据了{:dizzy:}


wye11083 发表于 2015-4-23 20:26:22

uestc19 发表于 2015-4-23 16:38
对了,仿真图里面的16位 fdata就是发送给usb芯片传到电脑端的数据,当clk_out改回为100MHZ的时候PC端又能 ...

那我就不知道了,反正我多少速度都测试过,最高稳定340MB/s传输,除了在Intel原生上需要关掉电源管理外,没有别的问题。

uestc19 发表于 2015-4-23 21:53:21

wye11083 发表于 2015-4-23 20:26
那我就不知道了,反正我多少速度都测试过,最高稳定340MB/s传输,除了在Intel原生上需要关掉电源管理外, ...

那再问一下你在测不同速度的时候是只改了FPGA发送给GIIF II的时钟吗?还是固件程序里也有需要改变的呢?

wye11083 发表于 2015-4-23 22:27:51

uestc19 发表于 2015-4-23 21:53
那再问一下你在测不同速度的时候是只改了FPGA发送给GIIF II的时钟吗?还是固件程序里也有需要改变的呢? ...

噢,有一点,我只用了32bit,没用16bit。当初测试稳定性时专门测过不同时钟的。

uestc19 发表于 2015-4-24 09:37:39

wye11083 发表于 2015-4-23 22:27
噢,有一点,我只用了32bit,没用16bit。当初测试稳定性时专门测过不同时钟的。 ...

噢,谢谢,能不能看下你的固件程序和FPGA程序呢~~

wye11083 发表于 2015-4-24 15:08:58

uestc19 发表于 2015-4-24 09:37
噢,谢谢,能不能看下你的固件程序和FPGA程序呢~~

固件没任何东西,只是调用SlaveFIFO初始化一下。不过注意DMA缓冲大小一定得是Burst Length的整数倍,比如BL=16,则缓冲区必须为16K的整数倍大小,即16*1K,8*2K,====。

uestc19 发表于 2015-4-24 15:24:54

wye11083 发表于 2015-4-24 15:08
固件没任何东西,只是调用SlaveFIFO初始化一下。不过注意DMA缓冲大小一定得是Burst Length的整数倍,比如 ...

谢啦哈,我解决了哈,是我FPGA的问题,谢谢你的热心解答~~
页: [1]
查看完整版本: Cyusb3014 USB 3.0芯片传到电脑端的数据错误