免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

讓我們利用DSP Builder創(chuàng)建一個中值濾波模塊(原創(chuàng))

 等緣708 2013-01-08

先前我用verilog編寫了一個中值濾波模塊,這種算法處理因為數(shù)據(jù)量巨大而且還重復存取,所以比較適合放在FPGA前端來處理,DSP就做小數(shù)據(jù)有技巧的算法吧。當時寫這個模塊的時候可真是折騰啊,呵呵,其實不是中值算法難,也不是用verilog表述出來難,難的就是在工程中搭建這個數(shù)據(jù)鏈,我們得根據(jù)相機的數(shù)據(jù)流來小心翼翼的存儲和放出這些數(shù)據(jù),不能阻塞而且要有效率。

我很驚奇dsp builder,真的是個非常好的工具,它讓我們從全局來構建我們的模塊,而不是掉進了信號的泥潭,這就是我先前用verilog寫中值模塊的苦惱,你得關注每一個相關的信號,相機的、DSP的,這些繁雜的信號都有可能導致你無法實現(xiàn)效果。而且我們還非常不好測試,這點也絕對的成為了問題,我們需要的測試就是我給一幅圖片經(jīng)過我的模塊,出來效果圖片!這點很難,F(xiàn)PGA無法提供這么大的RAM給你存,而且取出來也是個麻煩,我們需要可視化!

呵呵,DSP builder果真是一把針對DSP的利器!(這里的DSP是數(shù)字信號處理,不是處理器,否則TI會不高興了,hoho~)。當然了,我們寫控制邏輯的時候還是自己手寫吧,算法就用dsp builder,如果你用一個純硬件的頭腦在simulink中搭建電路模塊,這也是很好的,你真的可以一句代碼也不寫,呵呵,這真令人驚奇,我是達不到這么胸中有器件,還是行為級的描述描述吧~~

FPGA這個東西,太綜合了,正是因為它像一張白紙,你可以隨意發(fā)揮,隨意發(fā)揮的結果是你需要太多知識才能發(fā)揮,汗~ 你看,你數(shù)數(shù)這繁多的工具,timequest,signaltap,modelsim,matlab…從工程上說它需要三個方面支持,硬件、算法、軟件。

 

說偏了,我只是想說這個工具讓我們脫離了泥潭。DSP builder這個組件分兩部分,一個是基礎庫,一個是高級庫?,F(xiàn)在Altera把大部分精力放在了高級庫上,而且有有些IP是需要lincese才能用的。

 

好了,讓我們先來了解一下中值算法,google一下吧。我采用的是快速中值濾波,3x3矩陣。這個算法主要功能是去噪,附帶會產(chǎn)生模糊的效果。算法如下:

 

圖一

先縱列以箭頭方向從小到大排序,縱列排好后,再橫列以箭頭方向從小到大排,最后取45°角方向斜線的三個數(shù)取中值。

 

了解了算法之后,編寫verilog模塊吧。這里需要注意的就是,務必達成流水線處理,我們可以一個時鐘節(jié)拍就處理完一個三值比較,或者多個時鐘完成。一定要注意到相機的數(shù)據(jù)是流水般過來的,所以我們可以先等幾個或者十幾個時鐘,但是后續(xù)必須是流水般出結果。

寫好之后,打開matlab&simulink,開始建模,用HDL inport導進去吧。其實也可以自己用dsp builder的組件來搭建這個算法模塊,因為我這有個以前寫的代碼了,所以就直接用:下面7個大的方形模塊是verilog導入。

 

圖二

因為我的相機是640*480輸出的灰階圖像,所以對應著3x3矩陣就是三行數(shù)據(jù)了。這里IncCount組件作用就是模擬相機數(shù)據(jù)了,線性遞增數(shù)據(jù)0-63,很簡單,可以初步驗證一下我寫的Compare_3Num模塊的作用。示波器觀察數(shù)據(jù)看看:

 

圖三

正好是64個數(shù)據(jù)循環(huán),所以經(jīng)過中值應該也是對應的,初步效果可以確認了。其實這樣觀察和Modelsim,SignalTapII觀察就是一個樣,只見樹木不見森林,看著單個單個的值,有點無助~~

