基于DSP和FPGA的電視觀瞄系統(tǒng)設計
電視觀瞄系統(tǒng)以FPGA為處理核心,實現(xiàn)紅外數(shù)字視頻信號的實時圖像處理,DSP實現(xiàn)了部分的圖像處理算法和FPGA的控制邏輯,并響應中斷,實現(xiàn)數(shù)據(jù)通信和存儲
引言
許多光學觀瞄系統(tǒng)都增加了電視、紅外輔助(周視)觀瞄系統(tǒng),稱之為光電觀瞄系統(tǒng)。在該系統(tǒng)中,需要用電視或紅外成像來精確瞄準目標,但光電系統(tǒng)所在的平臺總是處于運動狀態(tài),成像器件產(chǎn)生的圖像也就隨之運動,通過CCD成像器件或紅外成像器件得到的圖像不能保證觀瞄精度。因此,克服平臺運動造成的成圖像旋轉是解決觀瞄精度的關鍵技術之一。目前的常用方法是機械消像旋,很多要求較高的光學系統(tǒng)仍然采用該方案,隨DSP及FPGA的廣泛應用,電子消像旋也應用到了光學觀瞄系統(tǒng)上。
這兩種方案各有優(yōu)缺點:機械消像旋可以保證視場不受影響,觀瞄精度由成像器件和光學系統(tǒng)決定,缺點是需要一套精密的機械控制系統(tǒng),對小型化的光學觀瞄系統(tǒng)而言,有時很難滿足該機械裝置對空間的需求;電子消像旋克服了對精密機械裝置的要求,可以把處理模塊安裝在系統(tǒng)的電子箱中,實時性好,無機械延遲,缺點是會損失邊緣部分的視場、觀瞄精度不僅受光學系統(tǒng)及成像器件的影響,而且與旋轉算法、插值算法及插值精度有關。盡管如此,電子消像旋平臺為使用圖像處理技術和數(shù)字信號處理技術提供了充分的條件,隨著微電子技術的迅勐發(fā)展,設計優(yōu)秀的光電觀瞄系統(tǒng)不僅能夠滿足系統(tǒng)對精度的要求,還能夠利用圖像處理技術大大改善觀瞄的視覺效果,同時可以完成許多數(shù)字信號處理方面的工作,如:目標識別跟蹤、遠程通信、信息管理等重要的功能。
本文介紹的電子消像旋系統(tǒng)采用Altera公司的StratixII系列FPGA芯片和ADI公司的ADSP2183為核心,可以滿足系統(tǒng)對功能、實時性及精度的要求。
系統(tǒng)原理與基本結構
電視觀瞄系統(tǒng)組成框圖如圖1所示。系統(tǒng)由紅外熱像儀、主圖像處理板、DC/DC與差分轉換板、總線母板、控制接口板、顯示屏等部分組成。
圖1 電視觀瞄系統(tǒng)組成框圖
首先,紅外熱像儀生成觀瞄場景的數(shù)字視頻圖像數(shù)據(jù),以LVDS信號傳送到系統(tǒng)總線。這里采用LVDS視頻信號,主要是考慮本電視觀瞄系統(tǒng)要求在非??量痰奈锢憝h(huán)境下工作,而LVDS方式具有良好的抗電磁干擾(EMI)能力,能夠很好地保證視頻信號在較長距離條件下的傳輸質(zhì)量。該消旋處理模塊共包含四個功能單元:(1)DC/DC轉換、LVDS與LVTTL相互轉換單元;(2)系統(tǒng)控制接口單元;(3)圖像處理單元;(4)其他單元。功能單元(1)完成系統(tǒng)電源及LVDS數(shù)字差分視頻到LVTTL數(shù)字視頻的轉換;系統(tǒng)控制單元(2)包含兩路串行接口和數(shù)據(jù)交換郵箱,完成信息交換;功能單元(3)是系統(tǒng)的核心部分,它實現(xiàn)對圖像的處理及保證精度的要求;單元(4)主要是系統(tǒng)電磁兼容性方面的設計及數(shù)據(jù)存儲單元。
圖像處理模塊完成對數(shù)字視頻信號的流水處理,全部工作流程在DSP的控制下用FPGA器件實現(xiàn)視場中心的校正、旋轉、精度的計算、實時圖像插值等,最后,經(jīng)過消像旋處理的數(shù)字視頻流,再由DC/DC與差分轉換模塊中的LVDS Driver部分傳送給終端顯示。其中,紅外熱像儀控制電路設置兩路RS422串行通信口,通過串行口與熱像儀和圖像處理板交換數(shù)據(jù)信息。數(shù)據(jù)交換由熱像儀控制電路發(fā)起,每100ms通過RS422串行通信口1向熱像儀發(fā)送一次控制指令,直到收到熱像儀的接收響應回碼。紅外熱像儀控制電路板收到熱像儀的接收回碼后將該回碼通過RS422串行通信口2轉發(fā)給圖像處理板。按照這些控制命令的內(nèi)容,圖像處理板便根據(jù)這些命令完成字符疊加,供觀瞄顯示屏上顯示。
系統(tǒng)設計
在數(shù)字信號處理技術中,DSP+FPGA是目前比較通用的方式。通用DSP對系統(tǒng)進行管理,并協(xié)同功能強大的FPGA完成圖像算法,實現(xiàn)設計功能要求。
消像旋是一種常用的的數(shù)字圖像處理技術,傳統(tǒng)的消像旋都是在二維平面中進行的,由于旋轉后圖像像素點坐標不再是整數(shù),故旋轉后必須對像素點灰度進行二維插值運算,由于其運算過程復雜,運算量也大,尤其是當對旋轉后的圖像質(zhì)量要求較高時,需要采用高階數(shù)的插值運算,如3階、4階等,則運算量更大。因此單純采用軟件實現(xiàn),其運算時間過長,實時性差,無法滿足高速圖像旋轉的要求,更不用說在視頻條件下使用。
● 觀瞄顯示界面設計
觀瞄顯示界面如圖2所示。通過圖文混合技術,可以在顯示界面上很方便地產(chǎn)生電子分劃,形式靈活可變且精度高,可以容易實現(xiàn)不改動光學系統(tǒng)而完成零位校準、對比度亮度調(diào)整、動態(tài)變形消隱等任務。觀瞄區(qū)域是一個圓形,圓形以外至屏幕邊緣則是固定灰度的背景,用于疊加圖文信息。屏幕左上是命令菜單,顯示當前執(zhí)行的命令,右上是控制參數(shù),具體顯示控制字符。在屏幕左下,是系統(tǒng)的狀態(tài)信息,右下則是調(diào)試命令,平時不顯示,只在系統(tǒng)進入自身調(diào)試狀態(tài)時才顯示。
圖2 觀瞄顯示界面
● FPGA設計
系統(tǒng)中,F(xiàn)PGA主要完成對視頻圖像的旋轉算法實現(xiàn)、圖文混合、邏輯控制和部分I/O操作等工作。正是基于這樣的考慮,選用了Altera公司的StratixII系列中的EP2S30F484I4芯片。StratixII FPGA放棄了傳統(tǒng)的查找表(LUT)結構,使用一種創(chuàng)新的自適應邏輯模塊(ALM)作為FPGA的基本結構單元。與第一代Stratix相比,StratixII FPGA的邏輯密度是前者的2倍,速度也快了50%。EP2S30F484I4有13552個自適應邏輯模塊(ALM),33 880等效邏輯單元(LE),片上RAM為1369728bit,還有12個鎖相環(huán)(PLL)。
FPGA控制單元是在QuartusII 5.0環(huán)境下開發(fā)的,消像旋處理是軟件設計的關鍵。數(shù)字視頻由紅外熱像儀輸出,格式為差分輸出。包括如下信號:V_CLK(14.5MHz),V_LE(行有效)、V_FE(場有效)、V_EOF(奇偶場標志)、V_SYN(復合同步)、V_D[7..0](8bit數(shù)據(jù))。該數(shù)字視頻經(jīng)過消像旋處理后仍按原格式輸出。圖像分辨率為(768×576)像素/幀。
由于旋轉后圖像像素點坐標不再是整數(shù),故旋轉后必須對像素點灰度進行插值運算。但是如果采用高階數(shù)的插值運算,其運算過程復雜,運算量也大。通過對系統(tǒng)顯示要求和方位解算器精度的綜合估算,本系統(tǒng)進行了8倍硬件插值,在像素的水平方向進行2倍插值,垂直方向上進行4倍插值。為了保證插值和圖像顯示的連續(xù),本系統(tǒng)利用8片IS61LV12048(1024K×8bit的高速SRAM)芯片作場存儲器(奇場和偶場)來交替地存儲經(jīng)過旋轉處理后的數(shù)字圖像數(shù)據(jù)。用于奇(偶)場操作的四片SRAM的20位地址線和寫(WE)、讀(OE)是一樣的,只有各自的8位數(shù)據(jù)線和片選則是獨立的。在一行像素全部傳送到以后,和上一行像素的插值工作,還有行內(nèi)插值就實時的完成了。
FPGA的基準時鐘為來自DSP輸出的32MHz時鐘,經(jīng)過片內(nèi)數(shù)字時鐘網(wǎng)絡(PLL),可以得到系統(tǒng)所需要的多種時鐘。
圖文混合主要是控制觀瞄系統(tǒng)顯示屏的顯示內(nèi)容與相應的位置。利用EP2S30F484的內(nèi)部RAM配置了許多獨立的小RAM塊,DSP根據(jù)不同的控制命令向這些RAM塊寫入不同的顯示內(nèi)容。FPGA再根據(jù)顯示位置的分布,以記數(shù)的方式在屏幕上控制顯示內(nèi)容輸出,達到圖文混合。
由于StratixII FPGA使用SRAM來存儲配置數(shù)據(jù),而SRAM存儲器在掉電后數(shù)據(jù)會丟失,因此每次StratixII FPAG上電時,必須下載一次配置數(shù)據(jù)。選擇正確、合適的配置方案是利用FPGA進行設計的一個重要環(huán)節(jié)。Altera公司的FPGA共有多種配置方案,其中FPP、AS、PS、PPA和JTAG 配置方案適用于Stratix II系列FPGA。本設計采用了一種Advanced configuration Combine的配置方案。因為在系統(tǒng)研發(fā)階段,考慮到要頻繁地向FPGA寫入設計文件,和EP2S30F484直接相連的標準JTAG必不可少,ByteMasterMV下載線一端接PC的并口,另一端與板上引出的JTAG底座連接。存儲配置數(shù)據(jù)并完成自動配置的是EPCS16,它是Altera專為StratixII設計的增強型配置器件。當設計完成后,利用ByteMasterMV下載線直接將QuartusII輸出的配置信息直接寫入增強型配置器件中,以后在獨立工作狀態(tài)下,系統(tǒng)一上電啟動,就開始了AS(FAST)方式的自動配置。
使用JTAG配置電路時,主要用到4個必需的管腳:TDI、TDO、TMS和TCK及一個可選的管腳TRST。在電路板上,要根據(jù)JTAG 標準的要求,引出2×5的JTAG底座。要注意的是,TMS和TDI管腳必須接1kΩ的上拉電阻。
QuartusII 5.0中一個非常實用的工具是軟邏輯分析儀,它通過標準JTAG的方式就提供給用戶可視化的在線分析能力。只要把ByteMasterMV電纜連接在EP2S30F484的JTAG頭上,添加邏輯分析文件,在里面定義好要觀察的信號,觸發(fā)信號、方式,時鐘,采樣深度等參數(shù),編譯完成后從JTAG下載到FPGA內(nèi)部,就可以運行,并實時的獲得圖形化的分析結果。
● DSP設計
ADSP2183是的高速增強定點16位數(shù)字信號處理芯片。作為主控芯片,ADSP2183的接口主要可分為圖像串行傳輸接口、串行通信接口、TL16C552A控制接口、字節(jié)存儲區(qū)間接口、I/O空間接口、重疊數(shù)據(jù)存儲區(qū)間接口、EZ-ICE控制接口及其他一些IO接口。對DSP主要就是設計存儲器地址空間,ADSP2183有4個獨立的存儲空間:數(shù)據(jù)存儲器、程序存儲器、字節(jié)存儲器、I/O存儲器。它們都有相應的片選,支持外部訪問。其中,字節(jié)存儲器空間達到4MB,支持從廉價的8位存儲器引導和實時存取。如圖3所示,ADSP2183的所有數(shù)據(jù)線、地址線、存儲器片選、中斷控制和部分I/O都連到了EP2S30F484上。DSP可以像訪問內(nèi)部存儲器一樣,訪問在FPGA內(nèi)部配置出的RAM塊,與FPGA高速的傳送數(shù)據(jù)。DSP的三個外部中斷源是有優(yōu)先級安排的。因為如果在一場的20ms時間里面不能協(xié)助完成圖像旋轉所需要的計算,則會發(fā)生圖像停滯或者跳變,嚴重影響觀瞄效果。所以場中斷是外部中斷源中優(yōu)先級最高的,接下來是UART產(chǎn)生的中斷,因為它直接影響實時的圖文混合與顯示結果,最后才是控制臺產(chǎn)生的中斷,人手操作的時間和人眼感受變化的時間畢竟和以上兩種相比有比較大的差異。
圖3 系統(tǒng)硬件結構
工作頻率是26.32MHz,所以這里接一個16MHz系統(tǒng)時鐘,其內(nèi)部自動輸出一個精確的32MHz時鐘到CLKOUT,同時給FPGA作為全局時鐘使用。ADSP2183使用一個2×7的Emulator接口進行調(diào)試和仿真。
觀瞄系統(tǒng)旋轉的精確角度值由系統(tǒng)中的方位解算器產(chǎn)生,以粗通道、精通道各高8位的方式表示,其中解算器是36速比的。FPGA通過組合CS0、CS1、INH這三個片選信號發(fā)送給方位解算器,然后一次連續(xù)從總線上讀回粗通道高、粗通道低、精通道高、精通道低總共四個8位二進制值的角度值,DSP按順序把四個值組合成一個19位的完整角度值。這樣的角度值最高精度達到 0.02個密位(6000個密位表示360°),滿足系統(tǒng)設計提出的精度要求。由DSP完成消像旋的協(xié)同計算,將計算結果通過DSP的數(shù)據(jù)總線返回至FPGA。
ADSP2183內(nèi)部沒有非易失性存儲器,程序和數(shù)據(jù)必須依靠外部擴展存儲器。在系統(tǒng)加電或復位時,如果ADSP2183的BMODE和MMAP都為低,就會以BDMA(字節(jié)DMA)的方式通過DSP的引導加載(Boot loader)機制將程序和數(shù)據(jù)轉移到片上存儲器中執(zhí)行。過程是:ADSP2183從字節(jié)存儲器空間裝載最前的32個程序存儲器字,然后開始執(zhí)行。裝載程序就在這32個字中。裝載程序連續(xù)的從字節(jié)口裝載,直到整個程序裝載完成為止。這里使用的是SST公司的SST29LE010,8位的1Mbit EEPROM作為DSP的字節(jié)存儲器。它是3.3V單電源,可以分頁,每頁128字節(jié),最多1024頁,支持Page-Write(頁寫)和JEDEC標準的在線編程,使用起來方便可靠。
紅外熱像儀及其控制電路以RS422方式發(fā)送串行數(shù)據(jù),TL16C552A按照通信協(xié)議接收到,自動轉換成并行數(shù)據(jù),ADSP2183直接用程序方式從數(shù)據(jù)總線上讀回。DSP發(fā)送給熱像儀的串行數(shù)據(jù)也是經(jīng)過TL16C552A并串轉換,再由RS422驅動的??紤]到ADSP2183和外部的通信任務就是控制命令、工作參數(shù)的發(fā)送和狀態(tài)字的返回,數(shù)據(jù)傳輸需求較低且數(shù)據(jù)流零散的特點,這里使用德州儀器公司的TL16C552A雙異步通信器就可以勝任了。
另外,系統(tǒng)中還加入了一個串行EEPROM器件,Microchip公司93LC66B Microwire 串行EEPROM。因為電視觀瞄系統(tǒng)中需要一些動態(tài)的參數(shù),來進行不同的處理以適應特殊的場合需求。比如不同光學機構的零位角度不同、命令的調(diào)整、系統(tǒng)運行過程對特定參數(shù)或者錯誤信息的記錄,等等。都需要系統(tǒng)每次能夠記錄這些參數(shù),并且在斷電以后存儲這些參數(shù)。由于參數(shù)并不多,所以不需要額外設計復雜的FLASH存儲空間。93LC66B的使用十分方便,確定好EEPROM的ORG狀態(tài),就只需要把93LC66B的DI、DO、SCK和CS這幾根引腳與ADSP2183的Flag引腳正確連接,然后在DSP中對Flag編程,就可以實現(xiàn)對EEPROM的各種操作。
● 電源設計
現(xiàn)在以ASIC、DSP、FPGA等組成的系統(tǒng)中芯片都是低功耗設計,供電部分也變得越來越復雜。不僅對不同電平值的電壓精度、輸出電流、紋波、沖擊等要求十分嚴格,而且同一個芯片的不同電平的上電時序也有了要求。整個系統(tǒng)的電源設計都采用了美國德州儀器公司的電源器件。
ADSP2183的供電相對比較簡單,這里主要討論FPGA的供電。手冊規(guī)定,EP2S30F484的電源基本分為這幾種:核心供電(Vccint)為1.2V;各個BANK的I/O口供電(Vccio),鎖相環(huán)數(shù)字供電(Vccpll_d)為1.2V,鎖相環(huán)模擬供電(Vccpll_a)為1.2V。還有Vccpd為3.3V),它是StratixII FPGA新定義的一個供電,其作用是為所有相關的3.3V/2.5V的配置輸入緩沖器和JTAG相關引腳提供穩(wěn)定可靠的供電。它要求從0~3.3V的抬升時間必須小于100ms,否則Stratix II FPAG將不能配置成功。但是如果確實不能保障這樣苛刻的要求,就必須人為地把nCONFIG信號強制拉低,直到其他電源達到設計的可靠狀態(tài),以確保配置過程的正確完成。
EP2S30F484的(Vccint)是由TP54312提供,1.2V(Vccpll_a/Vccpll_d)是TP73633提供,3.3V(Vccpd)是TP78601提供,整個系統(tǒng)的3.3V供電是TP75533提供。不同電源的供電時序經(jīng)過設計并實驗測量出,是符合設計要求,當然也保證了觀瞄系統(tǒng)的正常運行。
在每種電源設計的時候,都加入了二極管反向保護和瞬態(tài)電壓抑制器進行瞬間過沖保護。同一種電源的模擬和數(shù)字部分也用電感隔離開了,相應的模擬地層和數(shù)字地層之間也物理分隔開,在合適的位置點用Ferrite Bead(鐵氧體磁珠)做了連接,最大程度的減小EMI。主圖像處理板是一塊10層PCB的設計,電源和地就有4層,所有電源和部分時鐘都在內(nèi)電層或地層劃分出來,信號層沒有長距離的供電回路和時鐘走線。
● VHDL程序設計
系統(tǒng)的軟件設計包括對FPGA的VHDL程序編寫和對DSP的匯編程序編寫兩部分。
在FPGA設計中采用VHDL語言設計,不僅大大簡化了設計復雜邏輯電路的難度,而且可以充分發(fā)揮FPGA內(nèi)部資源的優(yōu)勢。在Quartus II5.0集成開發(fā)環(huán)境下,對整個FPGA運算模塊采用了自頂向下的設計方式。首先,用Block圖的方式按照系統(tǒng)中所用芯片劃分,設計了邏輯總體,把所有FPGA的資源合理分配到相應的物理引腳,規(guī)劃好頂層邏輯。接著,在每個Block下編寫VHDL程序,實現(xiàn)具體的控制邏輯。采用模塊化、規(guī)則化和局部化的技術,既提高了設計效率,又減少設計的復雜性。
對于EP2S30F484,使用一個統(tǒng)一的全局時鐘,并采用同步時序的設計方法。FPGA內(nèi)部的所有模塊都使用一個全局時鐘,統(tǒng)一復位。在具體功能模塊設計的時候,可以調(diào)用一些Altera公司的內(nèi)部核和LPM功能塊。這些模塊具有結構獨立的設計輸入、高效的設計映射和工具獨立的設計輸入,不僅節(jié)省大量的FPGA資源,提高了設計效率,而且使系統(tǒng)性能得到提高。
圖4 系統(tǒng)軟件流程圖
● DSP程序設計
ADSP-2183有一套完整的軟件與硬件開發(fā)系統(tǒng),包含一個以PC為平臺的硬件仿真器ADSP218xEZIC E 和IDE(集成開發(fā)環(huán)境)VisualDSP++3.5。ADSP218xEZIC E是基于RS232串口的在線仿真器,它一邊通過串口和PC的IDE通信,下載程序代碼到目標DSP運行,另外一邊通過設計在目標板上的Emulator的14個管腳,觀察和測試DSP的端口、寄存器以及RAM的工作情況,并返回到PC的IDE界面。
● 系統(tǒng)軟件設計
系統(tǒng)軟件主要是由主程序和中斷服務程序兩部分組成,程序設計框圖如圖4所示。主程序首先設置ADSP-2183 內(nèi)部寄存器,如中斷控制寄存器ICNTL、中斷屏蔽寄存器IMASK、系統(tǒng)控制寄存器,以建立ADSP-2183的工作模式。然后運行DSP自檢程序。通過后,則要初始化UART芯片(TL16C552)、讀取串行EEPROM中預存的參數(shù),然后進入主體循環(huán)。DSP的三個外部中斷源產(chǎn)生中斷:場中斷,每20ms產(chǎn)生一次、UART通信中斷,紅外熱像儀及其控制電路產(chǎn)生、控制臺中斷。主要的消像旋運算、圖文混合的任務,方位解算器角度讀取和計算都由場中斷服務程序完成,而且必須在20ms時間內(nèi)及時完成。UART中斷服務程序由發(fā)送和接收任務觸發(fā),當有數(shù)據(jù)被接收到或要發(fā)送,中斷服務程序首先通過讀狀態(tài)寄存器確定是發(fā)送還是接收,然后跳轉到相應服務程序中執(zhí)行。其中TL16C552的初始化程序則主要完成異步串行通信協(xié)議的設置。系統(tǒng)界面顯示的字符是16x16的矩陣,所以制作了4KB地字庫,可以容納128個中文、數(shù)字、字母、特殊符號。
結束語
本設計大大提高了觀瞄系統(tǒng)的智能化、自動化水平,更是賦予其全天候作戰(zhàn)能力。外場實驗充分證明從目標的輪廓邊緣來看,進行了8倍插值后,消像旋的效果和預期設計完全符合,鋸齒效應控制得非常不錯,其他各項指標均達到設計要求。還可以進一步把由ADSP2183完成的工作移植到FPGA內(nèi)部,讓它來完成任務調(diào)配、算法實現(xiàn)、控制流程等任務。這樣,將進一步加大應用系統(tǒng)的集成度,也使得整個系統(tǒng)的可靠性和實時性將會有一個更好的提高。