文獻標(biāo)識碼: A
文章編號: 0258-7998(2013)10-0136-03
隨著高分辨率,、高頻幀的CCD相機在航測中的廣泛使用,,如何對產(chǎn)生的高速圖像數(shù)據(jù)進行實時記錄,成為了一個技術(shù)難題,。光纖通信具有帶寬高,、價格低廉,、傳輸距離長等優(yōu)點,單根光纖的傳輸帶寬達到10.2 Tb/s,。大量光電轉(zhuǎn)換模塊的出現(xiàn),,使光纖在高速圖像采集傳輸系統(tǒng)中大量使用,常規(guī)光模塊帶寬達到2 Gb/s,,而傳統(tǒng)通過PCI總線與主機通信的理論帶寬只有133 MB/s,,但當(dāng)實際數(shù)據(jù)采集速度到達100 MB/s左右時就變得相當(dāng)困難 ,難以滿足對記錄帶寬的要求,。PCIE是繼PCI后的第三代高性能I/O總線,,與PCI相比,PCIE屬于串行總線,,引腳少,,采用基于數(shù)據(jù)包的協(xié)議進行事務(wù)編碼,每個傳輸通道獨享帶寬,;硬件接口簡單,,采用點對點互聯(lián),X1的單向傳輸理論帶寬即可達到2.5 Gb/s,用戶可以根據(jù)實際需要將PCIE鏈路配置為X1,、X2,、X4、X8,、X16等,。
PCIE數(shù)據(jù)包在傳輸過程中要經(jīng)過事務(wù)層,數(shù)據(jù)鏈路層及物理層,。采用類似網(wǎng)絡(luò)分層的思想,,不同之處在于PCIE體系中的各個層都是采用硬件邏輯來實現(xiàn)。事務(wù)層是PCIE架構(gòu)的上層,,其主要功能是接收,、緩沖和分發(fā)事務(wù)包TLP(Transaction Layer Packet)。TLP通過使用I/O,、存儲器 ,、配置和消息事務(wù)來傳遞信息。數(shù)據(jù)鏈路層是保證可靠正確的數(shù)據(jù)傳輸,,主要負責(zé)鏈路管理與數(shù)據(jù)完整性相關(guān)的功能,,包括錯誤檢測與改正,裝配和拆解數(shù)據(jù)鏈路層包DLLP,。物理層是PCIE協(xié)議的最底層,,為設(shè)備鏈路提供物理支持,分為邏輯子塊和電氣子塊,。邏輯子塊完成對數(shù)據(jù)包的合成分解,、加擾和去擾,、8 bit/10 bit編碼和10 bit/8 bit解碼、并串轉(zhuǎn)換和串并轉(zhuǎn)換,;電氣物理層負責(zé)對每路串行數(shù)據(jù)差分驅(qū)動的傳輸與接收及阻抗匹配[1-2],。
1 采集系統(tǒng)簡述
本文采用CCD相機的分辨率為2 352×1 728,灰度級別為8 bit,,幀頻為31 F/s,,產(chǎn)生的數(shù)據(jù)量為120.2 MB/s,則PCIE接口采用X1通道就可以滿足帶寬需要,。采集系統(tǒng)的具體結(jié)構(gòu)如圖1所示,。
XC5VFX70T是Xilinx公司VIRTEX系列的一款具有5 328 KB RAM資源、內(nèi)嵌3個PCIE硬核和16個可配置的高速串行收發(fā)器GTX,,速率可達6.5 Gb/s,,采用CML電平標(biāo)準(zhǔn),在系統(tǒng)中和SFP模塊無縫連接,。該芯片在系統(tǒng)中主要實現(xiàn)高速數(shù)據(jù)的接收和緩存,,以及數(shù)據(jù)的實時采集[3-4]。
光纖信號通過光纖接口模塊和位寬轉(zhuǎn)換,,數(shù)據(jù)被寫入DDR2中,,DDR2分為A、B兩個獨立的存儲區(qū),。當(dāng)A儲存區(qū)寫滿時,,將數(shù)據(jù)寫入PCIE接口模塊的TX_FIFO中,這時DMA控制器發(fā)送中斷給主機,,主機會準(zhǔn)備好接收緩存區(qū),并將緩存區(qū)首地址告知DMA控制器,開始DMA傳輸,,將數(shù)據(jù)寫入到主機內(nèi)存中,同時將采集的數(shù)據(jù)寫入B存儲區(qū)中,。同理,,當(dāng)B存儲區(qū)中的數(shù)據(jù)被寫滿時,也通過同樣的方式寫入主機的內(nèi)存中,。主機內(nèi)存中的數(shù)據(jù)通過SATA總線被寫到SATA硬盤并記錄下來,。DDR2采用交叉緩存工作,以保證高速數(shù)據(jù)流的不間斷采集,。
2 功能模塊設(shè)計
2.1光纖接口模塊邏輯設(shè)計
光纖接口模塊分為GTX和包數(shù)據(jù)解析兩個部分,。光纖信號經(jīng)GTX核后,,輸出16 bit位寬的并行數(shù)據(jù)和相應(yīng)的K字符信號,。根據(jù)K字符信號提取數(shù)據(jù)包。包數(shù)據(jù)解析根據(jù)自定義的協(xié)議進行數(shù)據(jù)包解析,,得到幀頭標(biāo)志,、幀尾標(biāo)志,、有效圖像數(shù)據(jù)和附加信息等。附加信息是一組固定長度的雙字組合,,含有圖像相關(guān)的一些信息,如大小,、位數(shù)、編碼方式等[5-6],。圖2所示為自定義協(xié)議包,。
包頭和包尾作為數(shù)據(jù)包的起始和結(jié)尾標(biāo)志,包長用于指示發(fā)送數(shù)據(jù)的有效長度,,包累加和用于包內(nèi)有效數(shù)據(jù)字節(jié)的統(tǒng)計,,包編號用于統(tǒng)計發(fā)送的數(shù)據(jù)包有無丟失。幀頭標(biāo)志,、幀尾標(biāo)志,、有效圖像數(shù)據(jù)和附加信息等則放在有效數(shù)據(jù)中。
2.2 緩存模塊
本文的DDR2控制器MPMC采用NPI接口,,設(shè)計有2個NPI接口分別用于讀寫操作,。一個是用于存儲光纖的輸入數(shù)據(jù),另一個用于輸出內(nèi)存數(shù)據(jù)到PCIE接口,。這樣可以避免傳輸過程中內(nèi)存的訪問仲裁,,提高系統(tǒng)的傳輸效率。
本文光纖接口模塊輸出的數(shù)據(jù)寬度為16 bit,,而采用的NPI接口的數(shù)據(jù)寬度為64 bit,。所以需要對原始數(shù)據(jù)進行位寬轉(zhuǎn)換后才能進行后續(xù)處理。位寬轉(zhuǎn)換模塊根據(jù)需要將數(shù)據(jù)寬度從16 bit轉(zhuǎn)換為64 bit,。
2.3 PCIE接口模塊設(shè)計
PCIE接口模塊主要是實現(xiàn)主機PCIE總線與采集卡之間的通信,。為了實現(xiàn)基于PCIE的DMA傳輸,需要設(shè)計以下8個模塊[7-8], 具體PCIE接口模塊設(shè)計如圖3所示,。
圖3中各個模塊的作用如下:
(1) PCIE硬核:對外與其他PCIE設(shè)備通信,,對內(nèi)與TX和RX模塊進行數(shù)據(jù)傳輸。
(2) TX模塊:將待發(fā)送的數(shù)據(jù)和DMA寄存器中的信息填充到事務(wù)包TLP中,,以并行的方式傳輸給PCIE硬核,,實現(xiàn)PCIE寫操作狀態(tài)。
(3) RX模塊:將接收的事務(wù)包TLP解析,,根據(jù)TLPs的包頭信息,,將數(shù)據(jù)寫入DMA寄存器。
(4) 緩存:匹配FIFO兩邊不同傳輸速率的數(shù)據(jù)流,,緩存待處理的數(shù)據(jù)和提高數(shù)據(jù)的傳輸效率,。
(5) DMA控制模塊:DMA寄存器是由發(fā)送寄存器、中斷寄存器等構(gòu)成,。發(fā)送寄存器用于接收和存放主機內(nèi)存寫請求的DMA信息,,主要為內(nèi)存寫請求地址寄存器及寫長度寄存器,、寫包數(shù)寄存器。中斷寄存器是存放中斷產(chǎn)生的原因,,為辨別何種中斷提供依據(jù),。
(6) 用戶邏輯:一方面用戶邏輯通過DMA控制模塊向主機發(fā)起DMA傳輸中斷,設(shè)置DMA傳輸?shù)拈L度,;另一方面控制數(shù)據(jù)的輸入,,保證TX_FIFO不會溢出,數(shù)據(jù)不會丟失,。
(7) 用戶接口模塊:提供簡單的數(shù)據(jù)通道和控制信號通道,。
3 DMA傳輸?shù)倪壿嬙O(shè)計與實現(xiàn)
3.1 DMA寫操作的設(shè)計與實現(xiàn)
首先用戶邏輯檢測到TX_FIFO中有需要傳輸?shù)臄?shù)據(jù),這時用戶邏輯通過DMA控制器發(fā)送MSI中斷,,請求DMA傳輸,。主機響應(yīng)中斷,配置DMA寄存器,TX模塊啟動DMA傳輸,TX模塊向TLP包加載信息,包括了控制字段,、地址字段,、數(shù)據(jù)長度字段以及數(shù)據(jù)字段等。當(dāng)一次DMA傳輸結(jié)束后,向主機發(fā)送DMA傳輸結(jié)束的中斷,,這樣一次完整的DMA寫操作就完成了,。具體流程圖如圖4所示,TX模塊和PCIE硬核之間采用64 bit并行傳輸,, 在本文中一個TLP的載荷是128 B,,一次DMA操作要進行65 536次包傳輸,則一次DMA寫操作就傳輸了8 MB的數(shù)據(jù)量,,PCIE寫操作狀態(tài)機是在TX模塊中實現(xiàn),。
圖6是DMA控制寄存器的設(shè)計圖,初始化寄存器的Byte0用于DMA傳輸復(fù)位,。1DW的Byte0用于讀開始,,Byte1用于讀完成,Byte2用于寫開始,,Byte3用于寫完成,;2DW用于存放主機寫入的緩存首地址;3DW用于存放一個TLP包攜帶的有效數(shù)據(jù)量,;4DW用于存放一次每次DMA傳輸發(fā)送的TLP包數(shù)量,;5DW的Byte0用于指示FPGA請求DMA傳輸,Byte1用于指示DMA傳輸結(jié)束,。
4 功能驗證與性能測試
本文PCIE硬核采用X1通道,,最大的理論傳輸帶寬為2.5 Gb/s。使用ChipScope對DMA寫操作進行了驗證,具體時序如圖7所示,,trn_td是FPGA向主機發(fā)送的數(shù)據(jù),trn_tsof_n為低時,表示TLP包的第一個64 bit數(shù)據(jù),;trn_teof_n為低時,表示TLP包的最后64 bit數(shù)據(jù),這時trn_trem_n為0X0F,,則說明最后一個64 bit只有高32位有效。傳輸一個TLP包大約需要108個時鐘周期,,采用125 MHz的采樣頻率,一個TLP包有效載荷為128 B,,則可得出在X1的配置下,DMA的傳輸速度大約為141.3 MB/s,。
本文針對高速光纖圖像實時采集的需要,,設(shè)計了一種基于PCIE的采集系統(tǒng)。經(jīng)實際測試,,系統(tǒng)運行穩(wěn)定可靠,。采用X1的PCIE總線接口,DMA寫操作速度大約為138 MB/s,,滿足光纖圖像實時記錄的帶寬要求,。如果實際需要更高的采集帶寬,可以參考本文設(shè)計,,將PCIE接口設(shè)計為X4或X8,,以實現(xiàn)更高的采集性能。本設(shè)計具有通用性,,可被移植于其他內(nèi)嵌有PCIE硬核及串行收發(fā)器GTX等資源的 FPGA平臺,。
參考文獻
[1] BUDRUK R, ANDERSON D,SHANLEY T. PCI Express系統(tǒng)體系結(jié)構(gòu)標(biāo)準(zhǔn)教材[M].田玉敏,等譯.北京:電子工業(yè)出版社,,2005.
[2] PCI-SIG. PCI express card electromechanical specification Rev 1.0a[Z].USA: PCI-SIG,2003:5-33.
[3] Virtex-5 FPGA RocketIO GTX transceiver v2.1 user guide[Z].USA:Xilinx,2011.
[4] 使用用于PCI Express設(shè)計的集成端點模塊實現(xiàn)點到點連接[Z].USA:Xilinx ,2007.
[5] 孫科林,,周維超,吳欽章.高速實時光纖圖像傳輸系統(tǒng)的實現(xiàn)[J].光學(xué)精密工程,,2011,19(9):2228-2235.
[6] 繆露鵬,,涂曉東,張新穎.光纖適配卡數(shù)據(jù)總線的研究與實現(xiàn)[J].光通信技術(shù),,2011(1):8-10.
[7] 汪精華,,胡善清,龍騰. 基于FPGA 實現(xiàn)的高速串行交換模塊實現(xiàn)方法研究[J].電子技術(shù)應(yīng)用,,2010,36(5):37-40.
[8] 何瓊,,陳鐵,程鑫. 基于FPGA的DMA方式高數(shù)數(shù)據(jù)采集系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,,2011,37(12):40-43.