《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 高速大容量記錄儀的USB 3.0高速讀數接口設計
高速大容量記錄儀的USB 3.0高速讀數接口設計
2016年電子技術應用第12期
張志偉1,,2,,靳 鴻1,2,楊少博1,2
1.中北大學 電子測試技術國家重點實驗室,山西 太原030051,; 2.中北大學 儀器科學與動態(tài)測試教育部重點實驗室,山西 太原030051
摘要: 針對當前USB 2.0已不能滿足對高速大容量數據記錄儀快速讀數的要求,,設計了一種基于USB 3.0的高速讀數接口,。系統(tǒng)以存儲陣列構建的某高速大容量機載雷達數據記錄儀為背景,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協(xié)議向下兼容其他版本,,并提供了超速模式,,其理論最高傳輸速率可達5 Gb/s。本文以某高速大容量機載雷達數據記錄儀為例[6],,針對流水線技術構建的高速大容量存儲陣列,,設計了一種基于USB3.0的高速讀數接口。

1 高速大容量存儲系統(tǒng)概述

    高速大容量數據記錄儀結構框圖如圖1所示,,系統(tǒng)主要完成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

    系統(tǒng)存儲模塊采用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讀數接口設計

    系統(tǒng)采用基于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兩個過程,,所以必須創(chuàng)建兩個線程,;當A1:A0=0時,選擇線程0,,用于寫過程,;當A1:A0=1時,選擇線程1,,用于讀過程,。FLAGA和FLAGB為CYUSB3014端點緩沖器狀態(tài)標志位,可以配置為空,、滿,、局部空或局部滿狀態(tài);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標志將被更新,。

    對于連續(xù)寫入模式,,主設備在整個寫入過程中持續(xù)激活SLWR和SLCS。主設備激活SLWR后,,每當PCLK的上升沿到來時,,數據總線上的數值都被寫入到FIFO中。通過PKTEND信號,,可主動將某個短數據包發(fā)送給USB主機,。如果激活PKTEND但不激活SLWR脈沖,就生成ZLP(零長度的數據包),;同時激活PKTEND和SLWR時,,CYUSB3014的GPIF II狀態(tài)機會將數據包作為一個短數據包,并將其發(fā)送到USB接口,。

3 USB3.0接口主要程序設計

3.1 CYUSB3014固件程序設計

    為了實現數據雙向傳輸,,創(chuàng)建2個DMA通道作為生產者的套接字和作為消費者的套接字,并分別分配4倍緩沖區(qū)大小,。由于USB 3.0模式下單個緩沖區(qū)大小為1 024 B,,故套接字緩沖區(qū)大小為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種固件可編程狀態(tài),,可在狀態(tài)機設計界面進行狀態(tài)機設計。本應用中狀態(tài)機如圖6所示,,共有6個狀態(tài),,分別為RESET(初始態(tài))、READ(讀FIFO),、WRITE(寫FIFO),、ZLP(零長度數據包)、SHORT_PKT(短數據包),、IDLE(空閑態(tài)),。對于來自初始態(tài)的所有轉換,轉換公式被固定為LOGIC_ONE,。

ck2-t6.gif

    寫FIFO過程如下:每當FLAGA=1,,外部邏輯控制器可向CYUSB3014寫入數據,CYUSB3014進入WRITE狀態(tài)需滿足SLCS=0,、SLWR=0,、PKTEND=1、SLRD=1,。在WRITE狀態(tài)CYUSB3014完成IN_ADDR和IN_DATA兩個操作,。通過IN_ADDR操作,GPIF硬件采樣來自地址總線的值,,并使用它選擇DMA線程,。通過IN_DATA操作對來自數據總線的數據進行采樣,然后將其轉移到所指定的位置(DMA通道或固件應用),。在ZLP狀態(tài)和SHORT_PKT狀態(tài),,通過COMMIT操作可強制緩沖器/數據包結束。寫FIFO過程仿真時序如圖7所示,。

ck2-t7.gif

3.2 FPGA程序設計

    記錄儀采集到的數據以8級流水線方式寫入到Flash存儲陣列,,即在寫入過程中同時對4組Flash執(zhí)行頁編程操作,故Flash陣列數據讀寫的基本單位的容量為4×4 KB=16 KB,,數據寬度為4×8 bit=32 bit,。為了保證讀出數據與寫入數據完全一致,同樣采用流水線的方式對Flash存儲陣列中4組存儲單元執(zhí)行讀數操作,。在FPGA內部建立一個容量為4 096×32 bit=128 Kbit的FIFO,,FIFO數據端設置為32 bit,32 bit輸出,,深度為4 096,。K9WBG08U1M的單個字節(jié)的讀取速度最快為25 ns。當記錄儀執(zhí)行讀數操作時,,數據寫入FIFO,,一旦FIFO滿后,,FIFO滿標志位有效,同時使FIFO寫使能無效以及Flash存儲陣列停止讀操作,,當CYUSB3014的SLWR位檢測到FIFO的滿標志位后,,使FIFO讀使能有效,開始將FIFO中的數據寫入CYUSB3014中,。本設計中Flash的讀寫時鐘設置為30 MHz,GPIF接口時鐘設置為80 MHz,。

    使用ModelSim軟件對讀數過程進行功能仿真,,結果如圖8所示。讀數過程通過A1:A0=0選擇線程0,,FLAGA用于監(jiān)視當前線程的狀態(tài),,當FLAGA為1時表示非滿。SLCS一直為低電平有效狀態(tài),,當SLWR為低電平時,,FPGA可向CYUSB3014寫入數據。數據在時鐘上升沿寫入CYUSB3014套接字緩沖區(qū),,緊接著CYUSB3014啟動DMA通道,,當緩沖區(qū)寫滿數據后,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狀態(tài)機設計,,利用數據記錄儀FPGA作為外部主控制器,。在該應用中,USB 3.0接口速率可達120 MB/s,,系統(tǒng)工作穩(wěn)定,,實現了對系統(tǒng)存儲數據的快速讀取,,為高速大容量存儲系統(tǒng)的快速讀數提供了一種全新的手段,且具有一定的通用性,,可以擴展到所有類似Flash存儲系統(tǒng)中,,具有一定的使用價值。

參考文獻

[1] 祖靜,,申湘南,,張文棟.存儲測試技術[J].兵工學報,1994(4):30-34.

[2] 安海磊.高速數據采集存儲系統(tǒng)設計[D].西安:西安電子科技大學,,2012.

[3] 張誠,,羅豐.基于千兆以太網的高速數據傳輸系統(tǒng)設計[J].電子科技,2011(1):44-46.

[4] 王輝,,陳愛生.基于FT2232H的USB2.0數據采集系統(tǒng)設計[J].電子器件,,2015(1):144-147.

[5] 岳孝忠,裴東興,,王健.基于USB3.0接口高速數據采集系統(tǒng)的設計[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的雙備份固態(tài)存儲系統(tǒng)[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網站原創(chuàng),,未經授權禁止轉載,。