APP下载

基于FPGA的数字锁相放大器的设计

2021-06-16汤易孙向阳

电子制作 2021年3期
关键词:滤波器分布式系数

汤易,孙向阳

(电子科技大学电子科学与工程学院,四川成都,611731)

0 引言

在微弱信号的采集和处理中,锁相放大技术一直是一种行之有效的方法,该技术是利用相关的原理设计的一种同步相干检测,具有通频带窄,中心频率稳定,品质因数高,信噪比高等特点,在微弱信号的处理方面显示出了非常好的性能,因此在各个领域得到了广泛的应用。

1 锁相放大技术原理

在采集微弱信号的过程中,常常会有由电磁辐射或传输渠道等各种原因产生的噪声,设信号X(t)是伴有噪声的周期信号,即:

式(1)中X(t)为输入信号,由有用信号S(t)和随机噪声N(t)组成,有用信号的幅值为A,角频率为ω,相位为φ;参考正弦信号为:

其中τ是参考正弦信号的相位,则两者的相关函数为:

由于参考信号Y(t)与随机噪声N(t)互不相关,所以RNY(τ)=0 ,于是就有:

从而得出RXY(τ) 正比于有用信号的幅值的结论。

由以上分析可知,利用参考信号与有用信号相关的同时与噪声互不相关这一点,可以通过相关运算提高信噪比。

2 数字锁相放大器设计

本数字锁相放大器主要用于采集接收微弱信号系统中,整个系统主要分为两个部分:模拟部分和数字部分,数字部分基于FPGA开发,最终在硬件中进行实现,具体结构如图1所示。

图1 系统总体框图

图1中的FPGA模块即为数字锁相放大器部分,主要由移相器,相关检测,低通滤波和矢量运算等部分构成。在接收到前级AD模块的数字信号后,锁相放大器会将信号进行移相,移相后的数据和接收数据分别于参考信号进行乘法操作,经过低通滤波后,两路信号的比值反映了原始信号对应时刻的相位,而两者的模值反映了原始信号的幅度,从而实现了将小信号从噪声中提取出来的功能。

在整个数字部分中,功能主要在FPGA内实现,这需要考虑到硬件系统与理论上的不同。移相器主要参考工作频率,按照参考信号的频率将接收到的信号延迟半个周期,从而达到移相90°的功能;相关检测部分主要实现的是参考信号与接收信号的相乘,利用FPGA内自带的乘法器模块进行实现,以便满足时序与资源上的平衡;低通滤波器模块实现滤波,在硬件中实现需要大量的乘法器与加法器,考虑到芯片内部乘法器资源的有限性,这里采用了分布式算法,避免了乘法器的使用。

3 基于分布式算法的低通滤波器设计

■3.1 分布式算法原理

分布式算法由于用LUT和移位器代替乘法器,有效地节省了硬件资源,因此被广泛运用于FPGA的设计中,对于滤波器的计算:

其中,x(n)可以表示为:

式(6)中,xb(n)代表x(n)的第b位,B为信号的位宽,所以有:

式(7)中M为滤波器长度,上式中的w(n)xb(n)中的xb(n)为输入信号的第b位,只有0和1两种状态,因此分布式算法将w(n)的所有累加组合预先存储在LUT中,通过对二进制位地址 [xb(0),xb(1), … ,xb(M- 1 )]寻址提取对应系数组合,然后由移位器和加法器进行实现移位求和,从而变相实现乘法累加运算。

■3.2 基于分布式算法的数字滤波器

上述即为串行结构的分布式算法,基于分布式算法的数字滤波器结构框图如图2所示,由M位移位寄存器、LUT查找表和加减运算部分组成,LUT查找表的地址由每一个输入信号的同一位决定。

