一种用于频谱仪的检波方法和装置、可读存储介质与流程

文档序号:19126101发布日期:2019-11-13 02:08阅读:304来源:国知局
一种用于频谱仪的检波方法和装置、可读存储介质与流程

本发明涉及测试测量技术领域,具体涉及一种用于频谱仪的检波方法和装置、可读存储介质。



背景技术:

频谱分析仪(频谱仪)作为一种频谱测量分析仪器,主要用于射频和微波信号的频域分析,包括测量信号的功率、频率、失真产物等,在通信系统的开发以及各种射频产品的开发中得到了广泛的应用。

频谱分析仪在工作过程中需要对信号进行检波处理,目前,频谱分析仪大都采用模拟器件实现检波,这种检波方式容易受到模拟器件的性能和环境温度等因素的影响,容易引入各种误差,而且,检波功能单一,检波的灵活性较低。



技术实现要素:

本申请提供一种用于频谱仪的检波方法和装置、可读存储介质,以减少频谱分析仪的误差,且使频谱分析仪实现多种曲线的检波。

根据第一方面,一种实施例中提供一种用于频谱仪的检波装置,包括数据输入模块、计算模块、存储模块和检波处理模块;

所述数据输入模块,用于获取待检波数据,将所述待检波数据逐个输出至检波处理模块;

所述计算模块,用于计算数据输入模块获取的每个待检波数据对应的频点,得到频点数据,对所述频点数据进行曲线变换,将变换后的频点等分为n段,计算每一段的待检波数据点数,根据所述待检波数据点数计算每一段的检波系数,并将所述检波系数依次配置到存储模块,所述曲线变换包括线性变换和/或对数变换,所述n为检波输出点数,所述n为整数;

所述存储模块,用于存储所述检波系数;

所述检波处理模块,用于从存储模块读取检波系数,根据读取的检波系数和选定的检波方式对每一段的待检波数据进行检波并输出对应的检波点。

根据第二方面,一种实施例中提供一种用于频谱仪的检波方法,包括:

计算每个待检波数据对应的频点,得到频点数据;

对所述频点数据进行曲线变换,所述曲线变换包括线性变换或对数变换;

将变换后的频点等分为n段,所述n为检波输出点数,所述n为整数;

计算每一段的待检波数据点数,并根据所述待检波数据点数确定每一段的待检波数据;

根据选定的检波方式对每一段的待检波数据进行检波并输出对应的检波点。

根据第三方面,一种实施例中提供一种计算机可读存储介质,其包括程序,所述程序能够被处理器执行以实现如上所述的方法。

依据上述实施例的检波方法和装置以及计算机可读存储介质,频谱分析仪通过扫描获得一组待检波数据后,先计算每个待检波数据对应的频点,得到频点数据,接着对该频点数据进行曲线变换,在曲线变换过程中可以支持多种曲线变换,比如线性变换或对数变换等,使频谱分析仪能够进行多种曲线的检波;然后,将变换后的频点等分为n(检波输出点数)段,计算每一段的待检波数据点数并确定每一段的待检波数据,再根据选定的检波方式对每一段的待检波数据进行检波并输出对应的检波点,使得频谱分析仪检波的灵活性更高。

附图说明

图1为本发明实施例提供的一种用于频谱仪的检波装置的结构示意图;

图2为本发明实施例中累加器的工作原理示意图;

图3为本发明实施例提供的一种用于频谱仪的检波方法的流程图;

图4为本发明实施例中一种计算每一段的待检波数据点数的方法的流程图;

图5为本发明实施例中线性变换曲线中计算分段点频率的示意图;

图6为本发明实施例中对数变换曲线中计算分段点频率的示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。

在本发明实施例中,频谱分析仪通过扫描获取到一组待检波数据之后,先计算每个待检波数据对应的频点,接着对得到的频点数据进行曲线变换,比如线性变换或对数变换等,然后将变换后的频点等分为n(检波输出点数)段,计算每一段的待检波数据点数并确定每一段的待检波数据,再根据选定的检波方式对每一段的待检波数据进行检波并输出对应的检波点。

请参考图1,为本发明实施例提供的一种用于频谱仪的检波装置的结构示意图,该检波装置包括数据输入模块01、计算模块02、存储模块03和检波处理模块04。

