基于fpga的频率测量系统

文档序号:1476663 发布日期:2020-02-25 浏览:18次 >En<

阅读说明:本技术 基于fpga的频率测量系统 (Frequency measurement system based on FPGA ) 是由 许波 程玉华 陈凯 杨云鹏 王伊凡 张硕 韩文强 赵佳 孔子薇 于 2019-10-31 设计创作,主要内容包括:本发明公开了一种基于FPGA的频率测量系统,输入信号经比较器模块后得到与输入信号同频同相的矩形波信号,ADC模块对输入信号进行采集后采用FFT分析法初步确定输入信号的频率,参考时钟选择模块用于根据初步确定的频率选择一个参考时钟clk_fre作为滤毛刺模块中滤除毛刺成分的时钟源,滤毛刺模块对矩形波信号中的毛刺进行滤除,频率测量模块基于测频法或测周法对滤除后的信号进行测量得到脉冲计数结果,上位机基于脉冲计数结果计算得到输入信号的频率测量结果。本发明首先通过FFT分析法粗略计算出输入信号的基波频率,经过滤除毛刺后通过测频法或测周法精确测量出信号的频率,从而在信号中存在谐波成分时对基波频率进行准确测量。(The invention discloses a frequency measurement system based on FPGA, an input signal obtains a rectangular wave signal with the same frequency and phase as the input signal after passing through a comparator module, an ADC module acquires the input signal and then preliminarily determines the frequency of the input signal by adopting an FFT analysis method, a reference clock selection module is used for selecting a reference clock clk _ fre according to the preliminarily determined frequency as a clock source for filtering a burr component in a burr filtering module, the burr filtering module filters burrs in the rectangular wave signal, the frequency measurement module measures the filtered signal based on a frequency measurement method or a cycle measurement method to obtain a pulse counting result, and an upper computer calculates the frequency measurement result of the input signal based on the pulse counting result. According to the invention, firstly, the fundamental frequency of the input signal is roughly calculated by an FFT analysis method, and the frequency of the signal is accurately measured by a frequency measurement method or a cycle measurement method after burrs are filtered, so that the fundamental frequency is accurately measured when harmonic components exist in the signal.)

基于FPGA的频率测量系统

技术领域

本发明属于测试技术领域,更为具体地讲,涉及一种基于FPGA的频率测量系统。

背景技术

当今社会,电能已经和人类生活息息相关。特别是工业领域,越来越多的电力电子设备应用到其中,电力电子整流设备、电气化机车、电弧炉、交流电机以及其他具有非线性特性的大功率用电设备大量涌入电网,使得电力系统中的电网谐波问题日益严重,并且各种非线性、冲击性设备的接入,也将会给电网带来三相电压波动、波形畸变、无功功率增大等负面影响。这些问题正受到电力部门和用户越来越广泛的关注。

由于连接在电网中的大量非线性用电设备的影响,电网中存在着大量的谐波,这给频率测量带来了不小的挑战。只有对电网的电力参数进行有效和精确地监测和分析,才能制定有效的措施对电网的电能质量问题进行改善。功率分析仪能够进行各种功率参数的测量,包括频率测量、FFT(fast Fourier transform,快速傅里叶变换)运算、谐波分析等。在现有的技术中,功率分析仪进行频率测量主要有三种方式:

第一种方式:测频法。测频法中将输入信号经过放大整形电路形成计数的窄脉冲,在给定的时间闸门内测得被测信号的脉冲个数,通过脉冲个数计算出输入信号的频率。当被测信号频率较低时,该方法测量误差较大,因此测频法适合测量高频信号。当输入的基波信号中含有谐波成分时,输入信号经过整形电路后输出的窄脉冲会因为谐波的存在变得密集,脉冲的计数值会变大,测频结果会变大,因此当基波中存在谐波成分时,测频法不能够适用。

第二种方式:测周法。测周法通过测量信号周期换算出频率。输入信号经过放大整形电路后输出一个与被测信号周期时间相同长度的闸门时间。计数器的在给定的闸门时间内对高频窄脉冲进行计数,通过脉冲个数计算出输入信号的周期,进而计算出频率。当被测信号频率较高时,该方法测量误差较大,因此测频法适合测量低频信号。当输入的基波信号中含有谐波成分时,输入信号经过整形电路后输出的闸门时间会变短,脉冲的计数值会变小,测频结果会变大,因此当基波中存在谐波成分时,测周法同样不能够适用。

第三种方式:FFT分析法。该方法在FPGA(Field-Programmable Gate Array,即现场可编程门阵列)中建立FFT的IP核,将采样得到的N个数据点输入到IP核后,IP核输出N点的频谱图像。其中,频谱图像中数值最大的谱线对应的频率为基频。该方法优点是可以通过频谱图像看出基波频率和谐波频率,缺点是测量结果受到频率分辨率的限制,频率的测量精度较低,且FFT运算需要较长时间,测量值的刷新时间较长。

