滤波器在信号处理、信号检测、通信领域有非常重要的应用,在实时系统中,对滤波器的性能和处理速度有非常严格的要求,特别是快速实时系统中,处理速度至关重要。目前,为满足快速处理的需要,用DSP技术是理想的选择。但是,目前在实时控制系统中,大多是用单片机实现的,它不仅完成信号的采样,还需完成信号的处理和控制等功能,如果单片机系统本身可以完成信号的快速处理任务,将非常方便,我们在一个用MCS-51单片机组成的强噪声背景下的通信系统中,实现了高斯滤波器的快速实现,满足了系统的需要。
1 算法原理
高斯滤波器是一个低通滤波器,其方程,可以证明,高斯滤波器可用均值滤波器多次逼近,一般情况下,大于或等于三次逼近就可近似于高斯滤波器,所以,在设计高斯滤波器时,可以用设计均值滤波器逼近代替高斯滤波器。
式中n为当前采样点序号,N为窗口宽度,显然均值滤波器实际上可由一次加法运算,一次减法运算和一次除法运算完成,而与窗口的宽度无关,若取窗口宽度 ,则除法运算可用移位来取代。
(1)式中,两边同乘N可变为:
即为了避免除法运算,我们可先采用累加机来代替均值,运算结果,再除以No上述滤波器结构可用图1表示。
2 均值滤波器的MCS-51快速实现方法
对于稳定信号,上述计算非常简单,它只需窗口在固定存储器上滑动即可,对于实时信号,存储器的内容是随时更新,相当于信号经过一个固定滤波器。
设采样信号循环存储在RAM addrl到addrn的存储空间中,如图2所示。
显然,最新采样值只需取代最早存放在RAM中的数据即可,而2式中的累加和实际上就是原累加和加上最新采样值,减去最早采样值。我们用一个数据指针指向当前存放数据的存储单元,为方便编程,把下一个单元的内容作为最早采样值,如图2中n+1时刻的f(1),这样窗口宽度为n+1。
设Ro为当前数据指针, 存放累加和,当前采样值在A中,则89C51的汇编实现程序为:
设窗口宽度为 ,上述累加和只需右移k位即为均值。
显然,上述算法不管窗口大小如何,其速度都一样快,所以,本算法对宽窗口滤波更为有效。
上面程序如采用89系列单片机,用24MHz晶振,只需几个μs,如需速度更快,改用16位单片机,累加和在一个寄存器中,还可减少加法和减法的时间。
作者用上述方法在照明线数据通信系统中,对二值信号进行实时处理,由于窗口宽度小于256,累加和中只用一个字节,所以,处理时间只需5μs,令人非常满意。
本文讨论了高斯滤波器在单片机系统中的快速实现。这种方法,特别适用于实时数据采集、处理、控制系统中的滤波。实践表明,这种方法具有很高的实用价值,值得推广。
关键字:滤波器 快速实现 单片机 实时系统
引用地址:
高斯滤波器在实时系统中的快速实现
推荐阅读最新更新时间:2024-03-16 12:53
STM8S105K6T6单片机的IIC配置问题
最近在用MCP3421,需要用到IIC接口。MCU用的是STM8S105K6T6。使用MCU内部的IIC外设,这个接口配置折腾一下午,遇到了很坑爹的事情。我使用的是寄存器开发的,该设置了感觉都设置好了,就是不能工作。后来以为没配置好,又用库函数来开发,妈的 ,还是不能工作。后来在群里的一位大神的指导下成功的调通了IIC。 闲话有点多,毕竟是我第一次开通博客来写博客的,心情不免有些激动。现在把经验分享给不知道的小伙伴们,少走些弯路。 在使用STM8S105K6T6的IIC前,必须先通过STVP这个软件来进行配置。 这三个步骤是最重要的,当然还需要选择单片机的下载模式,型号什么的,这个不是本文的重点。特别要强调一点,步骤二
[单片机]
51单片机定时器初值怎么精确计算?
void main(void) { s1=1; TMOD=0x01; //使用定时器T0的模式1 TH0=(65536-46083)/256; //定时器T0的高8位设置初值 TL0=(65536-46083)%256; //定时器T0的低8位设置初值 函数功能:定时器T0的中断服务函数 ********************************************************/ void Time0(void ) interrupt 1 using 0 //定时器T0的中断编号为1,使用第1组工作寄存器 { count++; //每产生1次中断,中断累计次数加1
[单片机]
Q值和频率可调的窄带滤波器电路图
如图所示为Q值和频率可调的窄带滤波 电路 。该 电路 是一个Q值和频率可调的有源窄带滤波器。它采用文氏桥正反馈的形式,但其环路增益低于1。该电路的特点是调节Q值不影响中心频率。因为Q值只和回路的增益有关。增益为600时,Q值为2000;增益为140时,Q值为30。在一般文氏桥振荡器中,对同相输入端而言,放大器的增益必须大于3才产生振荡,而本电路中放大器的增益小于3。增加电路增益可以增加RC网络的Q值,因此调节电位器R3可以改变电路Q值。输入信号通过R3加至运算放大器的反相输入端,通过滤波器可将某一预定频率选出,电路谐振频率为: 采用图示元件f0可以从160Hz变到1.6kHz。R1、R2为匹配的线绕同轴电位器,调节频率时不会
[模拟电子]
51单片机四位数数字温度计设计
1.温度传感器AD590基本知识 AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA。 AD590温度与电流的关系如下表所示 2.电路原理图 图4.30.1 3.系统板上硬件连线 (1).把“单片机系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 (2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 (3).把“单片机系统”区域中的P3.0与“模数转换
[单片机]
两台8031单片机通过串行口进行数据交换程序
有两台8031单片机相距很近,直接将它们的串行口相连,1#机的TXD接2#机的RXD,2#机的TXD接1#机的RXD,二机的GND相连。二机的晶振频率均为11.0592MHZ,通信的波特率为4800bps。现将第一台8031单片机片内RAM40H~5FH单元内的数据,串行发送到第二台8031单片机片内RAM60H~7FH单元中。 发送与接收的参考程序如下:1#单片机发送程序: ORG 1000H TX:MOV TMOD , #02H MOV TH1 , #0FAH MOV TL1 , #0FAH MOV SCON , #80H ; 设定工作方式2 MOV PCON, #00H ; 波特率为fo
[单片机]
基于赛元两款MCU的触摸电磁炉整体方案
电磁炉工作原理: 一般厨具是通过本身发热,热量再传导到锅具,电磁炉不是由本身产生热量对食物进行加热,电磁炉将交流电转换成直流电压,再通过励磁线圈加到IGBT上,IGBT受驱动控制导通和截止,励磁线圈有频率为20-50KHz的电流流过,励磁线圈产生高频磁场,若有铁锅置于炉面上,则锅底产生涡流,涡流克服锅内阻而转换成热能。 由于电磁炉是采用这种磁场感应电流的加热原理,它的关键元器件是大功率IGBT高速交替开关,IGBT的保护是电磁炉的重点和难点,针对电磁炉工作过程中,遇任任何情况都要快速保护的特点,赛元推出了电磁加热专用微控制器SC91F738,内置16MHz RC可提供MCU 16MHz工作频率,8K FlashROM,256RAM
[单片机]
单片机实现电力补偿装置控制系统
以80C196KC单片机为核心的电力 补偿控制 系统,通过模拟输入电路对三相电压、电流进行采样,计算后通过输出单元控制电容器的投切,从而实现对电网无功功率的补偿。本文介绍了系统硬件和软件的设计方法。 引言 目前在电力补偿系统中有多种补偿方法,本文中的补偿系统是根据寻优负序电流最小进行补偿的。系统计算需要对交流电一个周期20 ms内对单相电压u、电流I进行采样,要求一个周期内采样次数至少在100次以上。针对这一特点,设计了基于80C196KC的控制系统。Intel公司的高性能16 b单片机80C196KC,其运算速度快,能够满足系统高速采样的要求。 1 系统硬件设计 本系统的硬件部分主要由采样输入电路、中
[单片机]
ST宣布预置DSI控制器的先进STM32微控制器已投入量产
意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)发布功能丰富的开发生态系统(包括电路板和软件支持),而全球首款集成MIPI-DSI 控制器的高性能微控制器STM32F469 / 479已开始量产。 STM32F469/479拥有业内最高的ARM Cortex -M4处理器性能,在180MHz主频下进行CoreMark测试更取得了608分的优异成绩,内置最高2MB的双区(dual-bank)闪存和384KB的随机存取存储器(RAM),可支持最先进的物联网(IoT)和穿戴式应用。作为世界首款集成先进MIPI-DSI控制器的微控制器,结合意法半导体独有的Chrom-ART Acceler
[单片机]