摘要:為解決高速數(shù)字圖像處理系統(tǒng)和實時性相沖突的要求,設(shè)計了以多DSP(數(shù)字信號處理器TMS320C6416)和現(xiàn)場可編程門陣列(FPGA)相結(jié)合的實時圖像處理系統(tǒng)。重點介紹了該系統(tǒng)的硬件資源選擇、基本組成、工作原理、電源設(shè)計、DSP引導(dǎo)方式以及軟件設(shè)計等,通過對每秒25幀14位640×512像素的數(shù)字圖像處理結(jié)果表明,該系統(tǒng)滿足高速圖像實時處理的要求。同時,可擴展到更高速度的DSP(如TMS320C6455系列),實現(xiàn)更為復(fù)雜的實時圖像處理任務(wù)。
隨著高速數(shù)字電路的快速發(fā)展,DSP芯片集成度、運算速度、數(shù)據(jù)吞吐率等性能的不斷提高,DSP不再局限于傳統(tǒng)音視頻處理及離線信號處理等方面的應(yīng)用,它已被廣泛地應(yīng)用于許多實時視頻與信號處理傳輸領(lǐng)域。在實時圖像處理系統(tǒng)中,如何在有限的時間內(nèi)完成大量信息數(shù)據(jù)的處理,滿足系統(tǒng)的實時性要求一直是困擾著人們的一個難題[1]。考慮到單個DSP難于滿足圖像處理中運算量大、實時性強、數(shù)據(jù)傳輸速率高等要求,設(shè)計一種以多個TMS320C6416為核心處理器和FPGA(Virtex-4)相結(jié)合的實時圖像處理系統(tǒng)[2]。該系統(tǒng)可有效地融合DSP和FPGA兩方面的優(yōu)勢,利用FPGA進行了圖像的預(yù)處理,從而 極大地提高了系統(tǒng)的靈活性,為實時圖像處理的研究和應(yīng)用提供了廣闊的空間和平臺[3]。
1 系統(tǒng)硬件平臺器件選型
1.1 TMS320C6416簡介
系統(tǒng)的核心部分選擇TI的TMS320C6416 DSP芯片,這款DSP具有如下特點:
① 8 Mbit的片內(nèi)存儲器
② 擴展的直接存儲器訪問(EDMA)
③ 主機接口(HPI)
④ PCI接口
⑤ 外部存儲器接口EMIFA和EMIFB。其中EMI?
FA總線寬度為64 bit,EMIFB總線寬度為16 bit
⑥ 多通道緩沖串口(McBSP)
⑦ UTOPIA接口(ATM從設(shè)備接口)
⑧ 32位定時器
⑨ 16個通用I/O口(GPIO)
由于進行在線圖像處理、圖像校正、目標識別,所以,系統(tǒng)的運算數(shù)據(jù)量較大,而這款芯片提供了高運算速度、大內(nèi)存空間、足夠的I/O接口、多樣的通訊方式、寬范圍的使用溫度,給系統(tǒng)的軟件設(shè)計提供了充分的時間及空間運算余地,以及適應(yīng)嚴酷運行環(huán)境的能力。另外,BGA封裝也為系統(tǒng)的抗干擾能力提供了保障[4]。
1.2 Virtex-4簡介
系統(tǒng)的FPGA 選擇Xilinx 公司的XC4VLX100-10FF1513芯片[5],該型器件具有豐富的邏輯資源,能夠滿足設(shè)計要求。Virtex-4 FPGA 是Xilinx 公司推出的第四代Virtex 系列FPGA 產(chǎn)品。Xilinx 的Virtex-4 系列將高級硅片組合模塊(ASMBL)架構(gòu)與種類繁多的靈活功能相結(jié)合,大大提高了可編程邏輯設(shè)計能力,從而成為替代ASIC技術(shù)的強有力產(chǎn)品。該產(chǎn)品采用先進的深亞微米設(shè)計技術(shù)、集成硬IP模塊以及三次氧化90 nm銅CMOS工藝技術(shù),使用300 mm(12 英寸)晶片技術(shù)生產(chǎn),因而
其器件成本和功耗降低了50%。基本的Virtex- 4 構(gòu)建模塊是原來的構(gòu)建模塊(可見于流行的Virtex、Vir?tex-E、Virtex-II、Virtex-II Pro 和Virtex-II Pro X 產(chǎn)品系列)的增強版本,所以上一代設(shè)計可以向上兼容。
2 系統(tǒng)設(shè)計
主要分為三部分,分別是圖像預(yù)處理模塊、圖像并行處理模塊和圖像綜合處理模塊[6]。其系統(tǒng)原理框圖如圖1所示。
系統(tǒng)詳細設(shè)計框圖如圖2所示。
2.1 圖像預(yù)處理模塊
采用Xilinx 公司的Virtex-4 系列芯片和XCF32PVO48C 系列芯片,主要實現(xiàn)對圖像數(shù)據(jù)在FPGA內(nèi)部進行分割,并將圖像傳送至4片DSP(圖像并行處理模塊)中并行處理,DSP對接收的圖像實時處理后經(jīng)FPGA傳送至圖像綜合處理模塊中的DSP作綜合處理。FPGA內(nèi)定制8個雙口RAM,其中為4片DSP傳輸圖像數(shù)據(jù),另外4個傳輸圖像并行處理模塊處理后的圖像到圖像綜合處理模塊DSP的EMIFA接口。
2.2 圖像并行處理模塊
采用了TI公司的TMS320C6416系列DSP芯片、AMD 公司的AM29LV800A 系列FLASH 芯片和Mi?
cron 公司的MT48LC16M16A2BG 系列SDRAM 芯片,主要完成圖像數(shù)據(jù)的并行處理。信號并行處理模塊上有4 個TI6416DSP, 分別為DSP1、DSP2、DSP3,DSP4。其中只有DSP1,DSP3帶有FLASH,因此上電時需要DSP1通過HPI方式引導(dǎo)DSP2,DSP3通過HPI方式引導(dǎo)DSP4。每個DSP接收1/4幀圖像。DSP通過EMIFA的CE2從FPGA中讀取圖像數(shù)據(jù),圖像處理后通過EMIFB 寫入4 個256 Mb 的DPRAM,并通過EMIFB的CE2將處理后的數(shù)據(jù)傳給FPGA。DSP1的GPIO1用于復(fù)位FPGA,GPIO1為低電平時FPGA為復(fù)位狀態(tài),高電平時為工作狀態(tài)。DSP1 的GPIO7,DSP2、DSP3,DSP4的GPIO5用于接收FPGA的信號,當FPGA準備好圖像數(shù)據(jù)時,會將這幾個信號拉低2ms 左右,以通知DSP 讀取圖像數(shù)據(jù)。DSP4 的GPIO15 通過FPGA 與信號綜合處理模塊的DSP 連接,用于通知DSP讀取信號并行處理模塊處理好的數(shù)據(jù)。
2.3 圖像綜合處理模塊
采用和圖像并行處理模塊相近的硬件平臺。其中DSP通過EMIFA接口讀取信號并行處理模塊處理
過的數(shù)據(jù),并對數(shù)據(jù)進行綜合處理。DSP通過EMIFB連接了一個FLASH和SDRAM。當圖像并行處理模塊處理完數(shù)據(jù)后,先是由FPGA給圖像綜合處理模塊DSP的外部中斷管腳GPIO5發(fā)送一個低電平,觸發(fā)DSP外部中斷,DSP再通過其EMIFA的CE0從FPGA綜合出的SRAM中讀取數(shù)據(jù)。DSP1預(yù)留3個MCBSP通道,實現(xiàn)圖像綜合處理模塊與PC機等上位機之間的信息通訊。
2.4 電源設(shè)計
由于采用了多種型號的集成芯片,如FPGA和DSP自身就是多電壓工作,需要的工作電壓為3.3、2.5、1.8、1.25、1.2 V等。采用TI公司的TPS54310開關(guān)電壓轉(zhuǎn)換芯片,通過外接不同的配置電阻電容實現(xiàn)輸出所需的電壓值。
2.5 DSP程序引導(dǎo)
(1)FLASH引導(dǎo)
圖像并行處理模塊的DSP1、DSP3和圖像綜合處理模塊的DSP是采用這種方式引導(dǎo)的。該引導(dǎo)方式是從8 bit FLASH引導(dǎo)(Bootmode [1:0]=10),采用的FLASH容量為1 M×8 bit,最快讀寫周期為90 ns。圖3為DSP與FLASH的連接圖[7]。DSP的EMIFB按照異步存取模式與FLASH連接,F(xiàn)LASH的1 M字節(jié)對應(yīng)DSP的0×64 000 000-0×64 100 000(EMIFB CE1)尋址空間。FLASH工作在8 bit模式 。
?
DSP上電復(fù)位后,CPU自動將EMIFB的CE1區(qū)間的最開始1 K 字節(jié)數(shù)據(jù)(0×640 00 000-0×64 000400)拷貝到內(nèi)部RAM(0×00 000 000- 0×00 000400),執(zhí)行一次引導(dǎo)(被拷貝的代碼包括兩部分:中斷向量表(0×64 000 000-0×64 000 200)和secondarybootloader程序,這部分代碼應(yīng)事先燒入FLASH)。然后CPU產(chǎn)生復(fù)位中斷,程序指針指向地址0×00 000000,執(zhí)行跳轉(zhuǎn)指令后程序指針指向secondary boot?loader的開始。secondary bootloader實現(xiàn)的功能是將整個應(yīng)用程序(事先已燒入FLASH)拷貝到其運行地址(內(nèi)部RAM,這樣程序運行的最快),執(zhí)行二次引導(dǎo)。在secondary bootloader程序的最后,是一個跳轉(zhuǎn)指令,CPU跳轉(zhuǎn)到_c_int00,開始執(zhí)行應(yīng)用程序[8]。
(2)HPI引導(dǎo)
圖像并行處理模塊的DSP2和DSP4是采用HPI方式引導(dǎo)的,DSP2通過HPI接口由DSP1引導(dǎo)程序。DSP1/DSP2 的程序都存放在DSP1 的片外FLASH中。DSP1上電后程序引導(dǎo)結(jié)束后,DSP1程序指針跳轉(zhuǎn)至DSP1 應(yīng)用程序代碼的起始地址開始執(zhí)行程序。DSP1的應(yīng)用程序首先復(fù)位DSP2;然后從FLASH中讀取DSP2的程序代碼,通過HPI接口寫入DSP2的內(nèi)存中相應(yīng)地址空間;最后DSP1通過HPI接口喚醒DSP2,完成對它們的程序引導(dǎo)[9]。
3 軟件設(shè)計
3.1 FPGA部分
FPGA編程語言使用Verilog HDL語言[10],軟件環(huán)境為XILINX ISE10.1。軟件主要包括頂層模塊,
FPGA 與圖像數(shù)據(jù)接口驅(qū)動模塊,雙口RAM 模塊,EMIF接口模塊[11]。
FPGA軟件組成圖如圖4所示。
3.2 DSP部分
DSP程序用C語言和TMS320C6000系列匯編語言編寫,編程環(huán)境為CCS3.1或CCS3.3[12]。DSP程序由主函數(shù)main.c、多個功能模塊函數(shù)和驅(qū)動函數(shù)Drive_EMI?FA.c、Drive_GPIO.cDrive_HPI.c、Drive_EDMA.c 等組成。second_level bootloader.asm 中的內(nèi)容是二級引導(dǎo)程序,目的是將程序的各段從LOAD地址搬運到RUN地址,燒寫時二級引導(dǎo)程序存入FLASH的起始1 K的空間,DSP上電復(fù)位后自動將這段代碼拷貝到內(nèi)部RAM,然后執(zhí)行這段代碼。vectors.asm 是中斷向量表,當中斷(必須是被使能的中斷)產(chǎn)生時,CPU自動跳到中斷向量表中相應(yīng)的位置。DSP軟件流程圖如圖5所示。
信號并行處理板中DSP的軟件主要為接口驅(qū)動部分,其中主要接口驅(qū)動為DSP讀寫FPGA,4個DSP的接口驅(qū)動相同,以下是DSP從FPGA中讀取數(shù)據(jù)的程序。
emif=(unsigned int *)0×00090000;
emif1=(unsigned int *)0×000b0000;
dualram=(int *)0×a0000000;
Drive_GPIO(12, DRIVE_GPIO_Output, 0,0);
memmove(emif,dualram,131072);
Drive_GPIO(12, DRIVE_GPIO_Output, 0,1);
memmove(emif1,dualram,32768);
由于采用了DSP的GPIO12作為連接FPGA的最高位地址線。因此,要從FPGA中讀取128 K字節(jié)的數(shù)據(jù)需要用到上段程序。
4 實驗測試結(jié)果
利用上述圖像處理平臺,對輸入640×512×25(幀)4 bit/s的紅外圖像進行了實時處理,測試結(jié)果表明,該處理平臺可以實時檢測出滿足條件的目標信息,滿足設(shè)計要求。此前利用單DSP平臺實現(xiàn)了數(shù)據(jù)量為256×256×10(幀)×8bit/s圖像的實時處理,相比之下,采用多DSP平臺的處理能力較單個DSP有了較大提高。
5 結(jié)束語
運用TI的高性能DSP(TMS320C6416)設(shè)計了一種通用實時圖像處理系統(tǒng),討論了系統(tǒng)設(shè)計的關(guān)鍵結(jié)構(gòu)和系統(tǒng)處理實時性要求。基于多DSP和FPGA的圖像處理系統(tǒng)針對圖像數(shù)據(jù)量大,數(shù)據(jù)復(fù)雜的特點,充分利用了DSP計算龐大數(shù)據(jù)的高效性和FPGA精于并行處理的優(yōu)點,具有集成度高、存儲量大、處理速度快和方便傳輸?shù)忍攸c。結(jié)果表明該系統(tǒng)能夠有效地實現(xiàn)大量的實時圖像處理任務(wù),具有廣泛的應(yīng)用前景,同時也可在更快速度的平臺上進行拓展[13]。
評論