1 引 言
本文從實(shí)時(shí)性和大容量?jī)煞矫娼榻B了在某型導(dǎo)彈景象匹配制導(dǎo)系統(tǒng)中通用計(jì)算機(jī)上加入DSP加速卡實(shí)現(xiàn)的圖像采集系統(tǒng),。利用DSP芯片的高速處理特性完成大部分的圖像處理工作,上位機(jī)只完成輔助操作和存儲(chǔ)系統(tǒng)。這種方法發(fā)揮了DSP的高速性能又具有相當(dāng)大的靈活性,,而且開發(fā)工具比較完善。導(dǎo)彈景象匹配制導(dǎo)系統(tǒng)在傳輸實(shí)時(shí)景物圖像時(shí)要求足夠的傳輸速度,,PCI總線速度最高可達(dá)528MB/S(66MHz,、64位)。這是其他總線無(wú)法比擬的速度,,如ISA總線速度只有5MB/S,。另外,該系統(tǒng)中DSP的可擴(kuò)展存儲(chǔ)空間高達(dá)1GB,。這完全可以滿足導(dǎo)彈景象匹配制導(dǎo)系統(tǒng)中圖像處理的需要,。
2 基于PCI總線的DSP圖像采集系統(tǒng)
本系統(tǒng)主要用于敏感導(dǎo)彈飛行航線下面或目標(biāo)地區(qū)的實(shí)時(shí)景物圖像,系統(tǒng)拍下敏感到的圖像數(shù)據(jù)并傳送到DSP進(jìn)行處理,,然后經(jīng)PCI總線把處理后的數(shù)據(jù)上傳到上位機(jī),,與預(yù)存在相關(guān)器中的基準(zhǔn)景物圖像比較,以獲取誤差信號(hào),,形成導(dǎo)引指令,,控制導(dǎo)彈飛向目標(biāo)。當(dāng)然這套系統(tǒng)也可用于其他的視頻會(huì)議,、視頻點(diǎn)播以及監(jiān)控系統(tǒng),,如大型超市監(jiān)控、寫字樓監(jiān)控等,,其硬件系統(tǒng)基本一致,,只是軟件功能有所區(qū)別。
系統(tǒng)采用了TI公司C6000系列DSP中的TMS320C6211[1] [2]作為系統(tǒng)的CPU。圖像數(shù)據(jù)通過光學(xué)成像或微波成像裝置采集并輸出模擬圖像信號(hào),。這些信號(hào)經(jīng)視頻解碼芯片轉(zhuǎn)換為數(shù)字信號(hào),;再經(jīng)FIFO輸入DSP進(jìn)行圖像的增強(qiáng)、分割,、特征提取和數(shù)據(jù)壓縮等,;然后輸出信號(hào)經(jīng)PCI解碼芯片轉(zhuǎn)換為符合PCI總線規(guī)范的標(biāo)準(zhǔn)信號(hào),通過PCI總線接口傳到上位機(jī),。系統(tǒng)的控制邏輯由EPLD(Erasable Programmable Logic Device)控制器實(shí)現(xiàn),。系統(tǒng)結(jié)構(gòu)圖如圖1所示:
(1)視頻解碼芯片
系統(tǒng)中采集的圖像信號(hào)采用Philips公司的SAA7111A[3]完成A/D轉(zhuǎn)換。SAA7111A允許四路模擬視頻輸入,,具有兩個(gè)模擬處理通道,,支持四路CVBS模擬信號(hào)或二路Y/C模擬信號(hào)或二路CVBS信號(hào)和一路Y/C信號(hào)。SAA7111A對(duì)攝像頭輸入的標(biāo)準(zhǔn)PAL格式的模擬圖像信號(hào)進(jìn)行A/D轉(zhuǎn)換,,然后輸出符合CCIR601格式的4:2:2的16位YUV數(shù)據(jù)到FIFO,。其中亮度信號(hào)Y為8位、色度信號(hào)Cr和Cb合為8位數(shù)據(jù),。FIFO采用IDT公司的IDT72V215LB芯片,,F(xiàn)IFO的深度為512×18bit,支持STANDARD(標(biāo)準(zhǔn))和FWFT(First Word Fall-Through,,首字直接通過)兩種工作模式,。按照CCIR601[4]格式,YUV圖像分辨率為720×576象素,,當(dāng)按行輸出時(shí),,SAA7111A輸出數(shù)據(jù)流大小為:720×16=1440bit。因?yàn)镈SP通過32位的SBSRAM接口與FIFO通信,,故YUV數(shù)據(jù)寫入FIFO時(shí)需要在FIFO之間實(shí)現(xiàn)乒乓切換,。這時(shí)一行720×16bit的數(shù)據(jù)在兩片F(xiàn)IFO中存儲(chǔ)變?yōu)?60×32bit。兩片F(xiàn)IFO可以滿足上述要求,。FIFO的初始化及時(shí)序由
EPLD實(shí)現(xiàn),。
(2)DSP圖像處理模塊
TMS320C6211是TI公司發(fā)布的面向視頻處理領(lǐng)域的新款高速數(shù)字處理芯片,適用于移動(dòng)通信基站,、圖像監(jiān)控,、雷達(dá)系統(tǒng)等對(duì)速度要求高和高度智能化的應(yīng)用領(lǐng)域。存儲(chǔ)空間分兩部分:
運(yùn)行過程的臨時(shí)數(shù)據(jù)存在Winbond公司的兩片128Mbit的W981216BH[5]中,;系統(tǒng)程序則固化在FLASH存儲(chǔ)器中,,該存儲(chǔ)器選用AMD公司生產(chǎn)的8Mbit的AM29LV800B。Flash存儲(chǔ)器具有在線重寫入功能,。這對(duì)系統(tǒng)啟動(dòng)程序的修改和升級(jí)都帶來(lái)了很大的方便,?;赥MS320C6211的圖像處理系統(tǒng)框圖如圖2所示:
TMS320C6211 DSP的高速性能主要體現(xiàn)在以下方面:
①TMS320C6211的存儲(chǔ)空間最大可擴(kuò)展到1GB,完全可以滿足各種圖像處理系統(tǒng)所需的內(nèi)存空間,,而且其最高時(shí)鐘可達(dá)200MHz,,峰值性能可達(dá)1600MIPS(百萬(wàn)條指令/秒)、2400MOPS(百萬(wàn)次操作/秒),。
②并行處理結(jié)構(gòu),。TMS320C6211芯片內(nèi)有8個(gè)并行處理單元,分為相同的兩組,,并行結(jié)構(gòu)大大提高芯片的性能,。
③芯片體系采用VelociTI結(jié)構(gòu)。VelociTI是一種高性能的甚長(zhǎng)指令字(VLIW)結(jié)構(gòu),,單指令字字長(zhǎng)為32bit,,8個(gè)指令組成一個(gè)指令包,總字長(zhǎng)為256bit,。即每秒鐘可以執(zhí)行8條指令,。VelociTI結(jié)構(gòu)大大提高了DSP芯片的性能。
④采用流水線操作實(shí)現(xiàn)高速度,、高效率,。TMS320C6211只有在流水線充分發(fā)揮作用的情況下,才能達(dá)到最高的峰值性能,。與其他系列DSP相比,優(yōu)勢(shì)在于簡(jiǎn)化了流水線的控制以消除流水線互鎖,,并增加流水線的深度來(lái)消除傳統(tǒng)流水線的取指,、數(shù)據(jù)訪問和乘法操作上的瓶頸。
本系統(tǒng)DSP主要完成從FIFO讀出數(shù)據(jù)的處理以及壓縮等,。數(shù)據(jù)處理由自行編寫的算法實(shí)現(xiàn),,數(shù)據(jù)壓縮算法采用JPEG(Joint Photographic Expert Group)標(biāo)準(zhǔn)。當(dāng)光學(xué)成像或微波成像裝置采集速度為每秒25幀圖像時(shí),,它留給DSP處理的時(shí)間最多為每幀40ms,。如果考慮系統(tǒng)有一定的延時(shí)以及處理后圖像的存儲(chǔ)時(shí)間,那么DSP處理一幅圖像時(shí)間不能超過30ms,。按照C6211的處理速度,,在30ms內(nèi)可以處理48M(0.03×1600MIPS)條指令。DSP讀出FIFO中的行數(shù)據(jù)并存入SDRAM,,一幀圖像有576行,,在最后一行時(shí)會(huì)收到系統(tǒng)的幀中斷,這時(shí)SDRAM中的圖像數(shù)據(jù)總共有1440×576=810KB,。讓C6211用36M條指令周期的時(shí)間處理810KB的數(shù)據(jù)顯然綽綽有余,。粗略的計(jì)算過程如下:
系統(tǒng)采用快速DCT(離散余弦變換),,每8×8矩陣需要11次乘法、29次加法,,因此一幀圖像的FDCT,,共需要(11+29)×720×576×2/64=518400個(gè)指令周期;對(duì)于量化模塊,,每8×8矩陣需要64個(gè)量化指令周期,,一幀需要64×720×576×2/64=829440個(gè)指令周期;對(duì)于編碼部分,,假設(shè)編碼后非0元素占25%,,對(duì)每8×8矩陣進(jìn)行Zig-Zag掃描、編碼估計(jì)需要120個(gè)指令周期,,則共需120×720×576×2/64=1555200個(gè)指令周期,。按以上計(jì)算,在系統(tǒng)中進(jìn)行JPEG編碼大約需要2903040個(gè)指令周期,,耗時(shí)19.3536ms(TMS320C6211工作在150MHz時(shí)),。可以看出,,實(shí)際需要的指令遠(yuǎn)小于36M條,,而時(shí)間也遠(yuǎn)小于30ms,DSP完全可以實(shí)時(shí)處理從FIFO傳過來(lái)的數(shù)據(jù),。
(3)PCI總線模塊
PCI總線規(guī)范吸引人的地方不僅是其高速度,,更在于它適應(yīng)了現(xiàn)代I/O設(shè)備對(duì)系統(tǒng)的要求,對(duì)PCI擴(kuò)展卡及器件能進(jìn)行全自動(dòng)配置,,并且只需很少的接口邏輯就可以實(shí)現(xiàn)并支持其他總線系統(tǒng),。TMS320C6211的HPI口不支持PCI總線的無(wú)縫接口。
本系統(tǒng)采用TI公司的PCI2040實(shí)現(xiàn)DSP的HPI與PCI總線的連接,。DSP處理后的數(shù)據(jù)經(jīng)HPI口輸出到PCI2040進(jìn)行解碼,,然后輸出到PCI總線上。其邏輯結(jié)構(gòu)如圖3所示:
PCI2040是TI公司設(shè)計(jì)的專門用來(lái)完成C5000系列和C6000系列DSP與PCI總線進(jìn)行接口的專用芯片,。PCI2040符合PCI局部總線2.2規(guī)范[6],,能夠方便地實(shí)現(xiàn)PCI總線與TMS320C54X或TMS320C6X DSP的HPI接口的無(wú)縫連接。PCI2040可以兼容3.3V和5V,,以適應(yīng)不同的PCI總線電壓,。PCI2040與C6211之間不需要信號(hào)的電平轉(zhuǎn)換,也不需要額外的控制邏輯電路,,接口電路十分簡(jiǎn)單,。
在本系統(tǒng)中,PCI2040上存在兩種電壓:5V和3.3V,。其中3.3V是HPI口電壓,,5V是PCI總線電壓,。PCI2040啟動(dòng)時(shí)需要對(duì)其PCI總線寄存器和HPI寄存器參數(shù)進(jìn)行預(yù)加載。系統(tǒng)中PCI解碼模塊包括一塊配置ROM—AT24C08A,,屬于EEPROM型ROM,,便于對(duì)配置參數(shù)修改和升級(jí)。當(dāng)系統(tǒng)啟動(dòng)時(shí),,存儲(chǔ)在AT24C08A的數(shù)據(jù)下載到PCI2040的寄存器中并進(jìn)行配置,。
3 系統(tǒng)的軟件設(shè)計(jì)
本嵌入式圖像采集系統(tǒng)軟件包括兩部分:底層軟件和系統(tǒng)軟件。
底層軟件主要是DSP圖像處理算法以及啟動(dòng)等運(yùn)行程序,。這些程序主要在CCS環(huán)境下由C語(yǔ)言編寫并進(jìn)行匯編優(yōu)化,。CCS即Code Composer Studio,是TI公司發(fā)布的DSP軟件運(yùn)行環(huán)境,。
系統(tǒng)軟件方面,,在Windows操作系統(tǒng)下,可以充分利用Windows的窗口特性,,一方面,,因?yàn)閃indows技術(shù)成熟,軟件編寫相對(duì)比較簡(jiǎn)單,;另一方面,,在Windows平臺(tái)下,PCI驅(qū)動(dòng)無(wú)需開發(fā),,可以直接利用Windows的PCI驅(qū)動(dòng)程序?qū)崿F(xiàn)圖像卡的驅(qū)動(dòng),。但是Windows操作系統(tǒng)比較龐大,而且無(wú)法依照系統(tǒng)的需要進(jìn)行自由裁減,,不適合做成嵌入式系統(tǒng),。因而本系統(tǒng)采用了VxWorks[7]操作系統(tǒng)。相對(duì)于Windows操作系統(tǒng),,VxWorks的優(yōu)點(diǎn)表現(xiàn)在:
●VxWorks系統(tǒng)具有較好的可裁減性,可裁剪的組件超過80個(gè),,用戶可根據(jù)自己系統(tǒng)的功能目標(biāo)通過交叉開發(fā)環(huán)境方便地配置,。
●VxWorks支持應(yīng)用程序的動(dòng)態(tài)鏈接和動(dòng)態(tài)下載,開發(fā)者省去了每次調(diào)試都將應(yīng)用程序與操作系統(tǒng)內(nèi)核進(jìn)行鏈接和下載的步驟,,縮短了編輯/調(diào)試周期,。
●VxWorks具有較好的兼容性,它是最早兼容POSIX1003.1b標(biāo)準(zhǔn)的嵌入式實(shí)時(shí)操作系統(tǒng)之一,。
●VxWorks具有很高的可靠性和穩(wěn)定性,。
●VxWorks具有很好的實(shí)時(shí)性,實(shí)時(shí)性的強(qiáng)弱以完成規(guī)定功能和做出響應(yīng)時(shí)間的長(zhǎng)短來(lái)衡量,。VxWorks的多任務(wù)機(jī)制對(duì)任務(wù)的控制采用了優(yōu)先級(jí)搶占(Preemptive Priority Scheduling)和輪轉(zhuǎn)調(diào)度(Round-Robin Scheduling)機(jī)制,。這充分保證了可靠的實(shí)時(shí)性,,使同樣的硬件配置能滿足更強(qiáng)的實(shí)時(shí)性要求,為應(yīng)用的開發(fā)留下更大的余地,。
PCI設(shè)備的驅(qū)動(dòng)過程主要包括下面幾個(gè)步驟:
首先,,PCI設(shè)備的查找。在嵌入式操作系統(tǒng)中一般提供相應(yīng)的API函數(shù)查找,。在VxWorks操作系統(tǒng)中通過函數(shù)pci FindDevice (PCI_VENDOR_ID,,PCI_DEVICE,index, &pci Bus,,&pci Device,,&pci Func_可以找到供應(yīng)商代碼為PCI_VENDOR_ID、設(shè)備標(biāo)識(shí)為PCI_DEVICE的第n(index+1)個(gè)設(shè)備,,并且返回總線號(hào),、設(shè)備號(hào)以及功能號(hào),分別保存于&pci Bus,、&pci Device,、&pci Func中。
其次,,PCI設(shè)備的配置,。通過操作系統(tǒng)提供的API函數(shù)訪問PCI設(shè)備的配置空間,配置PCI設(shè)備基址寄存器的配置,、中斷配置,、ROM基地址寄存器的配置等,這樣可以得到PCI的存儲(chǔ)器空間和I/O地址空間映射,、設(shè)備的中斷號(hào)等,。在VxWorks操作系統(tǒng)中訪問PCI設(shè)備配置空間的API函數(shù)有pciConfigOutLong、pciConfigInLong等,,它們分別完成對(duì)PCI設(shè)備配置空間的讀寫操作,。
最后,根據(jù)PCI設(shè)備的配置參數(shù),,對(duì)不同的設(shè)備編寫初始化程序,、中斷服務(wù)程序以及對(duì)PCI設(shè)備存儲(chǔ)空間的訪問程序。
很顯然,,用VxWorks操作系統(tǒng)實(shí)現(xiàn)雖然有一定的難度,,但是系統(tǒng)具有很大的靈活性,系統(tǒng)比較小,、適應(yīng)性強(qiáng),,并且可以在工業(yè)控制計(jì)算機(jī)上運(yùn)行。
5 結(jié)束語(yǔ)
圖像采集系統(tǒng)的關(guān)鍵在于如何對(duì)大容量的信息進(jìn)行暫存,、壓縮和傳輸?shù)葐栴}進(jìn)行處理,。本文作者的創(chuàng)新點(diǎn)是在某型導(dǎo)彈景象匹配制導(dǎo)系統(tǒng)中通用計(jì)算機(jī)上加入DSP加速卡實(shí)現(xiàn)的圖像采集系統(tǒng)實(shí)現(xiàn)了實(shí)時(shí)圖像采集,、傳輸以及處理功能,解決了以往導(dǎo)彈景象匹配制導(dǎo)系統(tǒng)中圖像采集不穩(wěn)定,、數(shù)據(jù)傳輸速度慢,、暫時(shí)緩存處理能力低等問題。本系統(tǒng)既可以作為視頻圖像采集使用,,也可以進(jìn)行視頻壓縮,、匹配跟蹤等圖像處理的算法驗(yàn)證,具有使用靈活的特點(diǎn)。