比特流测频装置及方法转让专利

申请号 : CN201810302020.2

文献号 : CN108761201B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何晓龙

申请人 : 何晓龙

摘要 :

本发明公开一种比特流测频装置及方法,定时器中断触发单元产生定时中断并获取待测信号在某一时刻的电平值,每次中断执行时通过电平值读取单元主动去读取外部频率信号输入引脚的电平值并存入比特流缓冲区;当比特流缓冲区采集满后,停止定时器中断,开始对比特流进行数据分析,识别其中的所有上升沿和下降沿,并记录第一个和最后一个沿变化的坐标,计算信号半周期个数;通过中断触发次数计算模块计算每个信号半周期平均占用的中断触发次数,通过中断执行时间计算模块计算定时器中断执行一次的时间,通过待测信号频率计算模块计算待测信号的频率。本发明实际测频上限可扩展至理论上限3倍,精度在千分级别,适用在CPU中进行信号测频的场景。

权利要求 :

1.一种比特流测频方法,其特征在于:所述测频方法中:

通过定时器中断触发单元产生定时中断并获取待测信号在某一时刻的电平值,每次中断执行时通过电平值读取单元主动去读取外部频率信号输入引脚的电平值并存入比特流缓冲区;

当比特流缓冲区采集满后,停止定时器中断,开始对比特流进行数据分析,识别其中的所有上升沿和下降沿,并记录第一个和最后一个沿变化的坐标,计算信号半周期个数;

通过中断触发次数计算模块计算每个信号半周期平均占用的中断触发次数,通过中断执行时间计算模块计算定时器中断执行一次的时间,通过待测信号频率计算模块计算待测信号的频率;

比特流中至少包含一个信号半周期,即至少一个上升沿和下降沿,能测信号的最大周期为6.06ms,最小可测频率设为200Hz;

当测量最小可测频率大于200Hz的待测信号时采用正常模式,当测量频率值处于1Hz-

200Hz之间时采用测低频模式;

当采用测低频模式时,对比特流的采集间隔进行扩大处理,从而扩大比特流缓冲区覆盖的时间片。

2.根据权利要求1所述的一种比特流测频方法,其特征在于:所述测频方法中还包括:通过信号频率处理单元对连续测量若干次的测频信号进行处理,处理的方式被配置为去掉

0值,然后求剩余数值的平均值。

3.根据权利要求1所述的一种比特流测频方法,其特征在于:电平值读取单元通过寄存器的读取外部频率信号输入引脚的电平值,信号半周期为两个相邻沿变化的时间。

4.一种比特流测频装置,采用如权利要求1至3任一项所述的测频方法,其特征在于:所述测频装置包括:定时器中断触发单元,所述定时器中断触发单元用于产生定时中断并获取待测信号在某一时刻的电平值;

电平值读取单元,所述电平值读取单元与所述定时器中断触发单元建立连接关系,电平值读取单元用于在定时器中断触发单元每次中断执行的时候主动读取外部频率信号输入引脚的电平值,并存入比特流缓冲区;

比特流数据分析单元,所述比特流数据分析单元与所述电平值读取单元建立连接关系,比特流数据分析单元包括中断触发次数计算模块、中断执行时间计算模块和待测信号频率计算模块,所述中断触发次数计算模块用于计算每个信号半周期平均占用的中断触发次数,所述中断执行时间计算模块用于计算定时器中断执行一次的时间,所述待测信号频率计算模块用于计算待测信号的频率。

5.根据权利要求4所述的一种比特流测频装置,其特征在于:所述测频装置还包括信号频率处理单元,所述信号频率处理单元与所述比特流数据分析单元建立连接关系,信号频率处理单元用于对连续测量若干次的测频信号进行处理,信号频率处理单元处理的方式被配置为去掉0值,然后求剩余数值的平均值。

6.根据权利要求4所述的一种比特流测频装置,其特征在于:所述测频装置还包括工作模式设置单元,所述工作模式设置单元用于对测频装置的工作模式进行设置,测频装置的工作模式被配置为正常模式和测低频模式。