體現(xiàn)matlab強大的時候到了,simulink有個兩組件From workspace,To workspace。它能把matlab工作間的內(nèi)容導進dsp builder模塊之后在觀察框中顯示出來。這為我們提供很好的測試方法,特別是圖像處理。不過我們需要先寫.m腳本,你的去了解幾句matlab語言才行~~

建模如下,這里的subsystem就是用圖二的模塊創(chuàng)建的子系統(tǒng),F(xiàn)rom Workspace的simin就是數(shù)據(jù)入口,從這里把整幅圖片的數(shù)據(jù)導進,To workspace就是數(shù)據(jù)出口,復位和使能就直接置1了。

 

圖四

我們來嘗試導入一幅彩色圖片,經(jīng)過我的中值濾波模塊之后的效果(第二幅是灰階圖,第三幅是中值濾波后的效果圖):

 

圖五

經(jīng)過上面兩種測試方法,特別是第二種方法,我們直觀的得到了整幅圖片的效果,現(xiàn)在進入實戰(zhàn)階段了,導出VHDL代碼,加載到工程里,我們希望得到的就是實時的中值濾波效果!

利用signalcompile組件指定器件---編譯----export….

 

圖六

軍工級的代碼出現(xiàn)了,呵呵,不包括我寫的那段~~~不要看它產(chǎn)生的文件多,占用的資源卻是很優(yōu)化的,而且效率也非常高。

 

這些代碼可以直接用的,我的工程是verilog代碼,引用VHDL模塊直接引用即可,這里的top文件是median6_GN。有了top文件我相信大家都會調(diào)用的吧~

 

我的板級可通過網(wǎng)絡獲取相機的黑白數(shù)據(jù),實時顯示。PC客戶端保存的圖片是png格式的,獲取個原圖:

 

圖七

我們寫個腳本,運用matla本身的中值函數(shù)medfilt2來做一下處理,得到下面的效果:此圖是直接在顯示的figure里save as..jpg格式(這個圖片保存了就這么小,我沒縮放過,順便申明這些圖片都被轉成jpg格式,博客園不支持bmp上傳)

 

圖八

好了,我們把matlab導出的中值VHDL代碼加進工程,編譯出來sof,燒寫FPGA,看PC端的實時顯示結果,截個圖:

 

圖九

呵呵,感覺還行,相機熱噪點較多,水漬水漬的。和matlab本身的函數(shù)處理結果相差不大。這里的圖片有一些小黑點,可能是相機幀行信號沒控制好,導致無效數(shù)據(jù)進fifo了,看見了吧,實踐中的工程就是還有很多的細節(jié)需要完善的!上面的幾幅圖片都有行偏移,這是PC端的采集軟件有點bug,我這里主要是演示圖像處理,沒有理它。

 

通過這個演示,我們知道了DSP builder能導出可用的硬件代碼。matlab給我們提供系統(tǒng)級建模的平臺,無需寫一句代碼也能完成軍工級的任務。

 

后記:

我現(xiàn)在用的平臺是quartusII12.0 & Matlab2010b,

其實quartusII9.1 & Matlab2009b配合的是很好的,后面我用的時候創(chuàng)建文件用dsp builder的signalTapII組件,發(fā)現(xiàn)報錯: Matlab Error

Undefined function or method 'eval' for input arguments of type 'double'.

而且沒有彈出signalTapII的觀察框,這真是件糾結的事情,于是我又懷疑是版本問題了,因為畢竟2009b不是“正室”啊,決定卸載。

找缺氧同學要了12.0版本的quartusII及各組件,花了兩個半鐘把quartusII9.1 & modelsim & dspbuilder &matlab卸載,換成12.0的各版本配合…這真是下了大決心,換這種軟件忐忑啊。

其實,那個報錯12.0也會有,而且問題不是軟件版本問題,是我有個組件的參數(shù)沒配置好,直接導致signaltap無法彈出觀察框!

 

就這樣吧,慢慢就會習慣12.0了~

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多