91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FIR濾波器的MATLAB與FPGA設(shè)計

FPGA設(shè)計論壇 ? 來源:CSDN技術(shù)社區(qū) ? 作者:FPGADesigne ? 2022-04-24 14:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

數(shù)字濾波器

數(shù)字濾波器從實現(xiàn)結(jié)構(gòu)上劃分,有FIR和IIR兩種。FIR的特點是:線性相位、消耗資源多;IIR的特點是:非線性相位、消耗資源少。由于FIR系統(tǒng)的線性相位特點,設(shè)計中絕大多數(shù)情況都采用FIR濾波器。

線性相位系統(tǒng)的意義,這里的線性相位指的是在設(shè)計者關(guān)心的通帶范圍內(nèi),LTI系統(tǒng)滿足線性相位要求:

從延時的角度看:保證了輸入信號的相位響應(yīng)是線性的,即保證了輸入信號的延時特性。

從相位的角度看:輸入的各頻率成分的信號之間,相對相位是固定的。通過線性相位系統(tǒng)后,相對相位關(guān)系保持不變。

對于關(guān)心相位的系統(tǒng),比如調(diào)制解調(diào)系統(tǒng),需要使用FIR濾波器;對于只關(guān)心頻率成分的系統(tǒng),比如只是提取某一頻率分量,為了節(jié)省資源,使用IIR濾波器即可。

FIR濾波器

FIR的最大特點就是其系統(tǒng)響應(yīng) h(n)是一個N點的有限長序列,F(xiàn)IR的輸出y(n)本質(zhì)上就是輸入信號x(n)和h(n)的卷積(根據(jù)傅里葉變換性質(zhì),時域卷積等于頻域相乘,因此卷積相當(dāng)于篩選頻譜中的各頻率分量的增益倍數(shù),某些頻率分量保留,某些頻率分量衰減,從而實現(xiàn)濾波效果)。FIR在實現(xiàn)上的本質(zhì)是帶抽頭延遲的加法器和乘法器的組合,每一個乘法器對應(yīng)一個系數(shù)。

由理論知識可知,只有當(dāng)FIR的h(n)對稱時,F(xiàn)IR濾波器才具有線性相位特性。使用MATLAB等工具設(shè)計FIR時,得到的h(n)也都是具有對稱性的。

FIR濾波器的實現(xiàn)結(jié)構(gòu)主要有直接型、級聯(lián)型、頻率取樣型、格型四種。其中最適合FPGA實現(xiàn)的是直接型?!爸苯印笔侵钢苯佑删矸e公式得到:

1ddae3d2-c2af-11ec-bce3-dac502259ad0.jpg

由上圖可知,n階FIR濾波器就需要n個乘法器。如果設(shè)計的是線性相位FIR,則h(n)是對稱的,利用對稱性可以節(jié)省一半的乘法器。

FIR濾波器的設(shè)計方法有窗函數(shù)法、頻率取樣法、等波紋切比雪夫逼近法(也叫最優(yōu)設(shè)計法)等等。以上所有的理論知識點在任意一本數(shù)字信號處理課本中都有詳細的推論,本文節(jié)省篇幅不再贅述。

MATLAB設(shè)計

雖然Quartus和Vivado的FIR IP核中都提供了設(shè)計FIR濾波器的功能,但遠沒有MATLAB設(shè)計便捷和強大。設(shè)計中通常都是在MATLAB中設(shè)計好FIR的單位脈沖響應(yīng)h(n),或者說濾波器系數(shù),量化后應(yīng)用到FPGA設(shè)計中。

MATLAB提供了基于窗函數(shù)設(shè)計法的fir1函數(shù)、設(shè)計任意響應(yīng)濾波器的fir2函數(shù)、最優(yōu)設(shè)計法的firpm函數(shù),以及兩個應(yīng)用程序包“Filter Builder”和“Filter Design&Analysis”,后者通常也被稱作FDATOOL?,F(xiàn)在最受歡迎的設(shè)計方式恐怕就是使用FDATOOL工具,功能強大、界面便捷,且可以直接導(dǎo)出xilinx公司IP核所需的coe文件。

本系列主要是講述FPGA設(shè)計,不詳細討論上述函數(shù)及工具的使用,具體情況可以的MATLAB的help中查詢。(Ps:博主目前的幾個系列都處于開篇階段,篇幅不多,暫未成體系,目前不再開新坑,等后期應(yīng)該會出一個“MATLAB數(shù)字信號處理系列”)

FPGA設(shè)計

