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