大俠好,歡迎來到FPGA技術(shù)江湖,江湖偌大,相見即是緣分。大俠可以關(guān)注FPGA技術(shù)江湖,在“闖蕩江湖”、"行俠仗義"欄里獲取其他感興趣的資源,或者一起煮酒言歡?!爸缶蒲詺g”進(jìn)入IC技術(shù)圈,這里有近100個(gè)IC技術(shù)公眾號(hào)。
今天和大俠簡單聊一聊基于matlab FPGA verilog的FIR濾波器設(shè)計(jì),話不多說,上貨。
本次設(shè)計(jì)實(shí)現(xiàn)8階濾波器,9個(gè)系數(shù),由于系數(shù)的對(duì)稱性,h(0)=h(8),h1(1)=h(7),h(2)=h(6),h(3)=h(5),h(4)為中間單獨(dú)一個(gè)系數(shù)。根據(jù)公式:
實(shí)現(xiàn)框圖:
推導(dǎo)出當(dāng)系數(shù)N為偶數(shù)時(shí),例如N=4:y(n)=h(0)*{x(0)+x(n-3)}+h(1)*{x(n-1)+x(n-2)}
當(dāng)系數(shù)N為奇數(shù)時(shí),例如N=5:
y(n)=h(0)*{x(0)+x(n-1)}+h(1)*{x(n-1)+x(n-3)}+h(2)*x(n-2)
1、用matlab生成和量化濾波器系數(shù)
設(shè)置參數(shù)后,點(diǎn)擊“Design Filter”按鈕,“file”—“export”,把濾波器系數(shù)導(dǎo)出到workspace,如下圖:
執(zhí)行命令:Num=Num’ ,把濾波器系數(shù)拷貝到文件COFFICIENT.dat中。
量化系數(shù):在matlab中運(yùn)行quantization.m
2、說明
用matlab程序sin_1MHz_gen.m生成正弦波波形表,改變變量f0 = 1.5e6可以生成不同頻率的波形。把第一個(gè)周期的波形數(shù)據(jù)存入signal_1m.dat文件中,存入的數(shù)據(jù)個(gè)數(shù)為Fs/Fo的最小正整數(shù)之比的分子,比如Fs=25MHz,F(xiàn)o=0.3MHz,Fs/Fo=250/3(Fs=25/24MHz),則存入文件signal_1m.dat的波形數(shù)據(jù)個(gè)數(shù)為開頭的250個(gè)數(shù)據(jù)。相應(yīng)的signal_gen0.v中的語句if(i0<50)相應(yīng)的改為if(i0<250)。仿真時(shí)signal_1m.dat放在仿真目錄下
3、濾波器的multisim仿真
運(yùn)行matlab,用sin_1MHz_gen.m產(chǎn)生5MHz(f0 =5e6)正弦波信號(hào),F(xiàn)s/Fo=5,把數(shù)據(jù)hex_sin_data的前5個(gè)數(shù)據(jù)存入signal_1m.dat文件,相應(yīng)的signal_gen0.v中的語句if(i0<50)相應(yīng)的改為if(i0<5)。
仿真的波形如下圖(fir濾波器的輸入輸出信號(hào)):
運(yùn)行matlab,用sin_1MHz_gen.m產(chǎn)生1MHz(f0 =1e6)正弦波信號(hào),F(xiàn)s/Fo=25,把數(shù)據(jù)hex_sin_data的前5個(gè)數(shù)據(jù)存入signal_1m.dat文件,相應(yīng)的signal_gen0.v中的語句if(i0<5)相應(yīng)的改為if(i0<25)。
仿真的波形如下圖(fir濾波器的輸入輸出信號(hào)):
由此可見FIR對(duì)帶外信號(hào)起到衰減的作用。
部分代碼:
完
后續(xù)會(huì)持續(xù)更新,帶來Vivado、 ISE、Quartus II 、candence等安裝相關(guān)設(shè)計(jì)教程,學(xué)習(xí)資源、項(xiàng)目資源、好文推薦等,希望大俠持續(xù)關(guān)注。大俠們,江湖偌大,繼續(xù)闖蕩,愿一切安好,有緣再見!