從MATLAB到FPGA最重要的工作便是濾波器系數(shù)的量化?,F(xiàn)在的計算機大多都是64位的,然而為了節(jié)省資源,F(xiàn)PGA中進行如此高位寬的運算步進浪費資源而且也沒有必要。在MATLAB中將濾波器系數(shù)量化為指定位寬,會改變?yōu)V波器的頻率特性,因此需要做好仿真,確定量化后的系數(shù)也能滿足FIR的設(shè)計需求。

由上節(jié)可知FPGA最方便實現(xiàn)的是直接型結(jié)構(gòu)FIR,實現(xiàn)時可以采用并行結(jié)構(gòu)、串行結(jié)構(gòu)、分布式結(jié)構(gòu),也可以直接使用Quartus和Vivado提供的FIR IP核。本篇先介紹并行FIR濾波器的Verilog設(shè)計。設(shè)計參考自杜勇老師的《數(shù)字濾波器的MATLAB與FPGA實現(xiàn)》。本設(shè)計將在Vivado環(huán)境下進行仿真。

使用MATLAB設(shè)計一個2kHz采樣,500Hz截止的15階低通濾波器(h(n)長度為16),量化位數(shù)為12bit,輸入信號位寬也為12bit。Verilog設(shè)計代碼如下。

模塊接口

module Xilinx_FIR_Guide_liuqi

(

input rst, //復(fù)位信號,高電平有效

input clk, //FPGA系統(tǒng)時鐘,頻率為2kHz

input signed [11:0] Xin, //數(shù)據(jù)輸入頻率為2khZ

output signed [28:0]Yout //濾波后的輸出數(shù)據(jù)

);

輸出信號的29bit位寬是全分辨率輸出,沒有截位?!安⑿小盕IR指的是多個乘法器并行地進行濾波器系數(shù)與輸入數(shù)據(jù)之間的乘法計算,因此代碼中我們需要緩存16個數(shù)據(jù):

reg signed[11:0] Xin_Reg[15:0]; //[11:0]指單數(shù)據(jù)12bit位寬;[15:0]指共有16個數(shù)據(jù)

reg [3:0] i,j;

always @(posedge clk or posedge rst)

if (rst)

//初始化寄存器值為0

begin

for (i=0; i<15; i=i+1)

Xin_Reg[i]=12'd0;

end

else

begin

for (j=0; j<15; j=j+1)? //每個時鐘移位一個數(shù)據(jù)

Xin_Reg[j+1] <= Xin_Reg[j];

Xin_Reg[0] <= Xin;

end

由FIR系數(shù)的對稱性可知,16個系數(shù)只需要8個乘法器即可,因此應(yīng)該將對稱系數(shù)多對應(yīng)的輸入數(shù)據(jù)相加:

reg signed [12:0] Add_Reg[7:0];

always @(posedge clk or posedge rst)

if (rst)

//初始化寄存器值為0

begin

for (i=0; i<8; i=i+1)

Add_Reg[i]=13'd0;

end

else

begin

for (i=0; i<8; i=i+1)? ?//對稱系數(shù)相加

Add_Reg[i]={Xin_Reg[i][11],Xin_Reg[i]}+{Xin_Reg[15-i][11],Xin_Reg[15-i]};

end

由于加法會增加一個bit位寬,因此相加結(jié)構(gòu)擴充為13bit。由于輸入數(shù)據(jù)為二進制補碼帶符號數(shù),因此在相加前需要先使用Verilog中的拼接運算符{}擴展符號位到最高位。接下來例化8個乘法器IP核進行乘法運算:

wire signed [11:0] coe[7:0] ; //濾波器為12比特量化數(shù)據(jù)

wire signed [24:0] Mout[7:0]; //乘法器輸出為25比特數(shù)據(jù)

assign coe[0]=12'h000;

assign coe[1]=12'hffd;

assign coe[2]=12'h00f;

assign coe[3]=12'h02e;

assign coe[4]=12'hf8b;

assign coe[5]=12'hef9;

assign coe[6]=12'h24e;

assign coe[7]=12'h7ff;

mult_gen_0Umult0 (

.CLK (clk),

.A (coe[0]),

.B (Add_Reg[0]),

.P (Mout[0]));

mult_gen_0Umult1 (

.CLK (clk),

.A (coe[1]),

.B (Add_Reg[1]),

.P (Mout[1]));

mult_gen_0Umult2 (

.CLK (clk),

.A (coe[2]),

.B (Add_Reg[2]),

.P (Mout[2]));

