0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA的横向FIR滤波器设计详解

FPGA之家 来源:YXQ 2019-07-08 08:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关于FIR滤波器的设计,大多数文献和资料都偏向于理论的介绍与阐述,使读者在学习完这类文献后只是明白了如何解决例题与习题,真正的动手设计FIR滤波器依然会觉得抽象很陌生,本文则是在理论的基础上详细阐述了如何基于Verilog HDL搭建的数字电路,来完成来完成FIR横向滤波器的设计。

横向FIR滤波器的设计

设经过AD采集得到的输入序列为x(n),其通过单位冲激响应为h(n)的因果FIR滤波器后,输出y(n)在时域可表示为线性卷积和的形式:

其中N-1为FIR滤波器阶数(也称抽头数),可以明显的看出h(n)是长度为抽头数加一的有限长序列,不失一般性的设抽头数为3的FIR单位冲激响应h(n)为,

依卷积和画出信号流程图如下,

我们必须明确这里的自变量n表示的并非是连续时间,而是第N次AD采样。

首先根据流程图所示,我们需要设计一个关于x(n)的移位电路,其RTL视图如下,

如图所示的x(n)的移位功能在Verilog中可以通过如下代码实现,注意clk是与数据同步的AD的采样率时钟(AD当前数据建立后,采用一个脉冲标志可实现)。

input clk;input signed[8:0] x_in;output reg signed [8:0] xn;output reg signed [8:0] xn_1;output reg signed [8:0] xn_2;output reg signed [8:0] xn_3;always@(posedge clk)	begin		xn   <= x_in;	//x(n)		xn_1 <= xn;	//x(n-1)		xn_2 <= xn_1;	//x(n-2)		xn_3 <= xn_2;	//x(n-3)	end

其次,为了设计方便,需要将浮点数转换为定点运算,注意,N位的数据完成N*N乘法后,其结果的长度为2N位,为了配合乘法运算,我们需要采用18位补码表示有符号数据(MSB为符号位),并对浮点数进行8位的量化处理(乘以256转换为定点数运算,运算结果除以256可得到相应的浮点数),那么上述的系统的冲激响应h(n)可表示为(这里不可避免的引入了量化误差),

对应的18位补码有符号十进制数为,

电路RTL视图如下,

如图所示的x(n)移位后对应的乘法功能在Verilog中可以通过如下代码实现。

input clk;input signed[8:0] x_in;output signed [17:0] mult0;output signed [17:0] mult1;output signed [17:0] mult2;output signed [17:0] mult3;reg signed [8:0] xn;reg signed [8:0] xn_1;reg signed [8:0] xn_2;reg signed [8:0] xn_3;always@(posedge clk)	begin		xn   <= x_in;		//x(n)		xn_1 <= xn;		//x(n-1)		xn_2 <= xn_1;		//x(n-2)		xn_3 <= xn_2;		//x(n-3)		endassign mult0 = xn * 18'd162;	//x(n)  *h(0)assign mult1 = xn_1 * 18'd134;	//x(n-1)*h(1)assign mult2 = xn_2 * 18'd218;	//x(n-2)*h(2)assign mult3 = xn_3 * 18'd262062;//x(n-3)*h(3)

最后,采用一级加法电路完成整个求卷积和的过程,需要注意的是,有符号的加法操作,需要对符合位进行保护,完成加法后数据的长度应设为2*N+log2(Tap+1)-1(其中Tap表示抽头数),则本文需要的加法寄存器的长度为为19位(2*9+log(4)-1),并且取其高11位作为y(n)输出(该操作等于除以256)其电路RTL视图如下,

该结构的总体Verilog代码如下。