7.根据权利要求4所述的一种比特流测频装置,其特征在于:所述测频装置还包括采集间隔扩大单元,所述采集间隔扩大单元用于当测频装置处于测低频模式时对待测信号的采集间隔时间进行扩大。

说明书 :

比特流测频装置及方法

技术领域

[0001] 本发明涉及信号测量技术领域,具体涉及一种比特流测频装置及方法。

背景技术

[0002] 比特流原理是二进制的数码信号进入一个有参考电压的模组中,输入信号比参考电压高输出就是1,反之则为0;第二个信号再与第一个信号比较,更高的就输出1,较低输出0,以此类推。因为它只比较信号间的大小,所以样本要增加,需要更高的取样频率。只有一个比特的信号会进入一个叫开关电容(Switched Capacitor)的DAC中,还原成类比信号。
[0003] 目前信号频率测量领域主要有等精度测频、中断触发测频(也称边沿捕获)技术。现有的测频如果需要超高精度(百万级),则需要CPU与FPGA配合处理,但如果为了节省系统成本,或者节省结构空间,由于FPGA的成本较高,只能有一个CPU,而有时候CPU中运行的是非实时系统(如Android系统),现有技术假如理论可测150KHz的信号,但由于非实时系统的影响,便只能测频率较低的信号(50KHz以内)。

发明内容

[0004] 本发明的目的在于提供一种比特流测频装置及方法,可以有效地解决背景技术述及的问题,不仅能够达到理论值,而且实际测频上限可扩展至理论上限的3倍,且精度在千分级别,适用于需要在CPU中进行信号测频的场景。
[0005] 为实现上述目的,本发明的技术方案为:一种比特流测频装置,所述测频装置包括:
[0006] 定时器中断触发单元,所述定时器中断触发单元用于产生定时中断并获取待测信号在某一时刻的电平值;
[0007] 电平值读取单元,所述电平值读取单元与所述定时器中断触发单元建立连接关系,电平值读取单元用于在定时器中断触发单元每次中断执行的时候主动读取外部频率信号输入引脚的电平值,并存入比特流缓冲区;
[0008] 比特流数据分析单元,所述比特流数据分析单元与所述电平值读取单元建立连接关系,比特流数据分析单元包括中断触发次数计算模块、中断执行时间计算模块和待测信号频率计算模块,所述中断触发次数计算模块用于计算每个信号半周期平均占用的中断触发次数,所述中断执行时间计算模块用于计算定时器中断执行一次的时间,所述待测信号频率计算模块用于计算待测信号的频率。
[0009] 如上所述的比特流测频装置,所述测频装置还包括信号频率处理单元,所述信号频率处理单元与所述比特流数据分析单元建立连接关系,信号频率处理单元用于对连续测量若干次的测频信号进行处理,信号频率处理单元处理的方式被配置为去掉0值,然后求剩余数值的平均值。
[0010] 如上所述的比特流测频装置,所述测频装置还包括工作模式设置单元,所述工作模式设置单元用于对测频装置的工作模式进行设置,测频装置的工作模式被配置为正常模式和测低频模式。
[0011] 如上所述的比特流测频装置,所述测频装置还包括采集间隔扩大单元,所述采集间隔扩大单元用于当测频装置处于测低频模式时对待测信号的采集间隔时间进行扩大。
[0012] 本发明还提供一种比特流测频方法,所述测频方法采用上述的测频装置,所述测频方法中:
[0013] 通过定时器中断触发单元产生定时中断并获取待测信号在某一时刻的电平值,每次中断执行时通过电平值读取单元主动去读取外部频率信号输入引脚的电平值并存入比特流缓冲区;
[0014] 当比特流缓冲区采集满后,停止定时器中断,开始对比特流进行数据分析,识别其中的所有上升沿和下降沿,并记录第一个和最后一个沿变化的坐标,计算信号半周期个数;
[0015] 通过中断触发次数计算模块计算每个信号半周期平均占用的中断触发次数,通过中断执行时间计算模块计算定时器中断执行一次的时间,通过待测信号频率计算模块计算待测信号的频率。
[0016] 如上所述的比特流测频方法,所述测频方法中还包括:通过信号频率处理单元对连续测量若干次的测频信号进行处理,处理的方式被配置为去掉0值,然后求剩余数值的平均值。
[0017] 如上所述的比特流测频方法,电平值读取单元通过寄存器的读取外部频率信号输入引脚的电平值,信号半周期为两个相邻沿变化的时间。
[0018] 如上所述的比特流测频方法,所述测频方法中,当测量最小可测频率大于200Hz的待测信号时采用正常模式,当测量频率值处于1Hz-200Hz之间时采用测低频模式。
[0019] 如上所述的比特流测频方法,当采用测低频模式时,对比特流的采集间隔进行扩大处理,从而扩大比特流缓冲区覆盖的时间片。
[0020] 本发明具有如下优点:可以有效地解决解决在CPU中(尤其是Android系统中)无法测量中高频信号的问题,不仅能够达到理论值,而且实际测频上限可扩展至理论上限的3倍,且精度在千分级别,对于需要在CPU中进行信号测频的场景非常实用,同时可节省硬件成本和结构空间,省去了FPGA的成本。

