一种基于双计数器的相位展开算法制造技术

技术编号:33468465 阅读:10 留言:0更新日期:2022-05-19 00:46
本发明专利技术涉及信号处理技术领域,具体地说是一种基于双计数器的相位展开算法,计算前后相位之间的差值,判断差值是否大于相位发生截断的界限值,若大于则相应计数器加1,都不满足则判断计数器相对大小,数值大的计数器减去数值小的计数器,将结果赋给数值大的计数器,将数值小的计数器数值置0,计算两个计数器差值,对相位做第一步补偿。计算当前相位值与后相位值及前相位值间的差值,比较相位值差分结果与界限值大小,若数值差分结果均大于界限值,当前相位值减去2倍界限值;若数值差分结果均小于界限值,则当前相位值加上2倍的界限值,否则保持不变,本发明专利技术解决相位展开算法存在速度慢、复杂度高问题,将相位展开算法同时适用于FPGA平台。平台。平台。

【技术实现步骤摘要】
一种基于双计数器的相位展开算法


[0001]本专利技术涉及信号处理
,具体地说是一种基于双计数器的相位展开算法。

技术介绍

[0002]相位展开是一个经典的信号处理问题,它指的是从值区间(

π,π]或(0,2π]中恢复原始相位值。在运用反正切函数计算相位时,实际提取的相位都是包裹在一个周期相位区间的包裹相位值,并非真实得到的相位,将包裹的相位恢复为真实连续的相位即为相位展开。
[0003]传统的算法假设包裹的相位信号为x
w
(n),被展开的相位为x
u
(n):使x
u
(n)=x
w
(n);计算数据的差值即包裹的相位信号一阶差分ΔPhase=x
w
(n)-x
w
(n

1);若数据差值ΔPhase>π,则x
w
(n)当前点以及后续所有点均减去2π;若数据差值ΔPhase<π,则x
u
(n)当前点以及后续所有点均加上2π。
[0004]Kazuyoshi Itoh最早于1982年在论文Analysis ofthe phase unwrapping problem里面提出了相位展开算法,相位展开算法原理详述如下:
[0005]假设包裹的相位信号为x
w
(n),被展开的相位为x
u
(n),则可根据以下步骤展开相位:
[0006]步骤1:使x/>u
(n)=x
w
(n);
[0007]步骤2:计算差值ΔPhase=x
w
(n)

x
w
(n

1);
[0008]步骤3:若差值ΔPhase>π,则x
u
(n)当前点以及后续所有点均减去2π;若差值ΔPhase<

π,则x
u
(n)当前点以及后续所有点均加上2π;
[0009]步骤4:重复以上步骤,直到遍历x
u
(n)。
[0010]相应的MATLAB算法描述如下:
[0011][0012]根据以上步骤就可以对包裹的相位进行展开。
[0013]上述算法在计算机上运行起来速度极慢,在FPGA上由于其空间复杂度高,根本无法实现。
[0014]现有技术中还有一种算法如下:
[0015]MATLAB中相位展开函数使用的相位展开算法核心部分描述如下:
[0016]与上面相同,假设包裹的相位信号为x
w
(n),被展开的相位为x
u
(n),则可根据以下步骤展开相位:
[0017]步骤1:使x
u
(n)=x
w
(n);
[0018]步骤2:计算差值即包裹的相位信号一阶差分除以2π的结果dp_corr=[x
w
(n)

x
w
(n

1)]/2π;
[0019]步骤3:对有符号数dp_corr取整得到dp_corr_round;
[0020]步骤4:将当前相位加上dp_corr_round累计和的2π倍,即x
w
(n)=x
w
(n)+2π*dp_corr_round
[0021]步骤5:重复以上步骤,直到遍历x
u
(n)。
[0022]根据以上步骤就可以对包裹的相位进行展开。
[0023]上述算法在实际实现中包含取余、取整及除法运算,无法在硬件上实现。
[0024]因此需要设计一种基于双计数器的相位展开算法,通过对MATLAB的代码设计和程序流程的设计,将软件平台上的一维相位展开算法进行改造以适用于FPGA平台,且计算速度提升,空间复杂度降低,同时可适用于硬件平台,提高了实用性。