module fir(	input clk,	input signed[8:0] x_in,	output signed [10:0] y_out);reg signed [8:0] xn;reg signed [8:0] xn_1;reg signed [8:0] xn_2;reg signed [8:0] xn_3;wire signed [17:0] mult0;wire signed [17:0] mult1;wire signed [17:0] mult2;wire signed [17:0] mult3;wire signed [18:0] adder0;always@(posedge clk)	begin		xn   <= x_in;		//x(n)		xn_1 <= xn;			//x(n-1)		xn_2 <= xn_1;		//x(n-2)		xn_3 <= xn_2;		//x(n-3)		endassign mult0 = xn * 18'd162;		//x(n)  *h(0)assign mult1 = xn_1 * 18'd134;	//x(n-1)*h(1)assign mult2 = xn_2 * 18'd218;	//x(n-2)*h(2)assign mult3 = xn_3 * 18'd262062;//x(n-3)*h(3)	assign adder0 = mult0 + mult1 + mult2 + mult3; //adder0(n)=x(n)*h(0)+x(n-1)*h(1)+x(n-2)*h(2)+x(n-3)*h(3)assign y_out = adder0[18:8];	//y(n)=adder0(n)/256endmodule

基于ModelSim求系统冲激响应与矩形脉冲响应

列写testbench如下,

`timescale 1ns/1ns`define ad_clk 20module fir_tb;	reg						clk;	reg signed[8:0] 		x_in;	wire signed [10:0] 	y_out;		fir fir(		.clk(clk),		.x_in(x_in),		.y_out(y_out)	);	initial clk = 1;	always#(`ad_clk/2) clk = ~clk;		initial		begin			x_in = 9'd0;			#(`ad_clk*20);			#3;			x_in = 9'd100;			#(`ad_clk);			x_in = 9'd0;			#(`ad_clk*20);			x_in = 9'd100;			#(`ad_clk);			x_in = 9'd100;			#(`ad_clk);			x_in = 9'd100;			#(`ad_clk);			x_in = 9'd100;			#(`ad_clk);			x_in = 9'd100;			#(`ad_clk);			x_in = 9'd0;			#(`ad_clk*20);				$stop;			endendmodule

仿真求得对应的响应为

显然,当输入为x(n)=100δ(n)时,输出为y(n)=100h(n)(存在着量化误差),输入为x(n)=100[u(n)-u(n-5)]时,输出y(n)=[63δ(n) 115δ(n-1) 200δ(n-2) 168δ(n-3) 168δ(n-4) 105δ(n-5) 53δ(n-6) -33δ(n-7)]。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22287

    浏览量

    630314
  • fir滤波器
    +关注

    关注

    1

    文章

    97

    浏览量

    19627