附图说明

[0021] 图1为比特流测频装置示意图;
[0022] 图2为本发明实施例中比特流采集示意图;
[0023] 图3为本发明实验数据的频率波动率曲线图;
[0024] 图4为本发明测量值与实际值关系图;
[0025] 图5为本发明提高测频上限到理论上限的3倍说明图;
[0026] 图6为本发明实施例中比特流测频方法流程图。

具体实施方式

[0027] 以下实施例用于说明本发明,但不用来限制本发明的范围。
[0028] 参见图1,一种比特流测频装置,所述测频装置包括:
[0029] 定时器中断触发单元1,所述定时器中断触发单元用于产生定时中断并获取待测信号在某一时刻的电平值;
[0030] 电平值读取单元2,所述电平值读取单元2与所述定时器中断触发单元1建立连接关系,电平值读取单元2用于在定时器中断触发单元1每次中断执行的时候主动读取外部频率信号输入引脚的电平值,并存入比特流缓冲区;
[0031] 比特流数据分析单元3,所述比特流数据分析单元3与所述电平值读取单元2建立连接关系,比特流数据分析单元3包括中断触发次数计算模块301、中断执行时间计算模块302和待测信号频率计算模块303,所述中断触发次数计算模块301用于计算每个信号半周期平均占用的中断触发次数,所述中断执行时间计算模块302用于计算定时器中断执行一次的时间,所述待测信号频率计算模块303用于计算待测信号的频率。
[0032] 参见图2,本发明,中断触发处的波形为定时器中断触发等效转化为的波形,并非实际存在的波形,只是为了方便理解,且每次中断触发的时间间隔也不是完全相等的,存在微小差距。针对MT6735平台,每次中断的时间为3.03us左右。以采集到的比特流为“101010010”为例,实际代码实现时该比特流缓冲区有1000个,识别其中的所有上升沿和下降沿,并记录第一个和最后一个沿变化的坐标,此处分别为1、7;同时计算这个区间的信号半周期(两个相邻沿变化间为一个信号半周期)个数,此处为5。另外,为了使比特流采集结果具有随机性,每采集5次(该次数根据需求自行调整),取最后一次采集结果,同时记录5次采集所花的总时间period(单位:us)。
[0033] 测信号的频率计算公式如下:
[0034]
[0035] 其中“乘1000”是为了保留3位小数位,以支持小数频率测频。
[0036] 识别出上述信息后,便开始计算。首先计算每个信号半周期平均占用的中断触发次数,此处为6/5=1.2;以及定时器中断执行一次的时间为period/9(比特流缓冲区长度)/5(每次采集次数),此处计算结果为3.03us;那么最后计算出来的待测信号的频率freq=10^6/(1.2*2*3.03)=137513Hz。
[0037] 比特流测频装置的一个实施例中,所述测频装置还包括信号频率处理单元4,所述信号频率处理单元4与所述比特流数据分析单元3建立连接关系,信号频率处理单元4用于对连续测量若干次的测频信号进行处理,信号频率处理单元4处理的方式被配置为去掉0值,然后求剩余数值的平均值。由于非实时系统中测频存在太多的影响因素,导致测量结果不够稳定,为了解决该问题,通过连续测量多次(本实施例中采取20次)后,对结果进行特殊处理,从而得到更加稳定的结果。处理方式为去掉0值,然后求剩余数值的平均值。
[0038] 比特流测频装置的一个实施例中,所述测频装置还包括工作模式设置单元5,所述工作模式设置单元5用于对测频装置的工作模式进行设置,测频装置的工作模式被配置为正常模式和测低频模式。
[0039] 比特流测频装置的一个实施例中,所述测频装置还包括采集间隔扩大单元6,所述采集间隔扩大单元6用于当测频装置处于测低频模式时对待测信号的采集间隔时间进行扩大。
[0040] 参见图6,本发明还提供一种比特流测频方法,所述测频方法采用上述的测频装置,所述测频方法中:
[0041] S1:通过定时器中断触发单元1产生定时中断并获取待测信号在某一时刻的电平值,每次中断执行时通过电平值读取单元2主动去读取外部频率信号输入引脚的电平值并存入比特流缓冲区;
[0042] S2:当比特流缓冲区采集满后,停止定时器中断,开始对比特流进行数据分析,识别其中的所有上升沿和下降沿,并记录第一个和最后一个沿变化的坐标,计算信号半周期个数;
[0043] S3:通过中断触发次数计算模块301计算每个信号半周期平均占用的中断触发次数,通过中断执行时间计算模块302计算定时器中断执行一次的时间,通过待测信号频率计算模块303计算待测信号的频率。
[0044] 本发明的测频方法在测频率较高的信号时,即使漏掉个别沿变化,对最终测量结果的影响也是微乎其微。此处可通过公式进行理论验证:如果漏掉1个沿变化,即信号半周期个数少2,而当信号频率较高时,信号半周期个数接近比特流缓冲区长度(1000),且首末次沿变化坐标之差也接近比特流缓冲区长度(1000),也即理论计算应为1000/1000=1,漏掉一个沿变化的计算为1000/998=1.002,对测量结果的影响为千分之二,且当比特流缓冲区长度越大时,其影响就越小。
[0045] 比特流测频方法的一个实施例中,所述测频方法中还包括:通过信号频率处理单元4对连续测量若干次的测频信号进行处理,处理的方式被配置为去掉0值,然后求剩余数值的平均值。
[0046] 比特流测频方法的一个实施例中,电平值读取单元2通过寄存器的读取外部频率信号输入引脚的电平值,信号半周期为两个相邻沿变化的时间。
[0047] 比特流测频方法的一个实施例中,所述测频方法中,当测量最小可测频率大于200Hz的待测信号时采用正常模式,当测量频率值处于1Hz-200Hz之间时采用测低频模式。
[0048] 比特流测频方法的一个实施例中,当采用测低频模式时,对比特流的采集间隔进行扩大处理,从而扩大比特流缓冲区覆盖的时间片。
[0049] 正常情况,一次中断时间为3.03us,那么整个比特流缓冲区(1000个)则代表3.03ms。另外,如果要能够根据比特流计算出频率,则比特流中必须至少包含一个信号半周期(即至少一个上升沿和下降沿)。因此,能测信号的最大周期为3.03*2ms=6.06ms,即最小频率165Hz,为了避免临界问题,将最小可测频率设为200Hz。
[0050] 那么对于频率处于1Hz-200Hz之间的信号,需要采取新的模式测量,即将比特流的采集间隔扩大(相当于扩大了比特流缓冲区所覆盖的时间片),本案例采用扩大333倍,即约为1ms采集一个比特,则整个比特流缓冲区代表1s,而1Hz信号的半周期为0.5s,因此足以测出1Hz-200Hz区间的频率,且计算方式与正常模式完全一致。但为了节省测频时间,且考虑到低频信号比较稳定,因此该模式下不需要连续采样和连续计算多次,只需一次即可。为了区分,将这两种模式命名为正常模式(Normal Mode)和测低频模式(Low Mode),且通过标识量mode来识别,0标识正常模式,1标识测低频模式。
[0051] 正常模式:一次测频耗时=一次中断时间(3.03us)*比特流缓冲区长度(1000)*连续采样N次(5)*连续计算M次(20)=303ms,
[0052] 测低频模式:一次测频耗时=一次中断时间(3.03us)*比特流采集间隔(333)*比特流缓冲区长度(1000)*连续采样N次(1)*连续计算M次(1)=1s,如果对测频时间有更高的要求,可以对其进行进一步优化,如减少连续采样次数、减少连续计算次数、减小比特流缓冲区长度等。
[0053] 参见图3,通过短时间内连续测量,计算频率波动率,以及对大量数据进行对比分析,最终发现超理论上限后的频率波动率会陡升,以理论上限为分界线,前后存在着明显的差距。其中频率波动率(rate)的计算方式:短时间内连续测量20次频率值(连续采集N次比特流取最后一次计算称为一次测量),对其进行从小到大排序,去掉0值,同时去掉最小的2个值和最大的2个值,然后找出剩余值中的最大值max和最小值min,则:
[0054]
[0055] 其中乘以1000000表示波动率100%扩大了1000000倍,因此计算结果1000表示0.1%。
[0056] 根据频率波动率曲线图可以看出,最大可测频率为495KHz,但当波动率处于尖峰扇区时,无法分辨出是本身还是3倍关系。为了能够通过波动率显著的区分这两者,只有将最大可测频率设为(理论上限–左叶)*3,即(165-15)*3=450KHz。如此,当波动率处于尖峰扇区时,且测量值在左叶区间时,可以判定为本身值;当波动率在频率波动率0附近时可以判定为本身值;当波动率在频率波动率1附近时可以判定为3倍关系。参见图4,当测量值小于50KHz时,不需要做任何判断;当测量值在50KHz到150KHz之间时,需要根据频率波动率判断对应的哪种关系;当测量值在150KHz到理论上限(165KHz)之间时,也无需判断。
[0057] 当信号频率处于理论上限以内时,一次中断处理的时间小于信号半周期,因此可以稳定的检测到每个沿变化。但当信号频率超过理论上限后,中断处理时间大于信号半周期,那么比特流转换的波形会被扩展成频率更小的波形,且每次转换的结果波动相对较大,从而导致频率波动率变大。
[0058] 另外,当信号频率小于理论上限,且逐渐趋近理论上限时,由于中断处理时间无限接近信号半周期,使得个别沿变化处被扩展,导致波动率突然陡升。
[0059] 以单片机通过GPIO口产生方波信号,输入到MTK开发板MT6735进行测试,实验数据如下所示:
[0060] f(实际值) f(测量值) rate(波动率) 误差1Hz 1.002Hz 0 0.20%
100Hz 100.2Hz 0 0.20%
1KHz 1.001KHz 0.6%(0.3-0.7) 0.10%
10KHz 10.008KHz 0.45%(0.3-0.6) 0.08%
50KHz 50.05KHz 0.45(0.3-0.6) 0.10%
100KHz 99.8KHz 0.4%(0.3-0.6) 0.20%
125KHz 124.8KHz 0.45%(0.3-0.6) 0.16%
160KHz 161KHz 3%(2-4) 0.63%
245KHz 243.5KHz 2%(1-4) 0.60%
445KHz 443KHz 3%(2-4) 0.45%
[0061] 表格中的波动率为内部判断用到,不是最终结果的波动率。
[0062] 参见图5,通过大量的数据及图形分析得出,每一个测量值都对应着两种频率,一个是本身,另一个是3倍关系,而这两者的区分可通过短时间内连续多次测量后计算频率波动率来识别,因为这两者的波动率存在着非常明显的差别。当以同样的定时器中断去采集更高频率信号(假设250KHz)的比特流时,当待测信号频率超过理论上限后,转换的波形所对应的频率为实际频率的1/3,针对其他高频率信号的比特流图,均存在此关系。由于是3倍的关系,因此扩展后的上限最多也只能到理论上限的3倍。
[0063] 本发明可以有效地解决解决在CPU中(尤其是Android系统中)无法测量中高频信号的问题,不仅能够达到理论值,而且实际测频上限可扩展至理论上限的3倍,且精度在千分级别,对于需要在CPU中进行信号测频的场景非常实用,同时可节省硬件成本和结构空间,省去了FPGA的成本。
[0064] 虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。