1. 引言
玻璃缺陷檢測是玻璃生產過程中一個相當重要課題,玻璃缺陷(氣泡、結石、錫點等)妨礙了其在重大技術領域中的應用,不但影響了產品的外觀,同時由于它的不平整度及屈光度的影響,使得人透過玻璃觀察實物時受到障礙。目前國內外在本領域的研究成果大致為分別利用線、面陣CCD 獲取表面圖像,由后續軟件對圖像加以分析的方法來實現對表面質量的檢測處理。本課題正是基于這樣一種指導思想下,設計了一種基于FPGA 的玻璃缺陷在線檢測系統方案,利用FPGA 實時、高速、可重構的特點,并對玻璃缺陷圖像進行的預處理(卷積運算),從而大大降低了后期數據處理的壓力,使得圖像處理系統運算速度快,具有很好的適應性。
2. 圖像采集處理系統硬件平臺
在圖像信號處理過程中為保證實時性,首先要求實時圖像處理系統具有處理大數據的能力;其次對系統的體積大小、功能、穩定性等也有嚴格的要求。實時圖像處理算法中經常要用到對圖像的求和、求差運算、二維梯度運算、圖像分割等不同層次、不同種類的運算[1]。基于上述因素,考慮到FPGA 和DSP 的優異性能,我們在玻璃缺陷檢測系統中采用了如圖1 所示的硬件平臺。
系統內各模塊功能簡要描述如下:(1)視頻采集異步FIFO 模塊(內嵌于FPGA 中)接收從視頻A/D 芯片SAA7113 送來的數字視頻流,解決系統數據緩沖和異步時鐘的問題,因為:SAA7113 送過來的LLC 頻率為27MHz,而FPGA 系統時鐘頻率為48MHz. (2)視頻解碼模塊用來對得到的數字視頻流進行解碼,識別出行、場同步信號,并且根據需要選擇采集圖像的大小。(3) I2C 配置接口模塊(通過EP2C35 進行模擬配置)通過I2C 總線對SAA7113進行初始化配置,選擇產生的數字視頻格式等。(4)圖像幀存控制模塊用來讀寫系統兩片幀存儲器并且可以在它們之間進行讀寫切換操作。(5)圖像低級處理模塊從幀存中讀取一幀圖像數據,對其進行底層大量運算的圖像預處理,如噪聲消除、邊緣檢測等,最后將處理完的圖像數據經通信模塊送至后端DSP 處理器做進一步操作。此外由于采用基于SDRAM 工藝的FPGA 芯片,所以還需要配置電路在上電時對FPGA 進行配置。
系統上電時,FPGA 首先從外部配置芯片中讀取配置數據,通過AS 主動串行方式完成自身的程序加載,進入工作模式狀態。隨后I2C 配置接口模塊完成對SAA7113 的初始化,初始化結束后,FPGA 等待采集圖像的命令。FPGA 收到采集命令后,啟動采集視頻數據模塊、異步FIFO 模塊和視頻解碼模塊進行解碼,將數據輪換寫到兩個幀存中,供圖像低級處理模塊處理、經DSP 對圖像做了進一步處理后由通信模塊送往工控PC。
3. 系統中內存管理和圖像低級處理技術
3.1 SDRAM 控制實現及仿真
視頻轉換芯片輸出的視頻圖像數據通過 8 位總線VPO 傳輸給FPGA,FPGA 需要將數據保存到SDRAM 中,SDRAM 在讀寫上有嚴格的時序要求。SDRAM 的命令由RAS_n、CAS_n、WE_n 和LOAD_mode 構成,分別表示行選擇、列選擇、讀寫控制和寄存器配置控制[2]。在本系統中,我們設計了SDRAM(基于FPGA)接口模塊,該模塊控制SDRAM 的命令與時序。模塊內設計了初始化機制和系統指令分析機制。初始化機制不僅要完成對SDRAM 的初始化配置,還要完成對控制器的初始化配置,從而使控制器與外部SDRAM 的工作模式一致。為了實現高效的SDRAM 存取,提高SDRAM 總線的利用率,SDRAM 接口模塊CLK 采用133MHz 的高速時鐘,當得到數據存取模塊的讀FIFO 要求后,向SDRAM連續寫入16 個字。當得到PC 接口模塊的讀SDRAM 請求后讀出1 個字,其他時間保證SDRAM 進行刷新工作,以免數據丟失。從我們的硬件設計平臺可以看出,系統中的SDRAM分別由PFGA 和DSP 控制。當DSP 和FPGA 完成對相應SDRAM 的操作后,需要進行總線切換。總線切換后,DSP 和FPGA 開始對另一塊SDRAM 進行相應操作。其主要代碼如下:
//控制信號tg =1 ,dsp 的EMIF 接口連接到sdram1,dsp 從sdram1 中讀取數據
//控制信號tg=0,切換到sdram2
assign ed_sdram=tg?sdram_1_in_ed:sdram_2_in_ed;
assign sdram_1_o_ed = tg ? 8‘hzz : ld;
assign sdram_1_oen = tg ? 1’b0 :1‘b1;
assign sdram_1_ea= tg ? ea_sdram : l a;
assign sdram_1_ce=tg? ce_sdram: sdram_ce;
assign sdram_1_oe= tg ?oe_sdram :sdram_oe;
assign sdram_1_we= tg ? we_sdram: sdram_we;
//控制信號tg =1 ,fpga 連接到sdram2,fpga 寫數據到sdram2
//控制信號tg=0,切換到SDRAM1
assign sdram_2_o_ed = tg ? ld:8’hzz;
assign sdram_2_oen = tg ? 1‘b1:1’b0;
assign sdram_2_ea = tg?la:ea_sdram;
assign sdram _2_ce= tg?sdram_ec:ce_sdram ;
assign sdram_2_oe= tg?sdram_oe: oe_sdram;
assign sdram_2_we= tg?sdram_we: we_sdram ;
3.2 圖像低級處理的FPGA 實現
圖像處理系統中,底層的圖像預處理(濾波、銳化)的數據量很大,要求運算速度很快,但運算結構相對比較簡單,適應于FPGA 通過硬件實現。而在數字信號處理中,卷積器經常被用于圖像濾波、邊緣檢測、圖像銳化[3],我們在玻璃缺陷檢測系統中,對采集的圖像進行濾波去噪處理,以降低后續處理運算的壓力。設對于兩個長度分別為 m 和 n 的序列f (i)和g( j) ,我們可以給出一個長度為N = m + n -1 的輸出序列:
VHDL 程序頂層文件代碼如下:[4]
entity muladd is
port (
ain: in std_logic_vector(7 downto 0);
bin: in std_logic_vector(15 downto 0);
c: in std_logic;
dout: out std_logic_vector(15 downto 0)
);
end muladd;
architecture muladd_arch of muladd is
component adder16b is
port (
a: in std_logic _vector(15 downto 0);
b: in std_logic _vector(15 downto 0);
cin: in std_logic;
cout: out std_logic;
s: out std_logic _vector(15 downto 0)
);
end component;
component multi8 is
port(a:in std_logic_vector(7 downto 0);
c:in std_logic;
prod:out std_logic_vector(15 downto 0)
);
end component;
component fd16ce is
port(d:in std_logic_vector(15 downto 0);
ce,c,clr:in std_logic;
q:out std_logic_vector(15 downto 0)
);
end component;
signal pro,do:std_logic_vector(15 downto 0);
signal gndint ,vccint:std_logic;
begin
gndint《=‘0’;vccint《=’1’;
u1:multi8 port map(a=》ain(7 downto 0),c=》c,prod=》pro(15 downto 0));
u2:adder8b port map(a=》pro(15 downto 8),b=》bin(15 downto 8),
cin=》gndint,cout=》gndint,s=》do);
u3:fd16ce
portmap(d=》do,c=》c,ce=》vccint,clr=》gndint,q=》dout);
end muladd_arch;
假設模板為{1,1,1},其仿真波形如圖3 所示,在實際操作中,模板的值預置于每個單元中,很容易修改,可以方便的完成各種“窗口”的卷積運算。在卷積實現的基礎上,只要采用不同系數的模板就可以完成各種運算,而且如果將卷積中的乘法和加法運算,分別換成比較運算和布爾運算中的“與”運算,那么卷積問題就換成了圖像匹配問題了。如果將乘法運算改為加減法,將累加運算改為取最大最小值,就可以完成灰度圖像的膨脹和腐蝕運算,這對于我們進行玻璃缺陷檢測是有著極大幫助的。
4. 結束語
本文闡述了一種基于 FPGA 的玻璃缺陷圖像采集處理系統方案,給出了具體的應用和設計框圖,它體積小、系統集成度高,能有效的對圖像進行高速采集處理。系統中采用的圖像數據卷積算法,大大減輕DSP 后期數據處理的壓力,在研究過程中表明,采用FPGA 實現圖像低層次算法,設計者必須非常了解FPGA 器件內部的資源,同時系統中涉及到時鐘信號、RAM、PCI 接口等各種器件,大量復用的數據、地址線要求設計者必須精心考慮邏輯結構和功能時序才能充分發揮出FPGA 的功能,取得理想的應用效果。
評論
查看更多