《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 高速大容量记录仪的USB 3.0高速读数接口设计
高速大容量记录仪的USB 3.0高速读数接口设计
2016年电子技术应用第12期
张志伟1,2,靳 鸿1,2,杨少博1,2
1.中北大学 电子测试技术国家重点实验室,山西 太原030051; 2.中北大学 仪器科学与动态测试教育部重点实验室,山西 太原030051
摘要: 针对当前USB 2.0已不能满足对高速大容量数据记录仪快速读数的要求,设计了一种基于USB 3.0的高速读数接口。系统以存储阵列构建的某高速大容量机载雷达数据记录仪为背景,USB 3.0采用Slave FIFO接口模式,以记录仪的FPGA为外部主控制器,在FPGA内部构建一个高速FIFO实现对存储数据的缓存与传输,最后通过USB 3.0接口高速传输至计算机。重点介绍了USB 3.0读数接口硬件及其固件程序和FPGA控制程序的设计,并采用GPIF Designer II及Quartus II软件进行仿真与验证。实验结果表明,该USB 3.0接口速率可达120 MB/s,满足记录仪高速读取的要求。
中图分类号: TP334
文献标识码: A
DOI:10.16157/j.issn.0258-7998.2016.12.014
中文引用格式: 张志伟,靳鸿,杨少博. 高速大容量记录仪的USB 3.0高速读数接口设计[J].电子技术应用,2016,42(12):54-57,61.
英文引用格式: Zhang Zhiwei,Jin Hong,Yang Shaobo. Designer of USB 3.0 high speed read interface in high speed and large capacity data recorder[J].Application of Electronic Technique,2016,42(12):54-57,61.
Designer of USB 3.0 high speed read interface in high speed and large capacity data recorder
Zhang Zhiwei1,2,Jin Hong1,2,Yang Shaobo1,2
1.National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China; 2.Key Laboratory of Electronic Science &Dynamic Measurement of Ministry of Education,North University of China, Taiyuan 030051,China
Abstract: At present, USB 2.0 has been unable to meet fast reading of the high speed and large capacity data recorder. High speed read interface based on USB 3.0 is designed. The system takes a high speed and large capacity airborne recorder based on memory array, USB 3.0 is Slave FIFO interface mode,and FPGA of the recorder is as an external master controller. A FIFO is established in FPGA to realize cache and transmission of stored data. Finally, the data is uploaded to the host computer by the interfaces of USB 3.0. This paper introduces mainly the design of USB 3.0 reading interface hardware and its firmware program and FPGA control program,using GPIF Designer II and Quartus II software for simulation and verification. Test results show that the rate of USB 3.0 interface transmission speed is up to 120 MB/s,which meets the requirements of high speed read.
Key words : USB 3.0;high speed and large capacity;FPGA;Flash

0 引言

    遥测、遥感以及雷达图像信号具有精度高、数据快、容量大的特点,在飞行器飞行过程中无法做到实时分析和处理,而必须将采集到的数据以适当的方式存储起来,待飞行任务结束后进行回读分析[1]。随着其传输速度和数据量的不断增加,记录仪的存储容量也随之增大。目前计算机常用的外部接口RS232、USB 2.0及以太网接口等[3,4]已无法满足记录仪存储数据的快速读取,而USB 3.0[5]技术的出现无疑解决了这一问题。USB 3.0协议向下兼容其他版本,并提供了超速模式,其理论最高传输速率可达5 Gb/s。本文以某高速大容量机载雷达数据记录仪为例[6],针对流水线技术构建的高速大容量存储阵列,设计了一种基于USB3.0的高速读数接口。

1 高速大容量存储系统概述

    高速大容量数据记录仪结构框图如图1所示,系统主要完成18 bit LVDS形式的数据(包括16 bit并行数据、1 bit时钟信号和1 bit写使能信号)的实时接收、FIFO缓存、Flash流水线存储以及USB 3.0数据上传。16 bit并行数据传输速率为120 MB/s,LVDS数据经LVDS接口电路转换为TTL电平以及数字隔离处理后输入到FPGA,在FPGA内部Flash控制器的控制下写入Flash存储整列中;记录仪记录完成后,若需要读数时,可通过USB 3.0接口将存储阵列中的数据快速上传至计算机。

ck2-t1.gif

    系统存储模块采用16片NAND型Flash芯片K9WBG08U1[7,8]构建成4×4存储阵列,每组4片Flash,采用了8级流水线操作进行字扩展,最快存储速率可达39.96 MB/s。4组Flash进行位扩展组成数据宽度为32 bit、存储容量共64 GB的存储阵列,Flash存储阵列存储速度最高可达39.96×4=159.85 MB/s。存储阵列结构原理如图2所示。

