留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

支持多安全运算模块的USB3.0控制器固件设计

杨亚涛 曲鸣 曹广灿 蔡居良

杨亚涛, 曲鸣, 曹广灿, 蔡居良. 支持多安全运算模块的USB3.0控制器固件设计[J]. 电子科技大学学报, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
引用本文: 杨亚涛, 曲鸣, 曹广灿, 蔡居良. 支持多安全运算模块的USB3.0控制器固件设计[J]. 电子科技大学学报, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
YANG Ya-tao, QU Ming, CAO Guang-can, CAI Ju-liang. Firmware Design of USB3.0 Controller to Support Multi Information Security Calculating Modules[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
Citation: YANG Ya-tao, QU Ming, CAO Guang-can, CAI Ju-liang. Firmware Design of USB3.0 Controller to Support Multi Information Security Calculating Modules[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006

支持多安全运算模块的USB3.0控制器固件设计

doi: 10.3969/j.issn.1001-0548.2019.02.006
基金项目: 

“十三五”国家密码发展基金 MMJJ20170110

详细信息
    作者简介:

    杨亚涛(1978-), 男, 博士, 副教授, 主要从事无线通信安全、密码学方面的研究.E-mail:yy2008@163.com

  • 中图分类号: TP391

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%,实现了数据的高速可靠传输,具有较好应用前景。
  • 图  1  CYUSB3014芯片基本框架

    图  2  方案硬件框图

    图  3  Slave FIFO接口连接

    图  4  GPIF Ⅱ接口读写流程

    图  5  调用SM4算法模块执行密码运算

    图  6  本方案与其他设计方案的接口传输速度对比

    表  1  USB数据传输类型特点

    传输类型 传输数据特点
    控制传输 少量数据、无传输时间要求、传输有保证
    批量传输 大量数据、无传输时间和传输速率要求
    中断传输 少量或中量数据、有周期要求
    同步传输 大量数据、速率恒定、有周期性
    下载: 导出CSV

    表  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
    下载: 导出CSV

    表  3  控制接口逻辑FPGA资源占用情况对比

    数量 本方案 文献[7] 文献[8]
    Slice Registers 24 89 88
    Slice LUTs 31 58 73
    IOBs 46 42 42
    BUFG 1 1 1
    下载: 导出CSV
  • [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.
  • [1] 许佳鹏, 王长鑫, 颜俊伟, 蒋洪灿, 孙志朋, 孔洁, 千奕, 苏弘.  CSR外靶径迹探测器的前端电子学升级 . 电子科技大学学报, 2023, 52(4): 562-567. doi: 10.12178/1001-0548.2022306
    [2] 孙志朋, 千奕, 孔洁, 杨海波, 佘乾顺, 赵红赟, 苏弘, 余玉洪, 唐述文, 张永杰, 方芳, 蒲天磊, 颜俊伟, 柯凌云.  用于深空粒子探测系统的自动标定装置研制 . 电子科技大学学报, 2021, 50(1): 30-35. doi: 10.12178/1001-0548.2020240
    [3] 杨亚涛, 张松涛, 李子臣, 张明舵, 曹广灿.  基于Zynq平台PCIE高速数据接口的设计与实现 . 电子科技大学学报, 2017, 46(3): 522-528. doi: 10.3969/j.issn.1001-0548.2017.03.008
    [4] 阎波, 张威威, 林水生.  基于FPGA的复数长方阵SVD算法 . 电子科技大学学报, 2015, 44(4): 481-486. doi: 10.3969/j.issn.1001-0548.2015.04.001
    [5] 李浪, 邹祎, 贺位位, 李仁发.  EPCBC密码算法的FPGA优化实现研究 . 电子科技大学学报, 2015, 44(1): 97-100. doi: 10.3969/j.issn.1001-0548.2015.01.016
    [6] 李文昌, 万理, 阮爱武, 宋子健, 于敦山.  应用于不同类型FPGA的多模式调试系统 . 电子科技大学学报, 2014, 43(5): 685-690. doi: 10.3969/j.issn.1001-0548.2014.05.009
    [7] 朱永金, 成友才.  应用于语音信号处理的FPGA并行访问设计 . 电子科技大学学报, 2012, 41(1): 158-160. doi: 10.3969/j.issn.1001-0548.2012.01.030
    [8] 谢小东, 李平, 范雪, 李文昌, 李威.  支持双向布线结构的一种半定制PLC设计方法 . 电子科技大学学报, 2011, 40(6): 937-940. doi: 10.3969/j.issn.1001-0548.2011.06.025
    [9] 林竞力, 敬龙江, 陈涛, 陈客松, 朱维乐.  CDTTB标准中LDPC码的编码结构设计 . 电子科技大学学报, 2009, 38(3): 341-344. doi: 10.3969/j.issn.1001-0548.2009.03.006
    [10] 李平, 廖永波, 阮爱武, 李威, 李文昌.  SoC软硬件协同技术的FPGA芯片测试新方法 . 电子科技大学学报, 2009, 38(5): 716-720. doi: 10.3969/j.issn.1001-0548.2009.05.034
    [11] 朱维乐, 钱贵锁, 杨刚, 陈伟.  高速整数开方电路的流水线设计 . 电子科技大学学报, 2008, 37(2): 229-231.
    [12] 覃岭, 邓小炜, 何子述, 段军棋.  宽带数字下变频的高效实现方法研究 . 电子科技大学学报, 2008, 37(5): 698-700,708.
    [13] 王洪, 吕幼新, 汪学刚, 刘磊.  宽带数字接收机的高效FPGA设计 . 电子科技大学学报, 2008, 37(3): 364-365,369.
    [14] 张海陵, 陈茄, 谭海云.  基于FPGA的模拟信号源系统设计 . 电子科技大学学报, 2006, 35(4): 461-463.
    [15] 钟洪声, 周国勇, 肖先赐.  一种快速测频的方法 . 电子科技大学学报, 2006, 35(1): 40-42,46.
    [16] 王林泉, 皮亦鸣, 陈晓宁, 肖欣.  基于FPGA的超高速FFT硬件实现 . 电子科技大学学报, 2005, 34(2): 152-155.
    [17] 陈俊, 汪学刚.  高效实时的抽取滤波器的FPGA实现 . 电子科技大学学报, 2005, 34(6): 755-758.
    [18] 王宇舟, 金声震.  基于FPGA的高速图像预处理系统设计 . 电子科技大学学报, 2005, 34(1): 12-15.
    [19] 崔明雷, 汪学刚.  用以太网物理层芯片实现的雷达远程通信 . 电子科技大学学报, 2005, 34(5): 607-610.
    [20] 陈新坤, 周东, 余敬东.  Manchester编码器的FPGA设计与实现 . 电子科技大学学报, 2003, 32(3): 324-327.
  • 加载中
图(6) / 表(3)
计量
  • 文章访问数:  5462
  • HTML全文浏览量:  1594
  • PDF下载量:  116
  • 被引次数: 0
出版历程
  • 收稿日期:  2017-11-06
  • 修回日期:  2018-04-25
  • 刊出日期:  2019-03-30

支持多安全运算模块的USB3.0控制器固件设计

doi: 10.3969/j.issn.1001-0548.2019.02.006
    基金项目:

    “十三五”国家密码发展基金 MMJJ20170110

    作者简介:

    杨亚涛(1978-), 男, 博士, 副教授, 主要从事无线通信安全、密码学方面的研究.E-mail:yy2008@163.com

  • 中图分类号: TP391

摘要: USB3.0接口以其高速稳定的数据传输能力,已经成为硬件设备的主流接口。该文针对安全运算模块设计中对多模块控制的需求问题,提出了一种可用于多安全运算模块的USB3.0控制器固件设计方法。该方法充分运用CYUSB3014芯片和FPGA芯片的硬件资源,设计了接口传输模式配置、DMA通道、GPIF Ⅱ接口控制逻辑等主要模块的固件程序。经测试,该方案能够有效控制多安全运算模块对PC端数据进行加解密处理,且传输速度能达到330.3MB/s,相比现有设计提升37%,实现了数据的高速可靠传输,具有较好应用前景。

English Abstract

杨亚涛, 曲鸣, 曹广灿, 蔡居良. 支持多安全运算模块的USB3.0控制器固件设计[J]. 电子科技大学学报, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
引用本文: 杨亚涛, 曲鸣, 曹广灿, 蔡居良. 支持多安全运算模块的USB3.0控制器固件设计[J]. 电子科技大学学报, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
YANG Ya-tao, QU Ming, CAO Guang-can, CAI Ju-liang. Firmware Design of USB3.0 Controller to Support Multi Information Security Calculating Modules[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
Citation: YANG Ya-tao, QU Ming, CAO Guang-can, CAI Ju-liang. Firmware Design of USB3.0 Controller to Support Multi Information Security Calculating Modules[J]. Journal of University of Electronic Science and Technology of China, 2019, 48(2): 195-201. doi: 10.3969/j.issn.1001-0548.2019.02.006
  • 在应用外接密码模块进行数据加密时,需要与计算机实现高速、准确地大批量数据传输,接口的选择至关重要。目前常用的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结合的架构,能灵活高效地实现多安全运算模块的功能。

    • CYUSB3014是Cypress公司生产的新一代的EZ-USB FX3系列外设控制器,具有高度集成的灵活性。CYUSB3014拥有高性能的32位ARM926EJ-S微处理器,该内核的工作频率可达200 MHz,能够用在对数据处理要求较高的场合。芯片内部还集成了一个512 KB嵌入式SRAM,用来存储代码、配置参数,同时作为芯片内部DMA通道的缓冲区。它具备一个并行通用可编程接口GPIF Ⅱ,可与任何处理器、FPGA等连接,还具有可连接至UART、SPI、I2C和I2S等串行外设的接口[9]

      CYUSB3014芯片与PC端通过USB3.0接口连接,与外设通过GPIF Ⅱ接口连接,在芯片内部,USB3.0接口和GPIF Ⅱ接口通过建立DMA通道完成数据传输。当运行固件程序时,CYUSB3014就会架设DMA通道,数据的流入流出,都必须通过DMA通道的缓冲区。

      图  1  CYUSB3014芯片基本框架

    • 对于含有多密码模块的USB3.0外设来说,需要由用户在PC端操作界面来选择指定模块进行数据处理,而无论是USB3.0接口还是GPIF Ⅱ接口,都没有为控制指令设置特殊的传输通道,因此固件开发者需要自主设置如何传输控制指令来进行多模块控制。一般的设计方案,将控制指令在PC端设置为具有特定格式的数据,在外设进行解析。实现起来编程较为复杂,容易出错。

      CYUSB3014芯片有丰富的引脚和固件API库,本文利用CYUSB3014的硬件资源,提出了一种新的思路,将数据传输通道与控制指令传输通道分离,设计了专用控制指令来进行数据传输。对CYUSB3014芯片而言,FPGA芯片控制着安全运算服务模块,作为外设部分,通过GPIF Ⅱ接口相连。所以CYUSB3014与FPGA的协调配合至关重要。本方案的硬件框架如图 2所示。

      图  2  方案硬件框图

      其中,PC端将需要处理的数据与控制指令通过USB3.0接口发送给CYUSB3014芯片,芯片将数据保存到内部DMA缓冲区中,将控制指令通过专用接口发送给FPGA。FPGA根据控制指令,判断数据处理方式,比如从CYUSB3014中读取数据发送给对应运算模块,或将运算模块处理后的数据发送回CYUSB3014。

    • 在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为缓冲区的状态标志位,可配置为空、满、局部空或局部满状态信号。

      图  3  Slave FIFO接口连接

      FPGA接收到CYUSB3014传来的控制指令后,由控制指令处理模块判断选择相应的安全运算模块进行读或写操作,当收到读指令时,先将数据由CYUSB3014读出存入FPGA数据接收缓存区中,再将缓存区的数据发送给运算模块,待完成运算后,将数据从安全运算模块中读取存入数据发送缓存区中,当接收到PC端传入的写指令后,将数据发送给CYUSB3014。流程如图 4所示。

      图  4  GPIF Ⅱ接口读写流程

    • 使用CyFxSlFifoApplnStart (void)函数启动Slave FIFO传输应用程序,在这个函数中,将对USB端点以及DMA通道进行配置[12]

      创建两个DMA AUTO通道,分别用于USB- > GPIF、GPIF- > USB的数据传输,DMA通道的大小依赖于USB总线的速度。

      dmaCfg.size = size*6;

      dmaCfg.count = SLFIFO_DMA_BUF_COUNT;

      dmaCfg.prodSckId=PRODUCER_USB_SOCKET;

      dmaCfg.consSckId = CONSUMER_PPORT_ SOCKET;

      dmaCfg.dmaMode = U3P_DMA_MODE_BYTE;

      apiRetStatus = CyU3PDmaChannelCreate ( & glChHandleSlFifoUtoP, U3P_DMA_TYPE_AUTO, & dmaCfg);

      dmaCfg.prodSckId = RODUCER_PPORT_ SOCKET;

      dmaCfg.consSckId = CONSUMER_USB_ SOCKET;

      dmaCfg.cb = NULL;

      apiRetStatus = CyU3PDmaChannelCreate ( & glChHandleSlFifoPtoU, U3P_DMA_TYPE_AUTO, & dmaCfg);

      设置DMA通道传输大小:

      apiRetStatus = CyU3PDmaChannelSetXfer ( & glChHandleSlFifoUtoP, SLFIFO_DMA_TX_SIZE);

      apiRetStatus = CyU3PDmaChannelSetXfer ( & glChHandleSlFifoPtoU, SLFIFO_DMA_RX_SIZE);

    • 1) 通过控制端点,设置自定义的请求处理。在USB控制传输事务处理的建立阶段,主机采用SETUP事务向USB设备发送控制请求。固件程序通过CyFxSlFifoApplnUSBSetupCB()函数,从SETUP请求中解码各个字段:

      bReqType = (setupdat0 & REQUEST_TYPE_ MASK);

      bType = (bReqType & TYPE_MASK);

      bTarget = (bReqType & TARGET_MASK);

      bRequest = ((setupdat0 & REQUEST_MASK) > > REQUEST_POS);

      wValue = ((setupdat0 & VALUE_MASK) > > VALUE_POS);

      wIndex = ((setupdat1 & INDEX_MASK) > > CY_U3P_USB_INDEX_POS);

      2) 自定义设置控制指令请求处理,实现对多模块的控制信号。

      例如,通过SETUP事务数据字段中的wValue值的改变,来控制I\O接口输出不同的控制信号,实现对不同的外设模块的控制。

      if((bType == CY_U3P_USB_VENDOR_RQT) & & (bRequest==TransferCntl))

      { if(wValue==0x0001)

        { CyU3PGpioSetValue(27, CyFalse);

          CyU3PGpioSetValue(26, CyFalse);

          CyU3PGpioSetValue(25, CyFalse);

          CyU3PGpioSetValue(23, CyTrue); }

        else if(wValue==0x0002)...

        else if (wValue == 0x0003)...

      else if (wValue == 0x0004)...

        ...

      }

    • FPGA中,使用Verilog HDL编写控制模块。FPGA中的数据接收模块和数据发送模块,调用了FPGA芯片中的FIFO IP核,调用代码如下:

      fifo u1(

        .clk(CLK), .rst(rst), .din(infifo_din), .dout(infifo_dout),

        .wr_en(infifo_wr_en), .rd_en(infifo_rd_en),

        .full(infifo_full), .empty(infifo_empty));

      fifo u2(

        .clk(CLK), .rst(rst), .din(outfifo_din), .dout(outfifo_dout),

        .wr_en(outfifo_wr_en), .rd_en(outfifo_rd_en),

        .full(outfifo_full), .empty(outfifo_empty));

      控制指令处理模块主要代码如下:

      case(CTRL)

      4'b0001:begin DIR < =UtoP; MODULE < = M_SM4_ENC; end

      4'b0010:begin DIR < =PtoU; MODULE < = M_SM4_ENC; end

      ......

      其中,DIR表示数据传输方向,MODULE表示选择的用于数据运算的模块。

    • 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,密文解密后与明文一致,运算结果正确。

      图  5  调用SM4算法模块执行密码运算

      调用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是与其他固件设计方案接口传输速度的测试结果对比。

      图  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资源占用情况对比

      数量 本方案 文献[7] 文献[8]
      Slice Registers 24 89 88
      Slice LUTs 31 58 73
      IOBs 46 42 42
      BUFG 1 1 1

      从表中可以看出,由于本方案额外设置了4位控制指令接口,所以I/O口比其他两个方案多4个,而在Registers和LUTs使用数量上则大大减少。因此本方案能够有效节约FPGA资源。

    • 本文基于CYUSB3014和FPGA架构,提出了可支持多个密码运算模块的USB3.0控制器的固件设计方案,设计实现了接口传输模式配置、DMA通道、GPIF Ⅱ接口控制逻辑等主要模块,根据固件测试结果,本方案可以有效进行多密码运算模块控制,且接口传输速度达到了330.3 MB/s,实现了USB3.0模块的高速数据传输功能。下一步,进一步优化DMA通道设计,以更好地提升对外设运算模块的支持性能。

参考文献 (15)

目录

    /

    返回文章
    返回