其中,数据输入模块01用于获取待检波数据,将该检波数据逐个输出至检波处理模块04。

计算模块02用于计算数据输入模块01获取的每个待检波数据对应的频点,得到频点数据,然后对该频点数据进行曲线变换,将变换后的频点等分为n段,再计算每一段的待检波数据点数,根据得到的待检波数据点数计算每一段的检波系数,并将该检波系数依次配置到存储模块03,其中的曲线变换可以是各种曲线,比如可以是线性变换或对数变换,n为整数,代表检波输出点数,可以由用户进行设置。

具体的,计算模块02在将变换后的频点等分为n段之后,可以利用如下方法计算每一段的待检波数据点数:先计算每一段的分段点频率,接着对这些分段点频率进行反变换,得到反变换的分段点频率;然后根据该反变换的分段点频率和频率步进计算每一段的分段点的索引号,该索引号能够反映分段点处在待检波数据的位置,其中的频率步进可以根据待检波数据点数和频率带宽计算得到;最后根据每一段的分段点的索引号计算每一段的待检波数据点数。

计算模块02计算出每一段的待检波数据点数之后,对每一段的待检波数据点数进行取倒数运算,得到检波系数,然后对该检波系数进行量化,量化后按顺序逐个配置到存储模块03中。

存储模块03存储计算模块02得到的检波系数,得到检波表,每个检波输出点对应一个系数,也即每一段待检波数据对应一个检波系数。

检波处理模块04用于从存储模块03读取检波系数,根据读取的检波系数和选定的检波方式对每一段的待检波数据进行检波并输出对应的检波点。其中的检波方式可以包括峰值检波、负峰值检波、采样检波、正态检波和平均检波中至少之一,可以由用户进行选择。

具体的,检波处理模块04包括累加器41、检波单元42和数据处理单元43。

累加器41用于根据检波地址从存储模块03读取检波系数,对于每一段待检波数据,累加器41在每接收到一个待检波数据时累加一次读取的检波系数,累加器41每溢出一次,表示一段检波完成,这时将检波地址加1,开始下一段的检波;累加器41在溢出n次时,表示一次检波完成,这时将检波地址清零,重新开始检波。累加器41的工作原理可参见图2,其位宽(也即步进)与检波系数的量化是一致的。由于检波系数是对每一段的待检波数据点数进行取倒数运算得到的,这样,比如要检波一段12个数据的,取倒数就是1/12,则累加器每收到一个数据加1/12,加了12个就会等于1,这时检波了12个数据,完成一次段检波。数据输入模块01向检波处理模块04每输入一个待检波数据,累加器41累加一次检波系数,该检波系数等于存储模块03输出的检波系数,也就是说,累加器41每溢出一次,检波系数便更新一次。

检波单元42用于对每一段待检波数据进行检波处理,在累加器每溢出一次时输出一次当前段待检波数据的最大值、最小值和平均值给数据处理单元43,且在累加器41的最高比特位由0变为1(此时处在当前检波段的中间位置)时输出当前从数据输入模块01接收的待检波数据(此时的待检波数据为采样值)给数据处理单元43,即采样检波输出的是每一段的中间位置的数据;也就是说,检波单元42对每一段待检波数据进行检波处理后,都会输出最大值、最小值、采样值和平均值这四个值。在一种具体的实施例中,检波单元42内部可以包括最大值寄存器421、最小值寄存器422和平均值寄存器423。

其中,最大值寄存器421在每接收到数据输入模块01输入的一个待检波数据时,将其当前存储的数值max_reg与该待检波数据进行比较,然后锁存两者中的最大值,即将最大值赋值给max_reg。累加器41每溢出一次,表示完成一段检波,这时最大值寄存器421输出一次当前锁存的值,该值即为当前段的最大值,然后将max_reg设置为量程范围内的最小值,开始下一段检波。

最小值寄存器422用于在每接收到数据输入模块01输入的一个待检波数据时,将该待检波数据与其当前存储的数值min_reg进行比较,然后将两者中的最小值赋值给min_reg,即锁存两者中的最小值。累加器41每溢出一次,表示完成一段检波,这时最小值寄存器422输出一次min_reg,此时的min_reg即为当前段的最小值,然后将min_reg设置成量程范围内的最大值,开始下一段的检波。

