降采样FIR滤波器的设计与硬件实现

来源:luojiashao

作者:华仔

浏览:2051

时间:2016-08-10 14:18

标签:

摘要:

摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte

魏莉,林平分

(北京工业大学北京市嵌入式重点实验室,北京  100122)

0 引言

降采样数字滤波器可广泛应用于通信、声音和图像处理系统中。而当输入信号的带宽高于需处理的带宽时,对信号进行降采样处理可以大大减少数据量,提高数据率使实时处理容易实现。同时,为了克服在频域上的混叠,还需要先用低通滤波器过滤非处理带宽的信号能量,然后再降采样,以避免混叠。

本文以LTE无线通信系统为例,提出了一种完整的降采样FIR滤波器的设计和硬件实现方案。该方案在利用FDAtool得到滤波器系数之后再进行定点化,并将各系数拆分成2的幂次方相加减的形式,以便进行移位相加。对于降采样,该设计没有使用传统的先滤波后采样的方案,而是在滤波过程中渗入了采样操作。这样就大大减少了硬件资源的消耗,并可将乘法器的使用数目降低到零。

1 降采样滤波器的结构原理

降采样滤波器的典型结构如图1所示,包括抗混叠滤波器和降采样器。其中D为降采样率,k表示滤波器阶数。从图1可以看出,抗混叠滤波器的输出y(n)是对输入序列x(n)加权求和的结果,即:

降采样后的输出为:

直接降低采样率往往会使信号在频域上出现混叠,所以,一般需要预先通过一个低通滤波器抗混叠处理后再进行降采样,这个滤波器一般也称为抗混叠滤波器。图2所示是预滤波器的原理示意图。抗混叠滤波就是在满足一定分辨率和通信带宽的前提下,尽可能降低数据量,从而节约计算资源、节省存储空间,使实时处理容易实现。

2 降采样滤波器的设计与硬件实现

2.1 降采样滤波器的设计

利用matlab工具箱中自带的FDAtool可以确定滤波器的系数。首先根据系统要求确定滤波器的性能参数,比如在LTE系统中,数据传输带宽为10 MHz,其中用到一个降采样滤波器,将采样频率为61.44 MHz的信号降采样两倍后为30.72 MHz。本设计方法选择低通FIR等纹波滤波器。滤波器的阶数可以自己指定,也可以通过设置通带纹波摆幅和阻带衰减自行得到,一般通带纹波摆幅设为0.1dB,而阻带衰减设为60 dB。在满足这些性能指标的前提下,为了便于实现,滤波器的阶数设计为30阶,故有31个抽头。其设计出的低通滤波器如图3所示。

单击工具栏中的[b,a]图标,就可以得到滤波器的系数。

2.2 降采样滤波器的硬件实现

根据上述方案得到滤波器系数之后,再利用FDAtool所提供的量化功能,并根据该降采样滤波器前后模块的精度需求,可以选择量化精度为12,于是得到的滤波器定点化之后的系数如下:

[b0, b1, …, b30] =[-21, -8l, -58,77,173,9,-29l,-250,284,641,33,-109l,-990,1454,4938,6599,4938,1454,-990, -1091, 33, 64l, 284, -250, -291,9,173,77,-58,-81,-21],可见,该滤波器的系数是关于b15对称的,这一点也验证了FIR滤波器系数对称的特点。图4所示是本文初步设计的滤波器硬件架构。

为了进一步降低硬件复杂度,可将定点化的系数拆分成2的幂次方相加减的形式。以图3中设计出的系数为例:

[b0,b1,…,b15] = [-21,-8l,-58,77,173,9,-29l,-250, 284, 641, 33, -109l, -990,1454,4938,6599]

=[  -(16+4+1),

-(64+16+1),

-(64-8+2),

(64+16-4+1),

(256-64-16-4+1),

(8+1),

-(256+32+4-1),

-(256-8+2),

(256+32-4),

(512+128+1),

(32+1),

-(1024+64+4-1),

-(1024-32-2),

(2048-512-64-16-2),

(4096+1024-256+64+8+2),

(8192-2048+512-64+8-1)]. (3)

