热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

利用小波变换做实时信号处理

引言在对时变信号进行分析时,小波变换则显现出了明显的优势,因为它能够同时在时域和频域进行局部分析。小波算法由于具有滤波效果好、信号细节损失少的优点,从而引起了人们的广泛关注和实

引言

  在对时变信号进行分析时,小波变换则显现出了明显的优势,因为它能够同时在时域和频域进行局部分析。小波算法由于具有滤波效果好、信号细节损失少的优点,从而引起了人们的广泛关注和实际生活中的不断应用。目前常用的硬件芯片分为两大类:基于大规模可编程集成电路FPGA的纯硬件实现方案和基于高速通用DSP的软件实现方案。采用FPGA的硬件实现方案硬件接口设计灵活,可以和任意数字外围电路直接使用,且其具有高度的集成度和高速的处理速度;而基于高速通用DSP的软件实现方案代码设计灵活,可以快速修改和调试程序。由于小波算法运算量较大,采用DSP方案则不能满足系统的实时性要求。于是,本文提出了一种采用FPGA实现小波算法的方案。

  1 小波去噪的基本原理

  对于小波算法,应用最广泛的是信号处理和图像处理,而在这两个领域中应用最多的就是信号及图像的去噪和压缩。由于在正交小波中,正交基的选取比传统方法更接近实际信号本身,所以通过小波变换可以更容易地分离出噪声,因此,相对于传统方法,小波分析在去噪和压缩方面有着众多优势。

  小波分析用于去噪的过程如下:

  1.1 分解

  选定一种小波,对含噪信号进行N层小波分解,得到各层分解的小波系数。

  1.2 阈值处理

  将通过分解得出的各层高频小波系数进行阈值处理,在进行到最后一层时,要同时对该层的高、低频系数进行阈值处理。

  1.3 重构

  将经过阈值处理后的小波系数通过小波逆变换重构出去噪后的信号。

  2 硬件实现

  系统框图如图1所示。根据相关分析,设计采用了赛灵思公司生产的超大规模 FPGA器件Virtex 5 XC5VSX50T。系统接口采用RS422串口,RS422能够以更快的波特率来收发数据,同时其通信距离也更远。在进行小波变换之前需要预存一定长度的数据,因此在接口和小波变换模块之间需要设置一个FIFO。FPGA通过接口模块将收到的含噪信号数据存入FIFO模块中,预存32个数据。

系统框图

  为保证一定的滤波效果又不使算法的运算量过大,本文将小波变换模块的分解、重构层数设为5层。小波变换模块主要包括前向小波变换模块、阈值处理和逆向小波变换模块。前向小波变换模块完成对含噪信号的多层分解,将含噪信号分解为低频分量和高频分量。阈值处理模块去除经过多层小波分解出来的各层高频噪声,在前4层阈值处理过程中需将处理后的高频分量存储到相应的RAM中。逆向小波变换模块完成信号的多层重构,得出去噪后的信号。逆向小波变换模块重构信号的顺序和前向模块相反,是按最后一层到第一层的顺序重构信号,在进行到相应层次时将存放在相应RAM中经阈值处理后的高频分量取出与该层低频分量进行重构,完成5层逆向小波变换之后即可得到去噪后的信号。小波变换模块的FPGA结构图如图2所示。

小波变换模块FPGA结构图

  本设计选用DB4小波对含噪信号进行提升小波变换,DB4小波滤波器长度较短,能够提高运算速度,也能够满足一定的滤波效果。

  在MATLAB平台中通过执行语句“lsdb4=liftwave('db4');displs(lsdb4);”就能得到db4提升小波的方案信息。其方案信息如下:

  lsdb4={ [-0.32227589] [-1.11712361 -0.30014226]

  [-0.01880835 0.11764809] [2.13181671 0.63642827]

  [-0.46908348 0.14003924 -0.02479124] [0.73412453]

  [1.36216672] };

  由提升小波算法可知,该算法主要由加、减、乘运算组成,对于FPGA实现来说,加减运算可以调用FPGA的加法器IP核,而浮点系数的乘运算可以通过移位相加来实现。以浮点系数-0.32227589为例,-0.32227589=-((1/4)+(1/16)+(1/128)),所以要实现数据与系数-0.32227589相乘,可以通过右移相加的方法来实现,这样做可以减少对乘法器的调用,从而减少了该部分设计时所需的面积,提高了芯片的处理速度。其具体实现框图如图3所示。