平均值寄存器423用于在每接收到数据输入模块01输入的一个待检波数据时,将其当前存储的数值加上该待检波数据与累加器41当前读取的检波系数的乘积,在累加器41每溢出一次时将其当前存储的数值置零。比如平均值寄存器423当前存储的数值用ave_reg表示,数据输入模块01每输入一个待检波数据,ave_reg的值会更新为ave_reg=ave_reg+待检波数据*检波系数。例如要检波一段12个待检波数据,取倒数就是1/12,即检波系数为1/12,这时,每输入一个待检波数据乘1/12,然后加起来即可,这样不需要把12个待检波数据都加起来然后再除12,对于检波的数据量很大情况,比如几十万或几百万个数据,采用这样的方法可以避免占用很大的位宽。

数据处理单元43用于根据选定的检波方式对检波单元42输出的数据进行处理,得到对应的检波点并输出。其支持的检波方式包括峰值检波、负峰值检波、采样检波、正态检波和平均检波。

当用户选定的检波方式是峰值检波时,数据处理单元43会输出检波单元42得到的每段待检波数据的最大值。

当用户选定的检波方式是负峰值检波时,数据处理单元43会输出检波单元42得到的每段待检波数据的最小值。

当用户选定的检波方式是采样检波时,数据处理单元43会输出检波单元42得到的每段待检波数据的采样值。

当用户选定的检波方式是平均检波时,数据处理单元43会输出检波单元42得到的每段待检波数据的平均值。

当用户选定的检波方式是正态检波时,数据处理单元43会对检波单元42的段数进行统计,如果当前段是第偶数个,则输出当前段待检波数据的最小值,并保存检波单元42的最大值;如果当前段是第奇数个,则将检波单元42输出的最大值与保存的最大值进行比较,并输出两者中最大的一个。例如:整个检波过程最终输出n个检波点,则整个过程包含n段待检波数据,对每一段进行统计:0,1,2,3,4,...,n-1,0,1,2,....。对于第0段,输出最小值,并保存最大值;对于第1段,比较该段的最大值和第0段的最大值,输出两者的最小值;第2段处理方式跟第0段一样,第3段处理方式跟第1段一样,以此类推。

对于上述实施例的检波装置,其计算模块02一般可以在处理器中实现,存储模块03和检波处理模块04可以在现场可编程门阵列(field-programmablegatearray,fpga)中实现。

基于上述的用于频谱仪的检波装置,本发明实施例还提供一种用于频谱仪的检波方法。

请参考图3,为本发明实施例提供的一种用于频谱仪的检波方法的流程图,该方法可以包括:

步骤11:计算每个待检波数据对应的频点。

频谱仪获得一组待检波数据之后,计算模块02计算每个待检波数据对应的频点,得到频点数据。

具体的,假设频谱仪通过扫描获得一组待检波数据raw_data,其点数为raw_points个,这组数据对应的起始频率为freq_start,终止频率为freq_stop。这时,计算模块02可以根据待检波数据点数和频率带宽计算出两个待检波数据间的频率步进freq_step:freq_step=(freq_stop-freq_start)/(raw_points-1)。然后,计算模块02根据该频率步进freq_step计算每个待检波数据对应的频点,得到第1个频点freq(0)~第raw_points个频点freq(raw_points-1)分别为:freq_start,freq_start+freq_step,freq_start+2*freq_step,…,freq_start+i*freq_step…,freq_start+(raw_points-2)*freq_step,freq_stop,以此得到频点数据。

步骤12:对频点数据进行曲线变换。

计算模块02计算出每个待检波数据对应的频点之后,对得到的频点数据进行曲线变换,这里的曲线变换可以支持多种曲线变换,用户可以从中选择一种变换方式,比如频谱仪一般可提供线性变换和对数变换两种方式。对于线性变换,其变换公式为freq_con(i)=freq(i),对于对数变换,其变换公式为freq_con(i)=log10(freq(i)),其中freq(i)为第i个频点数据,freq_con(i)为第i个变换后的频点数据,其中的i=0,1,…,raw_points-1。

步骤13:将变换后的频点等分为n段。

计算模块02对频点数据进行曲线变换之后,将变换后的频点等分为n段,其中的n为整数,代表检波输出点数,该检波输出点数可以由用户设置。

步骤14:计算每一段的待检波数据点数。

