【发明内容】
为了解决现有技术中存在的技术问题,本发明提供了一种基于现场可编程门阵列的数字锁相放大实现方法。
为了解决现有技术中存在的技术问题,本发明还提供了一种基于现场可编程门阵列的数字锁相放大系统。
本发明解决现有技术问题所采用的技术方案为:提供了一种基于现场可编程门阵列的数字锁相放大实现方法,所述基于现场可编程门阵列的数字锁相放大实现方法包括步骤:
A:把周期信号分成若干个采样点;
B:对参考相位信号进行倍频处理,对需要锁相放大的原始信号进行数据采样;
C:设对标准正弦波查表求得的序列为Rc(n),对需要锁相放大的原始信号的采样序列为Oc(n),设最终经过锁相放大得到的振幅结果为V,则现场可编程门阵列系统数字锁相放大的算法为:
D:利用对Rc(n)×Oc(n)乘积的累加并在一个周期内求平均值,实现对不低于基准频率的交流部分进行滤波;
E:对于滤波后的结果,采用滑动滤波窗进行滤波,最终得到输出结果。
根据本发明的一优选技术方案:所述步骤A具体为:把一个周期的信号分成360个采样点。
根据本发明的一优选技术方案:所述步骤B具体为:在现场可编程门阵列芯片外部使用锁相环对参考0相位信号进行360倍的倍频处理,设倍频后的信号为Tc,利用Tc信号在现场可编程门阵列内部查找表查询标准正弦信号的电压数值,并且使用Tc信号驱动12位模数转换器对需要锁相放大的原始信号进行数据采样。
根据本发明的一优选技术方案:所述步骤E具体为:对于滤波后的结果,采用10个窗口的滑动滤波窗进行低通滤波,可以对低频信号的交流部分进行滤波,最终得到输出结果。
本发明还提供了一种实现所述基于现场可编程门阵列的数字锁相放大实现方法的系统,所述基于现场可编程门阵列的数字锁相放大系统包括:模数转换器、锁相环和现场可编程门阵列数字处理器,其中,所述模数转换器和所述锁相环分别与所述现场可编程门阵列数字处理器连接。
根据本发明的一优选技术方案:所述现场可编程门阵列数字处理器包括:分频器模块、相位计数器模块、查找表模块、零相位探测器模块、相位控制器模块、乘法器模块、加法器模块、求平均值模块和滑动滤波窗模块,其中,所述分频器模块输出信号Tc到查找表模块、零相位探测器模块、相位计数器模块、乘法器模块、外部“模数转换器”模块、加法器模块和求平均值模块。外部的“模数转换器”输出的数据采用结果信号和查找表模块输出的标准正弦值输入乘法器模块,相位计数器模块和相位控制模块连接,给相位控制器提供相位判定的依据,乘法器模块的结果输出给加法器模块,零相位探测器模块的输出clear信号也输入给加法器模块,进行累加运算,同时,零相位探测器模块的输出clear信号也输入给求平均值模块,加法器模块输出的计算结果也输入给求平均值模块进行滤波运算。
根据本发明的一优选技术方案:所述分频器模块具体为360分频器模块,其配合锁相环电路产生一个360倍于外部参考信号的倍频信号Tc,并把产生的倍频信号Tc送入90°查找表模块、零相位探测器模块、相位计数器模块、乘法器模块、模数转换器、加法器模块和求平均值模块,作为模块运算的系统时钟。
根据本发明的一优选技术方案:所述零相位探测器模块对输入的外部参考零相位信号进行内部时钟同步化处理,用内部时钟对其做两个时钟的延迟处理,消除产生亚稳态和其抖动的影响。
根据本发明的一优选技术方案:所述相位控制器模块根据输入的地址不同,把第一象限的查找表数据,映射到其他三个象限中,所述相位控制器模块有四个状态,对应于计数器的四个不同的取值范围。
根据本发明的一优选技术方案:所述乘法器模块把由外部的模数转换器产生的信号和经过90°查找表模块得到的标准信号进行乘法运算,得到结果;所述加法器模块是对所述乘法器模块的输出结果进行累加,并且在清除命令信号的作用下对累加结果清零,所述加法器模块把累加结果输出给求平均值模块。
根据本发明的一优选技术方案:所述滑动滤波窗模块选择10个窗口大小的滑动滤波窗进行低通滤波。
本发明技术基于普通低成本现场可编程门阵列实现了低成本、高速度、高精度的锁相放大器,具有很高的实用性。
【具体实施方式】
以下结合附图对本发明技术方案进行详细说明:
首先请参阅图2锁相放大器工作原理图。如图中所示,输入信号是s(t),根据傅立叶变换原理,该输入信号可以由和两部分构成,其中是需要放大的有效信号,而是无关的噪声信号。另外,需要给信号处理器一个和频率一样标准正弦波作为参考,设该信号的波函数为利用乘法器,实现两个信号的乘法运算可以得到如下信号:
显然m(t)是一个复合信号,其中的直流成分是如果使用一个低频滤波器可以完全滤掉其交流成分,则可以得到直流分量,进而得到信号的幅度值a。
在本发明基于现场可编程门阵列的数字锁相放大实现方法中基于FPGA(Field-Programmable Gate Array现场可编程门阵列)的数字锁相放大器处理器是根据(1)所述原理对所有信号进行数字化处理,然后用FPGA来实现乘法运算,滤波运算等的方法。在本发明所述算法中,把一个周期的信号分成360个采样点(本发明技术方案中“分成360个采样点”为优选的方案,本发明技术人员也可以取其他数值,如取其他数值在以下所述对应的公式或表述中把选取的该数值用于替换公式中的360即可),因此,需要在FPGA芯片外部使用PLL(Phase-Locked Loop锁相环)对参考0相位信号进行360倍的倍频处理,设倍频后的信号为Tc,利用Tc信号在FPGA内部查找表查询标准正弦信号的电压数值,并且使用Tc信号驱动12位AD(模数转换器)(本发明技术方案中“12位AD”也是优选方案,可以灵活选取其他位数的模数转换器)对需要锁相放大的原始信号进行数据采样。设对标准正弦波查表求得的序列为Rc(n),对需要锁相放大的原始信号的采样序列为Oc(n),设最终经过锁相放大得到的振幅结果为V,则FPGA系统数字锁相放大的算法可以表示为(2):
利用对Rc(n)×Oc(n)乘积的累加并在一个周期内求平均值可以有效地对不低于基准频率的交流部分进行滤波。对于滤波后的结果,再采用10个窗口(本发明技术方案中“采用10个窗口”也是优选方案,本领域技术人员可以灵活选取其他位数个窗口)的滑动滤波窗进行滤波,可以对低频信号的交流部分进行滤波,最终得到近似的直流部分,即得到最终的输出结果。
本发明还提供了一种实现所述基于现场可编程门阵列的数字锁相放大实现方法的系统,所述基于现场可编程门阵列的数字锁相放大系统包括:模数转换器101、锁相环102和现场可编程门阵列数字处理器103,其中,所述模数转换器101和所述锁相环102分别与所述现场可编程门阵列数字处理器103连接,其中,所述现场可编程门阵列数字处理器103包括:分频器模块110、相位计数器模块108、查找表模块111、零相位探测器模块104、相位控制器模块109、乘法器模块105、加法器模块106、求平均值模块107和滑动滤波窗模块112,其中,所述分频器模块110输出信号Tc到查找表模块111、零相位探测器模块104、相位计数器模块108、乘法器模块105、外部“模数转换器101”模块、加法器模块106和求平均值模块107,外部的“模数转换器101”输出的数据采用结果信号和查找表模块111输出的标准正弦值输入乘法器模块105,相位计数器模块108和相位控制模块连接,给相位控制器提供相位判定的依据,乘法器模块105的结果输出给加法器模块106,零相位探测器模块104的输出clear信号也输入给加法器模块106,进行累加运算,同时,零相位探测器模块104的输出clear信号也输入给求平均值模块107,加法器模块106输出的计算结果也输入给求平均值模块107进行滤波运算。
本发明系统中利用一个分频器模块110,具体为360分频器模块110对锁相环102的输出进行分频,配合外部锁相环102的功能,实现了相位的锁定和360倍频的功能,产生系统工作时钟。而外部参考0相位信号则输入零相位探测器模块104,生成一个和系统时钟同步的0相位标志信号,称之为“tcr”。相位计数器模块108在系统时钟的驱动下开始计数,直到计数满360的时候,“tcr”信号对计数器清零。计数器的结果输入LUT(Look-Up-Table查找表)模块,在本发明技术方案中具体为90°查找表模块111在相位控制器模块109的配合下,通过查表找到该时刻的标准正弦波的数值。
通过LUT(查找表)查找到的标准正弦波的数值和通过AD采集到的要进行锁相放大的信号数据进行乘法运算,乘法运算的结果送入加法器模块106(累加器)进行累加计算。当“tcr”信号来临的时候,对整个加法器模块106清空,并利用average module(求平均值模块107)对累加的结果求取平均值。在tcr信号的控制下,对累加结果的平均值进行10个窗口的滑动滤波处理,可得到最终要锁相放大的信号的振幅大小。
在本发明技术方案中所述360分频器模块110,配合外部锁相环102电路产生一个360倍于外部参考信号的倍频信号,称之为Tc。并把产生的倍频信号Tc送入90°查找表模块111,零相位探测器模块104,相位计数器模块108,乘法器模块105,外部模数转换器模块101,加法器模块106,求平均值模块107。作为模块运算的系统时钟。
相位计数器模块108是对Tc信号进行计数的一个状态机模块,输出一个计数结论的状态数值,给相位控制器模块109进行相位判定提供依据。
在本发明中Zero phase detector module(零相位探测器模块104)的设计要对输入的外部参考零相位信号进行内部时钟同步化处理,由于频率抖动的原因,该信号不会特别稳定,因此需要用内部时钟对其做2个时钟的延迟处理,消除产生亚稳态和其抖动的影响。详细情况可以参阅图3延迟信号效果图,经过延迟的信号是同步与内部时钟信号,但是其相对于真正的零相位时刻落后3个时钟周期,在本发明中,采用Zero phase(零相位)预测技术,利用上升沿检测电路,检测到经过2个时钟延迟的外部参考零相位信号,将零相位探测器模块104内部计数器清零,在计数器计数达到356之后,自动产生一个“tcr”信号。
相位控制器模块109是根据输入的地址不同,把第一象限的LUT数据,映射到其他三个象限中去。该控制模块有四个状态,对应于计数器的四个不同的取值范围。状态转换图如图4所示。当状态寄存器处于S0状态时,直接把计数器的数据送入查找表的地址端,当状态寄存器处于S1状态时,把180与计数器的差送入查找表的地址端。当状态寄存器处于S3状态时,把计数器与180的差送入查找表的地址端,并把输出的数据正负状态寄存器置成“负数”。当状态寄存器处于S4状态时,把360与计数器的差送入查找表的地址端,并把输出的数据正负状态寄存器置成“负数”。
乘法器模块105是把由模数转换器101产生的信号和经过90°查找表得到的标准信号进行乘法运算,得到结果。
加法器模块106是对乘法器模块105的输出结果进行累加,并且在“clear”信号的作用下对累加结果清零,加法器模块106把累加结果输出给所述求平均值模块107。
求平均值模块107是在clear信号的驱动下,对加法器模块106输出的结果进行求平均值运算,并输出给滑动滤波窗模块112。
在本发明技术方案中所述滑动滤波窗模块112对于average module(平均模型)输出的信号,需要再做一次滑动滤波处理。在本文中,选择10个窗口大小的滑动滤波窗进行低通滤波。滑动滤波的原理如图5所示,利用一个10个单元的FIFO(先进先出暂存器),对整个输出的平均值进行暂存,并对FIFO(先进先出暂存器),的全部单元内容取平均值则可以得道最终的输出结果。
在本专利中,数字锁相放大器发明人使用了Alter公司的普通低成本FPGA芯片Altera EP3C25F256C8实现.利用这个芯片对整个设计进行综合,利用set-up&hold-up time分析,我们可以得到其最高速度为56.9Mhz,而整个系统能够处理放大的信号范围为不高于158KHz。
另外,通过理论分析和必要的实验,我们可以看出,待处理信号效果图和采用本发明技术经过乘法运算后得到的信号效果图如图6和图7中所示,图6是输入芯片的信号和其中所蕴含的待锁相放大的单一频率信号的波形,整个输入芯片信号的波函数如以下表达式所示:
在仿真实验中,给原始信号加入了初相位不等的2次倍频、4次倍频、7.2次倍频信号,采样频率为基准信号的1/360,保留3位数字有效精度,经过乘法运算得到的数据如图7所示,经过求取平均值,得到原始信号中的需要锁相放大的频率幅度值为0.99873,误差仅为1.27‰。
以上内容是结合具体的优选技术方案对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明,例如在本发明表述中,“把一个周期的信号分成360个采样点”、“采用10个窗口的滑动滤波窗进行滤波”、“12位模数转换器101”等等中的“数值”表述仅是该发明典型实现方法的一种,不是唯一的数值选择,通过同样的方法,可以设计出不同的数值组合,这种数值的简单变化对于本发明所属技术领域的普通技术人员来说是简单的,也应当视为属于本发明的保护范围。