《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > VHDL在高速圖像采集系統(tǒng)中的應(yīng)用設(shè)計(jì)
VHDL在高速圖像采集系統(tǒng)中的應(yīng)用設(shè)計(jì)
摘要: 高速圖像采集系統(tǒng)的硬件實(shí)現(xiàn)是用VHDL設(shè)計(jì)的。通過建立VHDl行為模型和進(jìn)行VHDL行為仿真,可以及早發(fā)現(xiàn)設(shè)計(jì)中潛在的問題,縮短了設(shè)計(jì)周期,提高了設(shè)計(jì)的可靠性和效率。
Abstract:
Key words :

  現(xiàn)代化生產(chǎn)和科學(xué)研究對(duì)圖像采集系統(tǒng)的要求日益提高。傳統(tǒng)的圖像采集卡速度慢、處理功能簡(jiǎn)單,不能很好地滿足特殊要求,因此,我們構(gòu)建了高速圖像采集系統(tǒng)。它主要包括圖像采集模塊、圖像低級(jí)處理模塊以及總線接口模塊等。這些模塊是在FPGA中利用VHDL編程實(shí)現(xiàn)的。高速圖像采集系統(tǒng)主要用于視覺檢測(cè)。視覺檢測(cè)中圖像處理的特點(diǎn)是:底層圖像處理數(shù)據(jù)量大,算法簡(jiǎn)單;高層圖像處理算法復(fù)雜,數(shù)據(jù)量大,算法簡(jiǎn)單;高層圖像處理算法復(fù)雜,數(shù)據(jù)量小。對(duì)于圖像底層處理,我們?cè)诟咚賵D像采集系統(tǒng)中用FPGA實(shí)現(xiàn),采用VHDL編寫圖像處理算法;對(duì)于圖像高層處理,由計(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)的模擬視頻信號(hào),用可編程視頻輸入處理器SAA7111進(jìn)行視頻信號(hào)處理。SAA7111內(nèi)部集成了強(qiáng)大的圖像色度、亮度處理功能以及多種輸出模式;有32個(gè)工作寄存器,在系統(tǒng)復(fù)位時(shí),必須通過FPGA1的IC2總線模塊對(duì)其進(jìn)行初始化。SAA7111輸出的圖像數(shù)據(jù)通過FPGA芯片進(jìn)行采集與處理,采用Xilinx公司的XC2S150芯片。XC2S150是Spartan II系列產(chǎn)品。它基于Virtex系列的結(jié)構(gòu),支持所有相關(guān)的特性,具有很高的性能價(jià)格比;采集與處理的圖像數(shù)據(jù)在傳送到計(jì)算機(jī)之前,存儲(chǔ)在高速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總線模塊對(duì)SAA7111初始化,初始化結(jié)束后等待采集圖像的命令。初始化成功后,SAA7111實(shí)時(shí)處理模擬視頻信號(hào),輸出亮度和色度信號(hào),同時(shí)輸出點(diǎn)時(shí)鐘信號(hào),行、場(chǎng)同步信號(hào),行、場(chǎng)參考信號(hào),奇偶場(chǎng)標(biāo)志信號(hào)等。本系統(tǒng)使用灰度圖像,沒有使用色度信號(hào),所以數(shù)據(jù)線為8位。

  系統(tǒng)采集圖像的命令由計(jì)算機(jī)發(fā)出。采集命令通過PCI總線傳輸?shù)紽PGA1,啟動(dòng)FPGA1的采集同步模塊。采集同步模塊發(fā)出采集標(biāo)志信號(hào),采集一幀圖像,通過寫數(shù)據(jù)模塊產(chǎn)生寫地址和寫信號(hào)將數(shù)據(jù)存儲(chǔ)到SRAM1中。采集結(jié)束時(shí),采集標(biāo)志信號(hào)撤消,采集同步模塊復(fù)位,等待下一次采集命令。采集標(biāo)志信號(hào)撤消時(shí),F(xiàn)PGA1開始讀取SRAM1中的圖像信息,這是通過讀數(shù)據(jù)模塊生產(chǎn)讀地址和讀信號(hào)來實(shí)現(xiàn)的。FPGA1將1幀圖像數(shù)據(jù)進(jìn)行噪聲去除后,存儲(chǔ)到SRAM2中,并發(fā)信號(hào)給FPGA2。FPGA2通過FPGA1讀取SRAM2中數(shù)據(jù),經(jīng)過邊緣檢測(cè)處理后存儲(chǔ)到SRAM3中。FPGA2處理完1幀圖像數(shù)據(jù)后,將SRAM3中的圖像信息讀出傳送給S5933,然后通過PCI總線傳送到計(jì)算機(jī)中。

  在圖像采集過程中,我們使用的是512×512的圖像,即一幀圖像采集512行,奇數(shù)場(chǎng)和偶數(shù)場(chǎng)各采集256行,每一行采集512個(gè)像素。因此,需要通過行延時(shí)模塊進(jìn)行行選擇,濾掉無效行,通過像素延時(shí)模塊進(jìn)行像素選擇,以選擇需要的像素。

