《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 高速大容量記錄儀的USB 3.0高速讀數(shù)接口設(shè)計(jì)
高速大容量記錄儀的USB 3.0高速讀數(shù)接口設(shè)計(jì)
2016年電子技術(shù)應(yīng)用第12期
張志偉1,2,靳 鴻1,2,楊少博1,2
1.中北大學(xué) 電子測試技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051; 2.中北大學(xué) 儀器科學(xué)與動態(tài)測試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原030051
摘要: 針對當(dāng)前USB 2.0已不能滿足對高速大容量數(shù)據(jù)記錄儀快速讀數(shù)的要求,設(shè)計(jì)了一種基于USB 3.0的高速讀數(shù)接口。系統(tǒng)以存儲陣列構(gòu)建的某高速大容量機(jī)載雷達(dá)數(shù)據(jù)記錄儀為背景,USB 3.0采用Slave FIFO接口模式,以記錄儀的FPGA為外部主控制器,在FPGA內(nèi)部構(gòu)建一個高速FIFO實(shí)現(xiàn)對存儲數(shù)據(jù)的緩存與傳輸,最后通過USB 3.0接口高速傳輸至計(jì)算機(jī)。重點(diǎn)介紹了USB 3.0讀數(shù)接口硬件及其固件程序和FPGA控制程序的設(shè)計(jì),并采用GPIF Designer II及Quartus II軟件進(jìn)行仿真與驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,該USB 3.0接口速率可達(dá)120 MB/s,滿足記錄儀高速讀取的要求。
關(guān)鍵詞: USB3.0 高速大容量 FPGA Flash
中圖分類號: TP334
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.12.014
中文引用格式: 張志偉,靳鴻,楊少博. 高速大容量記錄儀的USB 3.0高速讀數(shù)接口設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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 引言

    遙測、遙感以及雷達(dá)圖像信號具有精度高、數(shù)據(jù)快、容量大的特點(diǎn),在飛行器飛行過程中無法做到實(shí)時分析和處理,而必須將采集到的數(shù)據(jù)以適當(dāng)?shù)姆绞酱鎯ζ饋?,待飛行任務(wù)結(jié)束后進(jìn)行回讀分析[1]。隨著其傳輸速度和數(shù)據(jù)量的不斷增加,記錄儀的存儲容量也隨之增大。目前計(jì)算機(jī)常用的外部接口RS232、USB 2.0及以太網(wǎng)接口等[3,4]已無法滿足記錄儀存儲數(shù)據(jù)的快速讀取,而USB 3.0[5]技術(shù)的出現(xiàn)無疑解決了這一問題。USB 3.0協(xié)議向下兼容其他版本,并提供了超速模式,其理論最高傳輸速率可達(dá)5 Gb/s。本文以某高速大容量機(jī)載雷達(dá)數(shù)據(jù)記錄儀為例[6],針對流水線技術(shù)構(gòu)建的高速大容量存儲陣列,設(shè)計(jì)了一種基于USB3.0的高速讀數(shù)接口。

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

    高速大容量數(shù)據(jù)記錄儀結(jié)構(gòu)框圖如圖1所示,系統(tǒng)主要完成18 bit LVDS形式的數(shù)據(jù)(包括16 bit并行數(shù)據(jù)、1 bit時鐘信號和1 bit寫使能信號)的實(shí)時接收、FIFO緩存、Flash流水線存儲以及USB 3.0數(shù)據(jù)上傳。16 bit并行數(shù)據(jù)傳輸速率為120 MB/s,LVDS數(shù)據(jù)經(jīng)LVDS接口電路轉(zhuǎn)換為TTL電平以及數(shù)字隔離處理后輸入到FPGA,在FPGA內(nèi)部Flash控制器的控制下寫入Flash存儲整列中;記錄儀記錄完成后,若需要讀數(shù)時,可通過USB 3.0接口將存儲陣列中的數(shù)據(jù)快速上傳至計(jì)算機(jī)。

ck2-t1.gif

    系統(tǒng)存儲模塊采用16片NAND型Flash芯片K9WBG08U1[7,8]構(gòu)建成4×4存儲陣列,每組4片F(xiàn)lash,采用了8級流水線操作進(jìn)行字?jǐn)U展,最快存儲速率可達(dá)39.96 MB/s。4組Flash進(jìn)行位擴(kuò)展組成數(shù)據(jù)寬度為32 bit、存儲容量共64 GB的存儲陣列,F(xiàn)lash存儲陣列存儲速度最高可達(dá)39.96×4=159.85 MB/s。存儲陣列結(jié)構(gòu)原理如圖2所示。