mult_gen_0Umult3 (

.CLK (clk),

.A (coe[3]),

.B (Add_Reg[3]),

.P (Mout[3]));

mult_gen_0Umult4 (

.CLK (clk),

.A (coe[4]),

.B (Add_Reg[4]),

.P (Mout[4]));

mult_gen_0Umult5 (

.CLK (clk),

.A (coe[5]),

.B (Add_Reg[5]),

.P (Mout[5]));

mult_gen_0Umult6 (

.CLK (clk),

.A (coe[6]),

.B (Add_Reg[6]),

.P (Mout[6]));

mult_gen_0Umult7 (

.CLK (clk),

.A (coe[7]),

.B (Add_Reg[7]),

.P (Mout[7]));

12bit的濾波器系數(shù)與13bit的輸入信號數(shù)據(jù)相乘結(jié)果為25bit。乘法結(jié)果累加即為濾波器的輸出結(jié)果:

reg signed [28:0] sum;

reg signed [28:0] yout;

reg [3:0] k;

always @(posedge clk or posedge rst)

if (rst)

begin

sum = 29'd0;

yout <= 29'd0;

end

else

begin

yout <= sum;

sum = 29'd0;

for (k=0; k<8; k=k+1)

sum = sum+Mout[k]; //相加輸出結(jié)果

end

assign Yout = yout;

8個25bit的數(shù)相加,結(jié)果可能擴展到29bit,這也是全分辨率輸出的結(jié)果??梢钥吹讲⑿薪Y(jié)構(gòu)的FIR乘法、加法運算都是在一個時鐘內(nèi)完成,因此每個時鐘都能獲得一個輸出。

仿真與工程下載

使用MATLAB生成一個200Hz+800Hz的混合頻率信號,寫入txt文件,再生成一個噪聲信號寫入txt文件。

對正弦信號的濾波如下圖所示:

1df36fc4-c2af-11ec-bce3-dac502259ad0.png

明顯看到經(jīng)過500Hz低通濾波器濾波后,輸入的200Hz+800Hz信號只剩下200Hz的頻率分量。

對噪聲信號的濾波如下圖所示:

1e0fe960-c2af-11ec-bce3-dac502259ad0.png

可以看到噪聲經(jīng)過濾波后的頻率分布情況明顯少于濾波前

原文標(biāo)題:FPGA-學(xué)習(xí)并行FIR濾波器Verilog設(shè)計

文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1660

    文章

    22406

    瀏覽量

    636113
  • 數(shù)字濾波器
    +關(guān)注

    關(guān)注

    4

    文章

    300

    瀏覽量

    48262
  • Verilog
    +關(guān)注

    關(guān)注

    30

    文章

    1374

    瀏覽量

    114517
  • fir濾波器
    +關(guān)注

    關(guān)注

    1

    文章

    97

    瀏覽量

    19697

