在如今数字技术中,半带滤波器因其通带阻带对称,系数具有偶对称性且滤波器阶数为奇数,有效系数少等特点广泛应用于通信、视频处理、语音识别等数字信号处理应用中,尤其常用于实现信号的2倍抽取。对于一个阶数为N(N为偶数),长度为N+1的半带滤波器,传统的多相分解技术下实现2倍抽取功能的转置实现结构如图1所示。

首先,利用多相分解[1],滤波运算分为奇偶两个分支进行,输入数据经过2倍抽取后得到偶分支上的滤波输入;输入数据经过一个延迟单位进行2倍抽取后得到奇分支上的输入数据。偶分支上共有偶数个系数且系数对称。对于偶分支上数据乘以各系数的操作可以称为多常数乘法(Multiple Constant Multiplications,MCM),众所周知乘法器的硬件实现会消耗大量的资源,故可采用以移位相加代替偶分支滤波运算过程中的所有乘法操作以节省硬件资源。

一般的移位相加实现方法是对系数进行正则有符号数(Canonic Signed Digit,CSD)编码[2],以减少硬件资源开销,根据文献[1],基于CSD编码的方式比二进制编码方式平均减少33%的硬件开销。同时偶分支的滤波结构还可以采用混合形式,降低累加部分中加法器的开销[3]

不同于传统使用CSD编码的办法,本文采用的是利用以2r为基础数的算法(RADIX-2r)实现MCM操作。传统CSD编码的方法是对每个系数进行编码,每个系数的乘法是独立的,无法共享硬件资源。而RADIX-2r算法中,利用系数之间共享基本表达式以达到共享硬件资源的目的,必然比传统办法节省硬件资源。

1 所设计半带滤波器的参数

本文中所设计的两个半带滤波器分别为归一化频率下过渡带带宽为6/11、阻带衰减大于90 dB和过渡带带宽为1/11、阻带衰减大于90 dB。设计可通过MATLAB软件完成[4],具体实现代码如下所示:

h1=halfband(‘Type’,’Lowpass’,6/11,90);

Hb1=design(h1,’equiripple’);

h2=halfband(‘Type’,’Lowpass’,1/11,90);

Hb2=design(h2,’equiripple’);

由MATLAB软件仿真可得,宽过渡带半带滤波器阶数为18,窄过渡带半带滤波器阶数为118,要达到90 dB阻带衰减的技术指标,宽过渡带半带滤波器系数量化位数为17位,窄过渡带半带滤波器系数量化位数为21位。

系数量化后两个滤波器的幅频响应分别如图2、图3所示。如图所示,所得半带滤波器均满足阻带衰减大于90 dB的设计指标。量化后的宽过渡带半带滤波器的有效系数如表1所示,窄过渡带半带滤波器量化后的系数如表2所示。

从表1中可见,宽过渡带半带滤波器的有效系数只有11个,其中,多相分解下,奇分支上的有效系数只有h(9),其余全为偶分支上的有效系数且具有对称性。

同理从表2中得知,窄过渡带半带滤波器的有效系数为61个,奇分支上只有一个有效系数h(59),其余全为偶分支上的系数且具对称性。

2 高效实现方法

传统的CSD编码实现方式下是对每个有效系数进行CSD编码然后用移位相加操作完成乘法,将消耗大量的硬件资源。与使用CSD编码不同的是,本文提出了使用RADIX-2r算法实现偶分支滤波运算中的MCM,达到以更低功耗、更小面积实现半带滤波的目的。

2.1 RADIX-2r算法实现MCM

一个N-bit常数C在RADIX-2r算法中由式(1)表示:

MCM模块中,输入X将同时乘以拥有M个常数的常数集{C0,C0,…,CM-2,CM-1}。常数集中需要由MCM模块产生乘积的数只有正的奇数,因为偶数可以通过奇数进行左移操作获得,而负数可以通过正数取负获得,如常数积-132X可以通过常数积33X左移2位并取负获得,在MCM问题中只需实现33X即可,不需要用多余的加法器实现-132X。常数集中所需实现的正的奇数被称为基本数。根据文献[5]、[6]可知,相比于现有的研究,RADIX-2r算法是实现MCM模块最好的办法,在功耗、面积、速度上都具有显著的优势。

对于本文中半带滤波器Hb1的偶分支的实现,通过RADIX-2r算法可以得到其基本部分积为{1,3,5,7},需要实现的基本数集为{57,101,1 601,4 985,20 115}基本部分积的具体实现过程如下所示:

X1=X

X3=X1<<1+X1

X5=X1<<2+X1

X7=X1<<3-X1

基本数集的实现过程如下所示:

X57=X1<<6-X7

X101=X5+X3<<5

X1601=X1+X1<<6+X3<<9

X4985=X1<<12+X7<<7-X7

X20115=X3-X7<<4-X1<<8+X5<<12

同理对于半带滤波器Hb2,偶分支中的基本部分积与基本数集分别如下所示:

