552|2

9716

帖子

24

TA的资源

版主

楼主
 

高云FPGA USB-HS 速率提不上来 [复制链接]

 

最近准备采集一些数据,手里有一个tang primer 20k的板子,sipeed官方有usb2.0 full-speed的例程。因为全速满足不了要求,之前尝试过使用板子上的USB3317做high-speed通信没成功。这回又鼓捣了一下,使用官方的usb2.0 soft phy参考设计,把原来的usb2.0 soft phy替换成usb3317,可以成功通信。不过速率一直不高,使用串口助手无论波特率设置为多少,接收的速度大概都在30K byte/s,很低,好像全速都达不到。

现在不确定问题出在哪,是上位机的串口助手原因还是FPGA的原因,或者是USB CDC本身就有限制?

USB是处于高速状态的,USB时钟是60MHz,每个时钟发送一个字节的数据,然后数据加1。通过串口助手能看到会有多个连续的块数据,中间也会丢数据。

 

我抓了一下ulpi的信号,发现大多数时间总线都是空闲的。不清楚是什么原因会导致这种情况。

 

 

最新回复

“大多数时间总线都是空闲”,可能原因之一是USB3317的cache设定不够,以及RTL状态机跳转条件使用计数器。 基于FPGA的USB场景设计,主要应用场景之一是SDR系列产品;USB芯片需要固件,并且基于具体场景来考虑TX-FIFO或者RX-FIFO的大小。   至于其他场景,非必要建议不选用USB接口。基于网口的TCP/UDP传输都比USB接口开发难度要低。   详情 回复 发表于 2024-7-23 00:00
点赞 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复
举报

9716

帖子

24

TA的资源

版主

沙发
 

发现ep_usb_txcork一直为0,0表示TXDAT不足?

 

usb_fifo使用低速时钟,ep_usb_txcork对应fifo_empty,理论应该有空的时候才对。而且如果ep_usb_txcork为0时表是空,它就不应该由empty信号直接驱动,因为empty高电平表示空。

 

 

 

 

 

最后发现u_usb_device_controller_top.usb_txcork = usb_fifo.o_usb_txcork = sync_tx_pkt_fifo.empty,sync_tx_pkt_fifo.empty一直为0。

empty = ( wp == pkt_rp )

 

测试时发现wp 有大于 pkt_rp的时候也有小于pkt_rp的时候,唯独没有它俩相等的时候。不确定是什么原因。

 

 

   

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

“大多数时间总线都是空闲”,可能原因之一是USB3317的cache设定不够,以及RTL状态机跳转条件使用计数器。

基于FPGA的USB场景设计,主要应用场景之一是SDR系列产品;USB芯片需要固件,并且基于具体场景来考虑TX-FIFO或者RX-FIFO的大小。

 

至于其他场景,非必要建议不选用USB接口。基于网口的TCP/UDP传输都比USB接口开发难度要低。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表