当前位置:首页 > 公众号精选 > 全栈芯片工程师
[导读]基于FPGAIIR数字滤波器的设计IIR(InfiniteImpulseResponse)无线脉冲响应滤波器。系统传递函数为:系统的差分方程可写为:IIR优缺点:1)在相同的幅频条件下,滤波器阶数比FIR滤波器低。2)IIR滤波器占用的硬件资源比较少(相比FIR滤波器)。3)不具...

基于FPGA IIR数字滤波器的设计

IIR(Infinite Impulse Response)无线脉冲响应滤波器。
系统传递函数为:



系统的差分方程可写为:



IIR优缺点:
1)在相同的幅频条件下,滤波器阶数比FIR滤波器低。
2)IIR滤波器占用的硬件资源比较少(相比FIR滤波器)。
3)不具备严格的线性相位特性。


1 IIR数字滤波器的基本结构及类型


图1 直接I型


图2 直接II型


图3 级联型


图4 并联型

2 设计目标

采用matlab buffer函数设计一个IIR滤波器低通滤波器,通带截止频率为1khz,输入信号为1khz 3khz sin波形,经过IIR滤波器后输出为1KHZ sin波,其他不做要求。(本文只对IIR设计思想进行验证不做性能要求)。


3 matlab的设计验证

Matlab源码:


%参数定义


FS =44100; %Sample rate Frequncy
fc = 1000; %1khz
fe = 3000; %外部输入信号 3khz
N = 1024;
Q =16;
%波形产生


sin_osc =sin(t*fc);
sin_e =sin(t*fe);
sin_add = sin_osc sin_e;
%IIR 滤波器系数(低通滤波器)


[b a] = butter(3,fc/(FS/2),'low');

%滤波(混频后)
y = filter(b,a,sin_add);

f_osc =fft(sin_osc,N);
f_osc=20*log(abs(f_osc))/log(10); %换算成dBW单位
ft=[0:(FS/N):FS/2]; %转换横坐标以Hz为单位
f_osc=f_osc(1:length(ft));
%滤波器系数量化


Mab =max(max(abs(a),abs(b)));
%16bit 量化
Qb = round((b/Mab)*(2^(Q-1)-1));
Qa = round((a/Mab)*(2^(Q-1)-1));
%%%%
Qm =floor(log2(Mab/a(1)));
if Qm<log2(Mab/a(1))
Qm = Qm 1;
end
Qm = 2^Qm;
Qb1=round(b/Qm*(2^(Q-1)-1));
Qa1=round(a/Qm*(2^(Q-1)-1));
%绘图
%时域波形图


figure(1),
hold on
subplot(221),plot(t(1:128),sin_osc(1:128),'-');
legend('sin 1khz');title('sin 1khz');
subplot(222),plot(t(1:128),sin_e(1:128),'-');
legend('sin 3khz');title('sin 3khz');
subplot(223),plot(t(1:128),sin_add(1:128),'-');
legend('sin 1khz add 3khz');title('sin 1khz add 3khz');
subplot(224),plot(t(1:128),y(1:128),'-');
legend('LPF 结果');title('LPF 结果');
grid;
hold off
%频域波形


figure(2),
hold on
subplot(221);plot(ft,f_osc);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图 2KHZ','fontsize',8);legend('sinosc');
subplot(222);plot(ft,f_e);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图3KHZ','fontsize',8);legend('sine');
subplot(223);plot(ft,f_add);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图2KHZ 和 3KHZ','fontsize',8);legend('sin add');
subplot(224);plot(ft,y_f);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图滤波后','fontsize',8);legend('LPF结果');
hold off
%幅频响应


figure(3);
subplot(211);stem(Fb);
title('Fb单位抽样响应','fontsize',8);
subplot(212);plot(f,mag);
xlabel('频率(Hz)','fontsize',8);
ylabel('幅度(dB)','fontsize',8);
title('freqz()幅频响应','fontsize',8);


图5 matlab时域波形如图5所示,(5,1)波形加(5,2)波形得到(5,3)波形,经过IIR滤波器后得到(5,4)时域波形。



图6 matlab频域分析如图6所示,(6,3)与(6,4)相比3khz大概被削弱25DB左右。



图7 IIR幅频响应分析


如图7所示,通过幅频响应(7,2)可知3khz所在位置大概被削弱25DB。


4 FPGA设计验证

FPGA IIR.v设计源码:


