文獻(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.
0 引言
遙測,、遙感以及雷達(dá)圖像信號具有精度高,、數(shù)據(jù)快、容量大的特點(diǎn),,在飛行器飛行過程中無法做到實(shí)時分析和處理,,而必須將采集到的數(shù)據(jù)以適當(dāng)?shù)姆绞酱鎯ζ饋恚w行任務(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ī),。
系統(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所示,。
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所示,。
圖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所示,單次寫操作步驟如下:
(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,。
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,。
寫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所示,。
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ī)。
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ī),。
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é)報,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é)報,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.