李 賓 劉 鑫 楊文良 劉昌杰
北京航天自動控制研究所,北京100854
隨著圖像處理技術應用越來越廣泛,基于FPGA+DSP架構的處理系統以其優越的性能得到越來越多的認同。這類系統結構靈活,FPGA進行并行處理和接口控制,DSP進行復雜算法計算,充分發揮2種處理器的優勢,從而提高系統的整體性能。但是,隨著圖像處理算法復雜度的提高,以及對圖像幀頻、分辨率和實時性要求越來越高,而傳統的FPGA+DSP架構的圖像處理系統大多采用并行總線互連方式,所能提供的帶寬有限,已成為限制高速圖像處理系統發展的關鍵因素。目前,以串行RapidIO為代表的新一代總線結構很大程度上彌補了傳統總線的不足,RapidIO總線是一種高性能、低引腳數的高速串行總線,是為滿足高性能嵌入式系統需求而設計的一種開放式互連技術標準,能廣泛滿足嵌入式系統應用中處理器、處理平臺和IO設備間的互連需求[1]。
本文設計了一種基于RapidIO總線的圖像處理系統,成像裝置輸出的實時圖通過Camera Link接口進入該系統,FPGA按協議對實時圖數據進行解碼、緩存,再通過RapidIO總線將圖像高速、實時地傳輸到DSP處理器中。由于Camera Link接口速率與RapidIO總線速率不同,本文設計了一種FIFO緩存結構,解決了2種接口間的速率匹配問題。
本文設計的高速圖像處理系統采用FPGA+DSP架構,FPGA與DSP間通過串行RapidIO總線互連,FPGA選用Xilinx公司的Kintex-7系列XC7K325T,DSP選用TI公司的多核系列處理器TMS320C6678[2]。在該系統中,FPGA主要用于系統的控制和圖像采集、傳輸,DSP主要負責算法實現。圖像由高幀頻、高分辨率的CCD成像裝置采集,經由Camera Link接口傳輸至圖像處理系統,在系統內,圖像經過Camera Link接收芯片的串并轉換后發送給FPGA,FPGA對其進行預處理后再將數據發送到DSP,進行復雜的算法計算。圖像數據傳輸框圖如圖1所示。

圖1 圖像數據傳輸框圖
目前,Camera Link協議是一種應用比較廣泛的數字圖像傳輸協議[3],它由ATA制定、修改及發布,用于解決數字圖像在成像裝置和接收設備間的高速傳輸。Camera Link是一種高速串行的傳輸標準,將28位并行數據信號和1位時鐘信號轉換為5對LVDS信號在鏈路上傳輸,從而降低了傳輸信號的數量,提高了傳輸可靠性。

圖2 Camera Link發送接收原理圖
Camera Link信號分為4類:視頻信號、相機控制信號、異步串行通信信號和電源信號。

表1 Camera Link接口信號
Camera Link將24位圖像數據分成3組,每組8位信號成為一個端口。Camera Link標準定義了8個端口(A~H)。Camera Link接口有3種配置模式:Base,Medium和Full[4]。3種模式所使用的連接器和轉換芯片數量各不相同,具體配置方式見表2。
本文使用的成像裝置配置為Medium模式,每幀圖像為2528×2000像素,每個像素點為8位數據,幀頻為50Hz。圖像處理系統從成像裝置接收數字視頻圖像數據,幀頻為50Hz,內容為2528×2000的8位圖像信息。成像裝置的Camera Link接口工作在Medium模式下,使用A,B,C和D共4個端口,每個時鐘傳輸4個字節數據,時鐘頻率為66MHz,因此圖像數據速率達到2.112Gbps,并行總線難以滿足需求,所以本文使用串行RapidIO總線實現FPGA到DSP的高速實時數據傳輸。

