打印

68013通信的问题

[复制链接]
502|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pangb|  楼主 | 2019-10-18 20:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,关于68013通信的问题想问一下, (68013 )作为USB的控制芯片通过上位机软件与FPGA进行通信, FPGA与USB之间通信采用slave-fifo的方式,FPGA不断从USB的FIFO中读取数据,上位机不断写数据到USB的FIFO中, 实际工作中USB的通信速率要求能达到10M/Byte 的速率才能保证FPGA对数据的连续运行, USB处理器68013能达到最快60M/Byte的速率, 我在测试中发现只能达到5M的速率,远低于最快速率, 从以下几个步骤分析了问题:
先确定FPGA从USB-FIFO取数据的速率, 当FIFO中有数据时,USB会输出一个FLAGC信号为高,这时,FPGA就会在48M同步时钟控制下从USB-FIFO中取出数据,通过逻辑分析仪可以看到,FPGA取数据的速率是24M/16bit. 也就是在FLAGC为高是,FPGA用24M的速率将数据取出来.发现FLAGC为高的时间间隔为8.3us左右, 一个包为400字节.

使用特权

评论回复
沙发
kangzj| | 2019-10-18 20:43 | 只看该作者

然后呢?你是怎么应对这个的呢

使用特权

评论回复
板凳
pangb|  楼主 | 2019-10-18 20:46 | 只看该作者
上位机软件是不断的发送数据,使用bus hound软件测上位机发给68013的数据速率,发现数据包是240us一个包,一个包是400字节,这样,速度只有1.6M/byte, 这240us是指每个OUT包之间的间隔时间,下图为两个OUT包之间的间隔.也就是如果这个包之间的间隔更短些,则数据速率就可以提高了, 还有USB内部是采有两个缓冲区,想知道怎样才能提高USB传输的速度,从现在的情况看来,感觉是上位机传到USB的速度慢了,大家帮忙分析一下

使用特权

评论回复
地板
juventus9554| | 2019-10-18 20:49 | 只看该作者
是不是和上位机发送数据的间隔有关呢?

使用特权

评论回复
5
llljh| | 2019-10-18 20:51 | 只看该作者


为什么一个包400个字节?

bulk端点是512的,按倍数来,就不会有小包了,效率也提高了

使用特权

评论回复
6
llljh| | 2019-10-18 20:56 | 只看该作者
我也用过这款,也用slave fifo模式,不过是向PC发送数据,6013a自身产生数据,设置好fifo,满了自动发送,这个速度也只能达到3MB/s,不知道怎么提升

使用特权

评论回复
7
dingy| | 2019-10-18 20:59 | 只看该作者
固件一侧的速度很高,影响速度的因素主要是上位机程序,你可以这样修改一下,在一个线程内,一次启动多个传输。

使用特权

评论回复
8
renyaq| | 2019-10-18 21:01 | 只看该作者

这问题应该跟操作系统驱动IO缓冲区大小有关,用最新的FX3驱动缓冲区是固定的,开得比较大,用3.4.7或以下的版本的驱动,在驱动接口帮助文档中可以找到一个IOCTL 设置缓冲大小的函数。

使用特权

评论回复
9
pangb|  楼主 | 2019-10-18 21:05 | 只看该作者
哦,那我就知道怎么回事了,多谢大家,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

粉丝