《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(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é) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051; 2.中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原030051
摘要: 針對(duì)當(dāng)前USB 2.0已不能滿(mǎn)足對(duì)高速大容量數(shù)據(jù)記錄儀快速讀數(shù)的要求,設(shè)計(jì)了一種基于USB 3.0的高速讀數(shù)接口。系統(tǒng)以存儲(chǔ)陣列構(gòu)建的某高速大容量機(jī)載雷達(dá)數(shù)據(jù)記錄儀為背景,USB 3.0采用Slave FIFO接口模式,以記錄儀的FPGA為外部主控制器,在FPGA內(nèi)部構(gòu)建一個(gè)高速FIFO實(shí)現(xiàn)對(duì)存儲(chǔ)數(shù)據(jù)的緩存與傳輸,最后通過(guò)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,滿(mǎn)足記錄儀高速讀取的要求。
關(guān)鍵詞: USB3.0 高速大容量 FPGA Flash
中圖分類(lèi)號(hào): TP334
文獻(xiàn)標(biāo)識(shí)碼: 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 引言

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

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

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

ck2-t1.gif

    系統(tǒng)存儲(chǔ)模塊采用16片NAND型Flash芯片K9WBG08U1[7,8]構(gòu)建成4×4存儲(chǔ)陣列,每組4片F(xiàn)lash,采用了8級(jí)流水線(xiàn)操作進(jìn)行字?jǐn)U展,最快存儲(chǔ)速率可達(dá)39.96 MB/s。4組Flash進(jìn)行位擴(kuò)展組成數(shù)據(jù)寬度為32 bit、存儲(chǔ)容量共64 GB的存儲(chǔ)陣列,F(xiàn)lash存儲(chǔ)陣列存儲(chǔ)速度最高可達(dá)39.96×4=159.85 MB/s。存儲(chǔ)陣列結(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個(gè)物理端點(diǎn),支持USB 3.0和USB 2.0設(shè)備以及2.0版的高速移動(dòng)(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為片選信號(hào),低電平有效;SLWR為從設(shè)備寫(xiě)入選通,低電平有效(寫(xiě)操作:由FPGA至CYUSB3014);SLRD為從設(shè)備讀取選通,低電平有效(讀操作:由CYUSB3014至FPGA);SLOE為從設(shè)備輸出使能,低電平有效,激活該信號(hào)則CYUSB3014數(shù)據(jù)總線(xiàn)被驅(qū)動(dòng)。A1和A0兩位地址線(xiàn)用來(lái)選擇從設(shè)備CYUSB3014上的線(xiàn)程,F(xiàn)PGA主控先驅(qū)動(dòng)這兩位地址線(xiàn),然后激活讀選通或?qū)戇x通,由于USB 3.0讀數(shù)接口將數(shù)據(jù)記錄儀的數(shù)據(jù)回傳至計(jì)算機(jī),需用到CYUSB3014的讀FIFO和寫(xiě)FIFO兩個(gè)過(guò)程,所以必須創(chuàng)建兩個(gè)線(xiàn)程;當(dāng)A1:A0=0時(shí),選擇線(xiàn)程0,用于寫(xiě)過(guò)程;當(dāng)A1:A0=1時(shí),選擇線(xiàn)程1,用于讀過(guò)程。FLAGA和FLAGB為CYUSB3014端點(diǎn)緩沖器狀態(tài)標(biāo)志位,可以配置為空、滿(mǎn)、局部空或局部滿(mǎn)狀態(tài);FLAGA專(zhuān)用于線(xiàn)程0,而FLAGB專(zhuān)用于線(xiàn)程1。PKTEND是數(shù)據(jù)包結(jié)束信號(hào),低電平有效,可將短數(shù)據(jù)包或零長(zhǎng)度數(shù)據(jù)包寫(xiě)入從設(shè)備FIFO內(nèi)。PCLK是FPGA提供給CYUSB3014的FIFO接口時(shí)鐘,D[32:0]為32 bit數(shù)據(jù)線(xiàn)。

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

ck2-t4.gif

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

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

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

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

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

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

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

    按照?qǐng)D3定義好的FPGA與CYUSB3014的連接,利用GPIF Designer II軟件進(jìn)行接口設(shè)置,GPIF II接口定義如圖5所示。圖中CLK即為FPGA提供給CYUSB3014的時(shí)鐘,Databus為16 bit數(shù)據(jù)總線(xiàn),Addressbus為用于線(xiàn)程選擇的2 bit地址線(xiàn),F(xiàn)LAGA專(zhuān)用于線(xiàn)程0,而FLAGB專(zhuān)用于線(xiàn)程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個(gè)狀態(tài),分別為RESET(初始態(tài))、READ(讀FIFO)、WRITE(寫(xiě)FIFO)、ZLP(零長(zhǎng)度數(shù)據(jù)包)、SHORT_PKT(短數(shù)據(jù)包)、IDLE(空閑態(tài))。對(duì)于來(lái)自初始態(tài)的所有轉(zhuǎn)換,轉(zhuǎn)換公式被固定為L(zhǎng)OGIC_ONE。

ck2-t6.gif

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

ck2-t7.gif

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

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

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

ck2-t8.gif

4 分析與測(cè)試

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

ck2-t9.gif

5 結(jié)束語(yǔ)

    本文主要介紹了一種高速大容量機(jī)載雷達(dá)數(shù)據(jù)記錄儀,針對(duì)流水線(xiàn)技術(shù)構(gòu)建的高速大容量存儲(chǔ)陣列,設(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)了對(duì)系統(tǒng)存儲(chǔ)數(shù)據(jù)的快速讀取,為高速大容量存儲(chǔ)系統(tǒng)的快速讀數(shù)提供了一種全新的手段,且具有一定的通用性,可以擴(kuò)展到所有類(lèi)似Flash存儲(chǔ)系統(tǒng)中,具有一定的使用價(jià)值。

參考文獻(xiàn)

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

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

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

[4] 王輝,陳愛(ài)生.基于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].探測(cè)與控制學(xué)報(bào),2014,36(3):82-85.

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

[8] 梁永剛,崔永俊,郇弢.基于NAND型FLASH的雙備份固態(tài)存儲(chǔ)系統(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)載。