一种基于FPGA的USB3.0 HUB的研究与设计

2013-09-17 10:26张劲松
电视技术 2013年11期
关键词:集线器加解密时钟

彭 丹,张劲松,张 特

(1.武汉邮电科学研究院,湖北 武汉 430074;2.武汉群茂科技有限公司,湖北 武汉 430074)

一种基于FPGA的USB3.0 HUB的研究与设计

彭 丹1,2,张劲松1,2,张 特1,2

(1.武汉邮电科学研究院,湖北 武汉 430074;2.武汉群茂科技有限公司,湖北 武汉 430074)

HUB(集线器)是USB体系中不可或缺的一部分,它是USB的最新规范,由英特尔等公司发起。首先介绍了USB3.0 HUB的原理、基本功能和枚举过程;然后提出USB3.0 HUB的总体设计方案;重点描述了此方案中关键模块的设计和实现;并对该方案进行FPGA仿真与验证,验证结果表明该方案的可行性以及它所达到的效果。

USB3.0;集线器;高级加密标准;FPGA

【本文献信息】彭丹,张劲松,张特.一种基于FPGA的USB3.0 HUB的研究与设计[J].电视技术,2013,37(11).

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

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以及上下行端口组成[2]。由于USB3.0是向下兼容的,所以它有完整的USB2.0HUB设计,而Super Speed HUB部分就是 USB3.0 HUB 区 别 于 USB2.0 HUB 的 主 要 部 分 。USB3.0 HUB基本结构如图1所示。

1.2 USB3.0集线器的功能

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

1)基本连接功能。

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

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加解密等部分。

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模块中采用跨时钟域的设计,一个是本地的48 MHz的全局时钟,另外一个是USB主机从接收到的数据流中采样接收的12 MHz数据时钟(即将48 MHz本地全局时钟4分频得到)[3]。SIE模块设计框图如图3所示。

2.2 HUB控制器模块

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

2.3 AES模块

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

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

2.4ROUTING模块

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

2.5 Repeater中继模块

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

2.6PHY模块

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

2.7 TT处理转换器

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

3 FPGA仿真与验证

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

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

为了加强整个设计的可靠性,必须进行FPGA验证,FPGA验证选择的是Altera的StratixII S180开发板,采用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.0HUB传输1个比较大的文件,并且用ATTO DISK BENCHMARK软件来测试其读写速度,通过ATTO可以显示出读取数据可以提高到1 088 Mbit/s,写入速度可以达到840 Mbit/s(USB2.0 HUB的读写速度分别为240 Mbit/s和184 Mbit/s);很显然这个读写速度比USB2.0的提高了5~6倍。当然由于软件和硬件的各种原因,这个实际的传输速度离其理论最大值5 Gbit/s有一定的差距,但已基本实现其高速传输的功能。

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

4 总结

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

[1] 黄辉.USB3.0技术发展和展望[J].大众硬件,2008(10):37-140.

[2] 范垂荣.USB集线器设计与开发[J].大众科技,2005(11):145-148.

[3] 占扬林.基于FPGA的USB3.0 HUB的设计与实现[D].北京:北方工业大学,2011.

[4] 胡锦,胡立琴,陈训亮.一种嵌入式USB2.0主机控制器IP核的研究与设计[J].微电子学与计算机,2009,26(1):133-137.

[5] ENGBRETSON M.USB3.0 physical layer measurements[J].Evaluation Engineering,2009,48(1):14-19.

[6] The Fujitsu USB 3.0-SATA Bridge IC Earns USB-IF Compliance Certification for SuperSpeed USB[EB/OL].[2012-09-01].http://www.fujitsu.com/us/news/pr/fma_20100106-1.html .

Resarch and Design of USB3.0 HUB Based on FPGA

PENG Dan1,2,ZHANG Jinsong1,2,ZHANG Te1,2

(1.Wuhan Research Institute of Post&Telecommunication,Wuhan 430074,China;2.Wuhan Trimode Technology,Wuhan 430074,China)

HUB is an integral part of the USB system,USB3.0 is the latest USB specification,initiated by Intel and other companies.USB3.0 HUB principles,basic functions and enumeration process are introuduced in this paper.And the overall design of the USB3.0 HUB is proposed.The design and implementation of key modules of this program are described.The results of FPGA simulation and verification demonstrate the feasibility of the program.

USB3.0;HUB;AES;FPGA

TP303

A

彭 丹(1984—)女,硕士生,主研IC设计;

张劲松(1970—)博士,硕士生导师,主要从事通信终端设计研究;

张 特(1987—)硕士生,主研光模块设计。

责任编辑:魏雨博

2012-10-08

猜你喜欢
集线器加解密时钟
基于差分QPSO的多能源集线器系统优化调度
别样的“时钟”
古代的时钟
基于可变编程集线器的整车线束模块化设计
音乐聆赏新世代 Bowers & Wilkins Formation Audio无线音乐集线器
PDF中隐私数据的保护方法
有趣的时钟
电子取证中常见数据加解密理论与方法研究
时钟会开“花”
基于FPGA的LFSR异步加解密系统