現(xiàn)代化生產(chǎn)和科學(xué)研究對圖像采集系統(tǒng)的要求日益提高,。傳統(tǒng)的圖像采集卡速度慢、處理功能簡單,,不能很好地滿足特殊要求,,因此,我們構(gòu)建了高速圖像采集系統(tǒng)。它主要包括圖像采集模塊,、圖像低級處理模塊以及總線接口模塊等,。這些模塊是在FPGA中利用VHDL編程實(shí)現(xiàn)的。高速圖像采集系統(tǒng)主要用于視覺檢測,。視覺檢測中圖像處理的特點(diǎn)是:底層圖像處理數(shù)據(jù)量大,,算法簡單;高層圖像處理算法復(fù)雜,,數(shù)據(jù)量大,,算法簡單;高層圖像處理算法復(fù)雜,,數(shù)據(jù)量小,。對于圖像底層處理,我們在高速圖像采集系統(tǒng)中用FPGA實(shí)現(xiàn),,采用VHDL編寫圖像處理算法,;對于圖像高層處理,由計(jì)算機(jī)軟件實(shí)現(xiàn),。由于VHDL設(shè)計(jì)靈活,、編程方便,易于在FPGA中實(shí)現(xiàn)并行運(yùn)算和流水線結(jié)構(gòu),;所以,,高速圖像采集系統(tǒng)的速度快、適應(yīng)性好,。
1 系統(tǒng)結(jié)構(gòu)及工作原理
1.1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
高速圖像采集系統(tǒng)結(jié)構(gòu)模型如圖1所示,。它的輸入為標(biāo)準(zhǔn)的模擬視頻信號,用可編程視頻輸入處理器SAA7111進(jìn)行視頻信號處理,。SAA7111內(nèi)部集成了強(qiáng)大的圖像色度,、亮度處理功能以及多種輸出模式;有32個工作寄存器,,在系統(tǒng)復(fù)位時,,必須通過FPGA1的IC2總線模塊對其進(jìn)行初始化。SAA7111輸出的圖像數(shù)據(jù)通過FPGA芯片進(jìn)行采集與處理,,采用Xilinx公司的XC2S150芯片,。XC2S150是Spartan II系列產(chǎn)品。它基于Virtex系列的結(jié)構(gòu),,支持所有相關(guān)的特性,,具有很高的性能價格比;采集與處理的圖像數(shù)據(jù)在傳送到計(jì)算機(jī)之前,,存儲在高速SRAM CY7C1049V33中,,SRAM的容量為512K×8bit,。與計(jì)算機(jī)通常采用PCI總線,,由S5933來實(shí)現(xiàn),。S5933是一種功能強(qiáng)大的PCI控制器,符合PCI2.1規(guī)范,。
1.2 工作原理
系統(tǒng)復(fù)位完成FPGA程序加載后,,先由FPGA1的I2C總線模塊對SAA7111初始化,初始化結(jié)束后等待采集圖像的命令,。初始化成功后,,SAA7111實(shí)時處理模擬視頻信號,輸出亮度和色度信號,,同時輸出點(diǎn)時鐘信號,,行、場同步信號,,行,、場參考信號,奇偶場標(biāo)志信號等,。本系統(tǒng)使用灰度圖像,,沒有使用色度信號,所以數(shù)據(jù)線為8位,。
系統(tǒng)采集圖像的命令由計(jì)算機(jī)發(fā)出,。采集命令通過PCI總線傳輸?shù)紽PGA1,啟動FPGA1的采集同步模塊,。采集同步模塊發(fā)出采集標(biāo)志信號,,采集一幀圖像,通過寫數(shù)據(jù)模塊產(chǎn)生寫地址和寫信號將數(shù)據(jù)存儲到SRAM1中,。采集結(jié)束時,,采集標(biāo)志信號撤消,采集同步模塊復(fù)位,,等待下一次采集命令,。采集標(biāo)志信號撤消時,F(xiàn)PGA1開始讀取SRAM1中的圖像信息,,這是通過讀數(shù)據(jù)模塊生產(chǎn)讀地址和讀信號來實(shí)現(xiàn)的,。FPGA1將1幀圖像數(shù)據(jù)進(jìn)行噪聲去除后,存儲到SRAM2中,,并發(fā)信號給FPGA2,。FPGA2通過FPGA1讀取SRAM2中數(shù)據(jù),經(jīng)過邊緣檢測處理后存儲到SRAM3中,。FPGA2處理完1幀圖像數(shù)據(jù)后,,將SRAM3中的圖像信息讀出傳送給S5933,然后通過PCI總線傳送到計(jì)算機(jī)中。
在圖像采集過程中,,我們使用的是512×512的圖像,,即一幀圖像采集512行,奇數(shù)場和偶數(shù)場各采集256行,,每一行采集512個像素,。因此,需要通過行延時模塊進(jìn)行行選擇,,濾掉無效行,,通過像素延時模塊進(jìn)行像素選擇,以選擇需要的像素,。
2 圖像采集與數(shù)據(jù)存儲部分的VHDL設(shè)計(jì)
系統(tǒng)中FPGA的設(shè)計(jì)是用VHDL編程實(shí)現(xiàn)的,。VHDL是一種應(yīng)用非常廣泛的硬件描述語言,它的語言覆蓋面廣,,描述能力強(qiáng),;可以描述最抽象的系統(tǒng)級,也可以描述最精確的邏輯級,、門級,。
本系統(tǒng)是采用結(jié)構(gòu)化VHDL進(jìn)行設(shè)計(jì)的,整個圖像采集部分是一個VHDL語言文件,,包括幾個BLOCK語句,。2片F(xiàn)PGA芯片個有不同的程序,其中FPGA1既包括圖像采集部分,,又包括圖像處理與數(shù)據(jù)存儲部分,;FPGA2為圖像處理與數(shù)據(jù)存儲部分以及PCI接口控制部分。2片F(xiàn)PGA時程序加載采用串行主/從模式,。
FPGA1采用串行主模式,,F(xiàn)PGA2采用串行從模式,由FPGA1從SPROM中讀取配置數(shù)據(jù),,完成自身配置,,并完成對FPGA2的配置。圖像采集與數(shù)據(jù)傳送部分的VHDL模塊主要包括Set_sample.vhd,、Wr.vhd,、Rd.vhd、Delay.vhd,、Bus_assign.vhd等,,各模塊之間通過信號相互聯(lián)系。下面分別介紹各模塊實(shí)現(xiàn)的功能,。
?。?)Set_sample.vhd采集同步模塊
它是圖像采集部分的一個塊語句,,輸入輸出信號為:
pcicon0-IN,啟動采集圖像信號,;
vref-IN,,場參考信號;
rts0-IN,奇偶場標(biāo)志信號,;
sig_frame-OUT,,采集同步輸出信號,,高電平有效,,用于圖像采集和總線管理模塊;
sig_field-OUT,,采集同步場參考信號,,采集1幀圖像的場參考信號。
源程序如下:
set_sample:block
signal flagct:std_logic_vector(2 downto 0),;
begin
process(pcicon0,vref)
begin
if(pcicon0=O)then
flagct<=01;
elsif(vref event and vref="J")then
if(flagct=001and rts0=1)then
flagct<=010;
elsif(flagct=010)then
flagct<=011;
elsif(flagct=011)then
flagct<=100;
end if;
end if;
end process;
process(flagct)
begin
if(flagct=010 or flagct="011")then
sig_frame<=1;
else
sig_frame&
lt;=0;
end if;
end process;
sig_field<=sig_frame and vref;
end block,;
當(dāng)pcicon0引腳再現(xiàn)大于等于場周期(20ms)的低電平信號時,可以確保該模塊處于觸發(fā)狀態(tài),,在下一個奇數(shù)場出現(xiàn)時,,(rts0=1),根據(jù)SAA7111的場參考信號產(chǎn)生具有兩場時寬的采集同步信號(sig_frame),。該信號有效時為圖像采集階段,,對SRAM1寫入數(shù)據(jù);該信號撤消時采集同步模塊自動復(fù)位,,等待下一次采集命令,,同時FPGA1開始讀取SRAM1中數(shù)據(jù)進(jìn)行處理。采集同步信號有效的同時輸出采集同步場參考信號,,用于采集圖像數(shù)據(jù),。
(2)Delay.vhd延時模塊
包括行延時和像素延時。當(dāng)采集信號有效時,,在每一場產(chǎn)生行延時,,濾掉無效行,每一場采集256行,;當(dāng)采集信號有效且行延時結(jié)束時,,在每一行產(chǎn)生像素延時,去掉不需要的像素,,只采其中的512個像素,。
(3)Wr.vhd寫數(shù)據(jù)模塊
在圖像采集階段,收到行延時結(jié)束信號和像素延時結(jié)束信號時,,按照SAA7111的參考信號的輸出時序,,產(chǎn)生相應(yīng)的寫地址,,并根據(jù)SRAM的寫時序產(chǎn)生寫信號,此時與SRAM接口的FPGA的I/O口為輸出狀態(tài),。在圖像處理階段向SRAM寫數(shù)據(jù)時,,寫地址的產(chǎn)生不考慮行延時和像素延時。
(4)Rd.vhd讀數(shù)據(jù)模塊
在讀SRAM時,,依據(jù)SRAM的讀時序,,產(chǎn)生讀地址和讀信號。此時與SRAM接口的FPGA的I/O口為輸入狀態(tài),。
(5)Bus_assign.vhd總線管理模塊
總線管理模塊主要負(fù)責(zé)FPGA與SRAM的地址總線切換,、數(shù)據(jù)總線切換,以及在系統(tǒng)中不同芯片之間建立數(shù)據(jù)通路等,。FPGA中包括寫數(shù)據(jù)地址模塊和讀數(shù)據(jù)地址模塊,,與SRAM地址總線接口時必須進(jìn)行總線切換:寫數(shù)據(jù)時,寫地址線接通SRAM的地址線,;讀數(shù)據(jù)時,,讀地址線接通SRAM的地址線。FPGA與SRAM數(shù)據(jù)線的接口為雙向口,,在寫數(shù)據(jù)時是輸出口,,讀數(shù)據(jù)時是輸入口,需要設(shè)置三態(tài)控制,。在系統(tǒng)中其它芯片之間也有這種情況,。
進(jìn)行VHDL設(shè)計(jì)時,最好各模塊單獨(dú)進(jìn)行并及時仿真驗(yàn)證,,以便盡早發(fā)現(xiàn)問題,。系統(tǒng)中其它模塊在此不再敘述。
3 結(jié)論
高速圖像采集系統(tǒng)的硬件實(shí)現(xiàn)是用VHDL設(shè)計(jì)的,。通過建立VHDl行為模型和進(jìn)行VHDL行為仿真,,可以及早發(fā)現(xiàn)設(shè)計(jì)中潛在的問題,縮短了設(shè)計(jì)周期,,提高了設(shè)計(jì)的可靠性和效率,。實(shí)踐表明:VHDL在硬件設(shè)計(jì)上是非常有效的,它是當(dāng)代電子設(shè)計(jì)工程師進(jìn)行硬件設(shè)計(jì)時必須掌握的工具,。