关于CY68013采集卡提速问题!急寻各位大虾帮忙!谢谢...

[复制链接]
4197|9
 楼主| kenen2006 发表于 2009-6-21 20:29 | 显示全部楼层 |阅读模式
&nbsp;&nbsp;&nbsp;&nbsp;目前我们在做一个数据采集卡,现在速率只有5Mbytes/s,设备的采集速率&gt5M,就会出现掉数据现象.目前我们采用的方案如下:<br />&nbsp;&nbsp;&nbsp;&nbsp;驱动:在CY自带驱动基础上改的异步块传输,目前驱动中两次读操作的时间间隔约70us(固定消耗),用程序每次读5K数据,设备开始采集数据前,应用程序先向驱动提交了16个异步读请求;<br />&nbsp;&nbsp;&nbsp;&nbsp;固件:SLAVE&nbsp;FIFO模式,8位数据宽度,配置EP6为512,双缓冲,IN端点,PC端从EP6读数据;<br />&nbsp;&nbsp;&nbsp;&nbsp;FPGA:FPGA写FIFO速率&nbsp;=&nbsp;2&nbsp;*&nbsp;数据采集速率(如:FPGA写FIFO速率&nbsp;==&nbsp;10M,则数据采集速率&nbsp;==&nbsp;5M).<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;测试过程及现象:<br />&nbsp;&nbsp;&nbsp;&nbsp;我们将数据采集速率设置为10M(目前测试数据是在FPGA中模拟的),FPGA写FIFO速率为20M,读请求IRP从放入总线到读请求完成返回耗时1ms(驱动观测数据),这个时间跟&quot;数据采集速率5M&quot;是相关的,但按理讲应该跟&quot;FPGA写FIFO速率10M&quot;相关才对(硬件工程师确认&nbsp;FPGA写FIFO速率为20M).从理论上讲这样的数据传输方案应该是可以的,但实际情况是会掉数据,这个现象我一直没想明白是怎么回事,或是我理解错误了.大家帮我分析下问题出在哪了,谢谢大家了.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;问题:<br />&nbsp;&nbsp;&nbsp;&nbsp;1.我目前的驱动设计方案可行吗?(我是做软件的)<br />&nbsp;&nbsp;&nbsp;&nbsp;2.FPGA写FIFO速率&nbsp;=&nbsp;2&nbsp;*&nbsp;数据采集速率,这样的设置合理吗?<br />&nbsp;&nbsp;&nbsp;&nbsp;3.提高数据采集速率(要求无误码,不掉据),可以采取哪些措施(应用程序,驱动,固件,FPGA).<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;目前我知道加大PC端每次读请求的数据量,设置FIFO数据线为16位可以提高速率.第一种方法可行,但效果不明显,将PC端每次读请求的数据量设到最大,10M速率下有掉数据现象(不过我们的项目要求每次读请求的数据量必须为5K,对我意义不大,闷)第二种方法,正要尝试.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;大家帮帮我,我的问题出在哪地方了,还在同样问题中挣扎的兄弟些也来一起讨论,一起解决问题啊.谢谢大家了<br />&nbsp;&nbsp;&nbsp;
computer00 发表于 2009-6-21 20:54 | 显示全部楼层

楼主你跟这个贴的楼主交流下

<a href="https://bbs.21ic.com/club/bbs/list.asp?boardid=53&page=2&t=3334109&tp=%u8BF7%u6559%uFF01CY7C68013%u7684%u901F%u7387%u63D0%u4E0D%u4E0A%u53BB" target=_blank>https://bbs.21ic.com/club/bbs/list.asp?boardid=53&page=2&t=3334109&tp=%u8BF7%u6559%uFF01CY7C68013%u7684%u901F%u7387%u63D0%u4E0D%u4E0A%u53BB</a>
 楼主| kenen2006 发表于 2009-6-22 18:09 | 显示全部楼层

非常感谢你的关注

那个帖子,我看过了,其版主也给我提供了一些宝贵意见,在此向他表示感谢!<br /><br />目前,我主要是搞不清楚问题出在了软件上还是硬件上.<br /><br />computer00:您觉得我目前的驱动设计方案是可行的吗?软件上问题可能会出在哪?或是还需要注意些什么问题<br /><br />谢谢
computer00 发表于 2009-6-24 14:43 | 显示全部楼层

瓶颈在哪,只有你自己一步步定位才知道呀...

通常是应用软件一次读取的数据长度不够导致的。
ysdx 发表于 2009-6-25 08:19 | 显示全部楼层

这个应该很容易达到20M以上的

我手头的一款DEMO板子就可以很容易达到23M。你直接用这种就好了。市场上这种板子很多的。才几百块钱的样子。
 楼主| kenen2006 发表于 2009-6-25 18:59 | 显示全部楼层

谢谢,两位大虾的指点

ysdx:请问一下你的驱动是怎么设计的啊?<br /><br />我采用的是异步块传输,在设备采集数据前,预先向驱动发送16个读IRP,完成一个再发下一个读请求,目前测试的情况是,两次读操作间隔80us.<br /><br />固件里设置EP6,IN,512byte,4缓冲.<br /><br />我尝试过应用程序一次读200K,但是很不幸,速率大于5M,还是会出现掉数据.<br /><br />目前推测是不是固件没有配置好参数
drentsi 发表于 2009-7-9 21:04 | 显示全部楼层

这个速度的问题

我已经6年没怎么做USB了,现觉得没什么意思了,就公开一下吧.<br />03年测试FX2的成绩是在奔四512M内存的机器上,批量传输写40MB/s,读42MB/s.<br />有关资料可以在这个论坛搜我以前的帖子.<br />几个要点:<br />1.MASTER模式,8位或16位区别不大<br />2.双缓冲和4缓冲区别不大<br />3.最重要一点,驱动程序要改写,有好几个地方,瓶颈在驱动程序上.我可以提供这个驱动程序,但是要收钱.没有对整个USB的体系进行深入研究,要找出这几个地方还真是不容易.另外,经过理论计算,FX2的极限速度是45MB/s,
古道热肠 发表于 2009-7-10 15:06 | 显示全部楼层

书店有本书,也许能帮上您,好象是USB2.0硬件设计

是&quot;燕山大学&quot;的老师写的.光盘里有源代码.
Apnote 发表于 2009-7-10 16:07 | 显示全部楼层

回9楼,古道热肠

楼上的兄弟,书名叫啥啊???最近想学习USB......
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部