发明内容

本发明的目的在于克服现有技术的不足,提供一种基于FPGA的频率测量系统,首先通过FFT分析法粗略计算出输入信号的基波频率,经过滤除毛刺后通过测频法或测周法精确测量出信号的频率,从而在信号中存在谐波成分时对基波频率进行准确测量。

为实现上述发明目的,本发明基于FPGA的频率测量系统包括比较器模块,ADC模块,FFT运算模块,参考时钟选择模块,滤毛刺模块,频率测量模块和上位机,其中FFT运算模块,参考时钟选择模块,滤毛刺模块和频率测量模块在FPGA中实现,其中:

比较器模块用于对经过交流耦合后的输入信号进行过0比较,得到与输入信号同频同相的矩形波信号CARD_CNV,并将矩形波信号CARD_CNV输出至滤毛刺模块;

ADC模块用于对同一输入信号进行采集,将采集得到的包含N个采样点的采集数据序列ADC_DATA发送至FFT运算模块;

FFT运算模块采用FFT分析法初步确定输入信号的频率,具体方法为:将接收到的采集数据序列ADC_DATA进行FFT运算,输出N点的频谱序列,记每一点的频谱包括实部Re[k]和虚部Im[k]两部分,k=1,2,…,N,采用如下公式计算得到k点处的频率能量X[k]:

找出频率能量X[k]的最大值和其对应的点序号kmax,将点序号kmax发送给参考时钟选择模块;

参考时钟选择模块用于选择一个参考时钟clk_fre作为滤毛刺模块中滤除毛刺成分的时钟源,其中参考时钟clk_fre的频率fref以及对应的掩码值m需要满足的条件为

Figure BDA0002255851160000031

f1表示基波频率,f2表示二次谐波频率,

Figure BDA0002255851160000033

Δf表示频率分辨率,Δf=fs/N;

滤毛刺模块用于根据掩码值m和参考时钟clk_fre将矩形波信号CARD_CNV中的毛刺滤除,得到矩形波信号CARD_FREQ并发送至频率测量模块;

频率测量模块用于基于测频法或测周法对矩形波信号CARD_FREQ进行测量,得到脉冲计数结果COUNT_T并发送给上位机;

上位机在收到脉冲计数结果COUNT_T后,根据频率测量模块中所应用的测频法或测周法对应的计算公式,计算得到矩形波信号CARD_FREQ的频率,从而得到频率测量结果。

本发明基于FPGA的频率测量系统,输入信号经比较器模块后得到与输入信号同频同相的矩形波信号,ADC模块对输入信号进行采集后采用FFT分析法初步确定输入信号的频率,参考时钟选择模块用于根据初步确定的频率选择一个参考时钟clk_fre作为滤毛刺模块中滤除毛刺成分的时钟源,滤毛刺模块对矩形波信号中的毛刺进行滤除,频率测量模块基于测频法或测周法对滤除后的信号进行测量得到脉冲计数结果,上位机基于脉冲计数结果计算得到输入信号的频率测量结果。

本发明是将现有的频率测量方法结合起来,首先通过FFT分析法得到一个基波的大致频率,基于该大致频率设置滤除毛刺的掩码值和参考时钟频率,再滤除毛刺得到一个与输入信号同频同相的矩形波信号,最后通过测周法或测频法得到输入信号的准确频率,从而在信号中存在谐波成分时对基波频率进行准确测量。

附图说明

图1是本发明基于FPGA的频率测量系统的

具体实施方式

结构图;

图2是本发明中毛刺产生及测频示意图;

图3是本发明毛刺滤除的原理示意图。

具体实施方式

下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。

实施例

图1是本发明基于FPGA的频率测量系统的具体实施方式结构图。如图1所示,本发明基于FPGA的频率测量系统包括比较器模块1,ADC模块2,FFT运算模块3,参考时钟选择模块4,滤毛刺模块5,频率测量模块6和上位机7,其中FFT运算模块3,参考时钟选择模块4,滤毛刺模块5和频率测量模块6在FPGA中实现。下面分别对各个模块进行详细说明。

比较器模块1用于对经过交流耦合后的输入信号进行过0比较,得到与输入信号同频同相的矩形波信号CARD_CNV,并将矩形波信号CARD_CNV输出至滤毛刺模块5。若输入信号为单一频率的正弦波,则比较器模块1输出即为与输入正弦波同频同相的方波,即在一个周期内高电平和低电平时间各占50%。

ADC模块2用于对同一输入信号进行采集,将采集得到的包含N个采样点的采集数据序列ADC_DATA发送至FFT运算模块3。