ck2-t2.gif

2 USB 3.0读数接口设计

    系统采用基于CYUSB3014的USB 3.0接口实现与计算机之间的数据通信。CYUSB3014是新一代USB 3.0外设控制器[9],其有32个物理端点,支持USB 3.0和USB 2.0设备以及2.0版的高速移动(HS-OTG)主机和外设。CYUSB3014有3种接口模式,即通用I/O口模式、从设备(Slave FIFO)接口模式和GPIF主设备接口模式。高速数据传输采用后两种模式。本设计采用同步Slave FIFO接口模式[7,8],FPGA作为逻辑控制器,CYUSB3014作为从设备。FPGA与CYUSB3014的连接如图3所示。

ck2-t3.gif

    图3中SLCS为片选信号,低电平有效;SLWR为从设备写入选通,低电平有效(写操作:由FPGA至CYUSB3014);SLRD为从设备读取选通,低电平有效(读操作:由CYUSB3014至FPGA);SLOE为从设备输出使能,低电平有效,激活该信号则CYUSB3014数据总线被驱动。A1和A0两位地址线用来选择从设备CYUSB3014上的线程,FPGA主控先驱动这两位地址线,然后激活读选通或写选通,由于USB 3.0读数接口将数据记录仪的数据回传至计算机,需用到CYUSB3014的读FIFO和写FIFO两个过程,所以必须创建两个线程;当A1:A0=0时,选择线程0,用于写过程;当A1:A0=1时,选择线程1,用于读过程。FLAGA和FLAGB为CYUSB3014端点缓冲器状态标志位,可以配置为空、满、局部空或局部满状态;FLAGA专用于线程0,而FLAGB专用于线程1。PKTEND是数据包结束信号,低电平有效,可将短数据包或零长度数据包写入从设备FIFO内。PCLK是FPGA提供给CYUSB3014的FIFO接口时钟,D[32:0]为32 bit数据线。

    同步Slave FIFO写序列如图4所示,单次写操作步骤如下:

ck2-t4.gif

    (1)主设备先驱动FIFO地址“An”,然后激活SLCS信号,主设备将它的数据驱动到数据总线上。

    (2)激活SLCS后,主设备将在下一个时钟周期内激活SLWR。

    (3)激活SLWR时,主设备会将数据写入到FIFO内,并且FIFO指针会在PCLK的上升沿上递增。从时钟的上升沿算起,经过3个时钟周期以及tCFLG的延时,FIFO标志将被更新。

    对于连续写入模式,主设备在整个写入过程中持续激活SLWR和SLCS。主设备激活SLWR后,每当PCLK的上升沿到来时,数据总线上的数值都被写入到FIFO中。通过PKTEND信号,可主动将某个短数据包发送给USB主机。如果激活PKTEND但不激活SLWR脉冲,就生成ZLP(零长度的数据包);同时激活PKTEND和SLWR时,CYUSB3014的GPIF II状态机会将数据包作为一个短数据包,并将其发送到USB接口。

3 USB3.0接口主要程序设计

3.1 CYUSB3014固件程序设计

    为了实现数据双向传输,创建2个DMA通道作为生产者的套接字和作为消费者的套接字,并分别分配4倍缓冲区大小。由于USB 3.0模式下单个缓冲区大小为1 024 B,故套接字缓冲区大小为4×1 024 B,可实现高吞吐量性能。通过外部逻辑控制器控制每次传输数据量,可避免使用局部FLAG。

    按照图3定义好的FPGA与CYUSB3014的连接,利用GPIF Designer II软件进行接口设置,GPIF II接口定义如图5所示。图中CLK即为FPGA提供给CYUSB3014的时钟,Databus为16 bit数据总线,Addressbus为用于线程选择的2 bit地址线,FLAGA专用于线程0,而FLAGB专用于线程1。

ck2-t5.gif

    GPIF II提供256种固件可编程状态,可在状态机设计界面进行状态机设计。本应用中状态机如图6所示,共有6个状态,分别为RESET(初始态)、READ(读FIFO)、WRITE(写FIFO)、ZLP(零长度数据包)、SHORT_PKT(短数据包)、IDLE(空闲态)。对于来自初始态的所有转换,转换公式被固定为LOGIC_ONE。

ck2-t6.gif

    写FIFO过程如下:每当FLAGA=1,外部逻辑控制器可向CYUSB3014写入数据,CYUSB3014进入WRITE状态需满足SLCS=0、SLWR=0、PKTEND=1、SLRD=1。在WRITE状态CYUSB3014完成IN_ADDR和IN_DATA两个操作。通过IN_ADDR操作,GPIF硬件采样来自地址总线的值,并使用它选择DMA线程。通过IN_DATA操作对来自数据总线的数据进行采样,然后将其转移到所指定的位置(DMA通道或固件应用)。在ZLP状态和SHORT_PKT状态,通过COMMIT操作可强制缓冲器/数据包结束。写FIFO过程仿真时序如图7所示。

