随着数字信号处理的发展,数字滤波器比传统的模拟滤波器在设计的选择中更有吸引力。因为数字系统的信号是数字量,他相对于模拟滤波器更容易进行滤波代数运算。而且,数字滤波器没有模拟滤波器随时间、温度、电压漂移的优点。他能很容易地实现过滤低频信号的设计目的。还有,数字滤波器能实现近似的理想响应和线性的相位。
2 几种数字滤波器算法
有许多好的方法确定滤波器的算法。首先,设计人员估计要设计的滤波器的性能,由传递函数实现。连续时间域的传递函数变换成离散时间域的线性差分方程,这个差分方程在Z域的通式如下:
这是冲激传递函数方程。他实际是连续时间域的滤波器的单位冲激响应在Z域的变换式。相反,滤波器的冲激响应是Z域的单位冲激函数的反变换。系数an和bn决定数字滤波器的响应。改变系数就能改变滤波器的响应。Z一n和Z一m项表示分支的延迟或锁存。G(Z)方程表示对输入信号进行代数运算。输入信号与do相乘加上采样值与dl的乘积再加上采样值与d:的乘积,如此类推。当所有N项完成乘积与累加运算,则就计算出了输出值。同时,输出值被锁存,分别与b0,b1,b2,…,bm系数相乘,然后把乘积累加起来,再与原输出的累加值相加得出最终的输出值。这个过程称作回旋。一个输出值由每个输入值计算而得。
设定滤波器的系数是设计滤波器的关键,因为他能设计出预计的频率响应。递归数字滤波器或无限冲激响应滤波器(Infinite Impactive Reaction,IIR)是设计研究方法和模拟滤波器最相近似的典型数字滤波器。
一种确定系数的方法是先确定一个能在连续时间域实现Chebyshev,Butterworth或等纹波的滤波器,然后用Z变换把连续时间域的传递函数转化为离散时间域的传递函数,这样滤波器系数就可确定。
第二个常用方法是使用双边变换。这个方法的步骤是工程师先设计一个模拟滤波器,这是为了将来转变数字滤波器;设计的模拟滤波器满足要求的数字滤波器的性能指标;这个模拟滤波器经过5变量的拉普拉斯变换再经Z变量的Z变换就转换成了数字滤波器。
第三种方法称为Parks-McCcllean法。在这个方法中,带通滤波器和带阻滤波器的边缘和阶数是确定的。冲激响应系数被系统修改以便在每个近似的带通中获得一个等纹波性能。使用这种方法,滤波器在阶数方面不是很先进。因而需有一个捷径来确定滤波器的阶数,且这个捷径能减少通过使用方程来确定一个满足性能指标的阶数。 有限冲激响应滤波器和无限冲激响应滤波器都有各自的优点和缺点。有限冲激响应滤波器的性能稳定,因为他没有输出反馈量且冲激响应是有限的;他的幅度和相位是任意设定的。另一方面,有限冲激响应滤波器通常需要数量较多的分支抽头。因而,输出值需经大量的代数运算。他的设计方法与模拟滤波器的设计方法不相近似。无限冲激响应滤波器需要很少的系数,但要输出反馈使得电路变得复杂。如果由于数字运算误差不能选择适当的系数,稳定的无限冲激响应滤波器变得不稳定。 在设计数字滤波器中产生的4种主要误差,他们都是量化误差:
①输入信号的模数转换量化误差;
②系数的量化误差;
③由于数字运算,包括溢出产生的量化误差;
④有限循环量化误差。
有各种各样的计算机软件帮助工程师设计滤波器,如美国亚特兰大信号处理公司的设计软件DFDP。
3 利用可编程逻辑器件设计有限冲激响应滤波器
图1为利用可编程逻辑器件设计有限冲激响应滤波器的功能模块图。
为了有高的性能和较强的灵活性,在滤波器的设计中使用可编程逻辑器件。有限的参数将进行乘法/累加的运算,分支抽头将占用硬件大量的物理空间。电路设计使用一个工作速度为85ns的单口16b乘法/累加器,这个器件可工作在双数运算状态和饱和输出能力。由于器件的微码基础使得他很容易被可编程逻辑器件控制。
首先,系统必须把N(N=64)个采样值装入队列FIFO(在反馈发生之前),否则队列就装不满。计数器在20RAl0中正常工作。一个6b异步计数器使用4b。SMP-DN随时钟工作(模数转换器完成采样值转换),最高的2b作为纹波计数器。SMP_DN信号由20RAl0产生,但由模数转换器触发。
当计数器的计数值为63时,样本值已被保存在移位/保持寄存器中;GO信号变为真,系统开始滤波算法运算。系统与2个异步的子系统相联(模数转换器、乘法/累加器),两者之间必有一个异步接口。20RAl0用于产生接口信号SMP/CON(采样模式和转换模式)。这个引脚为高电平,系统为采样模式(SMP/CON=1)。当GO为真且模数转换器的时钟为下降沿时,则SMP/CON为低电平(与MCLK异步,与SCLK同步)。因为SMP/CON信号作为状态机的输入,器件可能遇到抖动输入。Lattice公司的可编程逻辑器件有很高的工作速度,他的去抖动输入能力较强。由于去抖动技术的应用,使得数据丢失的状态的概率变得很小。因而状态机不得不等待,至多等一个MCLK周期再开始变换。当变换开始,把采样值装入乘法/累加器;然后,把系数装入乘法/累加器进行乘法累加运算,直到N个采样值都完成运算。这时输出有效,循环可重新开始。这个过程可用有8个状态的状态机来表示。
状态机根据代码状态的正确与否来控制乘法/累加器的状态变化。2个输出使能信号XOE和YOE-MCDN控制是否把数据装入乘法/累加器。CON_DN信号表示N个采样值已转换完成。为了使状态位(XOE,YOE_MCDN,CON_DN)产生输出,使用了状态变量(SEBIT)。如果状态变量为被使用,那是不允许有2个状态位被强行置为相同的状态。在设计中利用Lattice公司的可编程逻辑器件上电复位功能,在高电平后寄存器被置为0,精心设计的状态机处于开始状态。
除了重新开始置数阶段,每时每刻都产生SMP_DN信号(采样值进行模数转换)。当SHIT_IN信号置位时采样值从移位/保持寄存器移入队列。每当XOE置位时一个系数装入乘法/累加器。开始转换的第一个XOE信号在开始置数或采样模位式移人队列阶段一直保持到新的数据装入移位/保持寄存器。跟下来的XOE信号是YOE_MCDN信号(Y输出使能信号和乘法/累加器使能信号)。YOE_MCDN控制队列数据输出和数据装入移位/寄存器的并行操作。接着一个采样信号从队列中移出。这时下一个数据移人移位/保持寄存器的XOE已准备好了,系统如此循环。直到SMP/CON信号变为采样模式,新的采样值被移人移位/保持寄存器,循环又重新开始。SMP/CON信号输入到状态机,允许系统重新开始循环。这个控制信号由模式控制器产生。当转换结束时用TC来指示(终点计数值)。TC信号由6b系数计数器产生,当计数值为63时TC信号有效,他说明所有的64个采样值已完成运算。ORDY信号由队列产生。他告诉状态机队列中的采样值是有效的。状态机不断地把系数送入乘法/累加器直到ORDY信号为真。这时状态机将会转向下一个状态。如果乘法/累加器的循环时间不超过队列的使用时间,状态机认为这是输入状态ORDY信号将会一直为真。
改变乘法/累加器的指令只须简单地改变输出不同值的变量的代码。如果使用了E2CMOS器件,可方便地再编程和放回电路中。由Lattice公司出品的E2CMOS的22V10就是用于这种用途的可重复编程的器件。
双64BX8b的队列器件用于滤波器的分支抽头。队列装入N个采样值。这个采样值被移出队列移进乘法/累加器进行处理,同时这个采样值也保存在移位/保持寄存器中然后移回到队列中下一个被移人乘法/累加器进行处理的采样值的前面。在所有的N个采样值都被处理完,旧的采样值被移出队列,新的经模数转换的采样值被装入队列。这时乘法/累加器输出一个滤波器结果。可编程逻辑器件可作为数字滤波器与模数转换器的接口;数字滤波器的临时贮储器和队列的控制器。
移位/保持寄存器可由20V8实现。在采样模式(SMP/CON=1),器件的功能为移位寄存器。20V8在模数转换器的控制下串行输入数据,这时20V8处于保持模式,数据不会丢失。当系统进人转换模式(SMP/CON=0),数据立刻被并行置入移位/保持寄存器。 系数被保存在用可编程逻辑器件仿制成的ROM中。如果使用E2CMOS器件,滤波器的系数可很容易的改变只需重编可编程器件。地址计数器用于获得系数的正确次序。因为64抽头需要64个系数,64个系数只需6b地址。6b系数地址计数器可在22V10中完成。6b系数地址计数器是由计数使能信号控制的同步计数器。他的时钟与乘法/累加器的时钟信号同步。计数器的使能端与乘法/累加器的XOE相联。因而计数器只有在一个系数移入乘法/累加器时才计一次数。当计数值达到63时TC信号变为真,说明64个系数已运算完。复位端变为高电平,计数器又处于已知的开始状态。
剩下的4个逻辑微单元用于产生队列的控制信号,这些信号是异步的。信号由系统是否处于开始置数、采样、转换--包括移入、移出和移位/保持寄存器的时钟信号的产生的状态决定。当转换开始,状态机设置CONV_DN和MCLK信号,SMP/CON被MCLK信号同步置位。这些信号使得移位/保持寄存器的时钟信号CLKIN产生变化,寄存器在模数转换器的控制下移入有效的采样值。
4 一个具体的有限冲激响应滤波器
系统需要133个MCLK完成一次循环转换。使用11.7MHz的时钟,这个过程需要花费约11.4μs。系统的模数转换器通过一个串行口输人数据到移位/保持寄存器需花费3.3μs。系统采样输入信号的周期为11.4+3.3=14.7μs或频率68kHz。奈奎斯特(Nyquist)定理说一个信号要高于他的2倍采样信号采样才能保持信号信息的完整性。因而一个信号被滤波则系统器件的工作频率为34 kHz。使用ASPI公司的软件,运用Parks-McCcllean方法设计滤波器。他的中心频率为20kHz,带宽为5 kHz,传输区域从2kHz开始,如图2所示。
由于使用了可编程逻辑器件,使得上述系统有限冲激响应滤波器很容易改为无限冲激响应滤波器。在新的采样值输入进队列之前,最终的输出值被送会队列。如果提高系统的性能,要使用存储容量更大的队列器件和速度更快的乘法/累加器。因为使用了速度为15ns的可编程逻辑器件,所以这些器件不再是限制因素。如果使用并行模数转换器,64BX8b队列器件和45ns的乘法/保持累加器;系统不经很大改动就可达到167kHz的工作频率。
文章评论(0条评论)
登录后参与讨论