浮点系数FPGA实现框图

  3 仿真结果及分析

  本设计使用ISE 10.1软件完成了硬件电路的Verilog设计、综合,使用Modelsim 6.0D完成时序仿真,FPGA系统时钟为39 MHz,输入的信号采样率为5 kHz,输入的采样信号为某型号光纤陀螺的零漂信号,并添加幅值为1 V的伪随机噪声。

  如图4所示,第二个信号indata是含噪声的信号,第三个信号outdata是经过提升小波变换后的去噪信号。由图4可以看出,光纤陀螺零漂信号已经完全淹没在噪声之中,在信噪比很低的情况下,经过小波去噪之后能够很好地滤除噪声信号。由图5和图6可以看出,FPGA的小波变换模块从接收到处理完一个数据点所需的时间约为6402632628 ps-6388706228 ps=13.93 μs,完全可以满足一般系统对信号处理实时性的要求。

系统去噪效果仿真图形

系统实时性仿真图形

  算法用DSP(TI TMS320C6713)实现时,对C代码进行优化,处理一个数据点所需要的时间约为66μs,采用C和汇编混合编程对关键循环进行进行汇编优化,处理一个数据点所需要的时间约为40μs。从实时性的角度来说,用FPGA实现该算法比用DSP更符合信号处理系统对实时性的要求。

  4 结语

  本文提出了利用FPGA实现小波信号处理的方案。相比传统滤波方法,小波变换法能更好地滤除噪声,在选好相应的小波后也能满足实时性的要求,是非常理想的信号处理方案。采用FPGA实现小波变换,速度快、数据宽度可任意设置,并且Verilog语言具有可移植性的特点,具有更强的通用性。该方法可以应用在光电跟踪信号去噪及语音去噪等一维信号实时处理系统中,它在较为有效地消除噪声的同时又能基本满足系统的实时性。


推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了游戏开发中的人工智能技术,包括定性行为和非定性行为的分类。定性行为是指特定且可预测的行为,而非定性行为则具有一定程度的不确定性。其中,追逐算法是定性行为的具体实例。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 大数据环境下的存储系统构建:挑战、方法和趋势
    大数据环境下的存储系统构建:挑战、方法和趋势陈游旻,李飞,舒继武清华大学计算机科学与技术系,北京100084摘要:互联网规模的迅速扩展促使 ... [详细]
  • 2022.4.2学习成果
    Flink中的编程模型4.1编程模型在Flink,编程模型的抽象层级主要分为以下4种,越往下抽象度越低,编程越复杂,灵活度越高。这里先不一一介绍,后续会做详细说明。这4层中,一般用 ... [详细]
  • https:www.bilibili.comvideoav43996494?p61补充说明(修正前面代码存在问题):#先验框筛选defchoose_anchor_boxes(sel ... [详细]
  • 谁说QLC闪存不堪大用!Intel 670p SSD深度揭秘
    ssd品牌众多,intel可以说是非常优秀的那一个,早些年的x25系列至今都是让人津津乐道的经典,不过近些年,intel固态存储的主要精力转向了企业、数据中心市场,消费级领域产品并 ... [详细]
  • 这篇文章主要讲解了“面向对象设计的六大原则是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究 ... [详细]
  • 运行机制_PHP 底层的运行机制与原理转
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP底层的运行机制与原理--转相关的知识,希望对你有一定的参考价值。发现一片总结的还不错的文 ... [详细]
author-avatar
午夜呻吟的诱惑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有