原文標(biāo)題:FPGA-學(xué)習(xí)并行FIR濾波器Verilog設(shè)計

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    基于MATLAB和Quartus II 的FIR濾波器設(shè)計與

    本文綜合介紹了基于FPGA 軟件Quartus II 和MATLABFIR 濾波器的設(shè)計仿真,將兩大軟件綜合運用后大大縮減了設(shè)計研發(fā)的時間,在算法結(jié)構(gòu)上利用了流水線等優(yōu)化方式。
    發(fā)表于 11-30 14:21 ?117次下載

    基于MATLAB與QUARTUS II的FIR濾波器設(shè)計與驗

    基于MATLAB與QUARTUS II的FIR濾波器設(shè)計與驗證 FIR濾波器是一種應(yīng)用廣泛的基本數(shù)字信號處理元件。
    發(fā)表于 05-13 17:16 ?54次下載

    高效FIR濾波器的設(shè)計與仿真-基于FPGA

    高效FIR濾波器的設(shè)計與仿真-基于FPGA 摘要:該文在介紹有限沖激響應(yīng)(FIR)數(shù)字濾波器理論及常見實現(xiàn)方法的基礎(chǔ)上,提出了一種基于
    發(fā)表于 01-16 09:56 ?2123次閱讀
    高效<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>的設(shè)計與仿真-基于<b class='flag-5'>FPGA</b>

    MATLAB設(shè)計FIR濾波器的方法

    MATLAB設(shè)計FIR濾波器的方法 摘? 要 介紹了利用MATLAB信號處理工具箱進行FIR濾波器
    發(fā)表于 01-16 18:12 ?1.6w次閱讀
    用<b class='flag-5'>MATLAB</b>設(shè)計<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>的方法

    基于MATLAB與QUARTUS II的FIR濾波器設(shè)計與驗

    基于MATLAB與QUARTUS II的FIR濾波器設(shè)計與驗證 1 引言    FIR數(shù)字濾波器能夠滿足
    發(fā)表于 12-12 11:23 ?3173次閱讀
    基于<b class='flag-5'>MATLAB</b>與QUARTUS II的<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>設(shè)計與驗

    基于MATLABFPGAFIR低通濾波器的設(shè)計

    充分利用有限沖擊響應(yīng)數(shù)字濾波器(Finite Impulse Response digital filter ,FIR)系數(shù)的對稱特性,借助于MATLAB語言和現(xiàn)場可編程門陣列(FPGA
    發(fā)表于 08-05 14:23 ?83次下載
    基于<b class='flag-5'>MATLAB</b>及<b class='flag-5'>FPGA</b>的<b class='flag-5'>FIR</b>低通<b class='flag-5'>濾波器</b>的設(shè)計

    基于MATLABFPGAFIR濾波器設(shè)計與仿真

    數(shù)字濾波器是數(shù)字信號處理領(lǐng)域內(nèi)的重要組成部分。FIR濾波器又以其嚴(yán)格的線性相位及穩(wěn)定性高等特性被廣泛應(yīng)用。本文結(jié)合MATLAB工具軟件介紹了FIR
    發(fā)表于 09-25 11:34 ?120次下載
    基于<b class='flag-5'>MATLAB</b>與<b class='flag-5'>FPGA</b>的<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>設(shè)計與仿真

    基于Matlab/Simulink的FIR數(shù)字濾波器的設(shè)計與實現(xiàn)

    基于Matlab/Simulink的FIR數(shù)字濾波器的設(shè)計與實現(xiàn)。
    發(fā)表于 01-15 15:16 ?42次下載

    基于matlabfpgaFIR濾波器設(shè)計

    基于matlabfpgaFIR濾波器設(shè)計,有興趣的同學(xué)可以下載學(xué)習(xí)
    發(fā)表于 04-27 15:51 ?59次下載

    基于FPGAFIR濾波器設(shè)計與實現(xiàn)

    基于FPGAFIR濾波器設(shè)計與實現(xiàn),下來看看
    發(fā)表于 05-10 11:49 ?39次下載

    基于MATLABFIR濾波器設(shè)計與濾波

    基于MATLABFIR濾波器設(shè)計與濾波。
    發(fā)表于 12-14 22:08 ?68次下載

    基于MATLAB與QUARTUS+II的FIR濾波器設(shè)計與驗證

    基于MATLAB與QUARTUS+II的FIR濾波器設(shè)計與驗證
    發(fā)表于 09-18 10:17 ?11次下載
    基于<b class='flag-5'>MATLAB</b>與QUARTUS+II的<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>設(shè)計與驗證

    FIR濾波器FPGA設(shè)計與實現(xiàn)

    ,結(jié)合MATLAB軟件提供的專用數(shù)字濾波器設(shè)計工具包FDATOOL,以及QuartusⅡ軟件提供的FIR核實現(xiàn)快速、便捷的設(shè)計FIR濾波器
    發(fā)表于 12-21 14:53 ?14次下載
    <b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b>的<b class='flag-5'>FPGA</b>設(shè)計與實現(xiàn)

    串行FIR濾波器MATLABFPGA實現(xiàn)

    本文介紹了設(shè)計濾波器FPGA實現(xiàn)步驟,并結(jié)合杜勇老師的書籍中的串行FIR濾波器部分進行一步步實現(xiàn)硬件設(shè)計,對書中的架構(gòu)做了簡單的優(yōu)化,并進行了仿真驗證。
    的頭像 發(fā)表于 05-24 10:56 ?1949次閱讀
    串行<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b><b class='flag-5'>MATLAB</b>與<b class='flag-5'>FPGA</b>實現(xiàn)

    并行FIR濾波器MATLABFPGA實現(xiàn)

    本文介紹了設(shè)計濾波器FPGA實現(xiàn)步驟,并結(jié)合杜勇老師的書籍中的并行FIR濾波器部分進行一步步實現(xiàn)硬件設(shè)計,對書中的架構(gòu)做了復(fù)現(xiàn)以及解讀,并進行了仿真驗證。
    的頭像 發(fā)表于 05-24 10:57 ?1944次閱讀
    并行<b class='flag-5'>FIR</b><b class='flag-5'>濾波器</b><b class='flag-5'>MATLAB</b>與<b class='flag-5'>FPGA</b>實現(xiàn)