摘 要: 針對目前嵌入式智能圖像處理系統(tǒng)中的圖像數(shù)據(jù)的傳輸問題與多DSP、多FPGA間的并行問題,提出并設(shè)計了以DSP+FPGA為系統(tǒng)核心,通過TMS320C6455 DSP外設(shè)接口進(jìn)行擴(kuò)展的嵌入式智能圖像處理系統(tǒng),能夠?qū)崿F(xiàn)圖像的實時采集、解析及處理功能;同時開發(fā)了基于TMS320C6455 DSP的千兆以太網(wǎng)數(shù)據(jù)傳送接口和高速串行接口,實現(xiàn)了圖像處理的網(wǎng)絡(luò)化和并行化。最后對以太網(wǎng)的數(shù)據(jù)傳輸進(jìn)行了測試,測試結(jié)果表明,開發(fā)的以太網(wǎng)數(shù)據(jù)傳送接口達(dá)到了千兆以太網(wǎng)的要求。
關(guān)鍵詞: 圖像處理; 千兆以太網(wǎng); 高速串行接口; DSP; FPGA
中圖分類號: TN911.73?34; TG202 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2016)21?0083?04
Design and implementation of embedded computer intelligent
image information processing system
Lü Xingyu
(Nanyang Institute of Technology, Nanyang 473000, China)
Abstract: To solve the image data transmission problem of the embedded image processing system and parallel problem between multi?DSP and multi?FPGA, the embedded intelligent image processing system is proposed and designed, which takes DSP+FPGA as its core, and is extended through TMS320C6455 DSP peripheral interface. The system can realize the functions of image real?time acquisition, analysis and processing. The gigabit Ethernet data transmission interface and high?speed serial interface based on DSP TMS320C6455 were designed to implement the networked and parallel image processing. The data transmission of Ethernet was tested. The test results show that the Ethernet data transmission interface reached the requirement of gigabit Ethernet.
Keywords: image processing; gigabit Ethernet; high?speed serial interface; DSP; FPGA
0 引 言
近年來隨著現(xiàn)場可編程門陣列芯片與高性能數(shù)字處理器的快速發(fā)展,嵌入式計算機(jī)智能圖像信息處理技術(shù)也獲得了較大的進(jìn)步,這就需要更高性能的圖像處理系統(tǒng)[1]。但目前圖像處理與數(shù)據(jù)傳輸?shù)乃俣乳g一直存在不協(xié)調(diào)問題[2?3],總是造成一方資源的浪費(fèi)。針對此問題,設(shè)計了以DSP +FPGA為核心的圖像處理系統(tǒng),用DSP芯片處理控制結(jié)構(gòu)復(fù)雜的高層算法,用FPGA芯片處理數(shù)據(jù)量大的低層算法;同時通過對TMS320C6455 DSP的千兆以太網(wǎng)數(shù)據(jù)傳送接口和高速串行接口的開發(fā),大大提高了圖像的處理速度和傳輸速度。
1 嵌入式智能圖像處理系統(tǒng)總體設(shè)計
圖像識別和跟蹤算法復(fù)雜且運(yùn)算量大,對系統(tǒng)的實時性和可靠性都有很高的要求,為此采用TI公司的高端DSP芯片TMS320C6455作為系統(tǒng)的處理核心;同時配合Altera公司的CycloneIII系列可編程邏輯芯片,其主要完成時序控制、圖像的預(yù)處理和圖像的疊加等輔助功能,從而大大提高了系統(tǒng)的可擴(kuò)展性和靈活性。嵌入式智能圖像處理系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
設(shè)計的嵌入式智能圖像處理系統(tǒng)由視頻信號轉(zhuǎn)換模塊,圖像數(shù)據(jù)處理模塊和數(shù)據(jù)通信模塊組成,各模塊的主要功能如下:
視頻信號轉(zhuǎn)換模塊:實現(xiàn)視頻編碼及視頻解碼功能,同時完成各種視頻信號的收集和轉(zhuǎn)換。
圖像數(shù)據(jù)處理模塊:是整個系統(tǒng)的核心模塊,由DSP和FPGA組成,F(xiàn)PGA完成視頻數(shù)據(jù)的實時采集、解析及處理,DSP運(yùn)算資源則盡可能的用于算法處理。
數(shù)據(jù)通信模塊:完成圖像數(shù)據(jù)的傳送及多芯片間的通信,由開發(fā)的千兆以太網(wǎng)數(shù)據(jù)傳送接口和高速串行接口組成。
2 視頻信號轉(zhuǎn)換硬件設(shè)計
圖像主要是從CCD拍攝到的模擬視頻中提取,然后進(jìn)行數(shù)字化處理,最后通過智能圖像處理系統(tǒng)進(jìn)行分析。此處通過專用的視頻解碼芯片SAA7113[4]、視頻編碼芯片SAA7121和高速數(shù)模轉(zhuǎn)換芯片ADV7123實現(xiàn)視頻信號的模數(shù)轉(zhuǎn)換,同時專用的視頻信號處理芯片也完成了抗混疊濾波、多制式解碼和時鐘產(chǎn)生等功能,這樣既減輕了處理器的壓力,又減少了外圍芯片的數(shù)量。
其中控制模塊通過FPGA中的EP3C40實現(xiàn),具體完成三個功能:視頻采集過程與檢測的時序控制;由于視頻解碼芯片SAA7113可支持I2C總線接口,所以采用I2C總線能夠選擇視頻信號的輸入格式、輸出格式和視頻信號通道等,還能對帶通濾波頻率范圍、對比度和亮度進(jìn)行設(shè)定;由于經(jīng)視頻解碼芯片SAA7113處理后的信號會送到DSP處理,中間過程圖像的緩存也是采用EP3C40控制。
系統(tǒng)采用的視頻解碼芯片SAA7113可支持4路標(biāo)準(zhǔn)模擬視頻的輸入,輸出8位“VPO”總線,分別為YUV4[∶]2[∶]2和ITU656格式,且能夠在NTSC和PAL 格式間自動切換。
系統(tǒng)的視頻輸出由多級放大后的模擬視頻信號送至字符疊加單元后顯示輸出和經(jīng)過前端模擬電路、FPGA與DSP處理、然后進(jìn)行D/A轉(zhuǎn)換的模擬視頻輸入信號顯示兩部分組成。具體的視頻顯示由1 路VGA和2路CVB復(fù)合視頻組成,VGA視頻輸出采用ADV7123高速數(shù)模轉(zhuǎn)換芯片,能夠在液晶屏顯示;2路CVB復(fù)合視頻采用SAA7121視頻編碼芯片,一路輸出字符、圖形混合的視頻圖像,另一路輸出未經(jīng)處理的原始采集的視頻圖像。
FPGA芯片負(fù)責(zé)系統(tǒng)疊加顯示的軟件部分,圖像字符疊加模塊能夠?qū)崿F(xiàn)在視頻輸出信號上疊加波門、標(biāo)志線、跟蹤時間、跟蹤狀態(tài)、跟蹤模式等字符信息,以便能夠在顯示器上查看到上述信息,使操作人員方便地對系統(tǒng)運(yùn)行情況進(jìn)行監(jiān)視。
3 圖像數(shù)據(jù)處理軟件設(shè)計
圖像數(shù)據(jù)處理模塊是系統(tǒng)的核心模塊,由DSP芯片和FPGA芯片組成[5],其中DSP芯片的運(yùn)算資源盡可能分配給算法運(yùn)行,視頻數(shù)據(jù)的采集、解析與處理回放則由FPGA芯片完成。
FPGA芯片通過解碼器的同步信號,把各幀數(shù)據(jù)中的Y,U,V信息提取出來,實現(xiàn)分幀解析。然后根據(jù)DSP芯片中的算法要求,有選擇地或以幀為單位通過DSP EMIFA接口將圖片傳送至DSP芯片處理。DSP芯片以幀為單位將回放數(shù)據(jù)傳送至FPGA,F(xiàn)PGA芯片根據(jù)視頻編碼芯片的接口時序,按要求給編碼器傳送回放數(shù)據(jù)。
DSP和FPGA使用外接的大容量SDRAM提供回放數(shù)據(jù)與捕獲數(shù)據(jù)的緩存。DSP芯片外掛大容量的FLASH,F(xiàn)PGA芯片外掛大容量的CF card,從而能夠?qū)崿F(xiàn)芯片上電時從外掛的大容量FLASH中引導(dǎo)數(shù)據(jù)和程序。
4 數(shù)據(jù)通信模塊設(shè)計
在實際的圖像處理系統(tǒng)中,圖像處理芯片與其他模塊的通信能力是系統(tǒng)處理能力提升的瓶頸,為此采用以太網(wǎng)作為底層傳輸網(wǎng)絡(luò),通過TCP/IP協(xié)議進(jìn)行數(shù)據(jù)通信,應(yīng)用DSP+PHY結(jié)構(gòu)實現(xiàn)千兆以太網(wǎng)接口的開發(fā)。
4.1 基于DSP的千兆以太網(wǎng)總體設(shè)計
為滿足系統(tǒng)的通信要求,選取包括MDIO接口和EMAC接口的BCM5461S芯片作為千兆以太網(wǎng)控制器,能夠與DSP芯片中的MDIO/EMAC模塊無縫對接。
本文選用的TMS320C6455芯片的EMAC接口與PHY芯片的連接方式有4種[6],但只有RGMII和GMII連接方式能夠?qū)崿F(xiàn)千兆以太網(wǎng)接口。通過在上電和復(fù)位時配置管腳MACSEL[1:0]選擇工作模式,具體如下:
MII模式:MACSEL[1:0]=00;
RMII模式:MACSEL[1:0]=01;
RGMII模式:MACSEL[1:0]=11;
GMII模式:MACSEL[1:0]=10。
4.2 基于DSP的千兆以太網(wǎng)硬件設(shè)計
千兆以太網(wǎng)中EMAC模塊的信號連接原理圖如圖2所示。
DSP芯片利用MDIO接口和EMAC接口共8根數(shù)據(jù)線和7根控制線實現(xiàn)與千兆以太網(wǎng)控制器BCM5461S芯片的連接,芯片間各接口完成的功能如下:
TXC:發(fā)送時鐘。系統(tǒng)在100 Mb/s工作時的頻率為25 MHz;系統(tǒng)在1 000 Mb/s工作時的頻率為125 MHz;
TXD[3~0]:發(fā)送數(shù)據(jù)總線。數(shù)據(jù)總線上的數(shù)據(jù)只有在使能信號TXCTL正常時才有效,數(shù)據(jù)的低4位在時鐘上升沿時傳輸,數(shù)據(jù)的高4位在時鐘的下降沿時傳輸;
TXCTL:使能信號發(fā)送;
REFCLK:頻率為125 MHz的參考時鐘;
RXC:接收時鐘。系統(tǒng)在100 Mb/s工作時的頻率為25 MHz,在1 000 Mb/s工作時的頻率為125 MHz;
RXD[3~0]:數(shù)據(jù)接收總線。數(shù)據(jù)總線上的數(shù)據(jù)只有在使能信號RXCTL正常時才有效,數(shù)據(jù)的低4位在時鐘上升沿時傳輸,數(shù)據(jù)的高4位在時鐘的下降沿時傳輸;
RXCTL:使能信號接收;
MDCLK:管理時鐘數(shù)據(jù)。DSP芯片上的MDIO模塊提供該時鐘信號,MDIO模塊中的控制寄存器的CLKDIV位控制時鐘的具體頻率;
MDIO:管理數(shù)據(jù)線。通過向PHY芯片讀出或?qū)懭霐?shù)據(jù)幀對PHY芯片配置。該數(shù)據(jù)幀包括一個幀頭、寄存器地址、PHY地址和讀寫指示。
選取的DSP芯片支持多種接口模式,為方便DSP芯片與PHY芯片的接口,使用RGMII模式進(jìn)行通信。
4.3 基于DSP的千兆以太網(wǎng)軟件設(shè)計
通信模塊采用TCP/IP協(xié)議,軟件的執(zhí)行流程如圖3所示。
在任務(wù)線程中完成協(xié)議的配置,主要包括網(wǎng)關(guān)與IP地址的配置。當(dāng)協(xié)議的配置完成后,會觸發(fā)一個軟件中斷,中斷程序會創(chuàng)建一個偵聽端口對網(wǎng)絡(luò)上的請求進(jìn)行偵聽。當(dāng)軟件檢測到上位機(jī)有數(shù)據(jù)傳輸請求時,會發(fā)送一個中斷至DSP芯片,DSP芯片通過增強(qiáng)型直接存儲器接口對控制器進(jìn)行訪問。當(dāng)軟件接收到一個完整的數(shù)據(jù)包后,會通過創(chuàng)建硬件EDMA中斷設(shè)置標(biāo)志位,之后從硬件中斷中退出并回到軟件中斷中。當(dāng)軟件中斷程序檢測到標(biāo)志位置為1時,就開始處理數(shù)據(jù)。當(dāng)一個完整的數(shù)據(jù)包傳送完后,會將標(biāo)志位置為0,重新等待下一個完整的數(shù)據(jù)包。當(dāng)完成一次數(shù)據(jù)傳輸后,DSP芯片重新開始監(jiān)聽網(wǎng)絡(luò)端口,等待下次的數(shù)據(jù)傳送。
上位機(jī)采用Socket套接字方式進(jìn)行驅(qū)動,該驅(qū)動方式無需進(jìn)行VXD虛擬設(shè)備程序的編寫,能夠直接從網(wǎng)卡中讀取數(shù)據(jù),軟件采用的幾個基本套接字程序如下:
(1) 創(chuàng)建套接字?socket():系統(tǒng)通過socket()向應(yīng)用程序提供創(chuàng)建套接字的方法,調(diào)用形式如下:
SOCKET = Socket(int type, int af, int protocol);
該套接字創(chuàng)建函數(shù)包括type,af和protocol三個參數(shù)。其中,參數(shù)type用來描述要創(chuàng)建套接字的類型,參數(shù)af用來指定通信區(qū)域,參數(shù)protocol用來說明套接字所使用的協(xié)議,如果操作者無需對使用的協(xié)議特別指定,則使用軟件默認(rèn)的連接方式。根據(jù)上述參數(shù)創(chuàng)建一個套接字,并分配給其相應(yīng)的資源,同時返回一個套接字號。
(2) 將套接字與本地網(wǎng)卡綁定?bind():當(dāng)使用socket()創(chuàng)建一個套接字后,就產(chǎn)生了一個未命名的名字空間,然后bind()將本地端口地址、本地主機(jī)地址與建立的套接字號相聯(lián)系,調(diào)用形式如下:
Bind (SOCKET s, const struct sockaddr FAR * name, int namelen);
參數(shù)[s]表示用socket()調(diào)用的且未連接的套接字描述符;參數(shù)name表示長度可變的賦給套接字[s]的本地地址;參數(shù)namelen表示name的長度。如果綁定過程中無錯誤產(chǎn)生,bind()的返回值為0,否則返回SOCKET_ERROR。
(3) 建立套接字連接?connect()和accept():connect()用于建立套接字連接,調(diào)用形式如下:
connect(SOCKET [s,] const struct sockaddr FAR * name, int namelen);
參數(shù)[s]表示創(chuàng)建連接的本地套接字描述符;參數(shù)name表示對方套接字地址結(jié)構(gòu)的指針;namelen表示對方套接字地址長度。如果建立套接字連接過程中無錯誤產(chǎn)生,connect()的返回值為0,否則返回SOCKET_ERROR。
(4) 接收數(shù)據(jù)包并將其存儲在緩存Recv Buf[ ]中,緩沖區(qū)的長Size為65 535,recv()的調(diào)用形式如下:
ret= recv( SOCKET [s,] struct sockaddr FAR * recv Buf, int FAR * addrlen);
參數(shù)[s]表示本地套接字的描述符;recv Buf表示接收數(shù)據(jù)包的頭指針;addrlen表示套接字的地址字節(jié)數(shù)。如果在數(shù)據(jù)包的接收過程中無錯誤產(chǎn)生,accept()返回SOCKET類型的值,其含義為所接收到套接字的描述符,否則返回INVALID_SOCKET。
5 DSP芯片的SRIO接口設(shè)計
對于一些實時性要求高、運(yùn)算量大的系統(tǒng)來說,需要多DSP間、DSP與FPGA間、DSP與高速A/D系統(tǒng)間進(jìn)行高速數(shù)據(jù)傳送,這些可通過SRIO接口[7?8]實現(xiàn)。
5.1 DSP間的SRIO通信設(shè)計
5.1.1 DSP間的SRIO接口互連設(shè)計
TMS320C6455芯片中內(nèi)嵌有4個全雙工端口的SRIO模塊。各端口可實現(xiàn)1.25 Gb/s,2.5 Gb/s,3.125 Gb/s的波特率,且各端口既能單獨(dú)形成1×模式,也能夠共同形成4×模式。SRIO模塊的數(shù)據(jù)傳輸使用速度高、抗干擾強(qiáng)的差分交流耦合信號。在電路板布線時,為了最大程度地降低接收方終端電阻的反射,差分布線應(yīng)等長并在接收端串聯(lián)0.1 μF的電容,以隔離直流偏置。兩片DSP間的SRIO連接如圖4所示。
對于多DSP芯片間的SRIO連接,必須保證其差分時鐘的一致性,所以要采用一個時鐘源給多個DSP芯片提供時鐘,同時為了穩(wěn)定時鐘信號,還要在線路上增加一個SN65LVDS105D時鐘驅(qū)動芯片。
5.1.2 數(shù)據(jù)傳輸設(shè)計
SRIO的數(shù)據(jù)采用包的形式進(jìn)行傳輸,請求包與響應(yīng)包的數(shù)據(jù)格式如圖5所示。
其傳輸過程為:首先發(fā)起者創(chuàng)建一個傳輸請求,請求包被傳送至與其相鄰的交換器件,然后通過交換機(jī)構(gòu)將請求包發(fā)送至目標(biāo)器件;根據(jù)請求內(nèi)容,目標(biāo)器件完成操作后,通過交換機(jī)構(gòu)將響應(yīng)包發(fā)送回發(fā)起者,完成整個數(shù)據(jù)傳輸過程。
5.1.3 SRIO的基本讀寫操作設(shè)計
在SRIO總線上,全部SRIO設(shè)備都有惟一的設(shè)備地址進(jìn)行區(qū)別。SRIO總線上的SRIO設(shè)備進(jìn)行讀寫時,會發(fā)送包含設(shè)備地址的數(shù)據(jù)包,只有數(shù)據(jù)包的設(shè)備地址與當(dāng)前設(shè)備地址相符合,SRIO設(shè)備才會對此次數(shù)據(jù)傳輸產(chǎn)生響應(yīng)。
5.2 DSP芯片與FPGA芯片構(gòu)建SRIO
SRIO接口在硬件中完成分組處理和器件與存儲器的尋址,大幅度地減少了系統(tǒng)的I/O開銷。一個4通道SRIO鏈路,在保證數(shù)據(jù)完整的條件下能提供25 Gb/s的流量,從而實現(xiàn)數(shù)據(jù)的實時傳輸。
SRIO網(wǎng)絡(luò)是通過端點(diǎn)設(shè)備和交換設(shè)備創(chuàng)建的,包含兩種連接方式:一種是端點(diǎn)與端點(diǎn)互聯(lián);一種是交換設(shè)備與端點(diǎn)互聯(lián),由端點(diǎn)設(shè)備進(jìn)行數(shù)據(jù)收發(fā),交換設(shè)備進(jìn)行端口間的數(shù)據(jù)傳遞,但不對數(shù)據(jù)包進(jìn)行解析。通過交換設(shè)備,能夠創(chuàng)建一個CPU,DSP和FPGA不同平臺間的互通數(shù)據(jù)網(wǎng)進(jìn)行數(shù)據(jù)的分布或共享處理。SRIO網(wǎng)絡(luò)的結(jié)構(gòu)如圖6所示。
6 以太網(wǎng)連接及速度測試實驗
通過DSP芯片與PC機(jī)進(jìn)行通信的方式測試千兆以太網(wǎng)的通信速率。其中PC機(jī)、千兆網(wǎng)卡及操作系統(tǒng)如下:PC機(jī):Intel[?]Pentium[?] Daul E2180 2.0 GHz;千兆網(wǎng)卡:Attansic L1 GigabitEthernet;操作系統(tǒng):WINDOWS XP。
6.1 以太網(wǎng)連接測試
網(wǎng)線一端接在DSP芯片的RJ45接口上,一端接在計算機(jī)網(wǎng)卡上,然后將計算機(jī)的IP 地址設(shè)置為192.168.1.1,子網(wǎng)掩碼設(shè)置為255.255.255.0,NDS不填。打開PC機(jī)的IE瀏覽器,并在IE地址欄輸入圖像處理系統(tǒng)平臺的IP地址192.168.1.2,刷新IE,若在顯示器上能夠看到由以太網(wǎng)傳送的攝像頭所拍攝的圖像,則說明以太網(wǎng)連接成功,否則繼續(xù)調(diào)試。
6.2 網(wǎng)絡(luò)傳輸速度測試
通過EtherPeek NX軟件對數(shù)據(jù)傳輸速度進(jìn)行測試,在本文選取的網(wǎng)卡、DSP芯片的條件下,并將Socket緩存設(shè)置為8 KB。測試數(shù)據(jù)表明,TCP/IP協(xié)議包的數(shù)據(jù)傳輸峰值速率能夠達(dá)到120 Mb/s,平均數(shù)據(jù)傳輸速率能達(dá)到80 Mb/s,滿足圖像處理系統(tǒng)的數(shù)據(jù)傳輸要求。
7 結(jié) 論
針對嵌入式智能圖像處理系統(tǒng)中的圖像數(shù)據(jù)傳輸問題與多DSP、多FPGA間的并行問題,通過C6455的以太網(wǎng)控制接口與PHY芯片結(jié)合,實現(xiàn)了DSP+FPGA與PC機(jī)的網(wǎng)絡(luò)傳輸功能,同時設(shè)計了多DSP、多FPGA間的SRIO結(jié)構(gòu),實現(xiàn)了智能圖像處理系統(tǒng)的網(wǎng)絡(luò)化和并行化,有效地提高了圖像的處理速度與數(shù)據(jù)傳輸速度。但相關(guān)的智能圖像處理算法還無法在硬件系統(tǒng)上實現(xiàn)移植,還需在后續(xù)的工作中繼續(xù)研究。
參考文獻(xiàn)
[1] 魯冬.基于TMS320C6455的視頻動目標(biāo)檢測裝置設(shè)計[J].電子工程設(shè)計,2011,19(6):190?192.
[2] 李佩斌,黃瑩,趙譽(yù)婷.基于DSP+FPGA的嵌入式圖像處理系統(tǒng)設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(20):95?98.
[3] WILSON A. Camera link standard advances interfacing [J]. Vision systems design, 2015, 8(5): 43?44.
[4] 劉興華,杜尚豐.視頻解碼芯片SAA7113 在圖像采集系統(tǒng)中的應(yīng)用[J].中南大學(xué)學(xué)報(自然科學(xué)版),2007,38(z1):1128?1132.
[5] 周楨.基于FPGA與DSP的實時視頻圖像偏色校正系統(tǒng)[J].現(xiàn)代電子技術(shù),2015,38(12):77?79.
[6] 韓菲,吳昊.基于DSP的網(wǎng)絡(luò)傳輸設(shè)計與實現(xiàn)[J].計算機(jī)與數(shù)字工程,2006(6):113?116.
[7] HARALICK R M, SHAPIRO L G. Image segmentation techniques [J]. Computer vision, graphics, and image processing, 2015, 29(1): 100?132.
[8] 張峰,任國強(qiáng),吳欽章.基于SRIO的高速圖像串行傳輸系統(tǒng)設(shè)計[J].光電工程,2010,37(10):89?92.