• 《现代电子技术》2007年第4期摘录:

如发现有乱码, 请直接从这里浏览原文
正文摘录:

2007年第4期总第24312R滤波器直接Ⅱ型的C语言优化实现刘峰(西安石油大学电子工程学院陕西西安710065)型元摘要:随着应用系统复杂性的增长以及对可移植性要求的提高,采用C语言进行程序开发是一个较好的选择。分析了实现直接Ⅱ型I。R数字滤波器的算法,指出他的主要计算量在于卷积和移位,采用循环缓冲区来减少移位操作是降低计算量的关键。提出一种使用一维数组和循环移位标志实现循环缓冲区的方法,其特点是以移位标志为新数组的起点,用循环变量对数组长度求模运算来确定循环移位后新的地址,并给出了实现的C源代码。关键词:直接Ⅱ型I。R滤波器;循环缓冲区;C语言优化实现;移位中图分类号:TP31l文献标识码:B文章编号:1004—373X(2007)04—009—02C—basedDirectFormⅡOptimalImplementationof12RFilterI.IUFengAbstract:TheC—basedprogrammingisabetterchoicethantheassembler,becauseofthemorecomplexsystemandtheaddingrequestforportability.Inthispaper,thealgorithmofdirectformⅡofI。Rfilterisintroducedfirstly,whosecomDuta—t。onalcomplexityconsistsofconvolutionanddatashift.Toreducethecomplexity,acircularbuffertechniqueisputforward,wh’chcons。s‘sofonlyanarrayandaflag'andwhosecircularshiftaddressingisimplementedbythecircularvariabletothemoduleofthelengthofthearray.Intheend,theCcodeoftheI。Rrealizationisoffered.Keywords:directformIII。Rfilter;circularbuffer;C—basedoptimalimplementation:shiftI引言使用汇编语言进行数字信号处理程序开发所得到的代码紧凑,执行速度快,但是其缺点是程序难于调试导致开发速度慢,而且移植性差。在工程实践中,开发周期越来越短,同时程序员往往会根据不同应用环境和客户的要求在几种不同的芯片上开发应用程序,因此常需要使用不同的汇编子程序而带来不便。目前,由于Ic技术的发展,芯片的性能得以提高,因此,使用具有良好可移植性的C语言开发一种通用的子程序可以加快开发进度,即使在速度上做一些小的牺牲也是可以接受的。在此背景下,本文研究直接Ⅱ型I。R数字滤波器的C语言优化实现的问题。在满足一定技术要求和幅频响应的情况下,可以将I。R滤波器设计成具有递归运算的环节,这样他的阶次比FIR滤波器低、所用存储单元少,同时只用少量系数就可以实现比较锐的截止频率,从而可以减少计算量,降低了对相应的DSP和单片机等系统的要求。在数据采集、控制、测试、信号处理等一些不要求线性相位的场合中得到了广泛的应用。收稿日期:2006—07—10基金项目:西安石油大学博士创新基金(2006—11)本文介绍了I。R滤波器直接Ⅱ型实现的算法,分析了使用数据循环缓冲区来减少移位操作,从而降低计算量的过程,提出一种使用一维数组和模运算实现循环缓冲区的方法,并给出了C语言实现的源代码。2IzR滤波器直接Ⅱ型的实现算法I。R数字滤波器结构的实现有4种形式,分别是:直接I型、直接Ⅱ型、串联结构和并联结构,其中最常用的是直接Ⅱ型和串联结构,本文主要研究直接Ⅱ型的实现。I。R数字滤波器一般采用如下递归形式的输入输出方程:y(”)一b。上(”)+blz(“一1)+…+bNx(”一N)一nly(“一1)一…一amy(”一N)(1)可以看出,I。R滤波器的输出不仅与现在的输入有关,还与过去的输出有关。如果假设所有初始条件为0,则式(1)的z变换为:盹)一罴一b。+b1Z--’+b2212+…+bNz“1+nlz11+a2r。+…+口~z~婴(2)D(z)~’在实际应用过程中,通常采用直接Ⅱ型的结构,因此,定义延迟变量U(z):

阅读此文(图):   在线翻阅