軟件:Quartus
語言:Verilog/VHDL
本資源含有verilog及VHDL兩種語言設(shè)計的工程,每個工程均可實現(xiàn)以下FIR濾波器的功能。
代碼功能:
設(shè)計一個8階FIR濾波器(低通濾波器),要求截止頻率為20KHz,使用線性相位結(jié)構(gòu)。
參數(shù)設(shè)計方法:
使用matlab軟件設(shè)計濾波器系數(shù)
濾波器系數(shù)設(shè)計:
打開Matlab軟件在指令窗口中鍵入:m=fir1(7,0.2),即可得到如下的系數(shù):
0.009、0.048、0.164、0.279、0.279、0.164、0.048、0.009
將系數(shù)放大1000倍即:9,48,164,279;乘加計算計算完成后再除以1000.
演示視頻(以VHDL工程文件為例,verilog同理):
FPGA代碼Verilog/VHDL代碼資源下載網(wǎng):www.hdlcode.com
部分代碼展示
verilog代碼:
//濾波器 module?FIR_filter( input?clk_in,//50MHz input?reset_p,//高電平復(fù)位 output?[9:0]fir_data//濾波后結(jié)果 ); wire?[9:0]?data_in; wire?clk_100K; //分頻模塊,50M分頻到100K div_clk?i_div_clk( .?clk_in(clk_in), .?clk_out(clk_100K) ); //產(chǎn)生帶噪聲的正弦波 sin_noise?i_sin_noise( .?clk_in(clk_in),//50MHz .?reset_p(reset_p),//高電平復(fù)位 .?sin_and_noise(data_in)//產(chǎn)生帶噪聲的正弦波 ); //8階線性相位結(jié)構(gòu)FIR FIR?i_FIR( .?clk(clk_100K),//100K .?reset_p(reset_p),//高電平復(fù)位 .?data_in(data_in),//周期1K,噪聲頻率30K左右 .?fir_data(fir_data)//濾波后結(jié)果 ); endmodule
VHDL代碼:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --濾波器 ENTITY?FIR_filter?IS ???PORT?( ??????clk_in????:?IN?STD_LOGIC;--50MHz ??????reset_p???:?IN?STD_LOGIC;--高電平復(fù)位 ??????fir_data??:?OUT?STD_LOGIC_VECTOR(9?DOWNTO?0)--濾波后結(jié)果 ???); END?FIR_filter; ARCHITECTURE?behave?OF?FIR_filter?IS --產(chǎn)生帶噪聲的正弦波 ???COMPONENT?sin_noise?IS ??????PORT?( ?????????clk_in????:?IN?STD_LOGIC; ?????????reset_p???:?IN?STD_LOGIC; ?????????sin_and_noise?:?OUT?STD_LOGIC_VECTOR(9?DOWNTO?0) ??????); ???END?COMPONENT; ???--分頻模塊 ???COMPONENT?div_clk?IS ??????PORT?( ?????????clk_in????:?IN?STD_LOGIC; ?????????clk_out???:?OUT?STD_LOGIC ??????); ???END?COMPONENT; ???--8階線性相位結(jié)構(gòu)FIR ???COMPONENT?FIR?IS ??????PORT?( ?????????clk???????:?IN?STD_LOGIC; ?????????reset_p???:?IN?STD_LOGIC; ?????????data_in???:?IN?STD_LOGIC_VECTOR(9?DOWNTO?0); ?????????fir_data??:?OUT?STD_LOGIC_VECTOR(9?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???--定義內(nèi)部信號 ???SIGNAL?data_in????????:?STD_LOGIC_VECTOR(9?DOWNTO?0); ???SIGNAL?clk_100K???????:?STD_LOGIC; BEGIN ??--分頻模塊,50M分頻到100K? ???i_div_clk?:?div_clk ??????PORT?MAP?( ?????????clk_in???=>?clk_in, ?????????clk_out??=>?clk_100K ??????); ??? ??? ??--產(chǎn)生帶噪聲的正弦波? ???i_sin_noise?:?sin_noise ??????PORT?MAP?( ?????????clk_in?????????=>?clk_in,--50MHz ?????????reset_p????????=>?reset_p,--高電平復(fù)位 ?????????sin_and_noise??=>?data_in--產(chǎn)生帶噪聲的正弦波 ??????); ??? ??? ???--8階線性相位結(jié)構(gòu)FIR ???i_FIR?:?FIR ??????PORT?MAP?( ?????????clk???????=>?clk_100K,--100K ?????????reset_p???=>?reset_p,--高電平復(fù)位 ?????????data_in???=>?data_in,--周期1K,噪聲頻率30K左右 ?????????fir_data??=>?fir_data--濾波后結(jié)果 ??????); ??? END?behave;
設(shè)計文檔(以VHDL工程文件為例,verilog同理):
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. Testbench
6. 仿真圖
整體仿真
分頻模塊仿真
產(chǎn)生帶噪聲正弦波模塊仿真
濾波器模塊仿真