表2 Camera Link端口配置方式
RapidIO總線是迄今為止唯一的開放式高速串行互連總線標準,也是唯一的嵌入式互連正式國際標準,它針對高性能嵌入式系統芯片間和板間互連而設計。2001 年初,RapidIO 1.1 版發布,很多半導體廠商開始支持RapidIO 接口,推出了包含RapidIO接口的處理器,FPGA廠商也提供了RapidIO軟核或者硬核。
串行RapidIO是一種高性能的開放式互連總線標準,具有效率高、穩定性好、速度快、成本低和引腳少等優勢,為嵌入式系統提供了一種可行的高帶寬、低延遲且高可靠性的數據傳輸解決方案[5]。RapidIO是在物理層采用差分信號進行傳輸的總線標準,RapidIO 1.x標準支持的信號速率為1.25 GHz,2.5 GHz和3.125 GHz,RapidIO 2.x 標準在兼容RapidIO 1.x 標準基礎上,增加了支持5 GHz、6.25 GHz的傳輸速率[6]。
本文設計的圖像處理系統選用的Kintex-7系列FPGA,集成了高速串行收發模塊GTX transceiver,可用作串行RapidIO等高速串行協議的物理層實現。選用的DSP具有串行RapidIO硬件接口[7],支持RapidIO 2.1標準,支持的信號速率為1.25 GHz,2.5 GHz,3.125GHz和5GHz,支持1×,2×和4×多種工作模式。Xilinx公司為串行RapidIO接口提供了IP核[8],本文在IP核的基礎上實現了RapidIO的數據傳輸等功能。
歷史上,山東男籃的東家如走馬燈一樣不斷更換。從體育局到金斯頓再到黃金男籃,之又有高速男籃和西王男籃。每一輪更換東家,必然會讓球隊經歷模式、思路的轉型,換血、換帥、不系統的訓練,這些問題,似乎始終與山東男籃有緣。

圖3 串行RapidIO IP核原理框圖
Xilinx RapidIO IP核由邏輯層、緩沖層、物理層、封裝層和參考設計構成[9],其中邏輯層、緩沖層和物理層是軟核,封裝層是硬核,IP核的大部分信號對用戶是不可見的,直接與用戶相關的是邏輯層上的用戶接口[10]。對用戶接口進行合理配置和控制,RapidIO接口可實現數據發送和接收等功能。本文在圖像傳輸的功能需求下,進行了相關設計,以下詳細介紹設計方法。
RapidIO的IP核可以由Xilinx的開發工具ISE軟件生成,在生成時需要注意以下配置項:用戶接口I/O格式。Xilinx的RapidIO IP核支持2種類型的I/O格式,分別為Condensed I/O格式及Initiator/Target格式。Condensed I/O只有一條單獨的發送和接收通道,而Initiator/Target則根據操作對象是本地還是遠端分為2條通道。分析可知,采用Initiator/Target格式允許將本地發起的事務和遠端發起的事務分開進行用戶接口設計,因此可以簡化設計工作,本設計選用Initiator/Target格式。

圖4 Condensed I/O格式和Initiator/Target格式
RapidIO IP核用戶接口使用AXI4-Stream總線協議,AXI4-Stream采用tready,tvalid和tlast握手機制來實現數據包的傳輸,發送端和接收端在進行通信時,需要先收到接收端發送的tready信號進行握手,然后將數據tdata和tvalid信號發送給接收端,tvalid信號為高時指示數據tdata有效,一個數據包發送完成時最后一個時鐘周期發送tlast信號。AXI4-Stream信號時序如圖5所示。

圖5 AXI4-Stream信號時序圖
圖像處理系統中,FPGA將Camera Link接口接收到的圖像通過RapidIO總線發送到DSP內存中。本系統成像裝置Camera Link接口的時鐘頻率為66MHz,數據寬度為32位,FPGA與DSP間的RapidIO接口配置為2×3.125Gbps模式,此時FPGA RapidIO IP核用戶接口的時鐘頻率為78.13MHz,數據寬度為64位。Camera Link接口和RapidIO接口數據速率不匹配,而且數據格式也不同,Camera Link接口的數據和控制信號并不能直接用在RapidIO IP核的用戶接口上。
在傳統并行總線圖像處理系統中,通常會在Camera Link接收芯片后增加FIFO芯片,對圖像數據進行緩存,然后通過FPGA、并行總線傳輸到DSP,如圖6所示。FIFO芯片通常數據位寬為8位、16位或32位,Camera Link接口數據寬度為32位,RapidIO IP核數據寬度為64位,進行數據輸出時,要進行2個時鐘周期的讀操作,才能得到1個64位數據。若采用2片FIFO并聯設計,輸入端也需要將2個32位數據拼成1個64位數據,應用較為不便。

