0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的USB3.0 HUB设计方案

FPGA设计论坛 来源:未知 2023-06-09 16:50 次阅读
05678e26-06a2-11ee-962d-dac502259ad0.png

点击上方蓝字关注我们

USB总线是目前为成功,应用为广泛的外设接口。随着时代的进步和发展,电子产品、手持设备、超大容量的高清视频设备以及千万像素的数码相机等设备的需求越来越高,USB接口规范也需要相应地进行不断地更新和升级。USB3.0的理论速度达到了5Gbit/s,向需要更大电力支持的设备提供更好的支持和电力供应,它在USB2.0的基础上增加了新的电源管理功能,采用全双工数据通信,提供更快的传输速度,并且向下兼容USB2.0和USB1.1设备。USB体系主要包括三个部分:主机,设备和物理连接。主机通常是PC或者主机控制器;设备是指常用的U盘、带USB的摄像头、相机等设备;物理连接就是通常用的传输线,在USB3.0系统中,采用了对偶单纯形四线制差分信号线,因此可以支持双向并发数据流传输,这也是USB3.0相比于USB2.0设备速度提升的关键因素。

HUB是USB系统中的重要组成部分,且能够应用在大多数操作系统,它是建立主机与USB设备之间的桥梁。作为一类特殊的USB设备,可以同时将一个接口转换为多个接口,为用户提供了效率和便捷。

1. USB3.0 HUB的简介

1.1 USB3.0 HUB的基本组成

根据USB3.0的协议规定,USB3.0 HUB主要由Super Speed HUB,Vbus Control Logic,USB2.0 HUB以及上下行端口组成。由于USB3.0是向下兼容的,所以它有完整的USB2.0 HUB设计,而Super Speed HUB部分就是USB3.0 HUB区别于USB2.0 HUB的主要部分。USB3.0 HUB基本结构如图1所示。

0570c748-06a2-11ee-962d-dac502259ad0.jpg

图1 USB3.0 HUB的基本结构

1.2 USB3.0集线器的功能

USB3.0 HUB是USB系统中的重要部分,它的基本功能如下:

1)基本连接功能。

2)电源管理功能。USB3.0能够提供900mA的电源,这样就可以给那些连接USB3.0的设备更快更好地完成充电。由于新的接口提供了额外的两条线,900mA的电力支持能够驱动无线适配器,这样在900mA的高电力支持下可以摆脱靠线缆连接的必要性。在大量数据传输的同时,空闲的设备可以自动进入低功耗状态,给正在传输的设备提供更好更快的性能支持。

3)设备连接和断开检测。

4)总线的错误检测和恢复。

5)HUB3.0的自动挂起和恢复功能。

6)向下兼容,下行端口同时支持高/低/全速设备。

2. Super Speed HUB的设计

USB3.0 HUB是一种便携的低成本的USB3.0扩展接口,它的下行端口面向USB设备,上行端口面向PC主机或者嵌入式主机控制器,速度由上行端口的主机来决定,同时它在下行端口给设备提供连接和断开的检测,根据USB3.0协议规范,要实现上节所述各项功能设计。Super Speed HUB的整体构架如图2所示,包括SIE、控制、处理转换、中继、路由、AES加解密等部分。

058a253a-06a2-11ee-962d-dac502259ad0.jpg

图2 USB3.0 HUB的整体构架

2.1 SIE(Serial Interface Engine)模块

Super Speed HUB中的SIE模块处理USB规范中物理层和协议层的协议解析,它主要实现包的识别与产生、比特填充和提取、时钟与数据分离、NRZI编码和解码、PID(包标识符)的产生和检测、CRC校验码的识别和产生、地址检测等。SIE模块设计中,分为SIE_PL和SIE_FUC两个部分。SIE_PL模块负责数据包的解析与组织,PID(包标识符)产生与检测、CRC校验识别与产生、地址检测等。SIE_FUC模块主要实现SIE模块与MCU的接口逻辑功能。另外,为了使本系统设计更加稳定,SIE模块中采用跨时钟域的设计,一个是本地的48MHz的全局时钟,另外一个是USB主机从接收到的数据流中采样接收的12MHz数据时钟(即将48MHz本地全局时钟4分频得到)。SIE模块设计框图如图3所示。

059a96c2-06a2-11ee-962d-dac502259ad0.jpg