高速圖像采集系統(tǒng)結(jié)構(gòu)

  2 圖像采集與數(shù)據(jù)存儲(chǔ)部分的VHDL設(shè)計(jì)

  系統(tǒng)中FPGA的設(shè)計(jì)是用VHDL編程實(shí)現(xiàn)的。VHDL是一種應(yīng)用非常廣泛的硬件描述語言,它的語言覆蓋面廣,描述能力強(qiáng);可以描述最抽象的系統(tǒng)級(jí),也可以描述最精確的邏輯級(jí)、門級(jí)。

  本系統(tǒng)是采用結(jié)構(gòu)化VHDL進(jìn)行設(shè)計(jì)的,整個(gè)圖像采集部分是一個(gè)VHDL語言文件,包括幾個(gè)BLOCK語句。2片F(xiàn)PGA芯片個(gè)有不同的程序,其中FPGA1既包括圖像采集部分,又包括圖像處理與數(shù)據(jù)存儲(chǔ)部分;FPGA2為圖像處理與數(shù)據(jù)存儲(chǔ)部分以及PCI接口控制部分。2片F(xiàn)PGA時(shí)程序加載采用串行主/從模式。

  FPGA1采用串行主模式,F(xiàn)PGA2采用串行從模式,由FPGA1從SPROM中讀取配置數(shù)據(jù),完成自身配置,并完成對(duì)FPGA2的配置。圖像采集與數(shù)據(jù)傳送部分的VHDL模塊主要包括Set_sample.vhd、Wr.vhd、Rd.vhd、Delay.vhd、Bus_assign.vhd等,各模塊之間通過信號(hào)相互聯(lián)系。下面分別介紹各模塊實(shí)現(xiàn)的功能。

 ?。?)Set_sample.vhd采集同步模塊

  它是圖像采集部分的一個(gè)塊語句,輸入輸出信號(hào)為:

  pcicon0-IN,啟動(dòng)采集圖像信號(hào);

  vref-IN,場(chǎng)參考信號(hào);

  rts0-IN,奇偶場(chǎng)標(biāo)志信號(hào);

  sig_frame-OUT,采集同步輸出信號(hào),高電平有效,用于圖像采集和總線管理模塊;

  sig_field-OUT,采集同步場(chǎng)參考信號(hào),采集1幀圖像的場(chǎng)參考信號(hào)。

  源程序如下:

  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)大于等于場(chǎng)周期(20ms)的低電平信號(hào)時(shí),可以確保該模塊處于觸發(fā)狀態(tài),在下一個(gè)奇數(shù)場(chǎng)出現(xiàn)時(shí),(rts0=1),根據(jù)SAA7111的場(chǎng)參考信號(hào)產(chǎn)生具有兩場(chǎng)時(shí)寬的采集同步信號(hào)(sig_frame)。該信號(hào)有效時(shí)為圖像采集階段,對(duì)SRAM1寫入數(shù)據(jù);該信號(hào)撤消時(shí)采集同步模塊自動(dòng)復(fù)位,等待下一次采集命令,同時(shí)FPGA1開始讀取SRAM1中數(shù)據(jù)進(jìn)行處理。采集同步信號(hào)有效的同時(shí)輸出采集同步場(chǎng)參考信號(hào),用于采集圖像數(shù)據(jù)。

  (2)Delay.vhd延時(shí)模塊

  包括行延時(shí)和像素延時(shí)。當(dāng)采集信號(hào)有效時(shí),在每一場(chǎng)產(chǎn)生行延時(shí),濾掉無效行,每一場(chǎng)采集256行;當(dāng)采集信號(hào)有效且行延時(shí)結(jié)束時(shí),在每一行產(chǎn)生像素延時(shí),去掉不需要的像素,只采其中的512個(gè)像素。

  (3)Wr.vhd寫數(shù)據(jù)模塊

  在圖像采集階段,收到行延時(shí)結(jié)束信號(hào)和像素延時(shí)結(jié)束信號(hào)時(shí),按照SAA7111的參考信號(hào)的輸出時(shí)序,產(chǎn)生相應(yīng)的寫地址,并根據(jù)SRAM的寫時(shí)序產(chǎn)生寫信號(hào),此時(shí)與SRAM接口的FPGA的I/O口為輸出狀態(tài)。在圖像處理階段向SRAM寫數(shù)據(jù)時(shí),寫地址的產(chǎn)生不考慮行延時(shí)和像素延時(shí)。

  (4)Rd.vhd讀數(shù)據(jù)模塊

  在讀SRAM時(shí),依據(jù)SRAM的讀時(shí)序,產(chǎn)生讀地址和讀信號(hào)。此時(shí)與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地址總線接口時(shí)必須進(jìn)行總線切換:寫數(shù)據(jù)時(shí),寫地址線接通SRAM的地址線;讀數(shù)據(jù)時(shí),讀地址線接通SRAM的地址線。FPGA與SRAM數(shù)據(jù)線的接口為雙向口,在寫數(shù)據(jù)時(shí)是輸出口,讀數(shù)據(jù)時(shí)是輸入口,需要設(shè)置三態(tài)控制。在系統(tǒng)中其它芯片之間也有這種情況。

  進(jìn)行VHDL設(shè)計(jì)時(shí),最好各模塊單獨(dú)進(jìn)行并及時(shí)仿真驗(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ì)時(shí)必須掌握的工具。
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。