圖6 傳統并行總線圖像數據傳輸框圖
為解決該問題,本文設計了一種FPGA內部FIFO緩存,降低了硬件設計復雜度。Camera Link接口進來的數據先存入FPGA內部設計的FIFO,然后再按需要從FIFO中讀出,并按照AXI4-Stream接口的時序,將數據通過RapidIO總線發送到DSP的內存中。FPGA內部FIFO可以設計成輸入寬度為32位,輸出寬度為64位,輸入輸出時鐘不同,更符合本系統的應用需求。
FPGA中包含Block RAM資源,可以很方便地實現不同寬度和深度的FIFO。同樣,FIFO也可以由Xilinx的開發工具ISE軟件生成。FIFO主要包括4部分,分別為物理存儲單元、寫控制接口、讀控制接口和狀態檢測接口。在配置存儲單元時,由于讀寫接口采用的時鐘頻率和數據寬度均不同,所以設計成讀時鐘rd_clk和寫時鐘wr_clk獨立的模式,讀接口數據寬度為64位,寫接口數據寬度為32位。為了得到FIFO的存儲狀態,需要配置FIFO輸出空滿狀態標志。為了精確獲得FIFO存儲的數據量,配置FIFO輸出寫入的數據長度和可讀出的數據長度。

圖7 基于RapidIO總線的圖像數據傳輸原理圖
包的長度設計為16。由于AXI4-Stream數據總線的寬度是64位,所以一包數據的長度是16×64/8=128字節。AXI4-Stream譯碼模塊設計時,需要按照圖5的時序對數據進行打包處理,由于時序較為復雜,所以在設計時使用了狀態機,如圖8所示。

圖8 AXI4-Stream接口狀態機設計圖
系統開始工作時,狀態機進入空閑狀態(REQ_IDLE);當檢測到鏈路和端口初始化完成后,進入等待狀態(REQ_WAIT);當檢測到ireq_tready信號為高電平且FIFO內的數據大于等于128字節時,進入幀頭發送狀態(REQ_HDR),幀頭包含的信息有數據包類型、源地址、目的地址和包長度等;當檢測到ireq_tready信號為高電平時,進入寫狀態(REQ_WRITE),直到完成16次寫操作后,狀態機回到空閑狀態(REQ_IDLE)。
圖9是串行RapidIO IP核在發送圖像數據時使用ISE軟件監測到的關鍵信號波形圖,各信號的時序與AXI4-Stream接口要求的時序相符。經驗證,DSP端可以收到FPGA傳輸過來的圖像數據,數據無誤。RapidIO總線配置為2×3.125Gbps模式時,實際測得傳輸速率可達3.91Gbps,而Camera Link輸入的數據速率為66MHz×32bits =2.112Gbps,可以滿足應用需求。

圖9 實測RapidIO接口數據發送波形圖
RapidIO總線傳輸采用8b/10b編碼,理論速率為2×3.125×8/10 =5Gbps。由于在設計中采用了FIFO緩存,當FIFO中緩存的數據超過一包時才會啟動一次RapidIO傳輸,在FIFO緩存數據時RapidIO總線處于空閑狀態。當進行數據傳輸時,RapidIO總線理論速率為5Gbps。在本系統中,RapidIO總線的實際傳輸速率只有理論速率的78.2%,有以下幾個原因:
1)RapidIO數據傳輸時,按協議需要傳輸大量的控制字,用于鏈路維護、包確認、錯誤報告和錯誤恢復等;
2)誤碼重傳機制。當RapidIO鏈路檢測到發送誤碼,鏈路維護協議可確保發生誤碼的數據包得到重傳;
3)接收方DSP處理數據的時間。DSP收到RapidIO總線的數據后,DSP內部數據總線需要把數據轉移到內存中,占用一定的時間;
4)測試方法中存在計數計時的測量誤差。
介紹了一種基于RapidIO總線的高速圖像處理系統中的數據傳輸設計方案。首先介紹了成像裝置Camera Link協議和FPGA軟件設計時使用的RapidIO IP核。在設計時,采用了基于FIFO緩存的RapidIO接口設計方法,解決了Camera Link接口和RapidIO接口間的速率匹配問題,實現了FPGA與DSP間基于RapidIO總線的高速圖像實時傳輸。實驗驗證,當RapidIO總線配置為2×3.125Gbps模式時,實際的圖像傳輸速率可達3.91Gbps,可以滿足系統的應用需求。
[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的嵌入式圖像處理系統設計[M]. 北京:電子工業出版社. 2013. (Donald G Bailey. Design for Embedded Image Processing on FPGAs[M]. Beijing:Publishing House of Electronics Industry,2013.)
[4] 寧賽男.RapidIO協議在圖像處理系統中的應用研究[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]. 計算機技術與發展, 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協議的實現與驗證[D]. 西安:西安電子科技大學,2011.(He Jiawen. The Realization and Verification of Serial RapidIO Interconnect Specification[D]. Xi’an: Xidian University, 2011.)