FFT运算模块3采用FFT分析法初步确定输入信号的频率,具体方法为:将接收到的采集数据序列ADC_DATA进行FFT运算,输出N点的频谱序列,记每一点的频谱包括实部Re[k]和虚部Im[k]两部分,k=1,2,…,N,采用如下公式计算得到k点处的频率能量X[k]:

Figure BDA0002255851160000041

通过比较找出频率能量X[k]的最大值和其对应的点序号kmax,点序号kmax即为基波对应的点序号,将点序号kmax发送给参考时钟选择模块4。假设ADC模块2的采样频率为fs,由于频谱函数以fs/2为对称轴左右对称,因此只需计算0≤k′≤N/2-1范围内的频率能量X[k′],即可以比较得到频率能量的最大值。由于频率分辨率Δf=fs/N,因此kmax对应的频率误差为Δf。

参考时钟选择模块4用于选择一个参考时钟clk_fre作为滤毛刺模块5中滤除毛刺成分的时钟源。

为了更好地说明参考时钟选择模块4的工作过程,首先对本发明中毛刺产生及测频进行简单说明。图2是本发明中毛刺产生及测频示意图。如图2所示,当输入信号中含有谐波成分时,通过比较器模块1输出的矩形波信号CARD_CNV中含有窄脉宽成分,该窄脉宽可以看成是一个毛刺,其宽度记为Tpulse。根据FFT运算模块中得到的基波对应的点序号kmax,则基波频率为

Figure BDA0002255851160000051

由于频率分辨率Δf=fs/N,因此输入的周期信号基波频率实际范围为(f1-Δf/2,f1+Δf/2),周期T1范围为

Figure BDA0002255851160000052

二次谐波频率

Figure BDA0002255851160000053

对应的频率范围为(f2-Δf/2,f2+Δf/2),周期T2范围为

Figure BDA0002255851160000054

由于二次谐波的周期长度是所有谐波周期中最长的,因此只需要将二次谐波所造成的毛刺长度Tpulse滤除,即可得到与输入信号同频同相的矩形波CARD_FREQ。毛刺长度Tpulse范围为

Figure BDA0002255851160000055

需要据此选择参考时钟ref_clk的频率fref

假设m为滤除毛刺成分所需参考时钟的个数,称之为掩码值,则只需要m个参考时钟的时间长度大于毛刺长度即可,那么掩码值m和频率fref需要满足

Figure BDA0002255851160000056

但是由于掩码值m如果过大可能将矩形波信号CARD_CNV中的基波成分滤掉,因此需要令综上所述,掩码值m和频率fref需要满足的条件为

Figure BDA0002255851160000058

由于掩码值m较大时会消耗FPGA内部较多的寄存器资源,因此需要根据基波频率f1的大小来设置不同的档位,合理选择掩码值m和参考时钟频率fref。当基波频率f1较小时,选择频率较低的参考时钟clk_fre;当基波频率f1较大时,选择频率较高的参考时钟clk_fre。参考时钟选择模块4确定掩码值m和参考时钟频率fref后,将掩码值m和参考时钟clk_fre发送给滤毛刺模块5。

滤毛刺模块5用于根据掩码值m和参考时钟clk_fre将矩形波信号CARD_CNV中的毛刺滤除,得到矩形波信号CARD_FREQ并发送至频率测量模块6。图3是本发明毛刺滤除的原理示意图。如图3所示,本发明中毛刺滤除的具体方法为:构建一个长度为m、值全为1的一维数组作为滑动窗口,在矩形波信号CARD_CNV按位滑动,如果若相与后结果全为1或全为0,如图3(a)和3(b)所示,则表示信号CARD_CNV中不存在缺口,CARD_FREQ仍然输出1或0,若相与后出现部分0和部分1的结果,如图3(c),表示矩形波信号CARD_CNV出现缺口或为信号电平跳转处,信号CARD_FREQ输出前一刻的值,经过滤除缺口后,即可得到与输入信号同频同相位的矩形波信号CARD_FREQ。由于本实施例中在设置掩码值和参考时钟clk_fre频率时,使m个参考时钟的时间长度大于毛刺长度而小于基波长度,那么在滑动窗口在遇到毛刺出现时,相与后便出现部分0和部分1的结果,从而采用前一时刻值替换毛刺中的值,实现对毛刺的滤除,而不会对基波造成影响。

频率测量模块6用于基于测频法或测周法对矩形波信号CARD_FREQ进行测量,得到脉冲计数结果COUNT_T并发送给上位机7。例如采用测周法时,当形波信号CARD_FREQ的上升沿到来时,频率测量模块6开始对一个高频时钟信号CLK_SYS进行时钟周期计数,时钟信号CLK_SYS的时钟周期为Tsys,当CNV_FREQ的上升沿第M次到来时,计数器停止工作,从而得到脉冲计数结果COUNT_T。