ck2-t2.gif

2 USB 3.0讀數(shù)接口設(shè)計(jì)

    系統(tǒng)采用基于CYUSB3014的USB 3.0接口實(shí)現(xiàn)與計(jì)算機(jī)之間的數(shù)據(jù)通信。CYUSB3014是新一代USB 3.0外設(shè)控制器[9],其有32個物理端點(diǎn),支持USB 3.0和USB 2.0設(shè)備以及2.0版的高速移動(HS-OTG)主機(jī)和外設(shè)。CYUSB3014有3種接口模式,即通用I/O口模式、從設(shè)備(Slave FIFO)接口模式和GPIF主設(shè)備接口模式。高速數(shù)據(jù)傳輸采用后兩種模式。本設(shè)計(jì)采用同步Slave FIFO接口模式[7,8],F(xiàn)PGA作為邏輯控制器,CYUSB3014作為從設(shè)備。FPGA與CYUSB3014的連接如圖3所示。

ck2-t3.gif

    圖3中SLCS為片選信號,低電平有效;SLWR為從設(shè)備寫入選通,低電平有效(寫操作:由FPGA至CYUSB3014);SLRD為從設(shè)備讀取選通,低電平有效(讀操作:由CYUSB3014至FPGA);SLOE為從設(shè)備輸出使能,低電平有效,激活該信號則CYUSB3014數(shù)據(jù)總線被驅(qū)動。A1和A0兩位地址線用來選擇從設(shè)備CYUSB3014上的線程,F(xiàn)PGA主控先驅(qū)動這兩位地址線,然后激活讀選通或?qū)戇x通,由于USB 3.0讀數(shù)接口將數(shù)據(jù)記錄儀的數(shù)據(jù)回傳至計(jì)算機(jī),需用到CYUSB3014的讀FIFO和寫FIFO兩個過程,所以必須創(chuàng)建兩個線程;當(dāng)A1:A0=0時,選擇線程0,用于寫過程;當(dāng)A1:A0=1時,選擇線程1,用于讀過程。FLAGA和FLAGB為CYUSB3014端點(diǎn)緩沖器狀態(tài)標(biāo)志位,可以配置為空、滿、局部空或局部滿狀態(tài);FLAGA專用于線程0,而FLAGB專用于線程1。PKTEND是數(shù)據(jù)包結(jié)束信號,低電平有效,可將短數(shù)據(jù)包或零長度數(shù)據(jù)包寫入從設(shè)備FIFO內(nèi)。PCLK是FPGA提供給CYUSB3014的FIFO接口時鐘,D[32:0]為32 bit數(shù)據(jù)線。

    同步Slave FIFO寫序列如圖4所示,單次寫操作步驟如下:

ck2-t4.gif

    (1)主設(shè)備先驅(qū)動FIFO地址“An”,然后激活SLCS信號,主設(shè)備將它的數(shù)據(jù)驅(qū)動到數(shù)據(jù)總線上。

    (2)激活SLCS后,主設(shè)備將在下一個時鐘周期內(nèi)激活SLWR。

    (3)激活SLWR時,主設(shè)備會將數(shù)據(jù)寫入到FIFO內(nèi),并且FIFO指針會在PCLK的上升沿上遞增。從時鐘的上升沿算起,經(jīng)過3個時鐘周期以及tCFLG的延時,F(xiàn)IFO標(biāo)志將被更新。

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

3 USB3.0接口主要程序設(shè)計(jì)

3.1 CYUSB3014固件程序設(shè)計(jì)

    為了實(shí)現(xiàn)數(shù)據(jù)雙向傳輸,創(chuàng)建2個DMA通道作為生產(chǎn)者的套接字和作為消費(fèi)者的套接字,并分別分配4倍緩沖區(qū)大小。由于USB 3.0模式下單個緩沖區(qū)大小為1 024 B,故套接字緩沖區(qū)大小為4×1 024 B,可實(shí)現(xiàn)高吞吐量性能。通過外部邏輯控制器控制每次傳輸數(shù)據(jù)量,可避免使用局部FLAG。

    按照圖3定義好的FPGA與CYUSB3014的連接,利用GPIF Designer II軟件進(jìn)行接口設(shè)置,GPIF II接口定義如圖5所示。圖中CLK即為FPGA提供給CYUSB3014的時鐘,Databus為16 bit數(shù)據(jù)總線,Addressbus為用于線程選擇的2 bit地址線,F(xiàn)LAGA專用于線程0,而FLAGB專用于線程1。

