李勇 袁林
摘 要:以Altera的QuartusⅡ為開發(fā)平臺,在FPGA芯片中設(shè)計實現(xiàn)3×3窗口中值濾波器,結(jié)合選定的中值濾波算法,主要針對在進入比較單元前的數(shù)據(jù)讀取部分進行優(yōu)化設(shè)計,提出了構(gòu)建雙極隨機存儲器BRAM實現(xiàn)數(shù)據(jù)讀取和構(gòu)建D觸發(fā)器實現(xiàn)數(shù)據(jù)串入并出兩種數(shù)據(jù)讀取設(shè)計。
關(guān)鍵詞:FPGA;中值濾波;數(shù)據(jù)讀取;BRAM;D觸發(fā)器
中圖分類號:TN919 文獻標識碼:A
Abstract:Based on the FPGA- platform for application software design and implementation QuartusⅡ made the 3×3 window median filter.The design combined with selected median filtering algorithm, mainly for the data read section before entering the compare unit to optimize the design,proposed to explain the two kinds of data read design which build a bipolar random BRAM memory data read and build data string into the D flip-flop.
Keywords:FPGA;median filtering;data read;BRAM;D flip-flop
1 引言(Introduction)
非線性對自然界的描述更接近于實物的本原,因而其處理效果更加準確[1]。中值濾波是一種非線性濾波,中值濾波器在應(yīng)用于去除脈沖噪聲方面具有獨特的優(yōu)勢,中值濾波算法也在向運算次數(shù)更少、運算時間更短、更高效的目標邁進。FPGA也正因為它的高集成,高性能,高靈活性,低功耗和低價格被廣泛應(yīng)用在科技產(chǎn)品的開發(fā)上。本文基于Cyclone EP1C6Q240C8的FPGA硬件平臺,應(yīng)用Altera公司的Quartus II開發(fā)軟件來對濾波器設(shè)計實現(xiàn),主要結(jié)合改進的中值濾波算法研究在比較單元處理之前圖像數(shù)據(jù)讀取的微觀設(shè)計。
2 中值濾波器的中值濾波算法(The median filtering algorithm of median filter)
傳統(tǒng)中值濾波算法的實現(xiàn)是對窗口內(nèi)像素點值進行全排序,排序的過程是對像素作比較和交換的過程,比較次數(shù)是影響排序速度的重要原因[2]。例如對包含m(奇數(shù))個像素數(shù)的窗口數(shù)列需要經(jīng)過m(m-1)/2次比較,而第(m+1)/2比較的得值即為中值,整個過程的時間復(fù)雜度是O(m2)。假若處理一副352×288的灰度圖像,采用3×3方形窗口得出一個中值需比較36次,這對于將要處理的101376個像素值來講從運算量和處理時間方面都將是很大的負擔(dān)。
改進的中值濾波算法有三步:第一步,對3×3窗口每行采取由小到大比較排列,因每行進行三次比較,共需比較九次,記錄出每行的小、中、大值;第二步,再對各列采取縱向由小到大比較排列,也需比較九次得出行最小值中的最大值,行中間值中的中值,和行最大值中的最小值;第三步,對前一步得出的三個值比較得出的中間值就是整個窗口數(shù)列的中值。
如表1所示結(jié)果,實驗在windows環(huán)境下(intel i5-3470 4G內(nèi)存)采用Borland C++ Builder6.0編程驗證常規(guī)中值濾波算法和改進的中值濾波算法,改進中值濾波算法在處理速度上較常規(guī)中值濾波算法具有較大優(yōu)勢。本文中值濾波器根據(jù)實時性要求等綜合考慮采取改進的中值濾波算法,有利于精簡比較次數(shù),減少處理時間和資源消耗。
3 基于FPGA的中值濾波器的設(shè)計綜述(Summary of median filter design based on FPGA)
首先編制中值濾波器的HDL或原理圖輸入,并使用行為級仿真及時糾錯;其次,綜合分析成本、處理速度、實現(xiàn)效果和功耗等因素生成數(shù)字邏輯連接;再次,進行邏輯布線,進一步使用Modelsim進行仿真修正,若仍無法修改的則可返回上一步再次綜合,反復(fù)修正直至得出較滿意的布局布線;然后,時序分析,為各器件分配適合的時序,采用時序仿真,并反復(fù)校正已達到逼近時序的理想設(shè)置,確保時序分配不沖突;最后,以PS或JTAG方式把bit文件載入FPGA芯片。中值濾波器的工作分為三大塊,第一部分為讀取數(shù)據(jù),讀入數(shù)據(jù)到3×3滑動窗口中,再將數(shù)據(jù)分別放入寄存器中,這部分涉及到BRAM、D觸發(fā)器、計數(shù)器和SRAM等邏輯部件;第二部分為比較單元,主要有行比較、列比較和對角線比較,它主要涉及三點比較器、觸發(fā)器等;第三部分為記錄中值并輸出。
4 中值濾波器在FPGA實現(xiàn)中的數(shù)據(jù)讀取設(shè)計 (The design of median filter data read in FPGA implementations)
4.1 構(gòu)建雙極隨機存儲器BRAM實現(xiàn)數(shù)據(jù)讀取
因濾波器使用3×3窗口,所以在EP1C6Q240C8板上擴展構(gòu)建32×25344的大BRAM一塊(將在VGA顯示器上呈現(xiàn)一幀352×288像素大小的圖像)和8×352的小BRAM三塊。從大BRAM到小BRAM每次僅讀出1個數(shù)據(jù),待所有數(shù)據(jù)都讀完會消耗大量時序,因此為實現(xiàn)高效利用,將數(shù)據(jù)在小BRAM中寄于蓄勢待發(fā)的狀態(tài),即第一行BRAM1、第二行BRAM2的數(shù)據(jù)全部讀入,同時第三行BRAM3的前兩個數(shù)據(jù)輸入的狀態(tài)。只要BRAM3的第三個數(shù)據(jù)一到位,立刻使3×3窗口“充滿”,使寄存器的九個數(shù)據(jù)同時送入數(shù)據(jù)比較單元。類推下去,當(dāng)BRAM3的第4個數(shù)據(jù)讀入時,此時已“充滿”的窗口等同于向右側(cè)滑動了一個數(shù)據(jù)單位。以此類推,BRAM3讀滿以后再次從BRAM1開始讀入數(shù)據(jù),用新的數(shù)據(jù)覆蓋舊數(shù)據(jù),BRAM1的前兩個數(shù)據(jù)輸入后即進入準備狀態(tài)。當(dāng)BRAM1的第三個數(shù)據(jù)一到位,立刻使3×3窗口“充滿”,使寄存器的九個數(shù)據(jù)同時送入數(shù)據(jù)比較單元。三個小BRAM送左往右同一位置數(shù)據(jù)縱向合為一個數(shù)據(jù)組送入對應(yīng)順序的三個寄存器中,為了使控制器清楚工作的三個寄存器的位置,可以設(shè)置計數(shù)器進行0、1、2的循環(huán)將九個寄存器的三組進行對應(yīng)。如此反復(fù),周而復(fù)始。
4.2 構(gòu)建D觸發(fā)器實現(xiàn)數(shù)據(jù)從SRAM的串入并出
SRAM具有處理時間快、工作效率高等特點,在與FPGA配設(shè)時存取了待處理的圖像數(shù)據(jù)。FPGA因一個時鐘周期僅讀取一個數(shù)據(jù),采用串入并出不失為一副良策。如圖3所示,設(shè)計了12個D觸發(fā)器與一個三進制計數(shù)器,計數(shù)器可以0—2計數(shù),當(dāng)記錄讀取了三個值后D觸發(fā)器工作,相當(dāng)于移位寄存器第一列推入第二列,層層遞推,以致第二、三、四列D觸發(fā)器形成的3×3窗口的九個數(shù)據(jù)輸出,進入比較單元。另當(dāng)有新的一列三個數(shù)據(jù)輸入后,相當(dāng)于窗口靠右滑動了一個單位。這種數(shù)據(jù)串行輸入、并行輸出有助于縮短數(shù)據(jù)的處理時間,特別能夠滿足實時圖像的處理的需要。
5 結(jié)論(Conclusion)
基于FPGA實現(xiàn)對中值濾波器的設(shè)計開發(fā)需要考慮算法、軟硬件資源條件等復(fù)雜因素,結(jié)合工程實踐情況在對比較單元前的數(shù)據(jù)讀取部分,因地制宜提出了構(gòu)建雙極隨機存儲器BRAM實現(xiàn)數(shù)據(jù)讀取和構(gòu)建D觸發(fā)器實現(xiàn)數(shù)據(jù)串入并出兩種數(shù)據(jù)讀取設(shè)計,數(shù)據(jù)讀取的質(zhì)量和速度都較為理想。本設(shè)計較為實用,適宜相互學(xué)習(xí)、交流和研究。
參考文獻(References)
[1] 程卓.基于采樣的非線性濾波方法綜述[J].軟件工程師,2010(6):45-47.
[2] 李新春,趙璐.基于中值濾波算法濾波器的FPGA實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2011,20(9):82-83.
[3] Suil K P,Mahapatra K K.A lossless image compress techniqueusing simple arithmetic operations and its FPGA implementation[C].ICIT 2006 IEEE International conference,America,2006:2211-2216.
作者簡介:
李 勇(1982-),男,碩士,講師,技師.研究領(lǐng)域:電子與通信工程.
袁 林(1978-),女,碩士,講師,技師.研究領(lǐng)域:計算機應(yīng)用.