上位机7在收到脉冲计数结果COUNT_T,根据频率测量模块6中所应用的测频法或测周法对应的计算公式,计算得到矩形波信号CARD_FREQ的频率,从而得到频率测量结果。同样以测周法为例,在得到脉冲计数结果COUNT_T后,则输入信号的周期Tsig=Tsys×COUNT_T/M,输入信号频率fsig=1/Tsig

根据以上描述可知,本发明是将现有的频率测量方法结合起来,首先通过FFT分析法得到一个基波的大致频率,基于该大致频率设置滤除毛刺的掩码值和参考时钟频率,再滤除毛刺得到一个与输入信号同频同相的矩形波信号,最后通过测周法或测频法得到输入信号的准确频率。在实际应用中,可以设置高精度频率测量系统在用户指令下开启频率测量,也可以预设频率测量周期,定时开启频率测量,还可以在后续装置监测到频率改变后,通过反馈指令开启频率测量。

为了更好地说明本发明,采用一个具体实施例对本发明的工作流程进行说明。本实施例中假设ADC模块采样率固定为fs=1MSPS,分辨率为16位,基波信号为50Hz、2Vpp的正弦信号,同时在基波信号上叠加一个100Hz、0.4Vpp的二次谐波信号。本实施例中基于FPGA的频率测量系统的具体工作流程如下:

步骤1:当用户选择测频功能时,上位机模块7发送一个低复位有效信号RST_N=0,对FPGA内部的FFT运算模块3、参考时钟选择模块4、滤毛刺模块5、频率测量模块6进行复位,同时掩码值有效信号valid_m=0,脉冲计数结果COUN_T=0。

步骤2、当复位完成后,上位机7发送复位结束信号RST_N=1。输入信号经过比较器模块1后输出与输入信号同频同相位的矩形波信号CARD_CNV。ADC模块2对输入信号采集后将采集数据序列ADC_DATA发送给FFT运算模块3,FFT运算模块将采集到的N=32768个采样数据做FFT运算,得到32768个点的频谱序列,频率分辨率为Δf=fs/N=30.5Hz。频谱中每一点包括实部Re[k]和虚部Im[k]两部分,通过计算出k点处的频率能量大小,由于频谱函数以fs/2为对称轴左右对称,因此只需要计算0≤k≤16383范围内频率能量X[k]的大小。通过比较频率能量X[k]值的大小得知,k=2时对应的频率能量X[k]值最大,因此kmax=2,并将kmax=2输出给参考时钟选择模块4。

步骤3、本实施例中功率分析仪的采样率为1MHz,因此本实施例中将ref_clk的频率设置为4档:当kmax=0、1时,fref=1KHz;当kmax=2~10时,fref=10KHz;当kmax=11~60时,fref=100KHz;当kmax=61~N/2-1时,fref=100KHz。因此本实施例中参考时钟选择模块4根据kmax=2选择fref=10KHz。基波频率经过计算为

Figure BDA0002255851160000081

二次谐波频率为

Figure BDA0002255851160000082

根据m的取值范围

Figure BDA0002255851160000083

可以计算出m的取值范围为[46.8,65.5],因此设置m=47。参考时钟选择模块4将频率fref和掩码值m发送给滤毛刺模块5,并将掩码值有效信号valid_m信号置高一个系统周期后拉低。

步骤4、滤毛刺模块5判断到掩码值有效信号valid_m的上升沿后即构建一个长度为47、值全1的一维数组,该数组与经过零比较得到的矩形波信号CARD_CNV进行滑动按位与,滤除毛刺后得到矩形波信号CARD_FREQ,将矩形波CNV_FREQ并输出给频率测量模块6。

步骤5、频率测量模块6采用测周法对矩形波信号CARD_FREQ进行测频。当矩形波信号CARD_FREQ的上升沿到来时,寄存器COUNT_T开始对一个高频时钟信号进行周期计数,本实施例中FPGA的系统时钟fsys=100MHz,当矩形波信号CARD_FREQ的上升沿第16次到来时,计数器停止工作。频率测量模块6将脉冲计数结果COUNT_T=3200发送给上位机7。

步骤6、上位机7收到脉冲计数结果COUNT_T=3200后,通过计算得到输入信号的周期为Tsig=Tsys×COUNT_T/16=2000μs,fsig=1/Tsig=50Hz。上位机7将测频结果显示在屏幕上后返回步骤1。若用户关闭测频功能,则FPGA不再进行测频操作。

尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种电力系统中谐波和间谐波的分析方法与装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!