ck2-t7.gif

3.2 FPGA程序设计

    记录仪采集到的数据以8级流水线方式写入到Flash存储阵列,即在写入过程中同时对4组Flash执行页编程操作,故Flash阵列数据读写的基本单位的容量为4×4 KB=16 KB,数据宽度为4×8 bit=32 bit。为了保证读出数据与写入数据完全一致,同样采用流水线的方式对Flash存储阵列中4组存储单元执行读数操作。在FPGA内部建立一个容量为4 096×32 bit=128 Kbit的FIFO,FIFO数据端设置为32 bit,32 bit输出,深度为4 096。K9WBG08U1M的单个字节的读取速度最快为25 ns。当记录仪执行读数操作时,数据写入FIFO,一旦FIFO满后,FIFO满标志位有效,同时使FIFO写使能无效以及Flash存储阵列停止读操作,当CYUSB3014的SLWR位检测到FIFO的满标志位后,使FIFO读使能有效,开始将FIFO中的数据写入CYUSB3014中。本设计中Flash的读写时钟设置为30 MHz,GPIF接口时钟设置为80 MHz。

    使用ModelSim软件对读数过程进行功能仿真,结果如图8所示。读数过程通过A1:A0=0选择线程0,FLAGA用于监视当前线程的状态,当FLAGA为1时表示非满。SLCS一直为低电平有效状态,当SLWR为低电平时,FPGA可向CYUSB3014写入数据。数据在时钟上升沿写入CYUSB3014套接字缓冲区,紧接着CYUSB3014启动DMA通道,当缓冲区写满数据后,FLAGA下拉至低电平,相应的DMA回调函数被调用,数据从U端口上传至计算机。

ck2-t8.gif

4 分析与测试

    将记录仪连接至计算机,打开Cypress公司提供的速率测试工具C++ Streamer,并按照CYUSB3014固件程序进行配置,利用该软件对USB3.0接口读数过程速率进行测试,测试结果如图9所示,平均速率达到123 200 KB/s(约120 MB/s)。按照此速率,此高速大容量记录仪存储的海量数据能够快速回传至上位机。

ck2-t9.gif

5 结束语

    本文主要介绍了一种高速大容量机载雷达数据记录仪,针对流水线技术构建的高速大容量存储阵列,设计了一种基于USB 3.0的高速读数接口。USB 3.0采用Slave FIFO接口模式,详细介绍了GPIF II状态机设计,利用数据记录仪FPGA作为外部主控制器。在该应用中,USB 3.0接口速率可达120 MB/s,系统工作稳定,实现了对系统存储数据的快速读取,为高速大容量存储系统的快速读数提供了一种全新的手段,且具有一定的通用性,可以扩展到所有类似Flash存储系统中,具有一定的使用价值。

参考文献

[1] 祖静,申湘南,张文栋.存储测试技术[J].兵工学报,1994(4):30-34.

[2] 安海磊.高速数据采集存储系统设计[D].西安:西安电子科技大学,2012.

[3] 张诚,罗丰.基于千兆以太网的高速数据传输系统设计[J].电子科技,2011(1):44-46.

[4] 王辉,陈爱生.基于FT2232H的USB2.0数据采集系统设计[J].电子器件,2015(1):144-147.

[5] 岳孝忠,裴东兴,王健.基于USB3.0接口高速数据采集系统的设计[J].电子器件,2015(1):140-143.

[6] 任敏,张艳兵,王欢,等.基于硬件控制的双通道机载数据记录仪[J].探测与控制学报,2014,36(3):82-85.

[7] 刘东海,任勇峰,储成君.基于FPGA控制的NAND Flash存储设计[J].科学技术与工程,2013,13(34):10349-10353.

[8] 梁永刚,崔永俊,郇弢.基于NAND型FLASH的双备份固态存储系统[J].科学技术与工程,2013,13(26):7675-7682.

[9] Cypress Semiconductor Corporation.EZ-USB FX3 super speed USB controller[EB/OL].(2011)[2016].http:www.cypress.com.

[10] Rama Sai Krishna V.Designing a GPIF II master interface[EB/OL].(2013)[2016].http:www.cypress.com.

[11] Rama Sai Krishna V.Designing with the EZ-USB FX3 slave FIFO interface[EB/OL].(2014)[2016].http:www.cypress.com.

此内容为AET网站原创,未经授权禁止转载。