在如今数字技术中,半带滤波器因其通带阻带对称,系数具有偶对称性且滤波器阶数为奇数,有效系数少等特点广泛应用于通信、视频处理、语音识别等数字信号处理应用中,尤其常用于实现信号的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.
作者信息:
徐 鹏
【matlab|matlab 滤波器设计 coe_一种半带滤波器的低功耗实现方法】(电子科技大学 电子科学与工程学院,四川 成都610054)
推荐阅读
- python|Python学习笔记八之matplotlib绘制三维图
- Matlab学习|直流有刷电机转速、电流双闭环调速系统及Matlab/Simulink仿真分析
- #|电力系统的延时功率流 (CPF)的计算【 IEEE-14节点】(Matlab代码实现)
- 神经网络|卷积神经网络matlab工具包,matlab怎么搭建神经网络
- #|优化算法|MOAVOA(一种新的多目标人工秃鹰优化算法(Matlab代码实现))
- #|(Matlab)基于蝙蝠算法实现电力系统经济调度
- #|混合动力电动车优化调度与建模(发动机,电机,电池组等组件建模)(Matlab代码实现)
- 数学建模十大算法|数学建模十大算法01-蒙特卡洛算法(Monte Carlo)
- matlab|matlab sar adc建模,Simulink环境下的SAR ADC行为建模与仿真分析