王慧中,吳永欣,茹運(yùn)蕊,褚成琴,栗武華
(中國電子科技集團(tuán)公司第27研究所,河南 鄭州 450047)
近年來,隨著多媒體技術(shù)的迅速發(fā)展和普及,數(shù)字圖像處理技術(shù)的應(yīng)用越來越廣泛,在航空航天遙感、生物醫(yī)學(xué)、軍事和公共安全、工業(yè)生產(chǎn)和管理、多媒體應(yīng)用等各個領(lǐng)域都得到了廣泛的應(yīng)用[1]。
筆者介紹的圖像處理和實時顯示系統(tǒng)以TI公司C6000系列的高速DSP和Xilinx公司的Spartan 2E系列的現(xiàn)場可編程門陣列(FPGA)為核心構(gòu)建而成[2]。其中,DSP主要用來完成解壓縮、數(shù)字圖像疊加、視頻合成等復(fù)雜的數(shù)字圖像處理工作,而FPGA主要用來完成視頻時序控制和外圍設(shè)備的硬件邏輯控制等工作。文中重點內(nèi)容為該系統(tǒng)的軟硬件設(shè)計以及關(guān)鍵環(huán)節(jié)的解決方案。
由于數(shù)字圖像的信息量大,而且該系統(tǒng)的設(shè)計對實時性要求較高,因此系統(tǒng)設(shè)計采用高速DSP作為數(shù)字圖像處理的核心單元。同時,為了實現(xiàn)外部時鐘信號對視頻輸出的控制,該系統(tǒng)的設(shè)計選擇采用內(nèi)嵌大容量RAM的FPGA來實現(xiàn)視頻時序的產(chǎn)生及控制。整個系統(tǒng)設(shè)計采用DSP+FPGA結(jié)構(gòu)來實現(xiàn)。系統(tǒng)的原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
該系統(tǒng)的工作過程如下:DSP通過EMIF接口從Flash中讀取欲處理的圖像數(shù)據(jù),以EDMA方式寫入SDRAM,DSP對SDRAM中的原始圖像數(shù)據(jù)進(jìn)行解壓、濾波、復(fù)合等數(shù)字圖像處理,并將處理后的數(shù)據(jù)轉(zhuǎn)換為符合CCIR-6564∶2∶2 格式的 8 bit數(shù)字視頻流,處理后的數(shù)據(jù)仍放到SDRAM中。DSP在響應(yīng)FPGA視頻時序產(chǎn)生模塊生成的行中斷信號后,由EDMA控制器以PDT傳輸?shù)姆绞綄懭隖PGA內(nèi)建的顯示行FIFO,在顯示同步時序的控制下,從顯示行FIFO輸出到視頻編碼器中,生成復(fù)合視頻,送顯示。
本系統(tǒng)主處理器采用了TMS320DM642,它是TI公司推出的專用于數(shù)字媒體應(yīng)用的高性能64位定點DSP,工作頻率最高為720 MHz,處理性能可達(dá)5760 MI/s(兆指令每秒)[3]。TMS320DM642片內(nèi)集成了大容量的存儲器,片內(nèi)采用二級存儲器結(jié)構(gòu)。此外,還提供豐富的外圍設(shè)備接口,包括外部存儲器接口(EMIF)、GPIO接口、I2C總線控制器、中斷控制器等[4]。
由于本系統(tǒng)的視頻輸出受外部時鐘的控制,因此,未采用TMS320DM642的VP口,而是由可編程邏輯器件FPGA生成視頻顯示的同步時序信號。本系統(tǒng)的硬件設(shè)計框圖如圖2所示。
圖2 系統(tǒng)硬件設(shè)計框圖
1)數(shù)字圖像存儲單元
TMS320DM642的外部存儲器接口(EMIF)支持各種外部器件的無縫接口[5],包括流水線式同步猝發(fā)SRAM(SBSRAM),同步 DRAM(SDRAM),包括 SRAM,ROM 和FIFO等在內(nèi)的異步器件,以及外部共享存儲器等[6]。
本系統(tǒng)設(shè)計中,在CE1子空間外擴(kuò)了8M×8 bit的非易失性存儲器(Flash),用來存儲DSP的配置程序和原始數(shù)據(jù),由于TMS320DM642的外部地址總線只有20根,所以CE1子空間的最大尋址范圍為1M×8 bit,為了尋址到Flash的所有地址空間,系統(tǒng)設(shè)計中采用了分頁技術(shù)來實現(xiàn)對Flash的訪問。在CE2子空間外擴(kuò)了SDRAM組成大容量高速幀存儲器和行緩沖,系統(tǒng)對SDRAM中2塊不同幀存儲區(qū)域輪流進(jìn)行讀寫操作,大大提高了通信速度和數(shù)據(jù)吞吐量[7]。系統(tǒng)對幀存1和幀存2的輪流讀寫是通過乒乓傳輸結(jié)構(gòu)來實現(xiàn)的,乒乓傳輸結(jié)構(gòu)可有效保證數(shù)據(jù)傳輸?shù)倪B續(xù)性。
2)FPGA邏輯控制單元
本系統(tǒng)中視頻時序控制信號的產(chǎn)生是由FPGA實現(xiàn)的,F(xiàn)PGA內(nèi)部邏輯設(shè)計采用模塊化設(shè)計[8],以原理圖或VHDL語言生產(chǎn)各功能模塊:主要包括水平像素計算模塊、垂直行計數(shù)模塊、同步信號發(fā)生模塊、FIFO讀控制和復(fù)位信號產(chǎn)生模塊以及DSP中斷信號產(chǎn)生模塊。采用ISE軟件進(jìn)行編譯仿真,各底層模塊均采用計數(shù)器實現(xiàn),能夠精確產(chǎn)生各種信號。除此之外,可與外部時鐘保持良好的一致性,在每一場的起始重新與外部系統(tǒng)時鐘同步一次。
FPGA內(nèi)部形成的的延遲鎖相環(huán)用來調(diào)整視頻同步信號時序和視頻編碼芯片的像素時鐘之間的相位差。此外,由于視頻編碼模塊和幀存儲器之間的時鐘頻率不同,設(shè)計中采用FPGA中內(nèi)嵌的BlockRam構(gòu)造了異步FI?FO,用來做時鐘域之間的隔離,協(xié)調(diào)數(shù)據(jù)傳輸速度。
3)視頻編碼單元
考慮到系統(tǒng)的工作環(huán)境和應(yīng)用領(lǐng)域,視頻編碼模塊的設(shè)計采用了ADI公司的專用視頻編碼器ADV7171,可在-40℃~+85℃溫度下正常工作。ADV7171兼容全球各種視頻標(biāo)準(zhǔn),對芯片的初始化可通過I2C總線完成。I2C總線只有串行數(shù)據(jù)線(SDATA)和串行時鐘線(SCLOCK),總線上的每個設(shè)備都有一個由軟件設(shè)定的唯一地址。I2C總線的數(shù)據(jù)讀寫格式如圖3所示。
圖3 I2C總線數(shù)據(jù)讀寫格式
DSP通過內(nèi)部集成的I2C總線接口實現(xiàn)對視頻編碼器ADV7171內(nèi)部寄存器的讀寫訪問操作,完成對視頻制式選擇、同步信號模式選擇等工作。專用視頻編碼器的使用,不僅提高了系統(tǒng)的可靠性,增強(qiáng)了系統(tǒng)功能,還縮短了開發(fā)周期,降低了成本。這些優(yōu)越性是使用普通D/A所不具有的。
本系統(tǒng)的軟件設(shè)計采用“C語言+線性匯編”的模式在CCS2.2編譯環(huán)境下編寫,系統(tǒng)的軟件設(shè)計包括頂層應(yīng)用程序和設(shè)備驅(qū)動程序兩部分。頂層應(yīng)用程序主要完成對系統(tǒng)流程的控制、底層設(shè)備的管理和初始化,設(shè)備驅(qū)動程序主要用于實現(xiàn)對底層設(shè)備(如Flash,SDRAM和視頻編碼器等)的讀寫操作和控制。系統(tǒng)的軟件設(shè)計框架如圖4所示。
1)設(shè)備驅(qū)動程序的開發(fā)
圖4 系統(tǒng)軟件設(shè)計框圖
該系統(tǒng)的設(shè)備驅(qū)動程序主要包括定時器、通用目的輸入輸出(GPIO)、中斷控制器等片上外設(shè)的配置和管理,外部擴(kuò)展存儲器(SDRAM,F(xiàn)lash和FIFO等)的讀寫操作和管理,以及視頻編碼芯片的配置和控制。片內(nèi)外設(shè)的驅(qū)動程序主要通過芯片支持庫(CSL)提供的API函數(shù)來完成對片內(nèi)外設(shè)寄存器的設(shè)置,從而實現(xiàn)對片內(nèi)外設(shè)的配置和管理,外部存儲器(SDRAM,F(xiàn)lash以及FIFO)的讀寫操作和管理是外部存儲器接口(EMIF)寄存器、增強(qiáng)的直接存儲器訪問(EDMA)控制寄存器以及中斷控制寄存器的配置來完成的,而對視頻編碼芯片的管理和控制則是通過DSP片內(nèi)集成的I2C模塊對視頻編碼芯片相關(guān)寄存器的配置來實現(xiàn)的。
2)應(yīng)用程序的開發(fā)
該系統(tǒng)的頂層應(yīng)用管理程序的設(shè)計采用了模塊化結(jié)構(gòu),根據(jù)工程應(yīng)用的具體要求,主要劃分為初始化模塊、圖像處理模塊、中斷管理模塊和外部存儲器模塊等幾個部分,模塊化的設(shè)計結(jié)構(gòu)使得程序更加易于調(diào)試和修改,應(yīng)用程序的軟件設(shè)計流程如圖5所示。
圖5 應(yīng)用程序設(shè)計流程圖
本文給出了基于DSP和FPGA結(jié)構(gòu)的帶有外同步輸入的圖像處理和實時顯示系統(tǒng)的設(shè)計方案,已成功地應(yīng)用于工程實踐中。由于本設(shè)計中采用FPGA來產(chǎn)生和控制視頻時序信號,可在不改變硬件電路的情況下,只通過重寫FPGA來滿足不同視頻制式的時序要求,大大提高了電路的適應(yīng)性和靈活性。此外,由于在本設(shè)計中,每場起始時均與外部50 Hz時鐘重新同步一次,因此,本設(shè)計可適用于對同步要求較高的場合。
[1]何斌,馬天予.Visual C++數(shù)字圖像處理[M].2版.北京:人民郵電出版社,2002.
[2]盛磊,徐科軍.基于DSP和FPGA的實時視頻處理平臺的設(shè)計與實現(xiàn)[J].電氣測量及儀器,2006,36(3):304-309.
[3]TI.TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor[EB/OL].[2009-12-12].http∶//focus.ti.com/lit/ds/sprs200m/sprs200m.pdf.
[4]江思敏,劉暢.TMS320C6000 DSP應(yīng)用開發(fā)教程[M].北京:機(jī)械工業(yè)出版設(shè),2005.
[5]TI.TMS320C6000 DSP external memory interface(EMIF)reference guide[EB/OL].[2009-12-12].http∶//wisconsin.cern.ch/ROD/ti_documents/EMIF%20Reference%20Guide-%20spru266b.pdf.
[6]美國德州儀器公司,TMS320C6000系列DSP的CPU與外設(shè)[M].北京:清華大學(xué)出版社,2007.
[7]王建華,劉纏牢,陳大川,等.基于DSP+FDGA技術(shù)的實時視頻采集系統(tǒng)的設(shè)計[J].國外電子測量技術(shù),2007,26(9):42-48.
[8]史彩娟,李文元,張培芳.基于CPLD的電視信號發(fā)生器的設(shè)計與實現(xiàn)[J].電子測量技術(shù),2006,29(3):76-78.