一种基于Cordic算法的瞬时测频方法转让专利

申请号 : CN202111499788.1

文献号 : CN114184837B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 余骁禹曾浩王猛郭连平田雨蒋俊田书林

申请人 : 电子科技大学成都菁汇科技有限公司

摘要 :

本发明公开了一种基于Cordic算法的瞬时测频方法,通过每一路信号与相邻信号的关系,对应差分信号的关系,构造差分等式,再借助FPGA中Cordic算法内核,快速求解差分算法的结果,然后利用信号的自相关性,对信号进行计算和补偿,最后利用采样特性,求解出信号频率。本发明巧妙利用数学变化和信号本身的特性,通过数学变化和内置核计算,大大减小了对大量数据源的依赖性。同时,本发明利用的是相邻信号的特性推导,减少了对周期性或标准性的依赖,可以支持单路和多路结构的瞬时频率测量。

权利要求 :

1.一种基于Cordic算法的瞬时测频方法,其特征在于,分为常规测量和精准测量两种模式,常规测量模式包括以下步骤:(1)、使能计算

提供一使能接口,用户只需要在想要进行操作的时候,通过上位机或硬件系统固化的按钮,进行使能操作,即可开始进行计算并自动返回值;

(2)、传入采样频率,信号路数

默认进行单路信号的计算,系统采样频率默认采用ADC的采样频率,但同时提供多路操作;如果采用默认值,则直接进入步骤(3),如果需要进行多路操作,用户需要将多路操作的使能信号设置为1,并且通过上位机或者固化旋钮更改采样路数;

(3)、赋值输入值

如果检测到步骤(1)中的多路操作的使能信号为0,则直接将单路信号的I/Q两路信号作为输入信号;如果检测到步骤(1)中的多路操作的使能信号为1,则将任意相邻两路中每一路的cos、sin信号拼接复合信号{sin,cos},得到两路复合信号,作为本发明的输入信号;

(4)、计算频率

4.1)、对于单路信号,将接收的I/Q信号I(n)、Q(n)视为复信号Z(n),复信号Z(n)满足:Z(n)=I(n)+jQ(n),将复信号Z(n)按奇偶性切分成两路信号,一路记为信号Signal1,另一路记为信号Signal2;保持信号Signal1不变,信号Signal2做一个时钟的延迟以得到信号Signal3;

对于多路信号,将所述相邻的两路信号一路作为信号Signal1、另一路作为信号Signal3;

4.2)、将信号Signal3进行共轭变换,得到信号Signal4,即Signal4=Signal3*,*为共轭变换;

4.3)、将共轭变换得到的信号Signal4与保持不变的信号Signal1做点乘,得到新复信号R(n)=Signal1*Signal4=I′(n)+jQ′(n),即新复信号R(n)的实部和虚部依次表示为I′(n)和Q′(n);

4.4)、将对新复信号R(n)的虚部Q′(n)和实部I′(n)的商,求取反正切,得到:在硬件系统上,求取反正切使用到Cordic算法,通过商值的大小和正负,构造Cordic算法的输入值;

4.5)、根据新复信号R(n)的实部I′(n)的正负性,利用瞬时自相关性,对得到的α(n)进行取π运算,得到β(n),即:当实部I′(n)大于等于0时,β(n)=α(n),当实部I′(n)小于0时,β(n)=α(n)+π;

4.6)、结合采样频率fs,计算求解信号的频率f(n):

(5)、输出测频结果和输出结果使能信号

当检测到输出结果使能信号后,即可接受输出结果,输出结果已绑定地址,用户可从对应接口或上位机中直接读取读出测量结果,所配套的上位机,已包含了信号的自动解析代码,会将接收到的信号,自动转换为10进制数据,并保留小数点后3位数据;

精准测量模式分别为精准模式1、精准模式2,精准模式2是在精准模式1的基础上,再进行额外精准计算,只针对多路信号,可执行该操作,如果单路信号,选择了精准模式2,则会自动切换为精准模式1,用户可以通过上位机或者固化按钮,使能精准模式;

