《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于PCIE的高速光纖圖像實時采集系統(tǒng)設(shè)計
基于PCIE的高速光纖圖像實時采集系統(tǒng)設(shè)計
來源:電子技術(shù)應(yīng)用2013年第10期
雷 雨1,2, 任國強1, 孫 健1,2, 徐永剛1,2, 黃 輝1,2
1. 中國科學(xué)院光電技術(shù)研究所, 四川 成都 610209; 2. 中國科學(xué)院大學(xué),北京100149
摘要: 利用PCI Express(PCIE)總線及DMA數(shù)據(jù)傳輸技術(shù),設(shè)計光纖圖像實時采集系統(tǒng)。利用FPGA中的PCIE硬核實現(xiàn)了PCIE總線的DMA傳輸,同時介紹了整個采集系統(tǒng)的數(shù)據(jù)流和光纖接口模塊的設(shè)計。測試結(jié)果表明,系統(tǒng)DMA數(shù)據(jù)傳輸速度可達到138 MB/s,完全滿足高速光纖圖像實時采集的需要。
關(guān)鍵詞: FPGA PCIe DMA 實時采集 光纖
中圖分類號: TP914.3
文獻標識碼: A
文章編號: 0258-7998(2013)10-0136-03
Design of high-speed real-time fiber image acquisition system based on PCIE bus
Lei Yu1,2, Ren Guoqiang1, Sun Jian1,2, Xu Yonggang1,2, Huang Hui1,2
1. Institute of Optics and Electronics of Chinese Academy of Sciences, Chengdu 610209, China; 2. University of Chinese Academy of Sciences, Beijing 100149, China
Abstract: PCIE technology and DMA technology are used to implement the real-time fiber image acquisition system. The paper focuses on how to implement DMA transmission on PCIE hard core and introduces the data stream of the system and the custom protocol of high speed serial fiber transmission. The test result shows that the DMA speed can reach 138MB/s, so the system fulfils the need of high-speed real-time fiber image acquisition.
Key words : PCIE; DMA; real-time acquisition; fiber; hard core; transaction layer packet

    隨著高分辨率、高頻幀的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,但當實際數(shù)據(jù)采集速度到達100 MB/s左右時就變得相當困難 ,難以滿足對記錄帶寬的要求。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ù)傳輸,主要負責鏈路管理與數(shù)據(jù)完整性相關(guān)的功能,包括錯誤檢測與改正,裝配和拆解數(shù)據(jù)鏈路層包DLLP。物理層是PCIE協(xié)議的最底層,為設(shè)備鏈路提供物理支持,分為邏輯子塊和電氣子塊。邏輯子塊完成對數(shù)據(jù)包的合成分解、加擾和去擾、8 bit/10 bit編碼和10 bit/8 bit解碼、并串轉(zhuǎn)換和串并轉(zhuǎn)換;電氣物理層負責對每路串行數(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電平標準,在系統(tǒng)中和SFP模塊無縫連接。該芯片在系統(tǒng)中主要實現(xiàn)高速數(shù)據(jù)的接收和緩存,以及數(shù)據(jù)的實時采集[3-4]。
    光纖信號通過光纖接口模塊和位寬轉(zhuǎn)換,數(shù)據(jù)被寫入DDR2中,DDR2分為A、B兩個獨立的存儲區(qū)。當A儲存區(qū)寫滿時,將數(shù)據(jù)寫入PCIE接口模塊的TX_FIFO中,這時DMA控制器發(fā)送中斷給主機,主機會準備好接收緩存區(qū),并將緩存區(qū)首地址告知DMA控制器,開始DMA傳輸,將數(shù)據(jù)寫入到主機內(nèi)存中,同時將采集的數(shù)據(jù)寫入B存儲區(qū)中。同理,當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ù)包解析,得到幀頭標志、幀尾標志、有效圖像數(shù)據(jù)和附加信息等。附加信息是一組固定長度的雙字組合,含有圖像相關(guān)的一些信息,如大小、位數(shù)、編碼方式等[5-6]。圖2所示為自定義協(xié)議包。

    包頭和包尾作為數(shù)據(jù)包的起始和結(jié)尾標志,包長用于指示發(fā)送數(shù)據(jù)的有效長度,包累加和用于包內(nèi)有效數(shù)據(jù)字節(jié)的統(tǒng)計,包編號用于統(tǒng)計發(fā)送的數(shù)據(jù)包有無丟失。幀頭標志、幀尾標志、有效圖像數(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ù)字段等。當一次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)標準教材[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.

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