隨著計(jì)算機(jī)電子技術(shù)的不斷發(fā)展,圖像采集系統(tǒng)在各個(gè)方面得到了越來越廣泛的應(yīng)用,同時(shí)也對(duì)圖像采集系統(tǒng)提出了更高的要求,快速、靈活、方便及可控性成為圖像采集系統(tǒng)發(fā)展的方向。本文設(shè)計(jì)的采集系統(tǒng)以通用的DSP芯片TMS320VC5402作為核心處理器、OV5017作為系統(tǒng)的圖像傳感器,而數(shù)據(jù)通過PCI橋電路發(fā)送給PC機(jī),因此該系統(tǒng)結(jié)構(gòu)簡單,具有即插即用、傳輸速率高的特點(diǎn),并且由于OV5017可通過編程實(shí)現(xiàn)對(duì)該芯片的控制,TMS320VC5402又可對(duì)圖像做一些預(yù)處理工作,因此具有采集系統(tǒng)的靈活性、可控性,鑒于該系統(tǒng)采集過程中的靈活性、快速性和可控性,故可更好地應(yīng)用于一些需要實(shí)時(shí)采集、控制的圖像監(jiān)控、多媒體應(yīng)用等領(lǐng)域。
1 OV5017簡介
近年來發(fā)展較快的CMOS圖像傳感器,內(nèi)部采用了相同的CMOS技術(shù),因此可以將象素陣列與外圍支持電路集成在同一塊芯片上。CMOS圖像傳感器主要包括:一個(gè)圖像傳感器核心、單一時(shí)鐘、所有的時(shí)序邏輯、可編程功能和A/D轉(zhuǎn)換器。與CCD相比,CMOS圖像傳感器將整個(gè)圖像系統(tǒng)集成在一塊芯片上,具有性價(jià)比高、編程簡單、功耗低的優(yōu)點(diǎn)。
美國OmniVision公司開發(fā)的OV5017將CMOS光感應(yīng)核與外圍支持電路集成在一起,具有可編程控制與視頻A/D混合輸出等功能,其輸出的視頻為黑白圖像,與CCIR標(biāo)準(zhǔn)兼容,該芯片適用于圖像識(shí)別領(lǐng)域。
基本參數(shù)為:
(1)內(nèi)置8 b的A/D。
(2)幀頻為50~0.5,曝光設(shè)置為1~1/100幀。
(3)芯片圖像尺寸為4.2 mm×3.2 mm,單個(gè)象素尺寸為11μm×11μm。
(4)信噪比SNR>42 dB;自動(dòng)增益控制為0~18 dB。
(5)幀頻為50且f1.4時(shí),最小照度為0.51 ux。
(6)幀頻為50時(shí),峰值功耗小于100 mW。
(7)5 V模擬供電和5/3.3 V數(shù)字供電。
芯片內(nèi)部有11個(gè)8 b寄存器,通過對(duì)地址線A[3…0]的設(shè)置來選擇寄存器,通過讀寫數(shù)據(jù)線[7…0]來讀取或設(shè)置寄存器。在對(duì)寄存器進(jìn)行讀/寫時(shí),應(yīng)使片選CSB與輸出使能OEB/寫使能WEB有效。
OV5017輸出模擬視頻信號(hào),格式為逐行掃描,可以同步輸出8 b的數(shù)字視頻流D[7…0]。在輸出數(shù)字HREF、垂直同步信號(hào)VSYNC,便于外部電路讀取圖像。
2 圖像采集系統(tǒng)硬件設(shè)計(jì)
圖像采集系統(tǒng)硬件結(jié)構(gòu)圖如圖1所示。
在本系統(tǒng)中,OV5017作為系統(tǒng)的圖像傳感器,其內(nèi)部將獲取的圖像采集量化,在TMS320C5402的控制下輸出數(shù)字圖像,經(jīng)過DSP存入圖像存儲(chǔ)器。根據(jù)OV5017視頻讀取時(shí)序(如圖2)可設(shè)計(jì)如下連接:OV5017的管腳A[3…0],D[7…0]與TMS320C5402的管腳A[3…0],D[7…0]直接相連,用DSP的R/W產(chǎn)生OV5017的讀寫使能信號(hào);用DSP的IS產(chǎn)生OV5017的片選信號(hào),即只在DSP的I/O空間讀寫;用OV5017的PCLK,VSYNC產(chǎn)生讀數(shù)據(jù)的中斷信號(hào),HREF作為數(shù)據(jù)有效的判斷信號(hào)與BIO連接,OV5017的時(shí)鐘信號(hào)由DSP的一個(gè)串口發(fā)送時(shí)鐘CLKX0分頻產(chǎn)生。
TMS320VC5402的HINT與本身的INT2相連用于HPI方式引導(dǎo),HPIENA,HDS2,HAS接高電平;HDS1接PCI2040的HDS;HBIL接PCI2040的HWIL;HAD[0…7]接PCI2040的HAD[0…7];RS接PCI2040的HRST0;HRDY接PCI2040的HRDY5X0;HCS接PCI2040的HCS0;HR/W接PCI2040的HR/W;HCNTL[0,1]接PCI2040的HCNTL[0,1]。
基本電路圖如圖3所示。
3 圖像采集系統(tǒng)軟件設(shè)計(jì)
由于DSP內(nèi)部存儲(chǔ)器容量不能存放一幀圖像數(shù)據(jù),故把DSP內(nèi)部存儲(chǔ)器分設(shè)出2個(gè)384×8=3 072存儲(chǔ)空間,即每個(gè)存儲(chǔ)空間可放1幀數(shù)據(jù)的8行,一個(gè)存儲(chǔ)空間用于接收OV5017的圖像數(shù)據(jù),另一個(gè)存儲(chǔ)空間用于向PC機(jī)發(fā)送圖像數(shù)據(jù),即1幀數(shù)據(jù)要被主機(jī)讀取288/8=36次,主機(jī)每隔一段時(shí)間查詢有關(guān)兩段存儲(chǔ)空間的2個(gè)標(biāo)志字,標(biāo)志字的最高位用于判斷該存儲(chǔ)空間數(shù)據(jù)是否有效,低15位用于判斷該存儲(chǔ)空間的數(shù)據(jù)屬于1幀數(shù)據(jù)36部分的哪一部分。通過對(duì)2個(gè)存儲(chǔ)空間的標(biāo)志字的判斷可得到該存儲(chǔ)空間的數(shù)據(jù)的有效性和該數(shù)據(jù)在1幀數(shù)據(jù)中的位置,讀取后置該存儲(chǔ)空間的標(biāo)志位為無效,直至DSP又在該存儲(chǔ)空間存好數(shù)據(jù),這時(shí)再改寫該存儲(chǔ)空間的標(biāo)志位。
3.1 DSP采集數(shù)據(jù)軟件設(shè)計(jì)
DSP復(fù)位后,通過HPI口引導(dǎo)加載程序,然后初始化DSP,初始化兩塊存儲(chǔ)空間的標(biāo)志字使之無效且低15位都為0,當(dāng)VSYSNC即幀同步中斷到來時(shí),選擇一個(gè)標(biāo)志字無效的存儲(chǔ)空間作為當(dāng)前接收數(shù)據(jù)的存儲(chǔ)空間,并設(shè)置該標(biāo)志字的低15位為0,接著根據(jù)PCLK中斷和HREF值依次讀入各象素值直至該幀數(shù)據(jù)的前8行,這時(shí)標(biāo)志字的低15位加1,并改寫該存儲(chǔ)空間標(biāo)志位為有效,選擇另一個(gè)標(biāo)志字無效的存儲(chǔ)空間作為當(dāng)前接收數(shù)據(jù)的存儲(chǔ)空間,并且使該存儲(chǔ)空間的標(biāo)志字低15位等于上一存儲(chǔ)空間的標(biāo)志字的低15位,接著繼續(xù)根據(jù)PCLK中斷和HREF值依次讀入各象素值直至讀取到該幀8行數(shù)據(jù),這時(shí)標(biāo)志字的低15位繼續(xù)加1并改寫該存儲(chǔ)空間標(biāo)志位為有效,這樣依次讀入1幀數(shù)據(jù),并且每讀取8行數(shù)據(jù)就被主機(jī)查詢接收。該系統(tǒng)的DSP采集數(shù)據(jù)軟件是通過CCS開發(fā)工具開發(fā)完成的。
3.2 主機(jī)采集數(shù)據(jù)軟件設(shè)計(jì)
主機(jī)程序啟動(dòng)后,先初始化分配1幀大小的內(nèi)存,99然后不斷查詢DSP中2個(gè)存儲(chǔ)空間的標(biāo)志字,當(dāng)2個(gè)標(biāo)志字有1個(gè)為有效時(shí),就讀取該標(biāo)志位對(duì)應(yīng)的存儲(chǔ)空間的圖像數(shù)據(jù),并根據(jù)標(biāo)志字的后15位知道該存儲(chǔ)空間存儲(chǔ)的圖像數(shù)據(jù)在該幀圖像中的位置,讀取完后設(shè)置該標(biāo)志字為無效,表示該數(shù)據(jù)已被讀取,以供DSP繼續(xù)用來存放圖像數(shù)據(jù)。當(dāng)讀取完1幀數(shù)據(jù)后就可對(duì)該幀圖像進(jìn)行后期處理,直接顯示或存儲(chǔ)。該系統(tǒng)的主機(jī)采集數(shù)據(jù)軟件是通過VC++6.0開發(fā)工具開發(fā)完成的。
在PC主機(jī)的軟件設(shè)計(jì)工作中,首先通過DriverWorks開發(fā)一套針對(duì)該采集系統(tǒng)的驅(qū)動(dòng)程序,然后根據(jù)上述流程編寫應(yīng)用程序,應(yīng)用程序中對(duì)硬件的讀寫操作通過調(diào)用標(biāo)準(zhǔn)Win32 API函數(shù)DeviceIoControl來完成,下面就簡單介紹一下關(guān)于DSP-PCI橋的驅(qū)動(dòng)設(shè)計(jì)。
3.3 DSP-PCI橋的驅(qū)動(dòng)設(shè)計(jì)
由于主機(jī)的操作系統(tǒng)是Windows 2000,故選取了微軟公司主推的驅(qū)動(dòng)開發(fā)模型WDM(Windows Driver Model)來設(shè)計(jì)自己的驅(qū)動(dòng)程序,開發(fā)工具為DriverStudio。WDM模型使用了如圖4的層次結(jié)構(gòu),圖中左邊是一個(gè)設(shè)備對(duì)象堆棧,設(shè)備對(duì)象是系統(tǒng)為幫助軟件管理硬件而創(chuàng)建的數(shù)據(jù)結(jié)構(gòu),一個(gè)物理硬件可以有多個(gè)這樣的數(shù)據(jù)結(jié)構(gòu),其中PDO為物理設(shè)備對(duì)象;FDO為功能設(shè)備對(duì)象。
其中總線驅(qū)動(dòng)程序負(fù)責(zé)列舉設(shè)備,總線驅(qū)動(dòng)程序每發(fā)現(xiàn)一個(gè)設(shè)備就創(chuàng)建一個(gè)對(duì)應(yīng)的物理設(shè)備對(duì)象,一些總線驅(qū)動(dòng)程序只是簡單地控制對(duì)總線的訪問權(quán),功能驅(qū)動(dòng)程序負(fù)責(zé)完成特定的功能,知道如何控制設(shè)備工作,他在驅(qū)動(dòng)程序堆棧中位于總線驅(qū)動(dòng)程序上面,功能驅(qū)動(dòng)程序負(fù)責(zé)創(chuàng)建一個(gè)功能設(shè)備對(duì)象。
一個(gè)完整的驅(qū)動(dòng)程序包含許多例程,當(dāng)操作系統(tǒng)遇到一個(gè)IRP時(shí),他就調(diào)用這個(gè)驅(qū)動(dòng)程序中的例程來執(zhí)行該IRP的各種操作,通過DriverWorks的代碼向?qū)Э缮蓪iT為PCI設(shè)備定制的代碼,PCI設(shè)備應(yīng)用的各種例程都可通過向?qū)桑覀兯龅墓ぷ魇窍蚋骼讨刑砑哟a。系統(tǒng)加載驅(qū)動(dòng)時(shí),在檢測(cè)到硬件設(shè)備后,通過讀寫PCI配置寄存器中的內(nèi)存基址寄存器(偏移10H)自動(dòng)把PCI2040的CSR內(nèi)存空間映射為Bar0(大小為4 k),通過讀寫PCI配置寄存器中的控制空間基址寄存器(偏移14H)自動(dòng)把TMS320VC5402的HPI寄存器空間映射為Bar1(大小為32 k),共在驅(qū)動(dòng)程序中映射為兩段內(nèi)存區(qū)。
由于該采集系統(tǒng)對(duì)硬件的操作大部分請(qǐng)求都是讀寫數(shù)據(jù),需要設(shè)備執(zhí)行IOCTL操作,應(yīng)用程序使用標(biāo)準(zhǔn)Win32 API函數(shù)DeviceIoControl來執(zhí)行這樣的操作。在驅(qū)動(dòng)程序一方,這個(gè)DeviceIoControl 調(diào)用被轉(zhuǎn)化成一個(gè)帶有IRP_MJ_DEVICE_CONTROL功能碼的IRP,驅(qū)動(dòng)程序中共設(shè)置了4對(duì)共8個(gè)這樣的IOCTL操作,都使用METHOD_BUFFERED方式。這時(shí)I/O管理器創(chuàng)建一個(gè)足夠大的內(nèi)核模式拷貝緩沖區(qū),當(dāng)派遣例程獲得控制時(shí),用戶模式的輸入數(shù)據(jù)被復(fù)制到這個(gè)拷貝緩沖區(qū),在IRP完成之前,向拷貝緩沖區(qū)填入需要發(fā)往應(yīng)用程序的輸出數(shù)據(jù)。當(dāng)IRP完成時(shí),設(shè)置IoStatus.Information域等于放入拷貝緩沖區(qū)中的輸出字節(jié)數(shù),然后I/O管理器把數(shù)據(jù)復(fù)制到用戶模式緩沖區(qū)并設(shè)置反饋?zhàn)兞?。?qū)動(dòng)程序?qū)ar0有2個(gè)IOCTL操作,通過對(duì)HPIRESET寄存器(地址為BAR0的14H)讀寫來對(duì)DSP復(fù)位,通過DSP的HPIC寄存器、HPIA寄存器、HPID自增寄存器、HPID非自增寄存器(由于只連了一片DSP0,故A14,A13都為0,而A12,A11分別對(duì)應(yīng)HCNTL1和HCNTL0,故各寄存器地址分別為BAR1的0,1000H,800H,1800H)的讀寫設(shè)置HPIC的讀寫操作、HPID自增方式的讀寫操作、HPID非自增方式的讀寫操作共對(duì)于Bar1相關(guān)的6個(gè)IOCTL操作。在DriverWorks向?qū)煽蚣軙r(shí),申請(qǐng)2個(gè)屬于KmemoryRange類的對(duì)象分別對(duì)應(yīng)Bar0和Bar1,然后在這8個(gè)IOCTL操作中添加相應(yīng)的對(duì)于應(yīng)用程序的接口操作,在這里用KmemoryRange類對(duì)象的inw和outw函數(shù)來實(shí)現(xiàn)對(duì)硬件的讀寫操作。
最后在應(yīng)用程序中打開設(shè)備,就可通過DeviceIoControl自如的讀取圖像數(shù)據(jù)了。
4 結(jié)語
該系統(tǒng)的優(yōu)點(diǎn)首先是結(jié)構(gòu)簡單,這是因?yàn)镺V5017內(nèi)部集成了A/D器件,同時(shí)可輸出3.3 V數(shù)字電平,省略了很多外圍器件,同時(shí)DSP通過主機(jī)接口HPI口連接PCI橋電路與計(jì)算機(jī)進(jìn)行傳輸數(shù)據(jù),因此還具有采集速度快的優(yōu)點(diǎn),再次由于OV5017可通過編程實(shí)現(xiàn)對(duì)該芯片的控制,TMS320VC5402又可對(duì)圖像做一些圖像的預(yù)處理工作,因此具有采集系統(tǒng)的靈活性??傊撓到y(tǒng)可更好地應(yīng)用于一些需要實(shí)時(shí)采集、控制的圖像監(jiān)控、多媒體應(yīng)用等領(lǐng)域,為進(jìn)一步做圖像處理的其他工作做好了良好的準(zhǔn)備。 ?
評(píng)論
查看更多