启用精准测量模式后,会按上述步骤(2)到(5)的步骤执行,然后在此基础上,执行步骤(6):(6)、对信号频率f(n)进行卡尔曼滤波,得到稳定输出的信号频率f′(n):默认每1024个点取一次综合值,每128个点,作为观测数据放入卡尔曼滤波函数,进行迭代.卡尔曼滤波,利用线性系统状态方程,对系统状态进行最优估计,从而输出系统的最优质的预测,即信号频率f′(n);

用户如果想要精度更高的结果,可以开启精准模式2,精准模式2会先执行步骤(2)到(5),然后执行步骤(6);精准模式2下,会将步骤(3)中的输入信号,改为所有路的输入信号,即步骤(4)、(5)、(6)的步骤,都是对每两两信号进行,然后对步骤(6)中得到的所有数据进行均值计算,作为输出结果,同时,精准模式2将该结果一定范围内的变化值,作为阈值量程,如果后续测量的结果不在阈值范围之类,则不作为观测数据传入卡尔曼滤波函数。

说明书 :

一种基于Cordic算法的瞬时测频方法

技术领域

[0001] 本发明属于电子测量技术领域,更为具体地讲,涉及一种基于Cordic算法的瞬时测频方法,用于基于零中频架构的I/Q信号的瞬时频率测量。

背景技术

[0002] 随着通信领域的高速发展和不断应用,瞬时测频已经变成了通信系统中尤为重要的一项技术指标。不论是在雷达定位、信号捕捉、遥感测量、精密仪器等各方面,瞬时测频都起着关键性的作用。目前,应用最广泛的瞬时测频方法大多是采用了理论成熟的快速傅里叶变换(FFT)的原理,通过信号本身的相位差特性来进行计算。但其中大部分算法都是依赖于软件计算的准确性,并未考虑到高性能FPGA芯片的计算精度和时间复杂度等问题。
[0003] FPGA由于本身的特性,对于小数的弱化和正负数的复杂化,决定了FPGA本身对于复杂算法的局限性。同时,由于FPGA大多数是基于时序逻辑的设计,这又增大了算法对信号的处理。CORDIC算法利用坐标旋转算法,通过简便计算实现部分复杂的数学计算,以此来解决FPGA中一些复杂的数学计算问题。
[0004] 传统的瞬时测频方法的劣势,主要包括以下几个方面:
[0005] 1、对数据的需求量过大,需要大量完整的数据进行迭代。如果提供的数据量不足,则会大幅度影响结果。
[0006] 2、公式或计算太过于复杂,FPGA要求很高的时序性,而且FPGA是由大量的门计算组成,如果有太多太复杂的公式或者计算,很容易导致FPGA的计算逻辑混乱。
[0007] 3、依赖整周期数据,或者需要明确周期点,有些算法是采用了信号的周期变换特性计算,需要依赖周期的信息,但在实时采样系统中很难实现。
[0008] 4.对I/Q两路信号的标准性太过于依赖。零中频构架中,经由晶振将信号转换为幅度相同,相位正交的I/Q两路信号。在这个过程中,必然会产生误差,产生的两路信号,必然伴有幅度和相位的误差,有些算法是基于I/Q两路信号完全正交,或幅度完全相等的特性计算,这些算法在实际硬件系统中会很容易出现信号偏移。
[0009] 5、多路信号制约性,当前主流算法,都是对一路信号进行分析,但在新的零中频构架中,由于造价、结构等转变,设计新型分路系统(分4路,分8路等),已经越来越多,而对于测量单路信号的算法,特别是对频率测量计算,在多路系统中的使用,是很受到局限的。
[0010] 可以看出,当前大多数传统瞬时测频方法,对数据量、数据完整性、特有性,都有较高的要求,特别是在新型结构的适用性,算法的效率性上,都显得复杂,效率低下。

发明内容

