自适应滤波教我做人

最近准备参加电赛,校赛的要求是在2017年电赛国赛的题目中选择一个做。我看了题目,表示对自适应滤波比较感兴趣,正好之前也学习了解过一点信号处理的相关知识,就决定是自适应滤波了。

先说我结果吧,后天就是比赛开始了,但是我还是没有搞定问题,又面临着考试可能会挂科的压力,只能弃权了。

我觉得之所以会导致这个结果,跟我前期的规划失策是有一定原因的。

我将主要的精力全部放在LMS算法的实现上了;再着,FPGA对我来说是一个很大的挑战,因为之前从来没有用过,要在一个月内学会使用并做比赛,对我来说还是有着挺大的压力的;还有很重要的一点就是,我的心太大了,同时报了两个比赛,除了电赛还有另外一个科技创新的校内比赛,本以为很容易解决的,但是还是耽误了我很多时间,而且也是由于时间问题只能放弃。

这次的比赛除了让我意识到我的规划有问题外,也让我知道了,一个人的力量还是有限的。在没有参加比赛前,我还是自信心爆棚的,在网上看了些论文,自以为就没有问题了,就直接随便拉了两个人报名,然后全部工作由我一个人来做。事实证明,还是很难的,特别是做自己不熟悉的东西,更是难上加难;找文档、找论文都花了我超多时间,如果有队友的话,这些时间可以剩出很多来,甚至我的项目进度还可以以并行的方式前进。就拿这次的比赛来说,我需要一个信号叠加、一个信号移相、一个自适应滤波三大模块,正好电赛有三个名额,如果有队友的话,完全可以分成多个任务,大家一起完成,

断断续续做了差不多一个月的这个比赛,我就说说我除了教训,还获得了什么吧。

首先自然是学会了使用FPGA的一点皮毛,Quartus这个庞大的软件基本被我啃了下来,基本会操作了,很感动。因为软件资料真的不算多,特别是我使用的最新quartus 18版,我在官网看的有的资料甚至是几天前才出的,有的资料也还没有更新,真的挺难受的。我把我自己排的许多坑全部都写出来了,直面使用quartus遇到的问题使用ModelSim遇到的问题使用DSP Builder遇到的问题,这些很多都是我在网上没有搜到,然后在官方手册里找了很久才找到的,也算是我为广大群体做的一点小贡献吧。可能我之后还会写一些具体的操作教程,因为我也注意到了我使用的开发板Cyclone IV相关的教程比较缺乏,不好上手,就好像这次困住我的地方就是A/D转换方面的问题,等我解决了后就会发出来。

再者的话自然就是对信号处理有了更多的了解,了解到自适应滤波其实本质上也是一种基于统计学的方法,通过统计输入信号与期望信号之间的误差来调节滤波器的相关参数,自适应滤波分为自适应过程与滤波过程。我花了很多时间,但是也没有完全理解,最后终于在网上找到了一个解决方法,但是效果并不怎么好,是由两个七阶lms滤波器组成,但是却需要差不多8个周期才能收敛,而我在论文中看到的只需要两个周期,而且没有使用这么多资源。下面给张自适应滤波器的效果图吧。

再者的话,就是对数字信号有了更多的了解,一开始想着信号叠加和信号移相全部使用模拟电路做,但是后来了解到可以使用FPGA完成,就想使用数字电路来完成。可以说,这是导致我失败的一个很重要的原因,因为信号的移相需要使用到Direct digital synthesizer(DDS),这是什么?它可以从一个单一的频率源生成任意波形和频率。原本我的想法是通过ADC得到输入信号的波形和频率,然后将移相后的波形通过DDS生成,再通过DAC输出,但是FPGA还不太熟,怎么检测波形我还不会,就一直给卡在这里了…

总的来说,失败了也不错,只有挫折能让人保持清醒,而痛苦才能让我品尝到快乐。