图3 SIE模块设计框图

2.2 HUB控制器模块

HUB控制器主要完成HUB的管理及控制,实现与主机的交互。主机端通过类请求与HUB控制器模块通信,取得HUB端口的描述符,并且完成USB HUB及其下行端口的管理和控制。主机通过向端点0发送类请求和标准请求来实现HUB的枚举过程。

2.3 AES模块

AES是一种基于置换和代替的算法,它实现加解密功能。在USB3.0 Super Speed模式下,根据用户的需求,当数据从上行端口向下行端口传输时,对数据进行加密,以防止信息窃取。同样,在数据由下行端口向上行端口传输时实现其解密过程。AES算法加解密过程如图4所示。

05affd64-06a2-11ee-962d-dac502259ad0.jpg

图4 AES算法加解密过程

在加解密的过程中,由于USB3.0 HUB的传输速度可达到3200Mbit/s,但是AES的加解密IP在250MHz的吞吐率下速率只能达到2400Mbit/s,因此在加解密的过程中需要2个AES来实现其功能。图5是USB3.0 AES加密原理图,从图中可以看到上行端口会向EM_A发送奇数128bit数据,向EM_B发送偶数128bit数据,同时,Mem_buf模块也会轮询地从EM_A模块和EM_B模块接受数据。而在以前的USB2.0的模式下,数据位宽只有8bit,全速的带宽为480Mbit/s,所以只需要1个AES就可以。

05d5ddd6-06a2-11ee-962d-dac502259ad0.jpg

图5 AES算法加密原理图

2.4 ROUTING模块

ROUTING模块即路由逻辑模块,它的作用是根据连接到下行端口设备的速度来决定将下行端口连接到中继模块还是连接到TT模块。由于在USB3.0HUB的上行端口中的速度是高速的,而下行端口则不确定为高速、全速或者低速,所以当下行端口设备的速度为高速时,ROUTING模块连接到中继模块,如果下行端口设备的速度为全速或者低速时就连接到TT模块。

2.5 Repeater中继模块

集线器中继模块在HUB的数据转发中起到建立和拆除上行端口和下行端口之间的连接,并且处理集线器的挂起和唤醒的作用。中继器把上行端口的数据发送到下行端口,把下行端口的数据发送到上行端口,并且要用本地时钟来从端口上发送和接受数据。它以数据包为单位控制端口的建立和连接以及HUB的唤醒和挂起。如图6所示为Repeater的连接状态机。

05e2f3cc-06a2-11ee-962d-dac502259ad0.jpg

图6 Repeater的连接状态机

2.6 PHY模块

PHY模型就是通常所说的USB物理收发器模型,它的作用是实现数据的串并转换。因为在上行端口是并行数据,而在面向设备和电缆中的下行端口是串行数据。

2.7 TT处理转换器

TT模块的作用是完成传输事务转发和速度的匹配。当上行端口在高速环境下运行而下行端口在全速或者低速下运行时,TT处理转换器就是将高速事务转换成低速事务。由于要满足速度的匹配,因此TT处理器必须采用缓存的方式来存储,在缓存的上行端口是一个高速处理器,用来处理高速数据的收发;缓存的下行端口是全速和低速处理器,用来处理全/低速数据的接受和发送。

3. FPGA仿真与验证

为了更好地完成仿真和验证,采用ModelsimSE和Navos公司的Debussy软件。首先搭建仿真环境,包括编译测试文件、仿真调用文件、引导文件、宏定义文件以及激励文件。首先将C语言的驱动程序在Linux环境下转换为二进制的kvout激励文件,把二进制的kvout文件存储在外挂的Flash中然后再存储到内置的RAM中,使其成为发出指令的源头;同时USBDevice的行为级模型也会装载部分命令以达到仿真的目的。如图7所示为USB3.0HUB高速数据批量传输仿真结果。

05f29c3c-06a2-11ee-962d-dac502259ad0.jpg

图7 USB3.0HUB高速数据批量传输仿真(截图)

图中数据包的总大小为4096byte,rst_n为系统复位信号,clk30为主机端12M时钟,pci_clk为本地时钟,cpu_datao是从主机发送出的数据,utm0_data,utm1_data,utm2_data,utm3_data分别为经过USB3.0HUB扩展后的4路高速信号,Utm_rxready,utm_rxvalid,utm_rxactive分别为端口的控制信号。