技术实现思路

[0025]本专利技术的目的是克服现有技术的不足,提供了一种基于双计数器的相位展开算
法,通过对MATLAB的代码设计和程序流程的设计,将软件平台上的一维相位展开算法进行改造以适用于FPGA平台,且计算速度提升,空间复杂度降低,同时可适用于硬件平台,提高了实用性。
[0026]为了达到上述目的,本专利技术提供一种基于双计数器的相位展开算法:包括算法第一大步和第二大步,其特征在于所述第一大步包括以下步骤:
[0027]S1:计算前一个相位与后一个相位数值间差值diff1=xu(k)

xu(k

1)及后一个相位与前一个相位数值间差值diff2=xu(k

1)

xu(k);
[0028]S2:判断diff1与diff2是否大于相位发生截断的界限值bound,如果diff1大于bound,则对i上跳变计数器加1;如果diff2大于bound,则对j下跳变计数器加1;如果都不满足,则判断i,j计数器数值的相对大小,让数值大的计数器减去数值小的计数器,将计算结果赋值给数值大的计数器,再将数值小的计数器数值置0;
[0029]S3:计算上下跳变计数器的差值delta,令delta=i

j;
[0030]S4:对相位进行补偿,令xu(k

1)=xu(k

1)

2*(delta)*bound,得到第一大步的相位展开结果;
[0031]所述第二大步包括以下步骤:
[0032]S10:计算当前相位值my_phase_out(t)与后一个相位值my_phase_out(t

1)间差值diff3及当前相位值my_phase_out(t)与前一个相位值my_phase_out(t+1)间差值diff4;
[0033]S20:判断diff3,diff4与bound的大小,若diff3,diff4均大于bound,则对当前相位值my_phase_out(t)减去2倍的bound数值;若diff3,diff4均小于

bound,则对当前相位值my_phase_out(t)加上2倍的bound数值;否则保持不变。
[0034]根据权利要求所述的一种基于双计数器的相位展开算法,其特征在于:所述S2的算法也可以为:
[0035]如果diff1大于bound,则对i计数器加1;如果diff1小于

bound,则对j计数器加1;如果都不满足,则判断i,j计数器数值的相对大小,让数值大的计数器减去数值小的计数器,将计算结果赋值给数值大的计数器,再将数值小的计数器数值置0。
[0036]上述算法在MATLAB上实现的封装函数源代码为:
[0037][003本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于双计数器的相位展开算法,包括算法第一大步和第二大步,其特征在于所述第一大步包括以下步骤:S1:计算前一个相位与后一个相位数值间差值diff1=xu(k)

xu(k

1)及后一个相位与前一个相位数值间差值diff2=xu(k

1)

xu(k);S2:判断diff1与diff2是否大于相位发生截断的界限值bound,如果diff1大于bound,则对i上跳变计数器加1;如果diff2大于bound,则对j下跳变计数器加1;如果都不满足,则判断i,j计数器数值的相对大小,让数值大的计数器减去数值小的计数器,将计算结果赋值给数值大的计数器,再将数值小的计数器数值置0;S3:计算上下跳变计数器的差值delta,令delta=i

j;S4:对相位进行补偿,令xu(k

1)=xu(k

1)

2*(delta)*bound,得到第一大步的相位展开结果;所述第二大步包括以下步骤:S10:计算当前相位值my_phase_out(t)与后一个相位值my_phase_out(t

1)间差值diff3及当前相位值my_phase_out(t)与前一个相位值my_phase_out(t+1)间差值diff4;S20:判断diff3,diff4与bound的大小,若diff3,diff4均大于bound,则对当前相位值my_phase_out(t)减去2倍的bound数值;若diff3,diff4均小于

bound,则对当前相位值my_phase_out(t)加上2倍的bound数值;否则保持不变。2.根据权利要求所述的一种基于双计数器的相位展开算法,其特征在于:所述S2的算法也可以为:如果diff1大于bound,则对i计数器加1;如果diff1小于

bound,则对j计数器加1;如果都不...

【专利技术属性】
技术研发人员:冯秀娟柯伟李立京何龙标牛锋杨平郑云山
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1