由于篇幅原因,半带滤波器Hb2基本部分积与基本数集的实现过程不在此列出。

2.2 寄存基本部分积以降低功耗

数字电路在工作时,主要的功耗来自于动态功耗,而动态功耗中大部分为数字单元基本门电路的开关行为导致。由文献[7]可知,拥有长路径的加法器将会导致更活跃的开关行为,这是因为由不同延迟路径引起的无用毛刺将沿着路径从MCM模块传播至后续的累加模块中。虽然这种毛刺不会产生任何电路上的逻辑错误,但数字电路中高达70%的开关活动是由这些毛刺造成,进而会造成比较大的功耗。

因而,有效降低功耗的方法即是减少电路中因延迟不同而产生的毛刺。根据前文所述使用RADIX-2r实现MCM模块的方法中,每一个基本数的实现都可以通过基本部分积之间的移位相加操作完成。本文所提出的另一降低功耗的方法是寄存MCM模块中产生的基本部分积的输出,通过使用边沿有效的寄存器可以有效地消除毛刺,因为寄存器只在确定的时钟边沿进行采值,阻断毛刺从MCM模块向累加部分的传播,进而减少电路的开关行为。同时因为基本部分积的数目总是远小于基本数的总数,所以相比于寄存基本数,寄存基本部分积不会带来太多的额外寄存器的开销。对于文中Hb1半带滤波器而言,即是寄存X1、X3、X5、X7四个数值。

2.3 所提出的半带滤波器实现结构

本文提出的Hb1半带滤波器的总体实现方法如图4所示,使用了表1中的系数。总体结构包含三个子部分,一是多相分解部分;二是利用RADIX-2r实现MCM部分,其中包括了对基本部分积的寄存;最后是滤波运算的累加部分,此部分中还采取奇支路和偶支路积共用寄存器的策略。因篇幅原因,Hb2的实现结构图不在此展出。

3 实验结果及分析

为了评测本文提出的应用于数字信号抽取下的半带滤波器的实现方法的性能,对于文中的半带滤波器Hb1、Hb2,分别用Verilog HDL硬件描述语言实现了传统的CSD编码结构、CSD编码下的混叠结构以及本文所提出的结构。在逻辑综合结果方面进行比较。

综合使用的软件为Synopsys公司的Design Compiler软件,使用的工艺库为TSMC 40 nm工艺,并设置滤波器的输入字长为16 bit。表3、表4分别展示了Hb1、Hb2不同方案所需要的硬件资源。

功耗分析使用的时钟频率为200 MHz,两个滤波器每个方案综合后的结果如表5、表6所示。

通过以上表中数据可知,文献[3]所提出的实现方法相较于CSD编码的实现方法不具有优势,仅在实现窄过渡带滤波器时降低了滤波器的面积,但提升效果也十分有限。而本文所提出的实现方法相对于传统CSD编码实现结构在功耗及面积表现上均有明显优势,对于宽过渡带半带滤波器,在本文的实现方法中,功耗下降了9.36%,面积下降了6.31%;对于窄过渡带半带滤波器,本文的实现方法使功耗降低了13.93%,面积降低了12.79%。

4 结论

本文针对应用于数字信号下变频技术中的半带滤波器,提出了一种低功耗的实现方法。利用MATLAB软件设计半带滤波器,并对新的实现方法进行了Modelsim仿真验证,最后由Design Complier 软件进行综合。结果表明,与传统的CSD编码实现方法相比较,本文提出的实现方法能有效地降低滤波器的功耗与面积,具有较高的实用价值,可广泛应用工程需求中的半带滤波器的实现。

参考文献

[1] 卜祥元,方金辉,范星宇,等.基于抽取滤波器多相分解的多速率采样模块设计[J].北京理工大学学报,2014(2):187-191.

[2] GOEL N,NANDI A.Design of FIR filter using FCSD representation[C].IEEE International Conference on Computational Intelligence and Communication Technology,2015:617-620.

[3] LOU X,MEHER P K,YU Y,et al.Novel structure for area-efficient implementation of FIR filters[J].IEEE Transactions on Circuits and Systems,2017,64:1212-1216.

[4] 杜勇.数字滤波器的MATLAB与FPGA实现[M].北京:电子工业出版社,2015.

[5] OUDJIDA A,LIACHA A,BAKIRI M,et al.Multiple constant multiplication algorithm for high-speed and low-power design[J].IEEE Transactions on Circuits and Systems,2016,63(2):176-180.

[6] LIACHA A,OUDJIDA A,FERGUENE F,et al.Design of high-speed,low-power,and area-efficient FIR filers[J].IET Circuits,Devices & Systems,2018,12(1):1-11.

[7] YE W B,YU Y J.Switching activity analysis and power estimation for multiple constant multiplier block of FIR filters[C].IEEE International Symposium of Circuits and Systems,2011:145-148.

作者信息:

徐 鹏

(电子科技大学 电子科学与工程学院,四川 成都610054)