本文中我们采用FIR滤波器进行滤波,借助Matlab中滤波器设计工具fdatool进行设计。滤波器的参数如下:通带从5kHz到35kHz,滤波器的阶数为127阶。阻带容许最小衰减为50dB,根据这些设计指标,可以通过软件生成滤波器系数,同时绘制的幅频响应,幅频特性曲线如图3所示。

图2 数字滤波器结构框图

图3 理想幅频响应

图4 不同位宽幅频响应对比

Matlab生成的滤波器系数均为浮点数,而FPGA中只能进行整型运算,因此需要对滤波器系数进行量化。滤波器系数的量化位数越大,滤波器的幅频响应与原始滤波器幅频响应拟合程度越好,但是需要消耗更多硬件资源;反之,滤波器系数量化位数越小,消耗硬件资源越少,但其滤波效果越差,因此需要平衡硬件资源的使用和精度的选择。我们选择了三种位宽,分别是14位,12位,8位,在Matlab中通过对比不同位宽下的幅频特性曲线与原始滤波器的幅频特性,选取最佳系数量化位宽。图4是不同位宽的幅频特性仿真图,从图4可以看出12bit与14bit位宽量化的幅频特性曲线和原本的幅频特性曲线拟合程度较好,而当采用8bit位宽量化时,幅频特性曲线失真较大。本着节约资源的想法我们选择12bit位宽量化。

最后我们将量化之后的系数导入FPGA中,通过分布式算法的思想完成整个数字滤波器,由于阶数较高,127阶共有64个不同的滤波器系数,若全部在一个LUT里查找需要存储264个数,因此本文将64个系数分成8组,每组系数中有8个,这样每个LUT只用存储28个数,在硬件资源上大大优化。数据每输入一次便会进行17次查找操作、16次移位操作以及1次加法运算,由于对数据进行了移位累加,因此数据的位数会被扩展,最后我们截取有效数据的高16位作为滤波结果。完成整个滤波器设计后我们在Modelsim进行仿真,将500Hz、20kHz、50kHz的三个正弦波叠加组合作为输入信号。结果如图5所示。

图5 数字滤波器仿真结果

从Modelsim仿真图中可以看出,输入信号中20kHz频率成分被保留了下来,而其他的频率成分均已被滤除,可见设计的滤波器基本满足设计要求。

4 数字锁相放大器仿真与测试

为了衡量锁相放大器提取信号幅度的效果,本文将正弦调制信号作为仿真的输入信号,其输入信号和测试结果如图6所示。

在图6中,adc_data端口即为仿真的输入信号端口,这是一个幅度调制信号,其幅度为一个正弦信号,图中的x_out端口即为输出信号端口,它代表数字锁相放大器中的幅度,可以看到,仿真结果基本符合理论结果,经过数字锁相放大器,提取了输入信号的幅度。

经过上述的仿真结果后,我们将程序下载进对应的FPGA开发板中,输入信号如图7所示。

图6 数字锁相放大器仿真结果

输入信号由信号源产生,经过模数转换器后接在FPGA的输入端口,这里选择使用幅度为三角波的调制信号,得到的结果如图8所示。

图7 实际输入信号

图8 示波器显示输出信号

通过示波器接收输出信号并显示,我们可以看到基本能完整的提取输入信号的三角波幅度,与理论和仿真结果差距较小。

5 结论

本文完成了一种数字锁相放大器的设计并分析了相关检测方法原理,完成了整体系统设计。通过上面的仿真和实际测试可以看到,数字锁相放大器的效果明显,实现后的结果与理论相比误差较小,能广泛运用于微弱信号检测中。

猜你喜欢

滤波器分布式系数
浅谈有源滤波器分析及仿真
基于多模谐振器的超宽带滤波器设计
居民分布式储能系统对电网削峰填谷效果分析
基于Paxos的分布式一致性算法的实现与优化
小小糕点师
苹果屋
嬉水
FIR滤波器线性相位特性的研究
待定系数法在分解因式中的应用
FFT、PFT和多相位DFT滤波器组瞬态响应的比较