这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 基于8位微处理器的数字低通滤波器设计

共3条 1/1 1 跳转至

基于8位微处理器的数字低通滤波器设计

高工
2019-06-27 10:35:27     打赏

一个简单的汇编程序适合于微处理器实现数字低通滤波器
  
滤波常发生在模拟世界。不幸的是,在数字领域,工程师通常主要使用DSP(数字信号处理器),而不是8位单片机实现滤波。这个情形的发生,是因为滤波器设计的算法比大多数工程师乐于处理的算法更复杂。而且,数字滤波需要计算整形数,而不是浮点数。这引发了两个问题。第一,有限位的舍入误差降低了滤波器响应,甚至使它不稳定。第二,必须用整数算法处理小数值。      
  
有几种方法解决这些问题。例如,可以使用16、32和64位数的操作,或可以缩放到更好的精度。这些和其他方法通常需要更多的存储器,造成编程经常不适于小型微处理器。文献研究所示用C语言编写的数字滤波固件,与用汇编语言编写需要更多的存储器。这个情形对存储器资源有限的小型微处理器来讲,常常是不可接受的。
  
列表1(程序见英文原文)列出了一个用8位微处理器设计单极低通数字滤波器固件的简单方法。Freescale公司的低端MC68HC908QT2使用汇编编程器,但可以将本设计方案用于任一型号微处理器,只要其使用的也是标准汇编指令。
  
将基于广义Z变换算法的复杂设计方案放在一边,本方案使用了一种基于递归方程的解决办法。计算每个输出信号采样,作为输入信号和前一个输出信号带相关系数的总和。递归方程定义一个单极低通滤波器为:Y[n]=X[n]×a0+Y[n–1]×b1,在这里X[n]和Y[n]为采样[n]的输入输出值,Y[n–1]为前一采样[n–1]的输出值,a0和b1为减少δ控制的权重系数。



高工
2019-06-27 10:36:08     打赏
2楼

系数为0为取代小数相乘,1–δ对汇编程序而言,用除以倒数为整数的方法更方便,F=1/(1–δ): Y[n]=Y[n–1]+(X[n]–Y[n–1])/F。因此,可以按照下面的步骤确定数字滤波器参数:
  
1、选择参数F。对汇编程序而言,便于用右移实现除法运算。右移就是F值应该为2S,在此S为偏移数。让F为8,相当于右移三位。
2、计算衰减:δ=1–1/F=1–1/8=0.875。
3、计算时间常数d=–1/lnδ=–1/ln0.875=7.49采样。
  
公式Y[n]=Y[n–1]+(X[n]–Y[n–1])/F决定滤波器的微处理器算法设计。算法需要三个寄存器:输入X[n]、输出Y[n]和一个递增寄存器保存(X[n]–Y[n–1])/F的值。三个寄存器的大小取决于输入。应用中,内置的8位ADC输出范围从00到$FF的信号,必须经历低通滤波器。所以输入和输出寄存器均为1个字节。为增加除法精度,增加一半除数到被除数。这个处理将递增寄存器增加到2个字节。
  
用数字方法实现滤波功能提供了一致性的好处,因为器件误差、温度漂移和老化不会影响滤波器算法。用微处理器实现数字滤波器,增加了可调整滤波器参数的灵活性优势,因为这个灵活性仅取决于固件。


菜鸟
2019-06-27 10:49:09     打赏
3楼

干货!


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]