`timescale 1ps/1ps
module iir(
input mclk,//45.1584MHZ
input reset_n,
input signed[31:0] pcm_in,
output signed[31:0] pcm_out
);

localparam LAST_CYCLE = 1023;
reg [9:0] i;

wire signed [15:0] b1,b2,b3,b4;
wire signed [15:0] a2,a3,a4;

wire signed [31:0] xn;
reg signed [31:0] xn1,xn2,xn3;
reg signed [31:0] yn,yn1,yn2,yn3;
reg signed [47:0] r_x1;
reg signed [47:0] r_x2;
reg signed [47:0] r_y;
reg signed [47:0] r_s;
reg signed [47:0] r_s1;

//coffe b
assign b1 = 3;
assign b2 = 8;
assign b3 = 8;
assign b4 = 3;

//coffe a
assign a2 = -22243;
assign a3 = 20231;
assign a4 = -6159;

assign xn = pcm_in;
assign pcm_out = yn;


always @(posedge mclk or negedge reset_n) begin
if(reset_n == 1'b0) begin
i <= 0;
xn1 <= 0;
xn2 <= 0;
xn3 <= 0;

yn <= 0;
yn1 <= 0;
yn2 <= 0;
yn3 <= 0;

r_x1 <= 0;
r_x2 <= 0;
r_y <= 0;
r_s <= 0;
r_s1 <= 0;
end
else begin
i<= i 1;
if(i==1) begin
r_x1 <= b1*(xn xn3);
r_x2 <= b2*(xn1 xn2);//Zero(n)
r_y <= a2*yn1 a3*yn2 a4*yn3;//Pole(n)
$display("r_x1 = %d,r_x2 = %d,r_y = %d",r_x1,r_x2,r_y);
end
if(i==2) begin
r_s <= r_x1 r_x2 - r_y;//8192y(n) = Zero(n)-Pole(n)
$display("%d",r_s);
end
if(i==3) r_s1 <= (r_s>>13);
if(i==4) yn <= r_s1[31:0];
if(i==5) begin //pipeline
xn1 <= xn;
xn2 <= xn1;
xn3 <= xn2;

yn1 <= yn;
yn2 <= yn1;
yn3 <= yn2;
end
end
end
Endmodule


实验结果:
Modelsim波



图8 modelsim 时域波形由图8可知,pcm_out1(1khz 3khz)经过IIR滤波器后滤除了3khz,设计成功。
Matlab结果分析:


图9 FPGA输入波形matlab时域分析


图10 FPGA结果数据分析由图10的频域分析结果可知3khz大概被削弱25db左右,设计成功。


谢阅读,别走!点赞、关注、转发后再走吧






本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

电感是导线内通过交流电流时,在导线的内部及其周围产生交变磁通,导线的磁通量与生产此磁通的电流之比。电感器也叫电感线圈,是利用电磁感应原理制成的,由导线在绝缘管上单层或多层绕制而成的,导线彼此互相绝缘,而绝缘管可以是空心的...

关键字: 电感 磁通量 电感器

根据交通运输部水运科学研究院提出的智慧港口的概念,智慧港口是利用新一代信息技术,将港口相关业务和管理创新深度融合,使港口更加集约、高效、便捷、安全、绿色,创新港口发展模式,实现港口科学可持续发展。

关键字: 智慧港口 信息技术 业务

近年来,世界主要汽车大国纷纷加强新能源汽车战略谋划、强化政策支持、完善产业布局,新能源汽车已成为全球汽车产业转型发展的主要方向和促进世界经济持续增长的重要引擎。2021年,全国新能源汽车实现产量354.5万辆,销量352...

关键字: 新能源 汽车 引擎

2007-2021年,全球针状焦行业专利申请人数量及专利申请量总体呈现增长态势。虽然2021年全球针状焦行业专利申请人数量及专利申请量有所下降,但是这两大指标数量仍较多。整体来看,全球针状焦技术处于成长期。

关键字: 针状焦行业 专利申请人 增长态势

按企业主营业务类型分,我国智能家居行业竞争派系可分为传统家电企业、互联网企业以及其他企业三派。传统家电企业代表有海尔智家、美的集团、格力电器等,具有供应链和销售渠道,制造能力和品牌优势突出;互联网企业代表有小米集团、百度...

关键字: 智能家居 互联网企业 供应链

军工电子是集红外技术、激光技术、半导体及嵌入式技术与虚拟仿真技术为一体的综合性军工技术体系,是国防信息化建设的基石。军工电子行业包含在军工行业内,专注于军工行业电子产品布局。根据其军工产品的不同可分为卫星导航、通信指挥、...

关键字: 军工电子 嵌入式技术 信息化建设

我国汽车零配件行业细分种类众多,从汽车零配件主要产品来看,发动机系统行业内有潍柴动力、华域汽车等主要从业企业;在车身零部件领域内,福耀玻璃、中策橡胶具有一定的规模优势;行驶系统领域内有中策橡胶提供的轮胎以及华为等企业提供...

关键字: 汽车零配件 发动机 行驶系统

茶饮料是指以茶叶或茶叶的水提取液、浓缩液、茶粉(包括速溶茶粉、研磨茶粉)或直接以茶的鲜叶为原料添加或不添加食品原辅料和(或)食品添加剂,经加工制成的液体饮料。根据国家标准《茶饮料(GB/T 21733-2008)》的规定...

关键字: 茶饮料 茶叶的水 食品添加剂

全球液压行业专利技术在21世纪初得到初步发展,这一时期液压专利申请人数量和申请量处于较低水平。2011-2012年,液压行业专利技术的发展总体处于成长期,2012年以后中全球液压行业专利技术申请量或申请人数量整体处于波动...

关键字: 液压行业 专利授权 技术类型

从上市企业的总市值情况来看,2022年7月28日,中芯国际、紫光国微和韦尔股份总市值遥遥领先,中芯国际总市值达到3238.21亿元,紫光国微总市值达到1358.77亿元,韦尔股份总市值达到1277.07亿元;其次是兆易创...

关键字: 上市企业 集成电路 行业

全栈芯片工程师

60 篇文章

关注

发布文章

编辑精选

技术子站

关闭