结合滤波器的阶数可知式(1)中的h(n)可以表示为:

h(n)=-21×[δ(n)+δ(n-30)]-8l×[δ(n-1)+δ(n-29)]-58×[δ(n-2)+δ(n-29)]+…+6599×δ(n-15).   (4)

于是,有:y(n)=-21×[x(n)+x(n-30)]-8l×[x(n-1)+x(n-29)]-58×[x(n-2)+x(n-29)]+…+6599×x(n-15). (5)

将以上各系数用(3)中的拆分结果替换,可将式(5)进一步写为:

y(n)=-(16+4+1) [x(n)+x(n-30)]-(64+16+1) [x(n-1)+x(n-29)]-(64-8+2) [x(n-2)+x(n-29)]+…+(8192-2048+512-64+8-1)·x(n-15).(6)

这样,输出y(n)可表示成输入移位相加减的形式。至此,抗混叠FIR滤波器便告设计完成。

由图2可知,抗混叠滤波器输出信号必须经过降采样才能输出。而对于本设计的滤波器,其降采样率为2:l,理论上把式(6)取出一半即可满足降采样要求,但是,这样就意味着之前浪费了一部分硬件资源去计算这一半不用的数据。基于此考虑,在设计滤波器时可加上一个降采样控制器,x(n)还是正常输入,每一拍进一个新的采样点,而滤波过程则用降采样控制器控制,这样可使计算每隔一拍进行一次。

3 仿真结果分析

3.1 滤波器的幅频响应

图5所示是在matlab中利用定点化之后的滤波器系数画出滤波器的幅频响应特性曲线。

该曲线与2.1中设计的滤波器幅频曲线基本一致,从而验证了本设计的正确性。

3.2 硬件代码的仿真波形

对于本文中设计的硬件架构,用Verilog语言写出相应的硬件实现代码,再用modelsim软件进行波形仿真,其仿真结果如图6所示。

由图6所示的仿真结果可见,在降采样控制器的控制下,输入滤波器的数据经过滤波器之后,其输出频率降低一半。

3.3 综合、布局和布线结果

上述设计可用QuartusⅡ9.O进行综合、布局和布线,选用stratixⅢ的器件EP3SL340F151713,所得到的硬件资源占用情况如图7所示。此时,该滤波器最高可以run到170.07 MHz,可以符合系统要求。

实际上,用OuartusⅡ9.0也可以对传统方法设计出的滤波器进行综合、布局布线,并选择同样的器件。因为,传统的设计只是利用了系数的对称特点,而没有对系数进行分解。由于是直接和输入相乘叠加,因此滤波器的硬件代码最高只能跑到59.51MHz。其硬件资源占用情况如图8所示。

比较图7和图8的报告结果可见,本文提出的设计方法在LUT资源的占有和滤波器最高工作频率方面都有明显的改进。从而解决了传统设计需要专门对滤波器输出信号进行2倍降采样而耗费硬件资源的问题。

4 结束语

本文通过基于matlab自带的工具来对降采样FIR数字滤波器进行原型设计,给出了硬件资源占用少且工作频率高的降采样滤波器的实现方案。该设计经过modelsim软件的功能仿真和QuartusⅡ软件进行综合、布局布线验证,其均可达到系统要求。

分享到:

