李 賓 劉 鑫 楊文良 劉昌杰
北京航天自動控制研究所,北京100854
隨著圖像處理技術應用越來越廣泛,基于FPGA+DSP架構的處理系統(tǒng)以其優(yōu)越的性能得到越來越多的認同。這類系統(tǒng)結構靈活,F(xiàn)PGA進行并行處理和接口控制,DSP進行復雜算法計算,充分發(fā)揮2種處理器的優(yōu)勢,從而提高系統(tǒng)的整體性能。但是,隨著圖像處理算法復雜度的提高,以及對圖像幀頻、分辨率和實時性要求越來越高,而傳統(tǒng)的FPGA+DSP架構的圖像處理系統(tǒng)大多采用并行總線互連方式,所能提供的帶寬有限,已成為限制高速圖像處理系統(tǒng)發(fā)展的關鍵因素。目前,以串行RapidIO為代表的新一代總線結構很大程度上彌補了傳統(tǒng)總線的不足,RapidIO總線是一種高性能、低引腳數(shù)的高速串行總線,是為滿足高性能嵌入式系統(tǒng)需求而設計的一種開放式互連技術標準,能廣泛滿足嵌入式系統(tǒng)應用中處理器、處理平臺和IO設備間的互連需求[1]。
本文設計了一種基于RapidIO總線的圖像處理系統(tǒng),成像裝置輸出的實時圖通過Camera Link接口進入該系統(tǒng),F(xiàn)PGA按協(xié)議對實時圖數(shù)據(jù)進行解碼、緩存,再通過RapidIO總線將圖像高速、實時地傳輸?shù)紻SP處理器中。由于Camera Link接口速率與RapidIO總線速率不同,本文設計了一種FIFO緩存結構,解決了2種接口間的速率匹配問題。
本文設計的高速圖像處理系統(tǒng)采用FPGA+DSP架構,F(xiàn)PGA與DSP間通過串行RapidIO總線互連,F(xiàn)PGA選用Xilinx公司的Kintex-7系列XC7K325T,DSP選用TI公司的多核系列處理器TMS320C6678[2]。在該系統(tǒng)中,F(xiàn)PGA主要用于系統(tǒng)的控制和圖像采集、傳輸,DSP主要負責算法實現(xiàn)。圖像由高幀頻、高分辨率的CCD成像裝置采集,經(jīng)由Camera Link接口傳輸至圖像處理系統(tǒng),在系統(tǒng)內(nèi),圖像經(jīng)過Camera Link接收芯片的串并轉換后發(fā)送給FPGA,F(xiàn)PGA對其進行預處理后再將數(shù)據(jù)發(fā)送到DSP,進行復雜的算法計算。圖像數(shù)據(jù)傳輸框圖如圖1所示。
圖1 圖像數(shù)據(jù)傳輸框圖
目前,Camera Link協(xié)議是一種應用比較廣泛的數(shù)字圖像傳輸協(xié)議[3],它由ATA制定、修改及發(fā)布,用于解決數(shù)字圖像在成像裝置和接收設備間的高速傳輸。Camera Link是一種高速串行的傳輸標準,將28位并行數(shù)據(jù)信號和1位時鐘信號轉換為5對LVDS信號在鏈路上傳輸,從而降低了傳輸信號的數(shù)量,提高了傳輸可靠性。
圖2 Camera Link發(fā)送接收原理圖
Camera Link信號分為4類:視頻信號、相機控制信號、異步串行通信信號和電源信號。
表1 Camera Link接口信號
Camera Link將24位圖像數(shù)據(jù)分成3組,每組8位信號成為一個端口。Camera Link標準定義了8個端口(A~H)。Camera Link接口有3種配置模式:Base,Medium和Full[4]。3種模式所使用的連接器和轉換芯片數(shù)量各不相同,具體配置方式見表2。
本文使用的成像裝置配置為Medium模式,每幀圖像為2528×2000像素,每個像素點為8位數(shù)據(jù),幀頻為50Hz。圖像處理系統(tǒng)從成像裝置接收數(shù)字視頻圖像數(shù)據(jù),幀頻為50Hz,內(nèi)容為2528×2000的8位圖像信息。成像裝置的Camera Link接口工作在Medium模式下,使用A,B,C和D共4個端口,每個時鐘傳輸4個字節(jié)數(shù)據(jù),時鐘頻率為66MHz,因此圖像數(shù)據(jù)速率達到2.112Gbps,并行總線難以滿足需求,所以本文使用串行RapidIO總線實現(xiàn)FPGA到DSP的高速實時數(shù)據(jù)傳輸。
表2 Camera Link端口配置方式
RapidIO總線是迄今為止唯一的開放式高速串行互連總線標準,也是唯一的嵌入式互連正式國際標準,它針對高性能嵌入式系統(tǒng)芯片間和板間互連而設計。2001 年初,RapidIO 1.1 版發(fā)布,很多半導體廠商開始支持RapidIO 接口,推出了包含RapidIO接口的處理器,F(xiàn)PGA廠商也提供了RapidIO軟核或者硬核。
串行RapidIO是一種高性能的開放式互連總線標準,具有效率高、穩(wěn)定性好、速度快、成本低和引腳少等優(yōu)勢,為嵌入式系統(tǒng)提供了一種可行的高帶寬、低延遲且高可靠性的數(shù)據(jù)傳輸解決方案[5]。RapidIO是在物理層采用差分信號進行傳輸?shù)目偩€標準,RapidIO 1.x標準支持的信號速率為1.25 GHz,2.5 GHz和3.125 GHz,RapidIO 2.x 標準在兼容RapidIO 1.x 標準基礎上,增加了支持5 GHz、6.25 GHz的傳輸速率[6]。
本文設計的圖像處理系統(tǒng)選用的Kintex-7系列FPGA,集成了高速串行收發(fā)模塊GTX transceiver,可用作串行RapidIO等高速串行協(xié)議的物理層實現(xiàn)。選用的DSP具有串行RapidIO硬件接口[7],支持RapidIO 2.1標準,支持的信號速率為1.25 GHz,2.5 GHz,3.125GHz和5GHz,支持1×,2×和4×多種工作模式。Xilinx公司為串行RapidIO接口提供了IP核[8],本文在IP核的基礎上實現(xiàn)了RapidIO的數(shù)據(jù)傳輸?shù)裙δ堋?/p>
歷史上,山東男籃的東家如走馬燈一樣不斷更換。從體育局到金斯頓再到黃金男籃,之又有高速男籃和西王男籃。每一輪更換東家,必然會讓球隊經(jīng)歷模式、思路的轉型,換血、換帥、不系統(tǒng)的訓練,這些問題,似乎始終與山東男籃有緣。
圖3 串行RapidIO IP核原理框圖
Xilinx RapidIO IP核由邏輯層、緩沖層、物理層、封裝層和參考設計構成[9],其中邏輯層、緩沖層和物理層是軟核,封裝層是硬核,IP核的大部分信號對用戶是不可見的,直接與用戶相關的是邏輯層上的用戶接口[10]。對用戶接口進行合理配置和控制,RapidIO接口可實現(xiàn)數(shù)據(jù)發(fā)送和接收等功能。本文在圖像傳輸?shù)墓δ苄枨笙?,進行了相關設計,以下詳細介紹設計方法。
RapidIO的IP核可以由Xilinx的開發(fā)工具ISE軟件生成,在生成時需要注意以下配置項:用戶接口I/O格式。Xilinx的RapidIO IP核支持2種類型的I/O格式,分別為Condensed I/O格式及Initiator/Target格式。Condensed I/O只有一條單獨的發(fā)送和接收通道,而Initiator/Target則根據(jù)操作對象是本地還是遠端分為2條通道。分析可知,采用Initiator/Target格式允許將本地發(fā)起的事務和遠端發(fā)起的事務分開進行用戶接口設計,因此可以簡化設計工作,本設計選用Initiator/Target格式。
圖4 Condensed I/O格式和Initiator/Target格式
RapidIO IP核用戶接口使用AXI4-Stream總線協(xié)議,AXI4-Stream采用tready,tvalid和tlast握手機制來實現(xiàn)數(shù)據(jù)包的傳輸,發(fā)送端和接收端在進行通信時,需要先收到接收端發(fā)送的tready信號進行握手,然后將數(shù)據(jù)tdata和tvalid信號發(fā)送給接收端,tvalid信號為高時指示數(shù)據(jù)tdata有效,一個數(shù)據(jù)包發(fā)送完成時最后一個時鐘周期發(fā)送tlast信號。AXI4-Stream信號時序如圖5所示。
圖5 AXI4-Stream信號時序圖
圖像處理系統(tǒng)中,F(xiàn)PGA將Camera Link接口接收到的圖像通過RapidIO總線發(fā)送到DSP內(nèi)存中。本系統(tǒng)成像裝置Camera Link接口的時鐘頻率為66MHz,數(shù)據(jù)寬度為32位,F(xiàn)PGA與DSP間的RapidIO接口配置為2×3.125Gbps模式,此時FPGA RapidIO IP核用戶接口的時鐘頻率為78.13MHz,數(shù)據(jù)寬度為64位。Camera Link接口和RapidIO接口數(shù)據(jù)速率不匹配,而且數(shù)據(jù)格式也不同,Camera Link接口的數(shù)據(jù)和控制信號并不能直接用在RapidIO IP核的用戶接口上。
在傳統(tǒng)并行總線圖像處理系統(tǒng)中,通常會在Camera Link接收芯片后增加FIFO芯片,對圖像數(shù)據(jù)進行緩存,然后通過FPGA、并行總線傳輸?shù)紻SP,如圖6所示。FIFO芯片通常數(shù)據(jù)位寬為8位、16位或32位,Camera Link接口數(shù)據(jù)寬度為32位,RapidIO IP核數(shù)據(jù)寬度為64位,進行數(shù)據(jù)輸出時,要進行2個時鐘周期的讀操作,才能得到1個64位數(shù)據(jù)。若采用2片F(xiàn)IFO并聯(lián)設計,輸入端也需要將2個32位數(shù)據(jù)拼成1個64位數(shù)據(jù),應用較為不便。
圖6 傳統(tǒng)并行總線圖像數(shù)據(jù)傳輸框圖
為解決該問題,本文設計了一種FPGA內(nèi)部FIFO緩存,降低了硬件設計復雜度。Camera Link接口進來的數(shù)據(jù)先存入FPGA內(nèi)部設計的FIFO,然后再按需要從FIFO中讀出,并按照AXI4-Stream接口的時序,將數(shù)據(jù)通過RapidIO總線發(fā)送到DSP的內(nèi)存中。FPGA內(nèi)部FIFO可以設計成輸入寬度為32位,輸出寬度為64位,輸入輸出時鐘不同,更符合本系統(tǒng)的應用需求。
FPGA中包含Block RAM資源,可以很方便地實現(xiàn)不同寬度和深度的FIFO。同樣,F(xiàn)IFO也可以由Xilinx的開發(fā)工具ISE軟件生成。FIFO主要包括4部分,分別為物理存儲單元、寫控制接口、讀控制接口和狀態(tài)檢測接口。在配置存儲單元時,由于讀寫接口采用的時鐘頻率和數(shù)據(jù)寬度均不同,所以設計成讀時鐘rd_clk和寫時鐘wr_clk獨立的模式,讀接口數(shù)據(jù)寬度為64位,寫接口數(shù)據(jù)寬度為32位。為了得到FIFO的存儲狀態(tài),需要配置FIFO輸出空滿狀態(tài)標志。為了精確獲得FIFO存儲的數(shù)據(jù)量,配置FIFO輸出寫入的數(shù)據(jù)長度和可讀出的數(shù)據(jù)長度。
圖7 基于RapidIO總線的圖像數(shù)據(jù)傳輸原理圖
包的長度設計為16。由于AXI4-Stream數(shù)據(jù)總線的寬度是64位,所以一包數(shù)據(jù)的長度是16×64/8=128字節(jié)。AXI4-Stream譯碼模塊設計時,需要按照圖5的時序對數(shù)據(jù)進行打包處理,由于時序較為復雜,所以在設計時使用了狀態(tài)機,如圖8所示。
圖8 AXI4-Stream接口狀態(tài)機設計圖
系統(tǒng)開始工作時,狀態(tài)機進入空閑狀態(tài)(REQ_IDLE);當檢測到鏈路和端口初始化完成后,進入等待狀態(tài)(REQ_WAIT);當檢測到ireq_tready信號為高電平且FIFO內(nèi)的數(shù)據(jù)大于等于128字節(jié)時,進入幀頭發(fā)送狀態(tài)(REQ_HDR),幀頭包含的信息有數(shù)據(jù)包類型、源地址、目的地址和包長度等;當檢測到ireq_tready信號為高電平時,進入寫狀態(tài)(REQ_WRITE),直到完成16次寫操作后,狀態(tài)機回到空閑狀態(tài)(REQ_IDLE)。
圖9是串行RapidIO IP核在發(fā)送圖像數(shù)據(jù)時使用ISE軟件監(jiān)測到的關鍵信號波形圖,各信號的時序與AXI4-Stream接口要求的時序相符。經(jīng)驗證,DSP端可以收到FPGA傳輸過來的圖像數(shù)據(jù),數(shù)據(jù)無誤。RapidIO總線配置為2×3.125Gbps模式時,實際測得傳輸速率可達3.91Gbps,而Camera Link輸入的數(shù)據(jù)速率為66MHz×32bits =2.112Gbps,可以滿足應用需求。
圖9 實測RapidIO接口數(shù)據(jù)發(fā)送波形圖
RapidIO總線傳輸采用8b/10b編碼,理論速率為2×3.125×8/10 =5Gbps。由于在設計中采用了FIFO緩存,當FIFO中緩存的數(shù)據(jù)超過一包時才會啟動一次RapidIO傳輸,在FIFO緩存數(shù)據(jù)時RapidIO總線處于空閑狀態(tài)。當進行數(shù)據(jù)傳輸時,RapidIO總線理論速率為5Gbps。在本系統(tǒng)中,RapidIO總線的實際傳輸速率只有理論速率的78.2%,有以下幾個原因:
1)RapidIO數(shù)據(jù)傳輸時,按協(xié)議需要傳輸大量的控制字,用于鏈路維護、包確認、錯誤報告和錯誤恢復等;
2)誤碼重傳機制。當RapidIO鏈路檢測到發(fā)送誤碼,鏈路維護協(xié)議可確保發(fā)生誤碼的數(shù)據(jù)包得到重傳;
3)接收方DSP處理數(shù)據(jù)的時間。DSP收到RapidIO總線的數(shù)據(jù)后,DSP內(nèi)部數(shù)據(jù)總線需要把數(shù)據(jù)轉移到內(nèi)存中,占用一定的時間;
4)測試方法中存在計數(shù)計時的測量誤差。
介紹了一種基于RapidIO總線的高速圖像處理系統(tǒng)中的數(shù)據(jù)傳輸設計方案。首先介紹了成像裝置Camera Link協(xié)議和FPGA軟件設計時使用的RapidIO IP核。在設計時,采用了基于FIFO緩存的RapidIO接口設計方法,解決了Camera Link接口和RapidIO接口間的速率匹配問題,實現(xiàn)了FPGA與DSP間基于RapidIO總線的高速圖像實時傳輸。實驗驗證,當RapidIO總線配置為2×3.125Gbps模式時,實際的圖像傳輸速率可達3.91Gbps,可以滿足系統(tǒng)的應用需求。
[1] RapidIO Trade Association. RapidIO Interconnect Specification,Part 1:Input/Output Logic Specification,Rev.1.3[S]. RapidIO Trade Association,2005.
[2] TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Data Manual, SPRS691C[S]. TI, 2012,2.
[3] Donald G Bailey . 原魁,等.譯. 基于FPGA的嵌入式圖像處理系統(tǒng)設計[M]. 北京:電子工業(yè)出版社. 2013. (Donald G Bailey. Design for Embedded Image Processing on FPGAs[M]. Beijing:Publishing House of Electronics Industry,2013.)
[4] 寧賽男.RapidIO協(xié)議在圖像處理系統(tǒng)中的應用研究[D].長春:中國科學院長春光學精密機械與物理研究所,2013. (Ning Sainan. The Research on Application of RapidIO Protocol in Image Processing System[D]. Changchun: Changchun Institute of Optics, Fine Mechanics Physics, Chinese Academy of Sciences,2013.)
[5] RapidIO Interconnect Specification,Part 2:Message Passing Logical Specification,Rev.1.3[S]. RapidIO Trade Association,2005.
[6] RapidIO Interconnect Specification,Part 3:Common Transport Specification,Rev.1.3[S]. RapidIO Trade Association,2005.
[7] Keystone Architecture Serial RapidIO(SRIO) User Guide[S]. TI, 2012,11.
[8] Serial RapidIO Gen2 Endpoint v4.0 LogiCORE IP Product Guide[S]. Xilinx,2015.
[9] 蔡葉芳,田澤,李攀,何嘉文. 一種RapidIO IP核的設計與驗證[J]. 計算機技術與發(fā)展, 2014,24(10):98-100.(Cai Yefen, Tian Ze, Li Qian,He Jiawen. Design and Implementation of a RapidIO IP Core[J]. Computer Technology and Development, 2014,24(10):98-100.)
[10] 何嘉文. 串行RapidIO協(xié)議的實現(xiàn)與驗證[D]. 西安:西安電子科技大學,2011.(He Jiawen. The Realization and Verification of Serial RapidIO Interconnect Specification[D]. Xi’an: Xidian University, 2011.)