计算模块02将变换后的频点等分为n段之后,计算每一段的待检波数据点数。具体的,请参见图4,是一种计算每一段的待检波数据点数的方法的流程图,计算模块02可以通过步骤141~步骤144计算每一段的待检波数据点数:

步骤141:计算每一段的分段点频率。

设变量x=0,1,2,3,4,...,n;计算模块02可通过如下公式计算每一段的分段点频率bucket_freq:

bucket_freq=freq_con(0)+x*((freq_con(raw_points-1)-freq_con(0))/n)。

图5和图6分别示出了线性变换曲线和对数变换曲线中计算分段点频率的示意图,其横轴为待检波数据点对应的频点,纵轴为进行曲线变换后的频点。将变换后的频点等分为n段即将纵轴等分为n段,计算模块02计算出的每一段的分段点即为图中纵轴上的圆点。

步骤142:对分段点频率进行反变换。

计算模块02计算出每一段的分段点频率之后,对分段点频率进行反变换,得到反变换的分段点频率。具体的,对于线性检波,可以利用公式bucket_freq_i=bucket_freq对各分段点频率进行反变换,得到的反变换的分段点频率bucket_freq_i即为图5横轴上的圆点。对于对数检波,可以利用公式bucket_freq_i=10^bucket_freq对各分段点频率进行反变换,得到的反变换的分段点频率bucket_freq_i即为图6横轴上的圆点。

步骤143:计算每一段的分段点的索引号。

计算模块02对分段点频率进行反变换之后,根据反变换的分段点频率和频率步进计算每一段的分段点的索引号,该索引号能够反映分段点处在待检波数据的位置。具体的,已知反变换的分段点频率bucket_freq_i和每个待检波数据对应的频率宽度freq_step,则可以根据如下的公式计算分段点的索引号:

bucket_index=round(bucket_freq_i/freq_step);

其中round是取整运算,以保证点数是整数。

步骤144:根据索引号计算每一段的待检波数据点数。

计算模块02计算出每一段的分段点的索引号之后,根据该索引号计算每一段的待检波数据点数。具体的,每一段包含的待检波数据点数就是取bucket_index两两之间的差值,则有各段包含的待检波点数bucket_seg_point依次为:bucket_index(1)-bucket_index(0),bucket_index(2)-bucket_index(1),...,bucket_index(detect_points)-bucket_index(detect_points-1)。

步骤15:对每一段的待检波数据进行检波。

计算模块02计算出每一段的待检波数据点数之后,检波处理模块04根据选定的检波方式对每一段的待检波数据进行检波并输出对应的检波点。其中的检波方式可以包括峰值检波、负峰值检波、采样检波、正态检波和平均检波中至少之一。

由上可知,每个bucket_seg_point对应着一个检波段,则共有n个bucket_seg_point,对数据输入模块01输入的待检波数据流,每个bucket_seg_point对应一个检波点。用户可以选择的检波方式有五种:峰值检波、负峰值检波、采样检波、正态检波和平均检波。具体的,对于峰值检波,输出每段待检波数据中的最大值。对于负峰值检波,输出每段待检波数据中的最小值。对于采样检波,输出每段待检波数据中的中间值。进行正态检波时,对于第偶数个待检波数据段,输出其最小值并且保留最大值;对于第奇数个待检波数据段,将上一个待检波数据段(第偶数个待检波数据段)的最大值与当前待检波数据段的最大值进行比较,输出两者中的最大值。对于平均检波,输出每个待检波数据段的平均值。

本发明实施例提供的用于频谱仪的检波方法和检波装置,可以由用户选定检波类型(如线性检波、对数检波等)和检波方式,在频谱仪获得一组待检波数据之后,计算每个待检波数据对应的频点并对得到的频点数据进行与用户所选检波类型对应的曲线变换,将变换后的频点等分为n段并确定每一段的待检波数据点数和待检波数据,然后根据所选检波方式对每一段的待检波数据进行检波,不仅可以支持线性检波,还可支持对数检波(即在频率轴为对数显示时实现对数检波)及其他多种曲线的检波,实现了检波功能的多样化;通过数字检波避免了采用模拟器件实现检波时容易受到模拟器件影响而引入的各种误差;同时,本申请提出的检波方法和装置的检波灵活性较高,更容易实现系统的小型化。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1