降采样滤波器 matlab,降采样FIR滤波器的设计与硬件实现相关推荐

  1. Matlab滤波器的verilog实现,FIR滤波器的Verilog实现

    设计总结 FIR简介 用Verilog实现FIR需要注意的问题? 2.1 浮点数和定点数之间的转换 2.2 利用FilterDesigner设计FIR 2.3 Matlab仿真分析 2.4 补码问题 ...

  2. fir 低通 matlab,MATLAB常用的FIR滤波器设计方法之窗函数法

    FIR滤波器很多工科出身的人都不会陌生,在我们的学习和工作中,也常常需要设计FIR滤波器.因为FIR滤波器有两个特点:滤波器是稳定的以及具有线性相位.FIR滤波器在信号处理相关领域当然也包括本人所在的 ...

  3. matlab 滤波窗函数,FIR滤波器窗函数设计法详细步骤以及Matlab代码

    采用窗函数法设计理想低通,高通滤波器,参考北京交通大学陈后金主编的[数字信号处理]5.2节 窗函数法设计线性相位FIR数字滤波器P164,和P188. 设计步骤如下: 1) 确定滤波器类型,不同的FI ...

  4. matlab采样频谱,Matlab对采样数据进行频谱分析

    使用Matlab对采样数据进行频谱分析 1.采样数据导入Matlab 采样数据的导入至少有三种方法. 第一就是手动将数据整理成Matlab支持的格式,这种方法仅适用于数据量比较小的采样. 第二种方法是 ...

  5. python产生fir滤波器_Python中使用FIR滤波器firwin后信号的相移

    所以,在我最后两个问题之后,我来谈谈我的实际问题.也许有人在我的理论程序中发现了错误,或者我在编程上做了些错事.在 我使用scipy.signal(使用firwin函数)在Python中实现带通滤波器 ...

  6. matlab函数 无限冲激响应滤波器,MATLAB代码 有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器...

    MATLAB有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器设计 附MATLAB代码 摘要 文章设计了一个数字信号处理仿真实验,产生一个信号,其频率成分为f1和f2,并对其进行理想采样,采样 ...

  7. matlab凯塞窗设计,转载:用MATLAB设计FIR滤波器的方法解析

    介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...

  8. fir fpga 不同截止频率_用MATLAB设计FIR滤波器的方法

    用MATLAB设计FIR滤波器的方法 摘  要 介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计 ...

  9. FIR 滤波器四种结构形式的MATLAB 实现

    一.实验目的 1. 掌握FIR 滤波器的各种实现形式. 2. 了解FIR 滤波器的各种实现形式之间的转化. 3. 学会用MATLAB 工具实现FIR 滤波器 二.实验原理 FIR 滤波器的结构特点是没 ...

  10. matlab 设计出滤波器使用,用MATLAB设计FIR滤波器的方法解析

    介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法.FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的 ...

最新文章

  1. strcut结构体和char型数组的相互转化
  2. python入门练习题-Python入门36道经典练习题
  3. 我眼中的Linux设备树(六 memorychosen节点)
  4. 游戏AI之决策结构—行为树
  5. 卸载VMware Workstation出现错误: vmware-vmx.exe错误
  6. Java中Filter、Listener,拦截器的学习,listener、 filter、servlet 加载顺序及其详解
  7. LOOPS HDU - 3853(概率dp,期望)
  8. java占位符打印_什么是 Java 构造器?
  9. 微博中微服务缓存_新浪微博温情:基于微服务的微博直播互动架构设计经验分享...
  10. cad无法安装_CAD软件下载好了,为什么安装不上?有两个原因,解决方法在这
  11. 通达信V6.1分时数据文件格式分析
  12. 最成功的失败学——《创游记:游戏团队创业成长之路》
  13. 20145212罗天晨 后门原理与实践
  14. 【邢不行|量化小讲堂系列24-Python量化入门】股票自动程序化下单交易 | 视频教程
  15. ROS(七):移动机器人的导航和SLAM(一)
  16. shopee海外仓如何申请及 收 费 标 准
  17. 使用聊天机器人做客服工作是一种什么体验?
  18. Praat脚本-014 | 删除选择区域内的所有边界条
  19. Win10 宽带自动重连解决思路 针对宿舍网络波动
  20. 计算机与测控技术专业就业方向,测控专业就业方向及前景

热门文章

  1. 计算机软件著作权查看,计算机软件著作权查询方式有哪些
  2. 如何用优盘安装服务器操作系统,使用优盘安装服务器
  3. 俄数学天才破解庞加莱猜想拒领百万奖金
  4. 下划线与连字符(中划线)
  5. c++ 显示三维散点图_办公小技巧:三维展示 用好Excel矩阵图
  6. echarts柱形图x轴y轴互换_echarts X Y轴互换后显示问题
  7. 注册FaceBook和购买FaceBook小白号的区别
  8. 项目-V0.0.3-犯二的信号处理函数
  9. Android视频媒体播放器
  10. leecode.1758. 生成交替二进制字符串的最少操作数