1引言
完成某一特定任務(wù)的圖像處理系統(tǒng),其硬件方案大體上有三種:使用通用計(jì)算機(jī)[1],、使用ASIC(Application Specific Integrated Circuit)[2]和使用DSP(Digital Signal Processor)[3],。使用通用計(jì)算機(jī)的方案可以應(yīng)用現(xiàn)有的硬件設(shè)備,選擇合適的操作系統(tǒng),,只需要進(jìn)行應(yīng)用程序的開(kāi)發(fā),。其優(yōu)點(diǎn)在于開(kāi)發(fā)周期短,費(fèi)用較低,,而且產(chǎn)品易于維護(hù)和升級(jí),;缺點(diǎn)是運(yùn)算速度受到限制,對(duì)于算法的運(yùn)算量和復(fù)雜度很高的應(yīng)用場(chǎng)合,,難以達(dá)到實(shí)時(shí)性要求,。該方案有二種應(yīng)用場(chǎng)合:算法開(kāi)發(fā)初中期階段及一些實(shí)時(shí)性要求不高的領(lǐng)域。使用ASIC的方案中,,所有的運(yùn)算都由硬件實(shí)現(xiàn),,因此實(shí)時(shí)性會(huì)非常好,但硬件的設(shè)計(jì)是一大難點(diǎn),,而且系統(tǒng)一旦定型,,不方便對(duì)其進(jìn)行升級(jí)。使用高速DSP可以說(shuō)是二種方案的折衷,,一方面在硬件實(shí)現(xiàn)上只需根據(jù)需求進(jìn)行DSP外圍接口電路的設(shè)計(jì),,另一方面,,隨著DSP技術(shù)的快速發(fā)展,高性能芯片的不斷推出,,其運(yùn)算能力也能滿足一般圖像處理的要求,。而且,系統(tǒng)功能由算法軟件來(lái)實(shí)現(xiàn),,對(duì)系統(tǒng)的維護(hù)和升級(jí)也很方便,。
本文采用TI公司的多媒體DSP芯片TMS320DM642[4](簡(jiǎn)稱DM642),實(shí)現(xiàn)了一種圖像處理系統(tǒng)基本功能的應(yīng)用平臺(tái),,包含視頻輸入,、視頻輸出以及串行通信等功能。
2,、系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件組成如圖1所示,。以DM642為核心,外部擴(kuò)展了存儲(chǔ)器SDRAM和Flash,,分別用于程序運(yùn)行和程序存儲(chǔ),;通過(guò)控制視頻編解碼器完成視頻的采集和輸出;并通過(guò)McBSP接口實(shí)現(xiàn)UART,,方便視覺(jué)系統(tǒng)與外界的通信,。
圖 1 DSP視覺(jué)系統(tǒng)硬件組成結(jié)構(gòu)圖
系統(tǒng)中,擴(kuò)展的外部存儲(chǔ)器包括ROM和SDRAM,。其中,,ROM采用Atmel公司的Flash,型號(hào)是AT49BV1614,,其容量為16MBits,,在系統(tǒng)啟動(dòng)時(shí)作為Boot ROM使用;SDRAM由兩片4Banks×512K×32Bits規(guī)格的芯片夠成,,型號(hào)是HY57V643220CT,,用來(lái)儲(chǔ)存程序、數(shù)據(jù)和視頻,。視頻ADC采用Phillips公司的SAA7113,,轉(zhuǎn)換精度9Bits,擁有有4個(gè)模擬輸入通道,,可輸入4路模擬視頻信號(hào),,輸出接口(VP0)有一個(gè),支持PAL,、NTSC,、SECAM這三種主要的模擬視頻制式。視頻輸出DAC芯片采用的是Analog Devices公司推出的ADV7176視頻編碼器,轉(zhuǎn)換精度為10Bits,,最高信噪比達(dá)80dB,,它在DM642的行、場(chǎng)同步信號(hào)及自己的時(shí)鐘控制下從DM642中讀出數(shù)據(jù),,經(jīng)過(guò)D/A轉(zhuǎn)換后輸出到TV顯示器上進(jìn)行顯示,。通信接口中利用DM642已有的同步串口McBSP與EDMA實(shí)現(xiàn)UART的方法,硬件上加入一片MAX3323E,,實(shí)現(xiàn)CMOS邏輯電平和RS-232邏輯電平之間轉(zhuǎn)換,,以滿足與控制計(jì)算機(jī)進(jìn)行串口通信的要求。
3,、系統(tǒng)軟件設(shè)計(jì)
TI為了對(duì)自己的DSP 產(chǎn)品提供軟件開(kāi)發(fā)支持,,推出了DSP /BIOS(Basic Input Output System)搶先型、可裁剪的實(shí)時(shí)多任務(wù)操作系統(tǒng),,它與CCS(Code Composer Studio)編譯環(huán)境集成在一起,。使用DSP/BIOS可以進(jìn)行高效的應(yīng)用程序開(kāi)發(fā)。本文圖像系統(tǒng)的軟件開(kāi)發(fā)是基于DSP /BIOS環(huán)境下進(jìn)行的,。
3.1 軟件設(shè)計(jì)流程
本文圖像處理系統(tǒng)的軟件流程如圖2所示,。應(yīng)用主程序需要先完成CSL(Chip Support Library)庫(kù)的初始化,以便在程序中能調(diào)用相關(guān)的芯片級(jí)支持庫(kù)函數(shù),。隨后,,開(kāi)EDMA中斷,并使能EDMA中的I2C通道的中斷,;開(kāi)VP1、VP2口中斷,;初始化并啟動(dòng)I2C的數(shù)據(jù)傳輸,,完成對(duì)視頻解碼芯片SAA7113和視頻編碼芯片ADV7176的寄存器的參數(shù)初始化數(shù)配置;配置和啟動(dòng)VP1和VP2視頻口,;最后進(jìn)入空閑等待循環(huán),。視頻的采集以中斷的方式進(jìn)行,當(dāng)一幀圖像采集完后,,觸發(fā)VP1中斷,,系統(tǒng)調(diào)用相應(yīng)的中斷子程序?qū)D像數(shù)據(jù)進(jìn)行處理計(jì)算,求出位置和姿態(tài)等參數(shù),,最后將參數(shù)通過(guò)UART傳輸給控制計(jì)算機(jī),。
圖2 主程序流程
DM642 的EDMA 控制器負(fù)責(zé)片內(nèi)L2存儲(chǔ)器與其它設(shè)備之間的數(shù)據(jù)傳輸。能提供超過(guò)2Gb/s 的外部帶寬,,有64 個(gè)通道, 每1個(gè)通道都有1個(gè)事件與之關(guān)聯(lián),,由這些事件觸發(fā)相應(yīng)通道的傳輸。上面流程中A/D,、D/A的芯片初始化的參數(shù)傳輸和視頻數(shù)據(jù)的采集都是通過(guò)EDMA來(lái)實(shí)現(xiàn)的,。
3.2 A/D和D/A芯片的初始化
A/D和D/A芯片的初始化過(guò)程通過(guò)EDMA中的I2C通道來(lái)實(shí)現(xiàn),。要傳輸?shù)臄?shù)據(jù)參數(shù)在EDMA 的參數(shù)RAM表中進(jìn)行配置,其中主要包括源數(shù)據(jù)起始地址,、目的地址,、地址的修改方式、要傳輸?shù)臄?shù)據(jù)格式和大小,。對(duì)二個(gè)芯片的初始化數(shù)據(jù)參數(shù)分別配置在二個(gè)不同的RAM表中,。第一次I2C通道的EDMA數(shù)據(jù)傳輸完畢后由EDMA控制器向CPU發(fā)出中斷,中斷處理程序載入第二次I2C傳輸?shù)腞AM參數(shù)表,,啟動(dòng)第二次傳輸過(guò)程,。從而完成二個(gè)芯片的初始化過(guò)程。
3.3 視頻采集與輸出
對(duì)應(yīng)于YUV 4:2:2的格式視頻數(shù)據(jù)采集,,EDMA中用于VP1的數(shù)據(jù)傳輸有三個(gè)通道,。系統(tǒng)中將視頻端口VP1配置為連續(xù)幀采集的方式,也就是啟動(dòng)第一幀的采集后,,后面幀的采集連續(xù)進(jìn)行不需要另外的幀同步信號(hào),。
在隔行掃描模式下,每幀分為兩場(chǎng),,兩場(chǎng)在時(shí)域上是分開(kāi)的,,通過(guò)EDMA 鏈表可自動(dòng)實(shí)現(xiàn)場(chǎng)合成,不需占用額外的CPU 時(shí)間,。EDMA 的參數(shù)RAM 存放了有關(guān)的傳輸參數(shù), 這些參數(shù)用于產(chǎn)生EDMA 讀寫(xiě)操作所需要的地址,。在使用EDMA 通道傳輸奇數(shù)場(chǎng)與偶數(shù)場(chǎng)時(shí),分別使用不同的EDMA 參數(shù)RAM,。兩組參數(shù)RAM 的目的地址分別指向存儲(chǔ)圖像的第一行與第二行象素的首地址, 并且兩組參數(shù)RAM 通過(guò)鏈接地址(Linking Address)循環(huán)相連,,并將源地址傳輸方式設(shè)置為1維的,目標(biāo)地址方式設(shè)置為2維的,。在EDMA 通道的傳輸中,,奇數(shù)場(chǎng)傳輸任務(wù)的結(jié)束會(huì)自動(dòng)地根據(jù)當(dāng)前參數(shù)RAM的鏈接地址裝載傳輸偶數(shù)場(chǎng)的參數(shù)RAM,進(jìn)行偶數(shù)場(chǎng)的傳輸。通過(guò)設(shè)定幀索引(Frame Index)值可以讓奇數(shù)場(chǎng)與偶數(shù)場(chǎng)數(shù)據(jù)在幀緩沖區(qū)中被隔行存儲(chǔ),,這樣在無(wú)需占用額外CPU 時(shí)間的前提下就實(shí)現(xiàn)了場(chǎng)合成,。另外,由于兩組參數(shù)RAM 通過(guò)鏈接地址循環(huán)相連,,則奇數(shù)場(chǎng)與偶數(shù)場(chǎng)的數(shù)據(jù)傳輸連續(xù)不斷地交替進(jìn)行下去,,這就形成了連續(xù)幀的數(shù)據(jù)采集。每一幀數(shù)據(jù)通過(guò)EDMA傳輸至SDRAM完畢之后,,VP1會(huì)向CPU發(fā)出一個(gè)中斷,,相應(yīng)的中斷程序?qū)?huì)對(duì)采集到的圖像數(shù)據(jù)進(jìn)行處里。
大批量的圖像數(shù)據(jù)傳輸和復(fù)雜算法的處理一直是高速數(shù)字圖像處理器的速度瓶頸,從上面的數(shù)據(jù)傳輸過(guò)程上可以看出,, 利用DM642 的EDMA 功能可以在不中斷DSP算法處理工作的同時(shí)完成圖像數(shù)據(jù)的搬移,,在有效地解決了大批量圖像數(shù)據(jù)傳輸速度瓶頸的同時(shí),又能讓DSP 的處理器核專門(mén)從事算法處理工作,,極大地提高了系統(tǒng)的并行性能,。
視頻輸出功能在本系統(tǒng)中主要用于早期開(kāi)發(fā)階段的調(diào)試。實(shí)際應(yīng)用中可以根據(jù)需要將中間處理圖像結(jié)果數(shù)據(jù)通過(guò)EDMA中的VP2通道直接寫(xiě)入視頻FIFO,。
3.4 通信接口功能的實(shí)現(xiàn)
系統(tǒng)中,,通過(guò)軟件的方法,不增加硬件的復(fù)雜度,,利用已有的McBSP和EDMA實(shí)現(xiàn)UART功能,。
同步串口依賴三條分離的信號(hào)線(數(shù)據(jù)、幀同步和時(shí)鐘)來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳輸,,而異步通信只是在一根信號(hào)線上進(jìn)行,。要用同步串口實(shí)現(xiàn)異步傳輸,需要通過(guò)在數(shù)據(jù)的首尾加入起始位和停止位,,讓接收方知道數(shù)據(jù)傳輸何時(shí)開(kāi)始和停止,。用McBSP實(shí)現(xiàn)UART功能,除了對(duì)McBSP進(jìn)行正確設(shè)置外,,還需要正確設(shè)置EDMA,,對(duì)McBSP收發(fā)數(shù)據(jù)進(jìn)行軟件處理。EDMA實(shí)現(xiàn)內(nèi)存到McBSP之間的高效數(shù)據(jù)搬移,,數(shù)據(jù)處理軟件對(duì)待發(fā)送的數(shù)據(jù)進(jìn)行編碼,,對(duì)接收到的數(shù)據(jù)進(jìn)行解碼。對(duì)McBSP和EDMA的設(shè)置及編解碼程序的設(shè)計(jì)詳見(jiàn)文獻(xiàn)[5],。
4,、結(jié)論
研究了一種基于DM642的圖像處理應(yīng)用平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn),其實(shí)現(xiàn)的基本功能包括視頻輸入和輸出,,與外界的UART接口通信等。介紹了系統(tǒng)硬件組成,,以及軟件功能模塊的實(shí)現(xiàn),。由于軟件采用了模塊化設(shè)計(jì),針對(duì)具體的功能需求,,通過(guò)配置不同的客戶程序,,可以實(shí)現(xiàn)特定的應(yīng)用,因而系統(tǒng)具有好的應(yīng)用前景,。
本文來(lái)源于與非網(wǎng) http://www.eefocus.com
原文地址:http://www.eefocus.com/article/11-08/2660031313028942.html