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