[0011] 本发明的目的在于克服现有技术的不足,提出一种基于Cordic算法的瞬时测频方法,以减小对大量数据源的依赖性,同时减少对周期性或标准性的依赖。
[0012] 为实现上述发明目的,本发明基于Cordic算法的瞬时测频方法,其特征在于,包括以下步骤:
[0013] (1)、对于单路信号,将接收的I/Q信号I(n)、Q(n)视为复信号Z(n),复信号Z(n)满足:Z(n)=I(n)+jQ(n),将复信号Z(n)按奇偶性切分成两路信号,一路记为信号Signal1,另一路记为信号Signal2;保持信号Signal1不变,信号Signal2做一个时钟的延迟以得到信号Signal3;
[0014] 对于多路信号,直接将相邻的两路信号一路作为信号Signal1、另一路作为信号Signal3;
[0015] (2)、将信号Signal3进行共轭变换,得到信号Signal4,即Signal4=Signal3*,*为共轭变换;
[0016] (3)、将共轭变换得到的信号Signal4与保持不变的信号Signal1做点乘,得到新复信号R(n)=Signal1*Signal4=I′(n)+jQ′(n),即新复信号R(n)的实部和虚部依次表示为I′(n)和Q′(n);
[0017] (4)、将对新复信号R(n)的虚部Q′(n)和实部I′(n)的商,求取反正切,得到:
[0018]
[0019] 在硬件系统上,求取反正切使用到Cordic算法,通过商值的大小和正负,构造Cordic算法的输入值;
[0020] (5)、根据新复信号R(n)的实部I′(n)的正负性,利用瞬时自相关性,对得到的α(n)进行取π运算,得到β(n),即:当实部I′(n)大于等于0时,β(n)=α(n),当实部I′(n)小于0时,β(n)=α(n)+π;
[0021] (6)、结合采样频率fs,计算求解信号的频率f(n):
[0022]
[0023] (7)、信号频率f(n)进行卡尔曼滤波,得到稳定输出的信号频率f′(n)。
[0024] 本发明目的是这样实现的:
[0025] 本发明基于Cordic算法的瞬时测频方法通过每一路信号与相邻信号的关系,对应差分信号的关系,构造差分等式,再借助FPGA中Cordic算法内核,快速求解差分算法的结果,然后利用信号的自相关性,对信号进行计算和补偿,最后利用采样特性,求解出信号频率。本发明巧妙利用数学变化和信号本身的特性,通过数学变化和内置核计算,大大减小了对大量数据源的依赖性。同时,本发明利用的是相邻信号的特性推导,减少了对周期性或标准性的依赖,可以支持单路和多路结构的瞬时频率测量。

附图说明

[0026] 图1是本发明使用的零中频构架分I/Q两路信号示意图;
[0027] 图2是本发明基于Cordic算法的瞬时测频方法一种具体实施方式流程图;
[0028] 图3是使用的Cordic算法的向量转换示意图。

具体实施方式

