李晨陽,續(xù)志軍
(中國科學(xué)院 長春光學(xué)精密機(jī)械與物理研究所,長春 130033)
隨著市場經(jīng)濟(jì)的發(fā)展和科學(xué)技術(shù)的進(jìn)步,對圖像與視頻的采集和處理己經(jīng)得到了越來越廣泛的應(yīng)用。無論在居民的日常生活中還是在科研單位,人們對圖像與視頻采集處理的需求越來越廣泛。由于人們對圖像分辨率與畫質(zhì)的要求的不斷增高,這對信號的采集尤其是實時處理提出了更高的要求。這是由圖像信號的特點決定的。由于市場中不斷增長的業(yè)務(wù)需求,視頻DSP系統(tǒng)在近年來有了較大的發(fā)展。出于現(xiàn)在的視頻DSP系統(tǒng)主要以視頻采集卡(盒)的形式出現(xiàn),本節(jié)將主要介紹視頻采集卡的現(xiàn)狀。當(dāng)今市場上的主流視頻采集卡在功能上己經(jīng)十分強(qiáng)大,已經(jīng)基本可以滿足視頻信號的實時采集、處理和傳輸。大多數(shù)采集卡的主要工作步驟為:視頻信號的數(shù)字采樣,并可實時完成一些簡單的數(shù)字圖像處理,通過數(shù)據(jù)總線傳輸至計算機(jī),然后由計算機(jī)完成進(jìn)一步的處理。
目前,市場上主要應(yīng)用的圖像采集卡的功能處理單元的實現(xiàn)主要采用:一是不進(jìn)行任何圖像處理,只是單一的實現(xiàn)圖像的采集。這種產(chǎn)品己經(jīng)比較少見,主要出現(xiàn)在早期的圖像采集卡中。二是使用專用DSP芯片,以實現(xiàn)一些圖像處理算基于PCI的實時視頻DSP平臺法。三是采用專用ASIC芯片。這種產(chǎn)品往往擁有比較完善和強(qiáng)大的處理功能。采用后兩種方式的產(chǎn)品在目前比較常見。
采集卡在進(jìn)行數(shù)字采集和初步的圖像處理后,會將數(shù)據(jù)傳輸至計算機(jī)中進(jìn)一步處理。目前主流的視頻采集卡均使用PCI總線作為其與計算機(jī)通信的數(shù)據(jù)總線,個別外置采集設(shè)備則通過IEEE1394,USB2.0等高速數(shù)據(jù)接口與計算機(jī)通信.PCI作為一種高性能的計算機(jī)局部總線,近年來早己成為主流的計算機(jī)內(nèi)部總線。當(dāng)前主流PC中的PCI總線擁有33MHz工作頻率、32bit位數(shù)據(jù)位寬,和最大132MB/s的傳輸速度,非常適于一些高速外接設(shè)備與PC進(jìn)行數(shù)據(jù)通信。未來,PC中的PCI總線還將向66MHz,64bit過渡,這將提供更高的的傳輸速度(264MB/s或者更高)。視頻處理和傳輸需要較大的帶寬,由于PCI總線帶寬大、兼容性強(qiáng)以及發(fā)展?jié)摿Υ蟮葍?yōu)點,使其十分適合作為圖像與視頻處理系統(tǒng)的接口總線。
文中所提出的實時視頻DSP平臺方案使用FPGA芯片。首先搭建平臺基本框架之后,利用FPGA的靈活及高速并行處理的特性,可以方便的實現(xiàn)多種功能,也可添加一些特定的功能,以滿足特殊的需要。這就克服了DSP芯片和ASIC芯片的的缺點并充分實現(xiàn)了兩者的優(yōu)點。靈活的實現(xiàn)了全程硬件實時處理。本平臺對于一些需要經(jīng)常進(jìn)行特殊圖像處理的研究型單位,如學(xué)校、科研機(jī)構(gòu)等,進(jìn)行教學(xué)、研究具有一定的意義。
PC19054有3類數(shù)據(jù)直接傳輸模式,分別是PCIInitiator(PCI發(fā)起者模式,或稱主模式)、PCITarget(PCI目標(biāo)模式,或稱從模式)和DMA(直接存儲器訪問模式)。其中,主模式是山本地處理器發(fā)起訪問PCI存儲器或I/O,從模式是由PCI主設(shè)備發(fā)起訪問本地存儲器或I/O,DMA模式是由PC19054的DMA控制器控制本地總線的存儲器或1/O與PCI總線的存儲器或I/O之間的數(shù)據(jù)交換。
本平臺中主要的數(shù)據(jù)交換為:圖像數(shù)據(jù)的雙向傳輸和FPGA控制寄存器的配置信息的寫入。圖像數(shù)據(jù)為大量的高速連續(xù)信號,最大速度達(dá)到了27MB/s,為了保證信號傳輸?shù)膶崟r性,選擇用DMA方式傳輸;FPGA中含有許多控制寄存器,用于選擇和控制自身的工作狀態(tài)以及SAA7113的IC電路初始化,在進(jìn)行這些控制寄存器配置和SAA7113的初始化時,寫入多為幾個或幾十字節(jié)長度的數(shù)據(jù),對實時性要求不高,所以采用從模式傳輸。
PCI總線最早是由Intel公司提出概念,并聯(lián)合IBM,HP等100多家公司于1993年正式推出的一種高性能局部總線。PCI總線是32位或64位地址/數(shù)據(jù)復(fù)用的總線,即外部設(shè)備互聯(lián)。其用途是在高度集成的外設(shè)控制器器件、擴(kuò)展板和處理器系統(tǒng)之間提供一種內(nèi)部連接機(jī)制。目前,PCI總線己經(jīng)成為工業(yè)標(biāo)準(zhǔn),并廣泛使用于個人計算機(jī)、蘋果的Mac機(jī)以及小型服務(wù)器之中。
PCI總線特點:
PCI局部總線不受制于處理器,為中央處理器和外圍設(shè)備提供了一座數(shù)據(jù)傳輸?shù)臉蛄海梢酝瑫r支持多組外設(shè)。其特點如下:
1)高性能
PCI局部總線以33MHz的時鐘頻率工作,采用32位數(shù)據(jù)總線,可支持多種外設(shè)和附加卡。數(shù)據(jù)傳輸率可高達(dá)132MB/s,遠(yuǎn)遠(yuǎn)超過之前的標(biāo)準(zhǔn)ISA總線5MB/s的速率。
2)線性突發(fā)傳輸
PCI能支持線性突發(fā)的傳輸方式,可確保總線不斷的滿載數(shù)據(jù)。線性突發(fā)傳輸能夠更有效地運(yùn)用總線的帶寬去傳送數(shù)據(jù),以減少無謂的地址操作。另外,PCI支持突發(fā)讀取和突發(fā)寫入。
3)極小的存取延遲
支持PCI的設(shè)備,存取延遲很小,能夠大幅度減少外圍設(shè)備取得總線控制權(quán)所需的時間。
4)采用總線主控和同步操作
總線主控可以讓任何一個具有處理能力的外圍設(shè)備暫時接管總線,以加速執(zhí)行高優(yōu)先級、高吞吐量的任務(wù);同步操作可以保證微處理器能與這些總線主控同時操作,不必等待后者的完成。
5)不受處理器限制基于PCI的實時視頻DSP平臺
PCI獨立于處理器,將中央處理器子系統(tǒng)與外圍設(shè)備分開。這可以保證處理器技術(shù)的變化不會使任何個別的系統(tǒng)的設(shè)計過時,使得系統(tǒng)升級平化。
6)兼容性強(qiáng)
PCI總線可與ISA.EISA及MCA總線完全兼容。
7)預(yù)留了發(fā)展空間
考慮到新一代的高性能外設(shè)最總將需要64位寬的數(shù)據(jù)通道,PCI支持64位地址/數(shù)據(jù)多路復(fù)用,可將數(shù)據(jù)傳輸率提高到264MB/s
8)低成本、高效益
PCI的芯片將大量系統(tǒng)功能高度集成,節(jié)省了邏輯電路,耗用較小的線路板空間,成本降低。采用地址/數(shù)據(jù)復(fù)用,使得PCI部件用以連接其他部件的引腳數(shù)較少。
PCI局部總線是計算機(jī)界公認(rèn)的最具高瞻遠(yuǎn)矚的局部總線標(biāo)準(zhǔn),它的高性能、高效率及與現(xiàn)有標(biāo)準(zhǔn)的兼容性和充裕的發(fā)展?jié)摿Γ瞧渌偩€部不可及的。它可作為當(dāng)今及未來的設(shè)計指引。
PLXSDK提供了功能豐富的API函數(shù),通過調(diào)用這些函數(shù)可以方便的實現(xiàn)對所有控制寄存器的訪問與設(shè)置。編程者只需要遵照API函數(shù)調(diào)用規(guī)則編寫程序即可實現(xiàn)完全控制PC19054的工作。
Windows操作系統(tǒng)在虛擬環(huán)境中實現(xiàn)內(nèi)存空間,輸入/輸出操作,外圍設(shè)備,終端操作的虛擬化.虛擬環(huán)境中無法直接訪問和控制硬件單元,即管理硬件的程序是在實際的機(jī)器上運(yùn)行而不是在虛擬機(jī)上。與管理程序相類似的還有VxD〔虛擬設(shè)備驅(qū)動程序)。Windows類操作系統(tǒng)(Windows9x,Wind owsNT,Windows2000)為了保證系統(tǒng)的安全性、穩(wěn)定性和可移植性,對應(yīng)用程序訪問硬件資源加以限制。Windows下的驅(qū)動程序通常有兩種方式。
第一種是程序被包裝成DLL形式的文件,應(yīng)用程序可以通過加載相應(yīng)的DLL文件實現(xiàn)對硬件的訪問。編寫DLL程序以通過標(biāo)袱的Windows開發(fā)工具,如VC++(DLL是運(yùn)行在虛擬環(huán)境中的程序)。第二種方式是通過到月的開發(fā)工具如VtoolsD等,編寫虛擬驅(qū)動程序,這種方法的效率較高。以一個簡單的例子來看在系統(tǒng)對硬件中斷響應(yīng)速度上的表現(xiàn)。如果將ISR(中斷服務(wù)程序)在應(yīng)用程序以及編寫,由于系統(tǒng)在相應(yīng)ISR之前存在一連串的中斷反射過程將使系統(tǒng)響應(yīng)速度較慢,即系統(tǒng)要先調(diào)度虛擬環(huán)境后才響應(yīng)中斷,所以可能會是DOS系統(tǒng)下響應(yīng)時間的20倍以上。如果將中斷服務(wù)程序放入VxD中編寫,則會避免調(diào)度虛擬環(huán)境而使得響應(yīng)速度加快。為了方便基于PCI總線的適配卡的設(shè)計,PLX公司推出了一套軟件輔助設(shè)計的解決方案—PLX SDK(Sotfwaer Development Kit).
在編寫驅(qū)動程序時使用VC環(huán)境直接編寫應(yīng)用級程序,通過調(diào)用PLX提供的功能豐富強(qiáng)大的API函數(shù)(包裝在PlxApi.dll中),實現(xiàn)對硬件資源的訪問。這樣一來就避免了學(xué)習(xí)Widows下甚至是運(yùn)用匯編語言編寫設(shè)備驅(qū)動的復(fù)雜過程,縮短了系統(tǒng)開發(fā)周期。這樣做唯一的不利就是降低了系統(tǒng)的工作效率,但不影響系統(tǒng)的正常工作。利用PLXSDK在VC環(huán)境下編寫程序時應(yīng)遵循以下步驟:
I)先在VC環(huán)境中建立一個Win32 Console Application工程.
2)將P1xMon的頭文件包括在工程文件中,在VC環(huán)境的Option菜單中的Derection標(biāo)簽加入PIxMon的安裝路徑.
3)在主函數(shù)中定義#define PCI_CODE.應(yīng)將該句定義放在最開頭(任何一個#include之前),因為PCI主設(shè)備運(yùn)行在本地芯片中的軟件共享很多頭文件,該定義放在最開始可以保證只有與PCI主設(shè)備有關(guān)的頭文件被包括。
4)定義#define LITTLE_ENDIAN。用來確定芯片是工作在LITTLE_ENDIAN模式下.
5)include"PlxApi.h"這個文件中包括TPlx函數(shù)的定義.以及數(shù)據(jù)類型的定義。
6)將PlxLib.h庫函數(shù)加入該工程.這個庫文件中包括與PIxApi.dll文件的連接消息,當(dāng)程序運(yùn)行并調(diào)用到PLX的API函數(shù)時,其中的API DLL函數(shù)會被自動加載。
按照以上的步驟建立工程文件后,就可以編寫驅(qū)動函數(shù)了。
在API函數(shù)中,對PCI9054寄存器的訪問以一種直觀的方式表現(xiàn)出來,可以直接在軟件中設(shè)置,這樣極大的方便了對PCI9054的控制。圖1給出了平臺驅(qū)動程序流程。采集生成的圖像數(shù)據(jù)將存儲至計算機(jī)中或直接播放。
圖1 驅(qū)動程序設(shè)計流程圖
本驅(qū)動程序的優(yōu)點在于采用FPGA完成圖像處理功能。首先,可利用FPGA的靈活性根據(jù)需要隨時增加新的處理功能或刪減不必要的功能;其次,利用FPGA高速并行處理的優(yōu)點,實現(xiàn)了全部處理功能在平臺內(nèi)實時完成,避免了傳統(tǒng)視頻采集卡,只進(jìn)行部分初級處理的缺點,提高了實時性。
[1] DonaldE.Thomas.劉明業(yè)等譯.描述語言Verilog[M].第四版清華大學(xué)出版社.
[2] 夏宇聞.復(fù)雜數(shù)字電路與系統(tǒng)的VerilogHDL設(shè)計技術(shù)[M].北京航空航天大學(xué)出版社,1998.
[3] J.Bhasker,徐振林,譯.AVerilogHDLPremier.第二版[M].機(jī)械工業(yè)出版社,2000.
[4] 章毓晉,圖像工程(上冊)—圖像處理和分析[M].清華大學(xué)出版社,1999.
[5] 張兢.PCI總線主控1/O加速器PCI9054[J].國外電子元器件,2007,1.
[6] 陳露晨,PC19054性能分析及外部FIFO擴(kuò)充[J].電子產(chǎn)品世界.2008,11.