成都航空职业技术学院学报 Journal of Chengdu Aeronautic Polytechnic 2017年6月第2期(总第111期) Vo1.33 No.2(Scrim No.111)2017 基于VHDL的单精度浮点FIR滤波器的实现 顾菘 。郑晓霞 (1.成都航空职业技术学院,成都610100; 2.四川省高校校企联合“航空电子技术”应用技术创新基地,成都610100) 摘要:FIR滤波器以其良好的线性性能被广泛应用,它属于数字信号处理的基本模块之一。基于FP. GA的FIR滤波器兼顾了实时性、灵活性和可靠性,是嵌入式系统中常用的FIR滤波器实现方法。本文的数 据结构采用国际通用的IEEE754单精度浮点数,其计算精度能够满足一般系统的设计要求;而且本文的FIR 滤波器实现方法在运算速度和硬件资源上做了较好地权衡,降低了算法对硬件的依赖性,使得本方法可以作 为一个通用模块直接嵌入在系统中。 关键词:VHDL单精度浮点 FIR滤波器 中图分类号:TN23.5 文献标识码:B 文章编号:1671—4024(2017)06—0050—03 Implementation of FIR Filter of Single—Precision Floating Point Based on VHDL GU Song ,_.ZHENG Xiaoxia , (Chengdu Aeronautic Polytechnic,Chengdu 610100,China) Abstract FIR iflter,which has a wide range of applications because of its good linearly performance,belongs to one of basic modules in digital signal processing.FPGA based FIR fihercombines real—time performance,flexibility and reli- ability.and it is a common solution of FIR filter in the embedded system.The IEEE754 single—precision floating—point numbers are adopted in the data structure of this paper,and the computation accuracy can meet the requirements in the general embedded system desinigng.Moreover,the good balance between computing speed and hardware resource require— ment has been done in the solution of FIR fiher explained in this paper SO as to reduce the solution’S dependency on the hardware and the approach proposed in this paper Can be directly embedded in any systems as a common module. Key Words VHDL,single—precision floating point,FIR filter 1 引言 成乘法的功能,它所占用的资源在硬件规模上达到 了最省,但所需要的计算时间较长;分布式乘法将固 定系数的乘累加运算转化为查表操作,它与上述两 在现代电子系统中,FIR数字滤波器因其良好 的线性性能被广泛应用在数字通信、图像处理等各 个领域n ]。随着FIR滤波器阶数的增加,其计算的 复杂度随之增加,实现的难度也同时加大。目前基 于DSP的实现方式在并行计算方面还不能很好地 满足实时运算的要求;而基于FPGA芯片的实现方 法,由于其高可靠性、高速与实时性的优势,在一定 程度上克服了DSP的缺点 J。 种方法比较,在硬件规模和运算速度上进行了综合 考虑,但运算速度和精度与表的规模直接相关。 本文将采用IEEE754单精度浮点数运算标准, 利用VHDL语言实现16阶FIR滤波器的运算。由 于本文采用了32位单精度浮点数运算,其精度基本 满足一般FIR滤波器的设计要求;同时,本方法不需 要采用IP核,可以在任意FPGA或CPLD芯片上即 在对FIR滤波器的设计过程中,乘法器的设计 是关键。目前FIR滤波器中所涉及到的乘法算法 可运行,提高了算法的通用性,节约开发成本;并且, 由于本方法中的乘法器直接采用了浮点乘法运算, 省略了分布式算法中对表的建立过程,提高了系数 的灵活性。 有:并行乘法、位串行乘法和分布式乘法 5]。其中, 并行乘法虽然运算速度快,但占用资源极大,特别是 在滤波器阶数较高时;位串行乘法是利用加法器完 收稿日期:2017—03—17 基金项目:本文受成都航空职业技术学院2016年应用科研项目“基于Krylov子空间的智能文字与符号识别技术的研究”(编号:061640Y) 的支持。 作者简介:顾菘(1977一・),男,江苏南京人,工学博士,工程师,研究方向为信号处理。 50・ 基于VHDI 的单精度浮点HR滤波器的实现 2单精度浮点数 本文采用IEEE754标准 进行数据的存储和计 算 IEEE二进制浮点数算术标准是2O世纪80年 代以来最广泛使用的浮点数运算标准,为许多CPU 与浮点运算器所采用。标准中规定了单精度浮点数 的表示方法,如 1所示。其中最高位表示为符号 位(sign),然后接着的8位为指数位(exponent),最后 的23位为分数他(fraction)。 圈2乘法器仿真结果 2.2加法运算 不同于乘法运算,在进行加法运算前,需要判断 两个数的指数位是否相同。如果不同,需要将两个 l23.d 0 l0(j(1ol l 1 ll ll il。oi ∞lil】olI 】 数的指数化进行匹配。只有当两个数的指数位卡H同 时,它们的分数位才能进行相加,从而实现加法运 算 图1 单精度浮点数表示方法 从表示办法中可以看出,单精度浮点数的实际 值汁算公式为 ,1 图3为本文所设汁的加法器仿真结果。其中 add en为复位信号,在此信号为高电平时实现加法 运算。A为JJ【1数,B为被加数,两数卡fj加后的结果保 存在c巾 、假设 A=(一0.0077039995)_it =(0xbbf ̄ 71d5)IEEE754, valise=(一1) 2 ………………………“一 (1+∑b(23一 )2一 ) fI ………………………(1) 其中b.表示二进制的分数位中第i位的数值, '1 1+∑b ,2 计算所得到的十进值称为尾数(man— ㈨A B C B=(一0.00014298236)【lI =(Oxb915ed89)TEE 54, t&wz,以下用Ⅲ 表示)。 2.1 乘法运算 则两数之和C=(一0.00784698186) = (O:d)cOO9OaO) 。由于此加法器完全由逻辑电路 Itt IEEE754标准可知,单精度浮点数的值可以 表示为指数部分和尾数部分,冈此在进行乘法运算 时 要分别对它ff】进行计算,同时还需要对符号位 进行判别。由f乘法具有关联属性,因此町以很容 易地得出 = X b=2。。 ¨ 挖 XⅢ ×m ………・・ (2) 构成,因此它能够在一个时钟周期内完成。 ad({en A B 其rf1 、P 和]m m 分别表示数a和数b的指 数和尾数。根据公式(2)可得,单精度浮点的乘法叮 以被简化为两个数的指数部分加法运算和尾数部分 的乘法运算。对于符号位的运算,由IEEE754的定 义nJ-知,只要将i姒j数的符号位进行异或就可以得到。 在尾数部分,为r减少运算时问,由于IEEE754中尾 图3加法器仿真结果 3 FIR滤波器的设计 3.1 没汁方案 本文将以l6阶FIR滤波器为例,分析其设计过 程。根据乘法器和加法器的级联方式的不同,本文 有两个设计力 案,分别是并行乘法器和串行乘法器。 本没汁的原理图如图4所示 【nj 数的位数是一敛的,因此可以将乘法运算转换成并 行l』Jf1法运算,从而使其在一个周期内完成。如果乘 法运算后得到的尾数有溢出,则需要将相应指数位 JJ『I 1 、 I殳】2为本文所设计的乘法器仿真结果 其巾 Hu-l en为复位信号,在此信 为高电平时实现乘法 图4 HR滤波器原理框图 l,㈧ 运算 A为乘数,B为被乘数.乘积结果保存 C q1。似没 A=(一0.007753903)f{P =(0xbb ̄1474)I 盯54, 1.并行乘法器 并行乘法器是有FIR滤波器的一种直接型实 现。冈为输入 [n]是相互的,所以乘法器可以 同时并行运算。这种设计的优点为处理时间短,但 B=(0.9935641) =(0x3fTe5a38)IEE 54,贝0积 C=(一0.0077039995)f{ =(0xbbfc71(t5)lEF} 54。 特别地,随着滤波器阶数的增加,乘法器个数将变 大,硬件资源将变得十分庞大,大大提高产品成本。 2.串行乘法器 串行乘法器由于在执行乘法运算时有先后顺 ・ 由r此乘法器完令由逻辑电路构成,因此它能够在 一个时钟周期【人J完成。 51 ・ 基于VH1)I 的单精度浮点FIR滤波器的实珊 序,因此乘法器只可以分步串行运算。这种设汁的 h = f 0.0.000324302144023678, 一O0775390312026388.0.00607212109725373.0. 0. 优点是极大减少硬件成本,但f扫于乘法器要按顺序 依次进行运算,因此处理时问较长。 0335947407335428.一0.053472498 1 5444.01.一0. 065444.9076 l 56354.580000000000000,0. 296575260497437.一0. 0. 由f JJu法器和乘法器都使用了较多的硬件资 源,而FIR滤波器中通常需要多个乘法和加法的运 算计算,如果将这些乘法并行运算需要相当大的硬 件资源,造成硬件成本会大幅提高。通过 个厅案 的比较,从资源方而进行考虑,上I童终选择 弘行乘法 0. 296575260497437, 0654449076156354. 一0.0534724981344401.0. 一0. 0335947407335428.0.006072 1 2 l 09725373 00775390312026388,0.(XX)32430214023678,0; .迎 器 3.2四则运算器的实现 从数学『fJ度来看,一 个16阶FIR滤波器其实质 就是完成肜 公式(3)的 则运算,其中X和h为两 个l7维的向 。本文采刖了状态机的 式实现此 q则运算 I6 ,。( ,h)=∑xlh …………………………(3)f=0 小c:=}汁 分为5个状念,女fJ表l所示,. start状态lJ、j ,系统㈨时渎取x和h rt,的一个数,并没 结 粜寄仃器仉为0;进入mul状念后,汁 乘法绱果;接着进入add状态,将此结 flf[与结果奇仔器值进 "相加; slo!-e状态时将卡H JJf1的结果保存n 结果寄 仔器『l}|;并泼取下一个数,进入mul状态,如此循环 直到运算完成,并输出iobdone信号,状态机转换如 图5所永 表l 四则运算的状态机 #t& 、 mtIi 、、\ ~ m 、锄 、?st ore jiI卜 一 。o bOonie 《、f一 1 ≥÷dd 、\ / ~一一~ 一图5四则运算器状态转换图 4仿真结果 小文采J1 J M )delsin 进行仿真,验 算法的町行 文将进行两个实验, 一个实验,帧拟输入向 砒x干¨h,根据汁算结果验 『Ju则运算器的ll 确性; 第二二个实验,卡I!拟输入采样 ,并对信 进行FIR 滤波,通过汁t 结果验 FlR滤波器的 } 确 t:- 4.1 四则运算器的仿真 假设输入 个17维的阳 分别为x=[1,一0. 4408924,0.9935641,1.2l3844,0.1890097,1.951056. 0.03850375,0.7907706,0.4343502,一1.057707.0. 4】22148,一1.653345,一0.6732703,一0.6732703.一 1.653345,0.4122148,一1.057707], 过公式(3)计算 得【I 确输出结 0.1245 迎 过仿真结果可以得知,输ⅢY为(Ox3dfet9da)㈣ = (0.12449999) 结 敛。仿真结 ¨冬I 6所,J:.j【 中汁算一次l6阶四则运算共耗时59个时t钟周期 图6四则运算仿真结果 4.2 HR滤波器的仿真 模拟信号输入并埘输入信 进 果样,共采样 134个点,其滤波后的输出结果 M 1tlat,结果一敛, 共耗时7965个时钟周jjtj。 5结论 水文所有汁锋过程巾的数据录川32位 精瞍 浮点数进行表示,其汁 精度完 满足 般¨R滤 波器的没计婪求, 术来的没计I『l,【1j‘以 接将水力 法嵌入任系统中 外,在设¨ 过 Il1,木文通过刈 运 速度和硬什资源的综合考虑, 现r埔=.r VHI)I 的单精度浮点数FIR滤波器的没汁,通过仍 真实验呵知,其汁苒结 完伞fr确, 参考文献: [1 J MEHER 1’K.Nt w a1)t)roll(-}l“,Il¨Ik一【Jl,一tat)IP fItHgn all(I Illelno1)一}) Pd realization of Fill digital 1ilI ̄-r!J .Cir ̄・uits& S|PIIIS I Regular Pa1 I1:EE rrransaclions 011.2010,57(3):592 603. f2]刘光远,・'D J1]川冬l像处 的递lJf尢偏FIR滤波 』Jj.科技创新导报,2016(28):88—91. I3l戈0偈泉. f r :A的FIR数 滤波 实 _I)]北 京:北京邮电大学.2012. [4 E志超. J FPGA的高速川{滤波 设计 j实 f 1)1._IA尔滨:哈尔滨 11-人学,2013. [5]刘朋全.基于FPGA的FIR数 滤波器的设汁和 现 fI)J.阿北_L业大学:阿北I 业大学,2006. [6]IEEE Standard fol,Binary Floating—Poinl Aritluneti IEEI : Ntd.754—2008,PP.1—58.2008. (责任编辑唐斌)