-
在应用外接密码模块进行数据加密时,需要与计算机实现高速、准确地大批量数据传输,接口的选择至关重要。目前常用的PCI接口成本高、便携性差,主流USB2.0接口的数据传输速度理论最大值为480 Mb/s,已经不能满足大规模高速数据传输的需要。USB3.0接口的出现很好地解决了这一问题,在保留USB2.0优势的基础上,增加了超速传输模式,理论传输速度可高达5 Gb/s[1],在电源管理等方面有了更好的提高,并且保留了非超速传输模式,能够很好的兼容USB2.0及以下接口,适用性广泛[2-3]。
USB3.0外设控制器的固件设计是USB3.0接口开发的重要环节。文献[4]探索了使用统一建模语言的USB3.0设备的硬件开发方法;文献[5]介绍了应用USB3.0接口的通道发声器的设计;文献[6]介绍了一种高效的USB3.0接口AES核心硬件架构用于实现其在便携式硬盘驱动器系统中加密/解密数据。以上应用USB3.0接口的设备均无法扩展到多密码模块的应用中,无法实现计算机对外设的灵活控制。
对于USB3.0接口外设来说,实现多模块的控制非常复杂,文献[7]设计了一种基于USB3.0和FPGA的多串口传输系统,多串口的实现方式为:PC通过CYUSB3014芯片将各串口的奇偶校验、波特率、空闲位、每路的统计信息等配置以固定的命令格式发送给FPGA。文献[8]在PC端用户程序将命令和配置数据按自定义协议打包完成后发送给FPGA,FPGA按照自定义协议解析后执行相应的操作。可以看出传统多模块控制实现方式程序设计上非常复杂,难度较高,且传输过程中容易出错。
针对这个问题,本文设计了一种支持多安全运算模块的USB3.0外设控制器。考虑到FPGA有丰富的逻辑资源可供开发者编程使用,具有很好的扩展性和配置型,并且CYUSB3014芯片能够实现USB3.0协议,便于开发者使用USB3.0接口的功能,设计了CYUSB3014与FPGA结合的架构,能灵活高效地实现多安全运算模块的功能。
-
在USB总线接口技术中,支持4种面向用户的数据传输类型:控制传输(control transfer)、批量传输(bulk transfer)、中断传输(interrupt transfer)和同步传输(isochronous transfer)。这4种数据传输类型有各自的特点,如表 1所示。
表 1 USB数据传输类型特点
传输类型 传输数据特点 控制传输 少量数据、无传输时间要求、传输有保证 批量传输 大量数据、无传输时间和传输速率要求 中断传输 少量或中量数据、有周期要求 同步传输 大量数据、速率恒定、有周期性 对于安全运算设备来说,必须保证数据传输的正确性,在此基础上,保障数据的传输速率,这正是批量传输的特点。因此本设计中,PC端通过批量传输方式传输数据到CYUSB3014。对于控制指令这样的少量数据,也是要首先保证正确性,因此采用控制传输方式,保证能够准确进行多模块控制。
-
CYUSB3014与FPGA之间的数据传输使用GPIF Ⅱ接口,可配置为GPIF主控模式或Slave FIFO模式。GPIF主控模式下,CYUSB3014芯片作为主控制器来控制FPGA完成数据的读写。Slave FIFO(first in first out)模式下,FPGA作为主控制器,将CYUSB3014看作一个存储区,通过编写代码满足接口时序,控制数据的写入读出。GPIF主控模式比较灵活,设计过程中可添加新的状态实现不同读写功能,但固件编程更为复杂;Slave FIFO模式更适合大批量数据高速传输,因此在本方案中选择Slave FIFO模式。
-
CYUSB3014有丰富的I/O引脚资源,本方案将部分引脚固定为GPIF Ⅱ接口,另选部分引脚固定为专用控制指令传输接口,与数据传输的通道分开,因此控制指令不需要按照传统方法自定义协议打包成固定格式。当CYUSB3014接收到PC端通过控制传输模式传来的控制指令时,启动控制指令接口,直接将控制指令发送给FPGA。这种方案仅需要对CYUSB3014芯片内固件程序进行设计,编程简单,且有较强的灵活性和可扩展性。
-
固件设计一个很重要的工作就是建立DMA数据通道。DMA数据通道是虚拟的,使用时需要对其进行配置,其结构封装了3种硬件元素:套接字(socket)、DMA缓冲区(DMA buffer)、DMA描述符(DMA descriptor)。套接字位于DMA数据通道的终端,可以看成外设的接口,每个外设模块(如USB、GPIF Ⅱ接口模块)有各自固定的套接字数量。DMA缓冲区位于SRAM,用来缓存流入套接字的数据。DMA描述符保存了DMA缓冲区的地址、大小及指向下一个DMA描述符的指针。
在DMA数据传输过程中,数据发送端为producer,数据接收端为consumer,当外设向PC端发送数据时,即数据通过GPIF Ⅱ传输到USB3.0接口时,GPIF Ⅱ端设定为DMA producer,USB3.0端设定为DMA consumer。在一次DMA传输中,DMA producer首先得到DMA描述符,根据DMA描述符中的地址将数据填充到缓存区中,然后更新DMA描述符,通知DMA consumer端口接收数据。数据在到达consumer端口,consumer会首先取得DMA描述符,然后根据地址从缓存区中读取数据,最后更新DMA描述符,并通知DMA producer。
为了适应不同的应用需要,CYUSB3014提供了自动DMA通道和手动DMA通道两种方式。本文选择自动DMA通道,保证数据传输速率。自动DMA通道包含一个有效的producer线程、一个有效的consumer线程、预先定义好的一个或多个缓存区。这些缓存区同样大小,可通过DMA描述符链进行循环调用。自动DMA通道用来传输有限或无限的数据,当数据传输完成后可调用回调函数通知应用者。
-
CYUSB3014中的GPIF Ⅱ接口具有可编程的状态机,有256种可供编程的状态。有32位并行的数据线,可以根据需要配置为8位、16位、32位,接口时钟最大取值为100 MHz[10]。
Slave FIFO模式有同步传输和异步传输,本设计中我们选择传输速率更高的同步传输方式。在这种模式下,对于FPGA而言,CYUSB3014控制器如同一个FIFO存储器,FPGA可以随意向该存储器读写数据。图 3给出了同步Slave FIFO与外设之间的接口连接,其中,SLOE、SLCS、SLWR、SLRD、PKTEND为控制信号,均为低有效[11]。SLOE为输出使能信号,作用是驱动数据总线翻转;SLCS为片选信号,系统工作时必须始终有效;SLWR为写请求信号,该信号有效时控制器会将存储在DMA缓冲区的数据传输给外设;SLRD为读请求信号,该信号有效时外设将数据传输进DMA缓冲区;PKTEND为传输结束信号,用来标志本次数据传输结束。ADDR为地址线,用于选择GPIF Ⅱ线程,每个线程与相应的DMA通道上的套接字绑定。DATA为双向数据总线,完成数据的双向传输。PCLK为FPGA提供的时钟信号,最高为100 MHz。FLAGA和FLAGB为缓冲区的状态标志位,可配置为空、满、局部空或局部满状态信号。
FPGA接收到CYUSB3014传来的控制指令后,由控制指令处理模块判断选择相应的安全运算模块进行读或写操作,当收到读指令时,先将数据由CYUSB3014读出存入FPGA数据接收缓存区中,再将缓存区的数据发送给运算模块,待完成运算后,将数据从安全运算模块中读取存入数据发送缓存区中,当接收到PC端传入的写指令后,将数据发送给CYUSB3014。流程如图 4所示。
-
1) 密码算法运算测试
本方案中,外设FPGA采用Xilinx公司Spartan6系列XC6SLX15芯片,在ISE平台上进行了综合与实现,资源占用情况如表 2所示。
表 2 FPGA资源占用情况
逻辑利用 实际使用 可供使用 利用率/% Slice Registers数量 3 424 18 224 18 Slice LUTs数量 5 845 9 112 64 全占用的LUT-FF对数量 2 999 6 270 47 bonded IOBs数量 50 186 26 Block RAM/FIFO数量 4 32 12 BUFG/BUFGCTRLs数量 1 16 6 对于多安全运算模块的设置,使用Verilog HDL编写了DES密码算法模块、SHA-1密码算法模块,以及我国商用密码算法SM4模块和SM3摘要算法模块,以验证固件程序的功能。在Modelsim环境进行了仿真,其中SM4加解密算法运算结果如图 5所示,输入明文为01234567 89abcdef fedcba98 76543210,输入密钥为01234567 89abcdef fedcba98 76543210,输出密文为681edf34 d206965e 86b3e94f 536e4246,密文解密后与明文一致,运算结果正确。
调用SM3算法对字符串“abc”产生消息摘要,结果为66c7f0f4 62eeedd9 d1f2d46b dc10e4e2 4167c487 5cf2f7a2 297da02b 8f4ba8e0,结果正确。
对于PC端数据传输测试,本文选择了Cypress公司提供的USB Control Center软件,通过设置Control endpiont各参数值,用于外设的多模块控制。通过测试,4种密码模块运算结果均正确。可见,本设计方案能够成功对多模块进行控制,且数据传输正确率和速度均能满足工程实际需要。
2) 数据传输速率测试
PC端速度测试工具选择了Cypress公司提供的Streamer测试软件,数据传输速率达到了330.3 MB/s。图 6是与其他固件设计方案接口传输速度的测试结果对比。
文献[13]基于大数据吞吐量的CCD系统提出的USB3.0方案以及文献[14]设计的应用USB3.0接口的高速面阵CCD信号采集系统数据传输速率均在224.0 MB/s左右,文献[15]提出的CCD控制器主板中的USB3.0接口数据传输速率为241.4 MB/s,与其相比,本方案的数据传输速率提高了约37%。因此本方案在数据传输速度上有较好的性能。
3) 多模块控制方案比较
文献[7-8]中提出的多模块控制方案,是以自定义的某种格式将控制信息打包发送给FPGA,再由FPGA的解析程序将控制信息提取出来。其优点是控制信息设置更为多样,但在程序实现上较为复杂,消耗FPGA资源。本方案运用CYUSB3014芯片的引脚与资源优势,将控制指令进行相对独立地专门传输,从模块实现中可以看出程序相较简单,通过对CYUSB3014硬件资源的合理分配,节约了FPGA资源。本文按照文献[7-8]方案思路编写了接口控制逻辑代码,并测试了其FPGA资源占用情况,与本方案的对比结果如表 3所示。
表 3 控制接口逻辑FPGA资源占用情况对比
从表中可以看出,由于本方案额外设置了4位控制指令接口,所以I/O口比其他两个方案多4个,而在Registers和LUTs使用数量上则大大减少。因此本方案能够有效节约FPGA资源。
Firmware Design of USB3.0 Controller to Support Multi Information Security Calculating Modules
-
摘要: USB3.0接口以其高速稳定的数据传输能力,已经成为硬件设备的主流接口。该文针对安全运算模块设计中对多模块控制的需求问题,提出了一种可用于多安全运算模块的USB3.0控制器固件设计方法。该方法充分运用CYUSB3014芯片和FPGA芯片的硬件资源,设计了接口传输模式配置、DMA通道、GPIF Ⅱ接口控制逻辑等主要模块的固件程序。经测试,该方案能够有效控制多安全运算模块对PC端数据进行加解密处理,且传输速度能达到330.3MB/s,相比现有设计提升37%,实现了数据的高速可靠传输,具有较好应用前景。Abstract: USB3.0 interface has become the mainstream interface in hardware devices for its high-speed and stable transmission capacity. In order to solve the issue of multi-module control during the design of security calculating modules, an improved firmware design scheme for USB3.0 controller is proposed to support multiple security calculating module. Our scheme fully utilizes the hardware resources in CYUSB3014 chip and field programmable gate array (FPGA) chip. The firmware programs in main modules such as the interface transfer configuration mode, the direct memory access (DMA) channel, and general programmable interface (GPIF) Ⅱ control logic are also designed. Test results show that our scheme can effectively control the encryption and decryption operations by using of multiple security calculating module, and the data transmission rate can reach 330.3MB/s, which increases about 37% compared with the other schemes, and achieves the high-speed and reliable data transmission with broad prospects in application.
-
Key words:
- CYUSB3014 /
- FPGA /
- multi-module /
- USB3.0
-
表 1 USB数据传输类型特点
传输类型 传输数据特点 控制传输 少量数据、无传输时间要求、传输有保证 批量传输 大量数据、无传输时间和传输速率要求 中断传输 少量或中量数据、有周期要求 同步传输 大量数据、速率恒定、有周期性 表 2 FPGA资源占用情况
逻辑利用 实际使用 可供使用 利用率/% Slice Registers数量 3 424 18 224 18 Slice LUTs数量 5 845 9 112 64 全占用的LUT-FF对数量 2 999 6 270 47 bonded IOBs数量 50 186 26 Block RAM/FIFO数量 4 32 12 BUFG/BUFGCTRLs数量 1 16 6 -
[1] TAKUMA U, RYOHEI K, KENJI K. A challenge of portable and high-speed FPGA accelerator[C]//11th International Symposium on Applied Reconfigurable Computing. Berlin: Springer, 2015: 383-392. [2] HE F. USB Port and power delivery: an overview of USB port interoperability[C]//IEEE Symposium on Product Compliance Engineering. Chicago: IEEE, 2015: 1-5. [3] GURU R P, SUNDRAM C K. Verilog module for on the Go implementation[C]//International Conference on Energy Efficient Technologies for Sustainability. Nageycoil: IEEE, 2016: 768-774. [4] SUDHAKARAN S, CHEUNG W M, MCDONALDMAIER K D, et al. UML based hierarchical state diagram approach for protocol designs[C]//2nd Computer Science and Electronic Engineering Conference. Colchester: IEEE, 2010: 1-6. [5] MOHAMED R S, ANNAMALAI A M. Design of channel sounder using an agile RF transceiver based USRP3 and Matlab/Simulink[C]//IEEE Region 10 Conference. Singapore: IEEE, 2016: 3494-3497. [6] THONGKHOME K, THANAVIJITPUN C, CHOOMCHUAY S. A FPGA design of AES core architecture for portable hard disk[C]//8th International Joint Conference on Computer Science and Software Engineering. Nekton Pathom: IEEE, 2011: 223-228. [7] 朱耀麟, 马慧铭. USB3.0超高速多串口传输系统的设计[J].电子技术应用, 2013(9):129-131. doi: 10.3969/j.issn.0258-7998.2013.09.041 ZHU Yao-lin, MA Hui-ming. Design of ultra-high-speed and multi-serial transmission system based on USB3.0[J]. Applications of Electronic Technique, 2013(9):129-131. doi: 10.3969/j.issn.0258-7998.2013.09.041 [8] 陈松.基于USB3.0的高速数据传输系统的研究与设计[D].成都: 电子科技大学, 2014. http://cdmd.cnki.com.cn/Article/CDMD-10614-1015705849.htm CHEN Song. Research and design of the high speed data transmission system based on USB 3.0[D]. Chengdu: University of Electronic Science and Technology of China, 2014. http://cdmd.cnki.com.cn/Article/CDMD-10614-1015705849.htm [9] JANBEN B, HUBNER M, JAESCHKE T. An AXI compatible cypress EZ-USB FX3 interface for USB-3.0 super speed[C]//International Conference on ReConFigurable Computing and FPGAs. Cancum: IEEE, 2014: 1-4. [10] CHEN J, SONG K, YANG J. A standard electronics plug-in for TDCR based on high speed high resolution ADCs[C]//19th IEEE-NPSS Real Time Conference. Nara: IEEE, 2014: 1-3. [11] LYU C, PENG J, ZHOU W, et al. Design of a high speed 360-degree panoramic video acquisition system based on FPGA and USB 3.0[J]. IEEE Sensors Journal, 2016, 11:1. http://cn.bing.com/academic/profile?id=7cb8c959052e1766bc3b394a427f8149&encoded=0&v=paper_preview&mkt=zh-cn [12] WILLIAMS I, LUAN S, JACKSON A, et al. Live demonstration: a scalable 32-channel neural recording and real-time FPGA based spike sorting system[C]//IEEE Biomedical Circuits and Systems Conference. Atlanta: IEEE, 2015: 1-5. [13] QIAN Y, FEI J. A USB3.0-based design of high-speed data channel for charge coupled devices system[C]//IEEE International Conference on Consumer Electronics. Taipei, China: IEEE, 2015: 442-443. [14] QIAN Y J, CUI K. Design of high speed CCD data acquisition system based on FPGA and USB3.0[C]//International Conference on Information and Communication Technology Convergence. Joju: IEEE, 2015: 254-256. [15] LIN Sheng-zhao, ZHANG Hong-fei, CUI Ke, et al. Generic design of master board of CCD controller[C]//19th IEEE-NPSS Real Time Conference. Nara: IEEE, 2014: 1-2.