为了加强整个设计的可靠性,必须进行FPGA验证,FPGA验证选择的是Altera的StratixIIS180开发板,采用QuartusII将RTL级的verilog代码进行变异并且综合成网表,然后通过USB-blaster线到FPGA测试版中,另外激励文件是在Linux环境下编译产生的,并且通过EJTAG到测试版中。把激励文件到FPGA板子中后,把HUB的上行端口连接到USB的主机,此时如果主机检查出有USB HUB连接,会产生1个复位信号;在HUB复位后,USB主机向USB Device发送令牌包,并且对HUB进行枚举,主机识别出该HUB;当主机对USB3.0 HUB成功枚举后按照USB协议进行数据传输。

在传输速率上,可以通过USB3.0 HUB传输1个比较大的文件,并且用ATTO DISK BENCHMARK软件来测试其读写速度,通过ATTO可以显示出读取数据可以提高到1088Mbit/s,写入速度可以达到840Mbit/s(USB2.0 HUB的读写速度分别为240Mbit/s和184Mbit/s);很显然这个读写速度比USB2.0的提高了5~6倍。当然由于软件和硬件的各种原因,这个实际的传输速度离其理论值5G bit/s有一定的差距,但已基本实现其高速传输的功能。

从verilog的功能仿真、时序仿真和FPGA验证表明,USB3.0 HUB基本实现了高速数据的传输,达到了预期的效果。

4. 总结

USB及HUB接口是目前计算机以及微控制器中常用的通用高速接口,它可以连接串口、U盘、音频、视频、手机、相机等绝大多数的外设设备。USB3.0正在以其高速度、高性能、高可靠性、低成本等特点逐渐代替更多的USB2.0产品,成为通信电子市场的主要接口。本文中设计的USB3.0 HUB实现了多媒体数据的高速同步及时传输;更佳的电源管理功能以及支持AES加密解密等功能,这些都将促使它在市场上迅速普及。但是USB3.0及其HUB依旧有自己的瓶颈,比如在某些应用中需要尽可能高的吞吐量时,线缆的长度会受到限制;同时电缆的材质以及信号的质量也会在整体上影响传输的效果,所以在传输百兆以上数据流时,所用线缆不要超过3m。

0601502e-06a2-11ee-962d-dac502259ad0.png

有你想看的精彩 至芯科技-FPGA就业培训来袭!你的选择开启你的高薪之路!5月30号西安中心课、欢迎咨询!基于FPGA的DDR3多端口读写存储管理系统设计深入学习FPGA之DAC驱动

060ab6aa-06a2-11ee-962d-dac502259ad0.jpg

扫码加微信邀请您加入FPGA学习交流群

061fdf58-06a2-11ee-962d-dac502259ad0.jpg064296a6-06a2-11ee-962d-dac502259ad0.png

欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA威廉希尔官方网站 交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!

点个在看你最好看


原文标题:基于FPGA的USB3.0 HUB设计方案

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1628

    文章

    21697

    浏览量

    602535