matlab 滤波器设计 coe_一种半带滤波器的低功耗实现方法相关推荐

  1. 【FPGA】fir滤波器-半带滤波器

    文章目录 1. 半带滤波器的定义 2 半带滤波器的用法示例 1. 半带滤波器的定义     半带滤波器是一种特殊的FIR滤波器,其阶数只能为偶数,长度为奇数(N阶滤波器,N+1个抽头).滤波器系数除了 ...

  2. 抽取_内插_半带滤波器_多相滤波器

    文章目录 半带滤波器 多相抽取滤波器 多相内插滤波器 半带抽取器和半带内插器 参考资料:Xilinx FIR Compiler v7.2 LogiCORE IP Product Guide PG149 ...

  3. 如何利用CIC滤波器、CIC补偿滤波器和半带滤波器设计一个高频数字抽取滤波器

    设计了采样频率为640 MHz.过采样率为64的高频数字抽取滤波器.该数字抽取滤波器由CIC(Cascaded Integrator Comb)滤波器(降16倍).CIC补偿滤波器(降2倍)和半带滤波 ...

  4. 【HB filter】基于FPGA的半带滤波器(HB) 的设计

    1.软件版本 Quartusii12.1 2.本算法理论知识 HBF模块由半带滤波器(HBF)和抽取模块组成.该模块的任务是实现2倍抽取进一步降低信号采样速率.由于HBF的冲激响应h(k)除零点外其余 ...

  5. matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...

    用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...

  6. CICl滤波器(含补偿滤波器)半带滤波器 ——数字滤波器

    一.数字滤波器原理: 数字抽取滤波器是ΣΔADC(ΣΔAnolog-to-Digital Converter)的重要组成部为分,旨在从高速.低分辨率的调制信号中重构出高分辨率.奈奎斯特频率的信号.为节 ...

  7. matlab线性相位滤波器设计,关于第二类线性相位滤波器问题分析

    线性相位滤波器是移动相位与频率成比例的滤波器,因此不改变波形而引入一常数延迟.线性相位滤波器是一个混合相位的滤波器,它按照与频率成正比地对频率分量作时移.因而在通常频带内相位移与频率的关系图是线性的, ...

  8. matlab 公式化简bessel,在matlab里设计使用Bessel Filter(贝塞尔滤波器)进行数据降噪的简单例子...

    作为一个土木工程系的研究生,现在大家做数据处理也用得越来越多了,自己接触的东西也多.作为土木工程师,很大部分时间其实并不想弄清楚滤波器的原理,只是希望拿来用,拿来把自己采集到的数据降噪一下,拿来做个傅 ...

  9. 在matlab里设计使用Bessel Filter(贝塞尔滤波器)进行数据降噪的简单例子

    作为一个土木工程系的研究生,现在大家做数据处理也用得越来越多了,自己接触的东西也多.作为土木工程师,很大部分时间其实并不想弄清楚滤波器的原理,只是希望拿来用,拿来把自己采集到的数据降噪一下,拿来做个傅 ...

最新文章

  1. poj2420A Star not a Tree?(模拟退火)
  2. 深度学习必备---用Keras和直方图均衡化---数据增强
  3. 中国科学7月微生物组专刊:赵立平、秦楠、东秀珠领衔
  4. Ansible自动化运维工具介绍
  5. Angular 学习笔记——service constant
  6. java zmq订阅_从ZMQ PUB套接字获取订户过滤器
  7. java aes 工具类_Java AES加密算法工具类
  8. 算法熟记-排序系列-堆排序
  9. 精美的导航引导页html源码
  10. 即时通讯安全问题大曝光
  11. [object%20HTMLInputElement] 是什么意思?
  12. 【渝粤教育】电大中专工程图学基础_1作业 题库
  13. HCIE-Security心得
  14. pthread_join()详解及实验
  15. 【Python】fastapi框架之Web部署机器学习模型
  16. 2013 EE 排名
  17. springcloud @ComponentScan 多模块 扫描其他模块
  18. tp5使用RabbitMQ的使用记录
  19. 原神服务器不稳定,原神天空岛和世界树服务器哪个好
  20. 使用WP-Salts-Update-CLI自动更新您的WordPress盐

热门文章

  1. 18年高考云南628分想学计算机,2018山东高考投档线公布!山大文624理628…快查查你学校多少分进档...
  2. 如何卸载MySQL8.0.11_win10安装mysql8.0.11卸载5.7
  3. 计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...
  4. mysqldb mysql config,安装mysqldb python界面时找不到mysql_config
  5. php 日志按天截取,Laravel 日志管理:按日期切割日志
  6. android mysql实现登录注册_android简单登陆和注册功能实现+SQLite数据库学习
  7. c++ dicom图像切割_【高训智造】原创专业课堂第225期--定位滑座的线切割加工
  8. 计算机一级试题论述,计算机一级考试理论题及答案要点
  9. eview面板数据之混合回归模型_【视频教程】Eviews系列25|面板数据回归分析之Hausman检验及本章常见问题解答...
  10. HttpServletResponse应用 的 简单介绍