[0029] 下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0030] 为了更好地说明本发明的技术方案,首先对零中频构架进行简单介绍。
[0031] 无线移动通信的射频(RF)收发机,是通信系统中最为常见的系统之一,常见的射频接收机构架,主要包括有超外差构架、低中频构架、零中频构架和带通采样无线电收发构架。其中零中频接收机构架,凭借着去除中频处理单元,从而大大降低成本和构架,以及零中频采用有源低通滤波器,使其接收机更容易设计等优势,使得零中频构架在通信领域被广为关注,实用性也更广。
[0032] 如图1所示,使用零中频构架的接收机中,几乎都是利用了I/Q信号。I/Q信号是电子电路中最常见的射频信号,其中I(In‑phase)表示同相,Q(Quadrature)表示正交,既与I信号相位差90°,这里得到的IQ信号,即为本发明中所需要提供的输入值。
[0033] 前文已叙述,本发明解决了需要成倍或者整周期采样的限制,本发明可以从被采样数据的任意点开始进行分析。在本发明中,被测量的信号,只要能被完整采样,即满足奈奎斯特采样定理(被采样信号不超过采样频率的一半时),就可被稳定准确的测量出频率,针对多路信号,被采样信号不超过每一路采样频率与路数总和乘积的一半。
[0034] 针对本发明在测量仪器中的具体实施,主要分成了常规测量和精准测量两种模式,精准测量是在常规测量的基础上,进行了额外的优化数据操作,数据精度会得到提升,但会限制数据反馈速率,用户可根据具体的测量需求,决定自己采用的模式。常规测量模式的具体操作方法,包括如下步骤:
[0035] 步骤S1:产生I/Q信号
[0036] 首先任意波发生器输出端或任意信号发生器与烧录有本发明的硬件版相连,产生任意满足采样定律的信号,通过一系列的采样、分路等操作,产生稳定的I/Q信号。
[0037] 步骤S2:使能计算
[0038] 为了减少无用计算,同时为了增加用户的可操作性,在本实施例中,给予用户决定何时需要执行瞬时测频的操作,一般来说,瞬时测频的指标计算迅速,结果稳定,用户并不需要在所有时刻进行测量。在本实施例中,本发明提供使能接口,用户只需要在想要进行操作的时候,通过上位机或硬件系统固化的按钮,进行使能操作,即可开始进行计算并自动返回值。
[0039] 步骤S3:传入采样频率,信号路数
[0040] 在本实施例中,默认进行单路信号的计算,系统采样频率默认采用ADC的采样频率,但同时提供多路操作。如果采用默认值,则直接进入步骤S4。如果需要进行多路操作,用户需要将多路操作的使能信号设置为1,并且通过上位机或者固化旋钮更改采样路数,该系统支持分4路I/Q,分8路I/Q等操作.注意,原则上修改多路情况的时候,系统频率会自动更新,如果需要手动更新,在本实施例中,支持传入32位16进制单精度浮点型的采样频率。
[0041] 步骤S4:赋值输入值:
[0042] 如果检测到S3中的多路操作的使能信号为0,则直接将单路信号的I/Q两路信号作为本发明的输入信号,该系统会自动将传入的系统时钟做两倍扩展,将传入的I/Q信号,自动切分成4路信号Signal1~4。
[0043] 如果检测到S3中的多路操作的使能信号为1,则将任意相邻两路中每一路的cos、sin信号拼接复合信号{sin,cos},得到两路复合信号,作为本发明的输入信号。该系统会将传入的两路复合信号,再进行分割,得到相邻两路信号每一路的cos、sin信号共4路信号,即有第一路信号的复信号R和与其相邻的信号的复信号R。
[0044] 步骤S5:计算频率:
[0045] 在本实施例中,检测到使能信号和输入信号后,就会开始执行瞬时测频的操作,具体操作按图2所示流程图执行。
[0046] 图2是本发明基于Cordic算法的瞬时测频方法一种具体实施方式流程图。
[0047] 在本实施例中,本发明基于Cordic算法的瞬时测频方法,包括以下步骤:
[0048] 步骤S501:输入被测信号处理为两路信号
[0049] 对于单路信号,将接收的I/Q信号I(n)、Q(n)视为复信号Z(n),复信号Z(n)满足:Z(n)=I(n)+jQ(n),将复信号Z(n)按奇偶性切分成两路信号,一路记为信号Signal1,另一路记为信号Signal2;保持信号Signal1不变,信号Signal2做一个时钟的延迟以得到信号Signal3。
[0050] 对于多路信号,直接将相邻的两路信号一路作为信号Signal1、另一路作为信号Signal3。
[0051] 步骤S502:共轭变换
[0052] 将信号Signal3进行共轭变换,得到信号Signal4,即Signal4=Signal3*,*为共轭变换。
[0053] 步骤S503:做点乘运算
[0054] 将共轭变换得到的信号Signal4与保持不变的信号Signal1做点乘,得到新复信号R(n)=Signal1*Signal4=I′(n)+jQ′(n),即新复信号R(n)的实部和虚部依次表示为I′(n)和Q′(n)。
[0055] 步骤S504:求取反正切
[0056] 将对新复信号R(n)的虚部Q′(n)和实部I′(n)的商,求取反正切,得到:
[0057]
[0058] 在硬件系统上,求取反正切使用到Cordic算法,通过商值的大小和正负,构造Cordic算法的输入值。
[0059] Cordic算法是Xilinx公司2021年8月6日发布的CORDIC v6的LogiCore IP手册。如图3所示,该算法的输入向量(X,Y)不支持直接输入,是通过构造正弦、余弦构成。由于正余弦值都∈[‑1,1]。这本身就给我们输入从后向有限差分法得到的反正切角,带来了极大的问题。
[0060] 为了解决这一问题,这里采用了倒数的方法,即:
[0061]
[0062] 同样需要注意的是,即是对|y/x|<1的比较,由于FPGA中本身没有绝对值的求解,也没有对有符号数的负数的比较。所以这里一定要保证Cordic算法的输入值得有效性,需要保留足够的精度,当被计算的数据够大时,需要保留足够的预留位。
[0063] 步骤S505:取π运算
[0064] 根据新复信号R(n)的实部I′(n)的正负性,利用瞬时自相关性,对得到的α(n)进行取π运算,得到β(n),即:当实部I′(n)大于等于0时,β(n)=α(n),当实部I′(n)小于0时,β(n)=α(n)+π;
[0065] 步骤S506:求解信号的频率
[0066] 结合采样频率fs,计算求解信号的频率f(n):
[0067]
[0068] 步骤S507:信号频率f(n)进行卡尔曼滤波,得到稳定输出的信号频率f′(n)。
[0069] 步骤S6:输出测频结果和输出结果使能信号
[0070] 当系统检测到本发明的输出结果使能信号后,即可接受输出结果,输出结果已绑定地址,用户可从对应接口或上位机中直接读取读出测量结果。本发明所配套的上位机,已包含了信号的自动解析代码,会将接收到的信号,自动转换为10进制数据,并保留小数点后3位数据。
[0071] 步骤S7:信号切换
[0072] 在常规模式中,本发明所执行的算法,实时接收,处理数据,不需要依赖历史数据,所以用户在测量了一组信号,想要继续测量其他信号(或信号本身发生变化后),只要使能信号仍然置为有效,系统会自动进行步骤S3到S6的步骤,数据会自动计算,实时更新.但本发明同样提供复位信号,用户可以根据需求,重置并初始化该算法的输入。注意在精准模式下,如果用户需要测量变化信号,强制必须进行复位操作。
[0073] 测试结果及分析
[0074] 本发明所提供的常规模式,支持大部分的瞬时测频的计算。但对于复杂信号,或信号本身由于采样、硬件等原因,产生的信号误差较大的情况,常规模式测量的信号结果会出现较大误差,这并不是本发明错误所致,是由于输入信号本身就已经失真,或携带了较大误差。针对这种现象,本发明提供精准测量模式,极大的稳定了测量的效率。该系统默认情况下,单路信号采用标准模式,多路信号采用精准模式,用户可以通过传递精准模式使能信号,将标准模式改为精准模式进行测量,但不支持反向操作。
[0075] 本发明提供两种精准测量模式,还包括如下步骤:
[0076] 步骤S8:启用精准模式
[0077] 在本实施例中,用户可以通过上位机或者固化按钮,使能精准模式。注意,精准模式有两个模式,分别为精准模式1、精准模式2。精准模式2是在精准模式1的基础上,再进行额外精准计算,只针对多路信号,可执行该操作。如果单路信号,选择了精准模式2,则会自动切换为精准模式1。
[0078] 步骤S9:卡尔曼滤波
[0079] 启用精准模式后,会按上述步骤S3到S6的步骤执行,然后在此基础上,进行卡尔曼滤波,本发明的支持的操作中,默认每1024个点取一次综合值(用户可以根据自己的精度需求和效率需求,通过上位机传入综合点的频率,最小支持128,最大不超过8096),每128个点,放入卡尔曼滤波函数,进行迭代.卡尔曼滤波可以利用输入观测数据,利用线性系统状态方程,对系统状态进行最优估计,从而输出系统的最优质的预测。
[0080] 步骤S10:多路均值与阈值设置:
[0081] 通过步骤S9的滤波以后,已经能够得到非常精准的测量经过,但用户如果想要精度更高的结果,可以开启精准模式2。该模式会一定程度上降低运行效率,用户需要根据自己的测量需求来进行选择。
[0082] 精准模式2会先执行步骤S3到S6的步骤,然后执行步骤S9,需要注意的是,该模式下,会将步骤S4中的输入信号,改为所有路的输入信号,即步骤S5、S6、S9的步骤,都是对每两两信号进行,如4路并行,则相当于同时进行4组S5、S6、S9的运算。然后对步骤S9中得到的所有数据进行均值计算,作为输出结果。同时,该模式将该结果一定范围内的变化值(如:±10%),作为阈值量程,如果后续测量的结果不在阈值范围之类,则不作为参考观测数据传入卡尔曼滤波函数。
[0083] 步骤S11:输出卡尔曼滤波结果优化值:
[0084] 雷同于步骤S6,当精准模式启动后,步骤S6的输出结果有效使能会自动关闭,在卡尔曼滤波结果有效会,置位卡尔曼滤波结果有效会自动使能,并返回输出信号给上位机。
[0085] 步骤S12:测量完毕:
[0086] 用户测量完毕,或者不需要使用此功能时,可以通过上位机或固化硬件,将本发明的使能信号置为0,至此,该模块的所有功能、测试切换按钮全部无法在操作。
[0087] 实时性分析
[0088] 本发明的执行过程,从发送有效使能信号开始立即执行,从发送无效使能信号立马执行结束程序。当信号切换或功能模块切换时,立即发送重置信号。
[0089] 瞬时测量的实时性,主要依赖于两个因素,1.纳入计算的被采样数据的容量大小;2.硬件实施算法时,为了满足时序稳定和结果正确,所执行的延时。简单来说,就是在结果正确的情况下,需要依赖的输入数据越少,执行算法的计算量越简单,实时性越高。
[0090] 1、在数据依赖方面,和常见的算法需要依赖大量数据或整周期数据不同,本发明采用的算法,原则上只需要两个精确测量的点(IQ各一个),就可以得出正确的结果,而在实际执行过程中,会把每一组采样的点,作为数据输入进行传递,依次计算。由此可知,在数据依赖方面,本发明的实时性很高,满足实际应用要求。
[0091] 2、在硬件实施算法方面,由于依托于Cordic算法,本发明的绝大多数运算(除了构造Cordic参数),都是定点数的基本加减乘除运算。算法在硬件平台上的实时性很高,具体操作和选用的数据数位以及精度有关。
[0092] 在本发明所使用的硬件平台上,进行实时性分析,得到如下结果(该测量结果在分8路信号,系统频率为一路156.25M下进行):
[0093] 1、针对不使用卡尔曼滤波算法的标准模式,测量从使能该模块到得到稳定信号频率所需时间为几百ns,选用的数据位越多,需要的时间可能越多。
[0094] 2、针对使用了卡尔曼滤波算法的精准模式,由于卡尔曼滤波有对累计数据的计算,这里的实时性与上述步骤S9中选取的点数有关.当选取的点数为1024时,则会自己累计1024个数据,即会延迟1024个时钟得到结果,即约6.5μs,叠加卡尔曼滤波的迭代过程,会有约10余μs的时间消耗。同理,当累计数据越多的时候,数据精度会越高,但实时性会随之下降。
[0095] 从数据结果可以得出结论,本发明测试结果正常,数据稳定可靠,实时性高,能满足实际应用要求。
[0096] 测量结果及分析
[0097] 表1是在部分实测数据中得到的测量结果。从测量数据得出,本发明在实际测量的精度很高,误差较小。
[0098]
[0099]
[0100] 表1
[0101] 通过以上功能的测试与结果分析,本发明的瞬时测频取得了较好效果。本发明在此测试模块的基础上,结合上位机进行测量,并增强用户体验感。针对当前主要测频算法所存在的数据依赖性过强,算法计算量在硬件实施中过于复杂,数据周期性依赖,多路并行数据难以测量等情况,进行了深入研究及优化,并提供了针对用户不同需求,提供不同模式的接口,提升了用户体验感极强的便捷操作性。本发明提高了测量精度,精简了数据输入和计算的部分,提高了数据测量精度,节省了大量的人力物力。
[0102] 尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。