原文标题:基于FPGA的横向FIR滤波器设计详解——Bryan

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    信号处理:指数移动平均 (EMA) 滤波器

    作者: Mustahsin Zarif 之前我们在《信号处理简介》一文中已经见过了两类滤波器:有限脉冲响应 (FIR) 滤波器和无限脉冲响应 (IIR) 滤波器。我们看到了移动平均
    的头像 发表于 10-04 18:35 1552次阅读
    信号处理:指数移动平均 (EMA) <b class='flag-5'>滤波器</b>

    有源滤波器与无源滤波器的区别

    滤波器是根据电路参数对电路频带宽度的影响而设计出来的工程应用电路,滤波器种类很多,有源滤波器和无源滤波器的区别我们最简单的分别办法是看看是否需要电源,在作用上最大的区别在于有源
    的头像 发表于 06-18 09:03 1221次阅读

    GNSS 低噪声放大器前端模块,集成前滤波器和后滤波器 skyworksinc

    电子发烧友网为你提供()GNSS 低噪声放大器前端模块,集成前滤波器和后滤波器相关产品参数、数据手册,更有GNSS 低噪声放大器前端模块,集成前滤波器和后滤波器的引脚图、接线图、封装手
    发表于 06-06 18:34
    GNSS 低噪声放大器前端模块,集成前<b class='flag-5'>滤波器</b>和后<b class='flag-5'>滤波器</b> skyworksinc

    基于 FPGA 的任意波形发生+低通滤波器系统设计

    第一部分 设计概述 1.1 设计目的 本次设计包括基于FPGA的任意波形发生设计实现和基于FPGA的低通滤波器设计实现。 波形发生是一种
    发表于 05-07 15:34

    进群免费领FPGA学习资料!数字信号处理、傅里叶变换与FPGA开发等

    ~ 01、数字信号处理的FPGA实现 旨在讲解前端数字信号处理算法的高效实现。首先概述了当前的FPGA技术、器件以及用于设计最先进DSP系统的工具。阐述了计算机算法的概念、理论、FIR和IIR
    发表于 04-07 16:41

    深入解读智多晶FIR IP

    在数字信号处理领域,FIR 滤波器凭借其稳定性强、线性相位等优势,被广泛应用于各类信号处理场景。今天,就带大家深入解读西安智多晶微电子有限公司推出的FIR IP。
    的头像 发表于 03-20 17:08 939次阅读
    深入解读智多晶<b class='flag-5'>FIR</b> IP

    高带通TSIF集成滤波器

    低通滤波器 高通滤波器 带通滤波器 带阻滤波器 全通滤波器 滤波器类型 作用 频率特性 应用场景
    的头像 发表于 03-20 15:42 722次阅读
    高带通TSIF集成<b class='flag-5'>滤波器</b>

    基于FPGAFIR数字滤波器设计

    在现代通信信号处理领域中,随着各种精密计算和快速计算的发展对信号处理的实时性、快速性的要求越来越高。以往的模拟滤波器无法克服电压漂移、温度漂移和噪声等问题,从而带来了许多误差和不稳定因素。而数字滤波器具有稳定性高、精度高、设计灵活、实现方便等突出优点。
    的头像 发表于 03-06 12:31 1766次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>FIR</b>数字<b class='flag-5'>滤波器</b>设计

    在电源滤波器中,使用不同技术的滤波器有何性能差异

    电源滤波器分电容、电感、有源三类,各有优劣。电容滤波器结构简单成本低,但低频滤波效果差;电感滤波器低频效果好但体积大;有源滤波器
    的头像 发表于 02-17 10:49 819次阅读
    在电源<b class='flag-5'>滤波器</b>中,使用不同技术的<b class='flag-5'>滤波器</b>有何性能差异

    如何区分有源滤波器和无源滤波器,它们各自的应用场景是什么

    有源滤波器与无源滤波器的主要区别在于元件构成。无源滤波器主要由无源元件组成,如电阻、电容和电感,它们自身不具备放大信号的能力。而有源滤波器则在无源元件的基础上引入了有源器件,通常是放大
    的头像 发表于 02-08 11:45 1796次阅读
    如何区分有源<b class='flag-5'>滤波器</b>和无源<b class='flag-5'>滤波器</b>,它们各自的应用场景是什么

    算法操作案例分享丨有限冲激响应滤波器FIR)实验

    》、《电机控制系统设计》、《DSP系统设计与应用》向下滑动查看所有实验列表内容2►案例分享一、实验名称:4-2有限冲激响应滤波器FIR)算法(MATLAB辅助,
    的头像 发表于 02-08 09:43 1175次阅读
    算法操作案例分享丨有限冲激响应<b class='flag-5'>滤波器</b>(<b class='flag-5'>FIR</b>)实验

    电源滤波器滤波精度如何?

    电源滤波器滤波精度受频率响应、设计、元件选择、布局及测试影响,需综合考虑优化。合理选择和配置可降低电磁干扰,提高设备稳定性。期待更高效、可靠的滤波器产品。
    的头像 发表于 12-30 13:47 818次阅读
    电源<b class='flag-5'>滤波器</b>的<b class='flag-5'>滤波</b>精度如何?

    5G射频滤波器技术原理

    射频滤波器可分为表声波滤波器和体声波滤波器,其中表声波滤波器细分为SAW滤波器、TC-SAW、I.H.P-SAW(IncredibleHig
    的头像 发表于 12-26 15:34 1402次阅读
    5G射频<b class='flag-5'>滤波器</b>技术原理

    滤波器的一些常识

    滤波器简介:滤波器是一种用于信号处理的设备或系统,用于改变信号的频率特性,以实现信号的滤波、增强、去噪或降噪等功能。滤波器根据其工作方式可以分为数字
    的头像 发表于 12-18 17:05 1508次阅读
    <b class='flag-5'>滤波器</b>的一些常识