ck2-t5.gif

    GPIF II提供256種固件可編程狀態(tài),可在狀態(tài)機(jī)設(shè)計(jì)界面進(jìn)行狀態(tài)機(jī)設(shè)計(jì)。本應(yīng)用中狀態(tài)機(jī)如圖6所示,共有6個狀態(tài),分別為RESET(初始態(tài))、READ(讀FIFO)、WRITE(寫FIFO)、ZLP(零長度數(shù)據(jù)包)、SHORT_PKT(短數(shù)據(jù)包)、IDLE(空閑態(tài))。對于來自初始態(tài)的所有轉(zhuǎn)換,轉(zhuǎn)換公式被固定為LOGIC_ONE。

ck2-t6.gif

    寫FIFO過程如下:每當(dāng)FLAGA=1,外部邏輯控制器可向CYUSB3014寫入數(shù)據(jù),CYUSB3014進(jìn)入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操作對來自數(shù)據(jù)總線的數(shù)據(jù)進(jìn)行采樣,然后將其轉(zhuǎn)移到所指定的位置(DMA通道或固件應(yīng)用)。在ZLP狀態(tài)和SHORT_PKT狀態(tài),通過COMMIT操作可強(qiáng)制緩沖器/數(shù)據(jù)包結(jié)束。寫FIFO過程仿真時序如圖7所示。

ck2-t7.gif

3.2 FPGA程序設(shè)計(jì)

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

    使用ModelSim軟件對讀數(shù)過程進(jìn)行功能仿真,結(jié)果如圖8所示。讀數(shù)過程通過A1:A0=0選擇線程0,F(xiàn)LAGA用于監(jiān)視當(dāng)前線程的狀態(tài),當(dāng)FLAGA為1時表示非滿。SLCS一直為低電平有效狀態(tài),當(dāng)SLWR為低電平時,F(xiàn)PGA可向CYUSB3014寫入數(shù)據(jù)。數(shù)據(jù)在時鐘上升沿寫入CYUSB3014套接字緩沖區(qū),緊接著CYUSB3014啟動DMA通道,當(dāng)緩沖區(qū)寫滿數(shù)據(jù)后,F(xiàn)LAGA下拉至低電平,相應(yīng)的DMA回調(diào)函數(shù)被調(diào)用,數(shù)據(jù)從U端口上傳至計(jì)算機(jī)。

ck2-t8.gif

4 分析與測試

    將記錄儀連接至計(jì)算機(jī),打開Cypress公司提供的速率測試工具C++ Streamer,并按照CYUSB3014固件程序進(jìn)行配置,利用該軟件對USB3.0接口讀數(shù)過程速率進(jìn)行測試,測試結(jié)果如圖9所示,平均速率達(dá)到123 200 KB/s(約120 MB/s)。按照此速率,此高速大容量記錄儀存儲的海量數(shù)據(jù)能夠快速回傳至上位機(jī)。

ck2-t9.gif

5 結(jié)束語

    本文主要介紹了一種高速大容量機(jī)載雷達(dá)數(shù)據(jù)記錄儀,針對流水線技術(shù)構(gòu)建的高速大容量存儲陣列,設(shè)計(jì)了一種基于USB 3.0的高速讀數(shù)接口。USB 3.0采用Slave FIFO接口模式,詳細(xì)介紹了GPIF II狀態(tài)機(jī)設(shè)計(jì),利用數(shù)據(jù)記錄儀FPGA作為外部主控制器。在該應(yīng)用中,USB 3.0接口速率可達(dá)120 MB/s,系統(tǒng)工作穩(wěn)定,實(shí)現(xiàn)了對系統(tǒng)存儲數(shù)據(jù)的快速讀取,為高速大容量存儲系統(tǒng)的快速讀數(shù)提供了一種全新的手段,且具有一定的通用性,可以擴(kuò)展到所有類似Flash存儲系統(tǒng)中,具有一定的使用價值。

參考文獻(xiàn)

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

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

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

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

[5] 岳孝忠,裴東興,王健.基于USB3.0接口高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J].電子器件,2015(1):140-143.

[6] 任敏,張艷兵,王歡,等.基于硬件控制的雙通道機(jī)載數(shù)據(jù)記錄儀[J].探測與控制學(xué)報(bào),2014,36(3):82-85.

[7] 劉東海,任勇峰,儲成君.基于FPGA控制的NAND Flash存儲設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2013,13(34):10349-10353.

[8] 梁永剛,崔永俊,郇弢.基于NAND型FLASH的雙備份固態(tài)存儲系統(tǒng)[J].科學(xué)技術(shù)與工程,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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。