FIR设置过采样率 matlab,Xilinx FIR IP的介绍与仿真
作者:?OpenSLee?來源:
1 xilinx fir ip簡介
1)符合AXI4-Stream的接口
2)高性能有限脈沖響應(FIR),多相抽取器,多相內插器,半帶,半帶抽取器和半帶內插器,希爾伯特變換和內插濾波器實現
3)最多支持256組系數,處理一組以上時,每組2至2048個系數。
4)輸入數據高達49位精度
5)濾波器系數高達49位精度
6)支持多達1024個交錯數據通道
7)支持高級交錯數據通道序列
8)通過共享控制邏輯支持多個并行數據通道
9)插值和抽取因子通常最多為64,單通道濾波器的最大為1024
10)支持大于時鐘頻率的采樣頻率
11)在線系數重裝能力
12)用戶可選的輸出舍入
13)高效的多列結構,適用于所有過濾器的實現和優化
Fir公式
常規抽頭延遲線FIR濾波器表示
2 設計驗證思路
混頻器設計參考《基于FPGA數字混頻器的設計》。
如上圖所示,混頻模塊內部包含兩個dds模塊,一個產生2khz sine波,一個產生3khz sine波,然后相乘得到1khz+6khz的混頻,然后使用xilinx FIR IP設計一個低通濾波器濾掉6khz,最后只剩1khz。
3 matlab fdatool設計低通濾波器
1)打開fdatool
2)低通濾波器設計
Fs=44100;
Fpass =3000;
Fstop =5000;
Apass = 1;
Astop =120;
幅頻響應如下圖所示。
3 系數量化
4)matlab導出 .coe
4 xilinx FIR IP的設置與仿真
如上圖所示,左側包含IP Symbol、Freq.Response、Implementation Details和CoefficientReload。右側包括Filter Options、Channel Specification、Implementation、Detailed Implementation、Interface和Summary.
1) Filter Options
(1)系數源(Coefficient Source):直接在GUI中使用系數矢量參數或使用由CoefficientFile參數指定的.coe文件,指定要使用的系數輸入。
(2)系數向量(Coefficient Vector ):用于直接在GUI中指定濾波器系數。過濾器系數使用逗號分隔列表以十進制形式指定,與過濾器系數數據文件中的coefdata字段相同。與.coe文件一樣,可以使用FIR編譯器根據您的要求適當量化的非整數實數來指定濾波器系數。
(3)濾波器類型(Filter Typ ):支持五種濾波器類型:單速率FIR,插值FIR,抽取FIR,希爾伯特變換和插值FIR。
2) Channel Specification
(1)選擇格式(Select format ):選擇用于指定硬件過采樣率,內核可用于處理輸入采樣并生成輸出的時鐘周期數的格式。該值直接影響核心實現和所使用資源的并行度。選擇“頻率規格”后,可以指定“輸入采樣頻率”和“時鐘頻率”。這些值之間的比率以及其他核心參數決定了硬件過采樣率。
選擇“輸入采樣周期”時,可以指定輸入采樣之間的時鐘周期數。同樣,選 擇“輸出采樣周期”時,可以指定輸出采樣之間的時鐘周期數。
(2)采樣周期(Sample Period ):輸入或輸出采樣之間的時鐘周期數。當指定了多個通道時,該值應該是時分多路復用輸入樣本數據流之間時鐘周期的整數。可以使用分數采樣周期來指定大于時鐘頻率的采樣頻率.
(3)輸入采樣頻率(Input Sampling Frequency ):該字段可以是整數或實數值;它指定一個通道的采樣頻率。根據時鐘頻率和濾波器參數(例如插值率和通道數)設置上限。
(4)時鐘頻率(Clock Frequency ):此字段可以是整數或實數值。限制是根據采樣頻率,內插率和通道數設置的。該領域僅影響體系結構選擇。最終的實現可能無法達到指定的時鐘速率。
3) Implementation
(1)系數類型(Coefficient Type ):系數數據可以指定為有符號或無符號。
(2)輸入數據小數位(Input Data Fractional Bits ):用于表示過濾器輸入數據樣本的小數部分的輸入數據寬度位數。該字段僅供參考。它與系數小數位一起使用,以計算濾波器的輸出小數位值。此參數在IP集成器中自動設置,但也可以被覆蓋。
(3)輸出舍入模式(Output Rounding Mode ):指定要應用于過濾器輸出的舍入類型。
(4)輸出小數位(Output Fractional Bits ):此字段報告用于表示濾波器輸出樣本小數部分的輸出寬度位數
4) Interface
5) Freq.Response
`timescale1ns / 1ps
modulefir_top(
input mclk,
input reset_n,
input signed [31:0] pcm_in,
output signed [31:0] y
);
reg [9:0] cnt;
reg pcm_en;
wire s_axis_data_tready;
wire m_axis_data_tvalid;
wire [71 : 0] m_axis_data_tdata;
assign y = m_axis_data_tdata[61:30];
always @(posedge mclk or negedge reset_n)begin
if(!reset_n) begin
cnt<=10'd0;
pcm_en<=1'b0;
end
else begin
cnt<=cnt+10'd1;
if(cnt==10'd0)
pcm_en<=1'b1;
else
pcm_en<=1'b0;
end
end
//-----------Begin Cut here for INSTANTIATION Template ---// INST_TAG
fir_lowUfir_low (
.aresetn(reset_n), // input wire aresetn
.aclk(mclk), // input wireaclk
.s_axis_data_tvalid(pcm_en), // input wire s_axis_data_tvalid
.s_axis_data_tready(s_axis_data_tready), // output wire s_axis_data_tready
.s_axis_data_tdata(pcm_in), // input wire [31 : 0] s_axis_data_tdata
.m_axis_data_tvalid(m_axis_data_tvalid), // output wire m_axis_data_tvalid
.m_axis_data_tdata(m_axis_data_tdata) // output wire [71 : 0] m_axis_data_tdata
);
endmodule
將混頻信號和經過xilinx FIR IP 濾波后信號寫出matlab觀察時域和頻域.
1 混頻信號
濾波前的1khz+6khz的混頻信號。
2 濾波后
如上所示,經過濾波后6khz完全被濾除,只剩下1khz信號。仿真驗證成功。
參考文章—pg149
總結
以上是生活随笔為你收集整理的FIR设置过采样率 matlab,Xilinx FIR IP的介绍与仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为公布多项有关北斗通信的专利 可接收其
- 下一篇: 高通骁龙 8 Gen 3 处理器规格曝光