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