原文标题:基于FPGA的USB3.0 HUB设计方案

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问ISO7760能应用在USB3.0数据上隔离吗?

    请问ISO7760能应用在USB3.0数据上隔离吗? USB3.0的最大传输带宽高达5.0Gbps而ISO7760手册上显示是100Mbps数据速率两者的bps单位一样,疑惑的是传输带宽和传输速率! 请问有那位朋友将ISO7760应用再
    发表于 12-04 08:01

    xilinx FPGA+Sony LVDS接口图像传感器,已设计出网口输出,现想设计USB3.0输出,有没有什么解决方案

    ;现在计划在此基础上增加或者更改为USB3.0或以上输出(type-c,可同时供电);应该要如何去实现,具体需要使用哪些芯片?
    发表于 11-19 10:13

    USB3.0 /TYPE-C接口静电保护六路器件

    USB3.0 /TYPE-C接口静电保护六路器件
    的头像 发表于 11-01 08:02 154次阅读
    <b class='flag-5'>USB3.0</b> /TYPE-C接口静电保护六路器件

    USB3.0的识别问题

    做了一个USB3.0集线器,现在遇到这个问题,USB3.0无法识别,插拔几次后可以识别,接上其他设备也能正常工作,求高手帮忙啊,怎么处理USB3.0识别问题
    发表于 10-29 11:36

    CYUSB3014是否会自动调整工作模式USB3.0还是USB2.0?

    CYUSB3014是否会自动调整工作模式USB3.0还是USB2.0?它的工作模式是否可以或怎么通过FLAG传输给FPGA?
    发表于 08-14 08:00

    USB3.0/3.1静电放电防护方案

    上众多的串行和并行接口。 USB3.0的理论速度最高可达5Gbps,相比USB2.0极大地提升了数据传输的效率和速度,且保持了与USB2.0及更早版本的向后兼容性,用户可以在USB3.0
    的头像 发表于 08-05 17:37 517次阅读
    <b class='flag-5'>USB3.0</b>/3.1静电放电防护<b class='flag-5'>方案</b>

    USB2.0型号模拟转换USB3.0输出

    通过模拟信号转换,将原本输入进来的USB2.0变成USB3.0,使其插到USB3.0HUB上不会出现2.0降速的问题
    发表于 05-14 08:47

    usb3.0和2.0的!!!

    USB 3.0USB 2.0是USB接口的不同版本,它们之间有以下主要区别: 1. **传输速度**:USB
    的头像 发表于 04-07 00:23 683次阅读

    求一种1.3 USB3.0/TYPE-C静电保护单颗方案

    方案优点:USB3.0提供5.0Gbps的传输速度,本方案采用单颗器件防护,节约空间,
    的头像 发表于 03-19 17:29 366次阅读
    求一种1.3 <b class='flag-5'>USB3.0</b>/TYPE-C静电保护单颗<b class='flag-5'>方案</b>

    1.4 USB3.0/TYPE-C静电滤波保护方案静电保护多颗方案介绍

    方案优点:USB3.0提供5.0Gbps的传输速度,本方案采用分立器件防护,保证信号完整性 满足IEC61000-4-2,等级4,接触放电8kV,空气放电15kV。
    的头像 发表于 03-19 17:22 617次阅读
    1.4 <b class='flag-5'>USB3.0</b>/TYPE-C静电滤波保护<b class='flag-5'>方案</b>静电保护多颗<b class='flag-5'>方案</b>介绍

    基于CYUSB3014做了一块USB3.0的开发板,怎么样能让FX3被识别出USB3.0呢?

    运行,但是不能使用USB3.0功能了。请问我应该怎么样能让FX3被识别出USB3.0呢?谢谢!麻烦了。​
    发表于 02-28 08:14

    使用CYUSB3014作为USB3.0数据传输,USB3.0无法识别的原因?

    我们使用CYUSB3014作为USB3.0数据传输方案,目前处于试产阶段。试产过程中偶尔出现板卡连接至PC后,USB3.0无法识别的情况。 固件使用的官方SlaveFifoSync固件。问题板卡上电
    发表于 02-23 06:12

    SL6340是国产USB3.0 HUB芯片,一扩四,替换RTS5411/GL3510/VL817,适用于扩展坞/延长/电脑等

    SL6340是国产USB3.0 HUB芯片,一扩四,替换RTS5411/GL3510/VL817,适用于扩展坞/延长/电脑等 SL6340是一款4端口、低功耗、高性能和可配置的USB3.0
    的头像 发表于 02-22 17:58 1279次阅读
    SL6340是国产<b class='flag-5'>USB3.0</b> <b class='flag-5'>HUB</b>芯片,一扩四,替换RTS5411/GL3510/VL817,适用于扩展坞/延长/电脑等

    PCIe-6328 八口USB3.0图像采集卡:专为工业自动化和机器视觉设计

    PCIe-6328一块8口USB3.0主控卡,专为工业自动化和机器视觉相关应用设计。USB3.0或称作高速USB,是一项新兴总线威廉希尔官方网站 ,10倍于USB2.0的传输速度,尤其适用于高速数据
    的头像 发表于 01-22 17:05 789次阅读
    PCIe-6328 八口<b class='flag-5'>USB3.0</b>图像采集卡:专为工业自动化和机器视觉设计

    USB3.0高速接口布局指南

    电子发烧友网站提供《USB3.0高速接口布局指南.pdf》资料免费下载
    发表于 01-02 10:21 7次下载