1 引言
數(shù)字圖像處理理論和技術(shù)的飛速發(fā)展使得大多數(shù)圖像處理的問題都轉(zhuǎn)變?yōu)橛脭?shù)字信號處理的形式來解決。數(shù)字圖像處理有兩大優(yōu)勢:第一、數(shù)字信號處理中存在大量成熟的快速算法,如:FFT,FHT等,這些算法大量的應(yīng)用到圖像處理中;其次,隨著超大規(guī)模集成電路的發(fā)展,DSP 的處理速度,內(nèi)部存儲器容量等等大大提高,為實時圖像處理提供了最優(yōu)的解決方式,這就是DSP + FPGA 相結(jié)合的設(shè)計方式。這種方式下,用一片高速DSP完成圖像處理算法,然后利用FPGA 的在控制和協(xié)作處理上的優(yōu)勢,將DSP 從控制回路中解脫出來,全力投入到運算中,能夠獲得最高的工作速度和穩(wěn)定性。
2 系統(tǒng)簡介
我們所設(shè)計的系統(tǒng)的結(jié)構(gòu)如圖1。該系統(tǒng)是自主移動機器人無線遙控遙測系統(tǒng)雙目視覺部分。這個系統(tǒng)包括兩個架設(shè)在云臺上的攝像頭,它拍攝被跟蹤目標的圖像,通過視頻解碼器收稿日期:2005 - 10 - 18SAA7115H處理后送入DSP ,DSP 通過這些圖像信息,判斷出被跟蹤物體的運動方向,相對速度,把每幀圖像處理后,提取出來的特征值(位置,速度等運動狀態(tài)信息) 送到FPGA ,FPGA 通過無線模塊ptr8000 把這些信息發(fā)送到控制臺,控制臺通過被跟蹤物體運動狀態(tài)的改變,控制機器人調(diào)整自己的運動狀態(tài),進行跟蹤。
圖1 系統(tǒng)結(jié)構(gòu)簡圖
3 系統(tǒng)硬件設(shè)計
3. 1 方案論證
DM642 是TI 公司推出的針對多媒體處理領(lǐng)域應(yīng)用的DSP(主頻600M) ,有4800MIPS 的峰值計算速度。我們采取每秒鐘處理6 幀圖像,那么處理每幀圖像的時間就為0. 1667s , 這段時間DM642 能完成的最大指令個數(shù)是800M條,我們采集的每個圖像是320 3 240 像素的16 位RGB 圖像,則每一幅圖像的大小約是300Kbit ,每次同時處理兩幀圖像,兩幀圖像也就是4 幅1.2Mbit ,我們對采集到的圖像要進行圖像預(yù)處理、圖像去噪、邊緣檢測、最后完成匹配。圖像預(yù)處理對圖像的每一個像素點進行一次加乘運算,生成灰度圖像,這個過程的運算量大約為圖像像素值的3 倍,大約1M。圖像去噪的算法我們采用移動平均法,計算量約為像素值的10 倍,大約4M。邊緣檢測算法采用Rob2erts 算子,這個過程運算量比較大,但是不超過100 倍像素值,小于40M,匹配時我們這是將邊緣上的交叉點提取出來進行運算,運算量很小。加上特征提取,整個運算量不到50M,而我們最高能夠獲得800M的處理能力,所以DM642 的計算能力完全勝任這個項目中的算法,而且為系統(tǒng)提供了很大的裕量。
3. 2 硬件結(jié)構(gòu)
整個系統(tǒng)硬件有DM642、XC2S300E ( FPGA) 、視頻解碼器SAA7115H、32M SDRAM、4M FLASH、電源管理芯片TPS54310PWP、無線模塊PTR8000。DM642 提供了64 位寬的數(shù)據(jù)線,所以我們將兩個內(nèi)存模塊MT48LC4M32B2 共用一組地址線,而數(shù)據(jù)線分別接到DM642 的高32 位和低32 位數(shù)據(jù)線上,這樣就獲得了64位數(shù)據(jù)總線寬度。FLASH 存儲器的低八位也接到這組數(shù)據(jù)線上,由于FLASH存儲器在系統(tǒng)初始化完畢后和DM642 之間沒有數(shù)據(jù)交換,所以在實驗過程中沒有總線沖突的情況發(fā)生。
系統(tǒng)需要兩路視頻輸入,所以在設(shè)計中我們采用了兩片視頻采集卡分別連接到了DM642 的視頻端口0 和1。初始化配置兩片采集卡采用I2C 總線(時鐘線SCL 和數(shù)據(jù)線SDL) 。圖像數(shù)據(jù)的傳輸使用D[7 -0 ] ,由SAA7115 提供同步時鐘信號SCLK和XHSYNC。第一片采集卡和DM642 視頻端口0 連接方式示意圖如圖2 ,第二片采集卡和端口1 的連接方式相同,只是共用配置線SCL 和SDL。
圖2 DSP 與視頻解碼芯片SAA7115 連接圖
系統(tǒng)的控制完全由FPGA 來完成,我們使用它來實現(xiàn)以下功能:執(zhí)行中斷邏輯控制,和DSP 之間通信,傳輸DSP 提取出的運動狀態(tài)特征值;用于實現(xiàn)系統(tǒng)各部分的粘合邏輯; FPGA 的內(nèi)部寄存器映像在DSP 的地址空間上,可通過對寄存器的讀寫來配置系統(tǒng)參數(shù);控制板子上的調(diào)試指示燈。設(shè)計中FPGA 芯片我們選用Xilinx 公司的XC2S300E。我們?yōu)樗鼣U展了一片專門的初始化芯片XCF02S ,存放它的初始化配置程序和整個系統(tǒng)的邏輯控制程序。
DM642 的內(nèi)核電壓是1. 4V ,IPO 電壓是3. 3V。而且上電、掉電次序有嚴格的要求,應(yīng)當保證內(nèi)核電源(CVDD) 先上電。原因在于:如果外部IPO 引腳先上電,芯片緩沖P驅(qū)動部分的晶體管將在一個未知狀態(tài)下工作,這是非常危險的。因此,我們選用了TI 公司專用的電源管理芯片TPS54310PWP ,它可以同時產(chǎn)生上述兩種電壓。我們用下面的連接方法解決了上電次序的問題:把1. 4V 模塊的電源輸出有效引腳PG(power good) 連接到3.3V 模塊的允許電壓輸入引腳EN。這樣,只有當1. 4V 電壓有效之后,3. 3V 電壓才開始上電,這就保證了DM642 的內(nèi)核電壓先于IPO 電壓上電。另外,系統(tǒng)中的采集卡芯片SAA7115 需要模擬和數(shù)字兩種電源。我們使用了一個磁珠和另外一片電源管理芯片配合產(chǎn)生了模擬3. 3V 電壓,為了避免兩片電源管理芯片之間的電源噪聲互相干擾,我們將兩個電源芯片分開設(shè)計,模擬地和數(shù)字地也分開設(shè)計,在一點接地。
3. 3 設(shè)計原則
DM642 的工作頻率達到600M,屬于高頻電路,對于高頻電路設(shè)計中應(yīng)該注意的是:(1)采用多層板既是布線所必須的,也是降低干擾的有效手段。
(2) 高速電路器件管腳間的引腳彎折越少越好。高頻電路布線的引線最好采用全直線,需要轉(zhuǎn)折,可用135°折線或圓弧轉(zhuǎn)折,這樣可以減少高頻信號對外的發(fā)射和相互間的耦合。
(3) 高頻電路器件管腳問的引線越短越好。
(4) 元件連接過程中所用的過孔(Via) 越少越好。我們發(fā)現(xiàn),一個過孔可帶來約0. 5PF 的分布電容,減少過孔數(shù)能顯著提高速度。
(5) 電源層、地線層間隔。各類信號走線不能形成環(huán)路,地線也不能形成電流環(huán)路。
(6) 高速接口部分如SDRAM加去藕電容。
圖3 系統(tǒng)軟件流程圖
4 系統(tǒng)的軟件設(shè)計
TI 提供的基礎(chǔ)軟件包括CSL (Chip Support Library) 芯片支持庫,DDK(Driver Development Kit) 設(shè)備驅(qū)動程序開發(fā)包,DSPLIBPIMGLIB, DSPPBIOS 嵌入式實時、多任務(wù)操作系統(tǒng), ReferenceFrameworks 程序參考架構(gòu),XDAIS(DSP 算法標準)。
DSPPBIOS 是最重要的開發(fā)工具。它的代碼大約1KWords、CPU 占用率1MIPS ,這對我們的系統(tǒng)和DM642 的運算能力來說,是微不足道的開銷,但對我們的軟件系統(tǒng)來說,它為我們搭建了一個非常優(yōu)秀的操作系統(tǒng)平臺:它有一個基于優(yōu)先級的、搶先型的實時調(diào)度程序;它能夠提供內(nèi)存管理,實現(xiàn)動態(tài)存儲器分配。
系統(tǒng)流程圖如圖3。
在DSP 系統(tǒng)上電復(fù)位以后,TMS320DM642 開始自舉啟動過程,將存放在Flash 中的程序代碼和初始化數(shù)據(jù)加載到目標存儲空問中。加載完成以后,自舉程序跳轉(zhuǎn)到正常程序入口處,并開始執(zhí)行(Bootload) 。
5 系統(tǒng)調(diào)試
(1)JTAG接口測試我們利用CCS 工具將一部分程序?qū)懭?span>SDRAM,然后查看存儲器中相應(yīng)部分寫入的數(shù)據(jù)。圖4 是原程序的數(shù)據(jù)代碼,圖4- 4 是寫入SDRAM后,查看數(shù)據(jù)的結(jié)果。在圖4 中陰影部分的數(shù)據(jù)與在圖5 中黑粗線所包圍的數(shù)據(jù)一樣,如: 圖4 中地址000147c2H到000147c5H處四個字節(jié)的數(shù)據(jù)依次是:91 ,B3 ,0F ,00。而在圖5 中地址是001145E0H - 001145E3H 處的四個字節(jié)的數(shù)據(jù)是91 ,B3 ,OF ,00。(注意:數(shù)據(jù)在存儲器中的存放順序有大端和小端兩種模式,所謂小端模式指低字節(jié)數(shù)據(jù)存放在內(nèi)存低地址處,高字節(jié)數(shù)據(jù)存放在內(nèi)存高地址處;大端字節(jié)序是高字節(jié)數(shù)據(jù)存放在低地址處,低字節(jié)數(shù)據(jù)存放在高地址處。我們選擇了DM642 的小端模式,所以兩個圖是做記號的部分完全對應(yīng)的) 。下圖的結(jié)果證明JTAG接口已經(jīng)工作正常,以下的工作就是通過JTAG接口進行其它程序的調(diào)試了。
圖4 源程序數(shù)據(jù)代碼
圖5 存儲器中的數(shù)據(jù)代碼
(2) RS232 接口測試串口的測試主要借助了串口精靈和計算機中超級終端的幫助,通過系統(tǒng)主機發(fā)送一些數(shù)據(jù),看串口精靈接受是否正確,反之亦然。調(diào)試串口的程序如下:
//init INTCINTC
Init () ;PP初始化中斷控制器寄存器;{
UART-ConfigData uart0 ;
uart0. baudRate = UART 115200 ;
uart0. charLength = UART CHAR LEN 8 ;
uart0. stopBits = UART STOPBIT1 ;
uart0. parity = UART NO PARITY;}
//設(shè)定基本的通訊參數(shù)
sprintf (UART-outBuff ,”\ r \ n \ n DSPFPGA”) ;
UART sendString(UART0 ,UART outBuff) ;
//發(fā)送字符串變量DSPFPGA 到串口0
yb = UI getInput () ;
switch(yb)
{case’1’:
DraftPreview(TURE) ;
break ;
case’2’
STILL MENU run() ;
default :
break ;
}
6 結(jié)論
為了驗證這個系統(tǒng)的滿負荷工作能力,我們采用了DSP 連續(xù)采集處理的方式,試驗結(jié)果表明,在我們未做軟件優(yōu)化的條件下,每秒鐘可以采集并處理完12 幀圖像。而在PC + 采集卡模式上運行程序時,PC 機每秒鐘只能處理并發(fā)送2 幀雙目圖像的信息。綜上所述,DM642 + FPGA 的實時圖像處理系統(tǒng)具有PC機無法比擬的高速性,必將在以后廣泛流行起來。