CN112986677B - 一种基于SoC动态可配的频谱分析的系统及实现方法 - Google Patents
一种基于SoC动态可配的频谱分析的系统及实现方法 Download PDFInfo
- Publication number
- CN112986677B CN112986677B CN202110153376.6A CN202110153376A CN112986677B CN 112986677 B CN112986677 B CN 112986677B CN 202110153376 A CN202110153376 A CN 202110153376A CN 112986677 B CN112986677 B CN 112986677B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- spectrum
- path
- fft
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R23/00—Arrangements for measuring frequencies; Arrangements for analysing frequency spectra
- G01R23/16—Spectrum analysis; Fourier analysis
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于SoC动态可配的频谱分析的系统及实现方法,具体涉及无线数字接收机领域。系统包括数据通路和控制通路。方法包括:将DDC输出的流数据转化为AXI协议格式的数据;根据交叠点数进行帧与帧之间的交叠处理;进行时域加窗处理;调用Xilinx的FFTIP核完成时域向频域的转换;根据每一个点进行独立判断和截位,从而产生指数位和尾数位;采取坐标旋转数字计算方法计算信号的模值;针对不同的应用场合,选取不同的频谱检波模式输出频谱;根据查表方式快速求出数据的对数值;动态配置频域数据的抽取系数。本发明提出了一种适用范围较广的频谱分析方法,多种功能可以达到动态可配的效果,有助于不同场景的需求和应用。
Description
技术领域
本发明属于无线数字接收机领域,尤其涉及软件无线电的应用和频谱分析,具体涉及一种基于SoC动态可配的频谱分析的系统及实现方法。
背景技术
电子战是指敌对双方争夺电磁频谱使用和控制权的军事斗争。而一款紧凑型、多功能、高性能多路话报接收机在现代电子战场发挥出越来越重要作用,能够在拥挤的信道环境下,实现对无线电信号的截获、分析与控守。而功率谱密度分析是监测和分析信号的基础,是数字接收机中重要的组成部分,现有的大部分软件无线电平台如说明书附图的图1所示,主要包括天线、射频模块、模数转换器即Analog-to-Digital Converter、ADC,高速数字信号处理模块和数模转换器即Digital-to-Analog Converter、DAC。在实际使用过程,软件无线电的硬件平台可以不发生改变,或者因为特殊需求替换其中的部分模块,主要通过软件编程的方式来满足不同应用场景。
发明内容
本发明的目的在于提供一种基于SoC动态可配的频谱分析的系统及实现方法,可针对宽带和窄带的数字下变频之后的IQ数据做功率谱密度分析以及解调之后音频数据做音频频谱分析,并且多种功能可以达到动态可配的效果,有助于不同场景的需求和应用。
为解决上述技术问题,本发明的技术方案是:一种基于SoC动态可配的频谱分析系统,包括数据通路和控制通路,所述数据通路用于对IQ数据处理,所述控制通路负责解析PS端下发的控制命令,并对功率谱密度分析的数据通路动态配置。
进一步的,所述数据通路包括数据预处理模块、FFT计算模块和频谱数据处理模块;
所述数据预处理模块用于对进入FFT之前的IQ数据做处理,所述数据预处理模块包括时域分帧模块、时域交叠模块和时域加窗模块;
所述时域分帧模块用于通过配置FFT点数,把输入的流数据转化为块数据,一帧长度与FFT点数相等,所述时域交叠模块用于实现对帧与帧点数的交叠,可与通过PS端动态配置,所述时域加窗模块用于对IQ数据按照指定窗系数进行时域加窗;
所述FFT计算模块包括FFT IP核计算模块和动态截位模块;
所述FFT IP核计算模块用于实现时域到频域的转变,所述动态截位模块用于通过判断最高数据位,产生指数位和尾数位;
所述频谱数据处理模块包括CORDIC计算模值模块、MAC乘法器计算模平方模块、频谱检波模块、高速基2对数求取模块和频谱抽取模块;
所述CORDIC计算模值模块用于求取模值,所述MAC乘法器计算模平方模块用于实现I2+Q2计算,所述频谱检波模块用于针对不同的场景,完成不同的检波处理,所述高速基2对数求取模块用于硬件上的高速基2对数的求取,所述谱抽取模块用于对频谱数据按照比例进行抽取,抽取比例通过ARM下发。
进一步的,所述功率谱密度分析的数据通路动态配置包括交叠率配置、窗函数配置、FFT点数配置、检波模式配置、检波帧数配置和频谱抽取比例配置。
本发明还提供一种基于SoC动态可配的频谱分析的实现方法,包括以下步骤:
步骤1:将DDC输出的流数据转化为AXI协议格式的数据;
步骤2:根据交叠点数进行帧与帧之间的交叠处理;
步骤3:进行时域加窗处理;
步骤4:调用Xilinx的FFTIP核完成时域向频域的转换;
步骤5:根据每一个点进行独立判断和截位,从而产生指数位和尾数位,用于实现FFT输出的动态截位;
步骤6:采取坐标旋转数字计算方法计算信号的模值;
步骤7:针对不同的应用场合,选取不同的频谱检波模式输出频谱;
步骤8:根据查表方式快速求出数据的对数值;
步骤9:动态配置频域数据的抽取系数。
进一步的,所述步骤1具体为:把流数据按照FFT点数进行拼块处理,并加上valid信号和tlast信号指示信号。
所述步骤2具体为:按照交叠点数进行帧与帧之间的交叠处理,同时根据交叠点数的配置,重新整理valid信号和tlast信号。
进一步的,所述步骤3具体为:采用窗系数动态配置的方式,根据不同的场景所需的不同窗系数,通过ARM下发,加窗子模块用ARM下发的窗系数对IQ数据完成加窗处理。
进一步的,所述步骤5中产生指数和尾数的方法具体是:
步骤51:当实部输入数据第DATA_OUT_WIDTH+i-1bit数据与符号位数据相同,则将Shift_Flag_Re[i]设置为1,否则设置为0;
步骤52:当虚部输入数据第DATA_OUT_WIDTH+i-1bit数据与符号位数据相同,则将Shift_Flag_Re[i]设置为1,否则设置为0;
步骤53:完成实部和虚部的相加,其中,总的数据标识位为实部和虚部标识位内较大的值。
进一步的,所述步骤6具体为:通过对进入CORDIC数据进行预处理,即提前判断I路和Q路绝对值的大小做相应的处理,若Q路大于I路,则两者值对换;若Q路小于I路,则不做任何处理。
进一步的,所述步骤7具体为:所述频谱检波模式包括线性平均模式、RMS平均模式、最大值保持模式和最小值保持模式,所述最大值保持模式用于有效检测到抖动信号,所述最小值保持模式用于检测低信噪比的小信号,所述线性平均模式和RMS平均模式均用于有效减小噪声对信号的影响;
线性平均模式,对频谱数据在测量时间内线性平均,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
其中,M表示测量时间内数据帧数目,Gxampi(k)表示第i次k频率处幅度谱;
RMS平均模式,对频谱数据在测量时间内RMS平均,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
其中,M表示测量时间内数据帧数目,Gxampi(k)表示第i次k频率处幅度谱;
最大值保持模式,对频谱数据在测量时间内检测功率最大值,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
Gxp_max(k)=max({|Gxpi(k)|});
其中,Gxpi(k)表示第i次k频率处功率谱;
最小值保持模式,对频谱数据在测量时间内检测功率最小值,一个测量时间进行一次更新,更新完成后重新进行计算:
Gxp_max(k)=min({|Gxpi(k)|});
其中,Gxpi(k)表示第i次k频率处功率谱。
进一步的,所述步骤8具体为:基于查找表的高速基2对数算法包括如下步骤:
步骤81:先将输入数据进入带有优先级的解码器,通过优先级的解码器得到对数结果的整数部分;
步骤82:整数位按位取反通过移位器,把整个数据向左移,也即通过左移,移除掉最高数据位,让最高数据位的后面几位作为小数部分查找表输入,通过LUT查找表,获得对数的小数部分;
步骤83:最后将小数位与整数位一起输出。
由于采用了上述技术方案,本发明的有益效果是:针对传统功率谱分析,本发明采取Xilinx的ZYNQ系列SoC,通过PS和PL的配合处理,能够动态完成对功率谱密度分析配置,增加频谱分析的适用场景和和提高频谱分析的精度,如FFT点数可配、交叠点数可配、窗函数可配、测量模式可配、输出数据率可配等特点,并采取动态截位、基于查找表的基2高速对数求取等,能有效节省资源,本发明已在无线数字接收机中实现、验证并应用。
附图说明
图1为现有的技术的软件无线电框图;
图2为本发明的功率谱密度分析的整体系统框图;
图3为本发明的工作流程图;
图4为本发明的实施例2的交叠处理图;
图5为本发明的实施例2的时域交叠模块实现状态机跳转图;
图6为本发明的实施例3的窗函数配置模块状态机跳转图;
图7为本发明的实施例4的符号位判断实现电路图;
图8为本发明的实施例4的FFT输出标识产生电路图;
图9为本发明的实施例5的CORDIC工作示意图;
图10为本发明的实施例6的频谱检波状态机跳转图;
图11为本发明的实施例8的对数模块实现框图;
图12为本发明的整体模块vivado仿真图;
图13为本发明的分帧和交叠仿真图;
图14为本发明的加窗模块仿真图;
图15为本发明的FFT计算仿真图;
图16为本发明的频谱检波仿真图;
图17为本发明的对数模块仿真图;
图18为本发明的双音信号测试结果图。
具体实施方式
为了本技术领域的人员更好的理解本发明,下面结合附图和以下实施例对本发明作进一步详细描述。
参见图3,本实施例提供了一种基于SoC动态可配的频谱分析的实现方法,包括如下步骤:
步骤1:将DDC输出的流数据转化为AXI协议格式的数据;
步骤2:根据交叠点数进行帧与帧之间的交叠处理;
步骤3:进行时域加窗处理;
步骤4:调用Xilinx的FFT IP核完成时域向频域的转换;
步骤5:根据每一个点进行独立判断和截位,从而产生指数位和尾数位,用于实现FFT输出的动态截位;
步骤6:采取坐标旋转数字计算方法计算信号的模值;
步骤7:针对不同的应用场合,选取不同的频谱检波模式输出频谱;
步骤8:根据查表方式快速求出数据的对数值;
步骤9:动态配置频域数据的抽取系数。
实施例1
参见图2,本实施例提供了一种基于SoC动态可配的频谱分析系统,本实施例的系统分为两部分:数据通路和控制通路;其中,数据通路负责IQ数据处理,控制通路负责解析PS端下发的控制命令,并对PSD的数据通路动态配置,需要说明的是:PS端即是ProcessingSystem,值得说明的是,PSD就是功率谱密度分析,DDC即数字下变频,本发明是基于Xilinx的ZYNQ 7100SoC芯片。
本实施例的数据通路主要分为以下三大部分:数据预处理、FFT计算和频谱数据处理三大部分;
其中,数据预处理部分主要用于对进入FFT之前的IQ数据做处理,包括时域分帧模块、时域交叠模块和时域加窗模块,这里需要说明的是:时域分帧模块:通过配置FFT点数,把输入的流数据转化为块数据,一帧长度与FFT点数相等;时域交叠模块:交叠模块能够实现对帧与帧点数的交叠,可与通过PS端动态配置,其主要目的提高时间分辨率和克服加窗效应,有利于提高检测短时信号能力;时域加窗模块:时域加窗模块负责对IQ数据按照指定的窗系数进行时域加窗,窗系数可以通过ARM动态配置,能够提高了用户针对不同环境提出的不同窗函数的需求,其目的为了降低频谱泄露。
其中,FFT计算模块是功率谱密度分析的核心模块,它用于完成时域到频域的转换;其主要包括FFT IP核计算模块和动态截位模块,FFT IP核计算负责时域到频域的转变,IP核输入有两类信号,一类是IQ数据通路,一路是控制,FFT点数可以实时改变就通过CMD解析ARM下发指令从通过控制通路而对FFTIP核动态配置,输出为经过FFT计算的实部和虚部,FFT IP核输出位宽会有较大的增加,原因是经过每一级的蝶形运算输出位宽会有1bit的增加,当FFT点数过大,蝶形运算级数过多,会带来较大的位宽的增加,不做任何处理会带来资源的极大消耗;故FFT动态截位模块通过判断最高数据位,产生指数位和尾数位,能够有效降低输出位宽,节省资源。
其中,频谱数据处理模块包括CORDIC计算模值模块、MAC乘法器计算模平方模块、频谱检波模块、高速基2对数求取模块和频谱抽取模块,这里需要说明的是:CORDIC计算模值模块:本发明针对传统CORDIC算法求取模值,做了以下改进:通过对进入CORDIC数据预处理,也即提前判断I路和Q路绝对值的大小,若Q路大于I路,则两者值对换,能够保证IQ的复平面在[0:π/2],能够加速迭代效率;
MAC乘法器计算模平方模块:本实施例的该模块直接调用DSP的MAC乘法器,完成I2+Q2计算;
频谱检波模块:频谱检波模块主要完成针对不同的场景,完成不同的检波处理,本发明设计的检波方式有:线性平均检波、RMS平均检波、最大值检波和最小值检波四种模式。本实施例在选择何种检波模式以及是否要检波可以通过ARM控制命令下发实时动态配置;
高速基2对数求取模块:本发明采用一种基于查找表的高速基2对数求取模块,分为两步查找:查找整数位和查找小数位,而小数位查找表的深度需要在精度和面积折中处理;
频谱抽取模块:本发明考虑到网口传输数据以及上位机频谱刷新率,本发明通过添加频谱抽取模块,能够对频谱数据按照比例进行抽取,抽取比例通过ARM下发;参见图12,图12为本发明的整体模块vivado仿真图。
实施例2
基于实施例1的基础上,AXI协议转换处理:本发明的步骤1具体为:首先完成AXI协议转换处理,由于本子模块位于DDC(数字下变频)之后,DDC输出的IQ采样率需要随着不同带宽的变化而变化,而后续所有的IP核需要按照AXI协议完成数据的传输,所以需要完成AXI协议的转换,值得说明的是,本实施例可以根据FFT点数完成动态的帧长配置,在本实施例的帧长可配置的选项为64、128、256、512、1024、2048、4096或8192。在具体实施的时候,把流数据按照FFT点数进行拼块处理,例如FFT点数为1024点,则每1024个流数据拼成一帧,并加上valid信号和tlast信号等指示信号,根据ARM下发的FFT点数配置信息,把数据存入RAM中,达到FFT点数之后,把一整帧数据读出。
实施例3
交叠处理:若短时信号处理一帧的边缘,由于窗函数属于拱形形状,会衰减短时信号,导致漏采短时信号,所以本实施例按照交叠点数进行帧与帧之间的交叠处理,同时根据交叠点数的配置,重新整理valid信号和tlast信号;
本发明的步骤2具体为:针对加窗对短时信号的影响,本发明做了交叠处理,本实施例的交叠点数可以根据用户要求的交叠率完成交叠处理,参见图4,具体的是,图4(a)的帧长为N,图4(a)是在没有交叠情况下输出情况,图4(b)是交叠点数为m下输出情况,由图4可以看出,前后两帧之间重叠点数为m;
本实施例的具体实现方法为:参见图5,本实施例的数据交叠模块实现状态有四个状态,分别是IDLE、WAIT_READY、RD_EN和WAIT_DATA,数据交叠模块实现状态机在复位状态下,状态跳转为IDLE状态,接下来等待Overlap_Dout_ready(后级是否能够接收信号)和Data_enough(RAM中一整帧数据是否存够的标志信号)同时满足,进行读操作,若Data_enough满足,也即数据写够每一次计算滑动窗的深度,说明此刻数据已经足够读写操作,从而避免读空和写满的错误;但还需要根据后一级反馈的是否能够接收信息判断是否输出,否则会导致后续模块执行错误;当这两个条件都满足时候,说明此刻可以读操作,读操作按照时钟速度进行读取RAM中的值,并对读取的个数进行计数,当读取的个数等于FFT长度,也就是每一帧的长度,就会产生TLAST信号,这时就表明着一帧信号的结束,并拉低VALID信号,并进行下一步数据交叠模块实现状态机的循环,从而连续完成连续数据的滑动窗读写操作,参见图13,图13为本发明的分帧和交叠仿真图。
实施例4
时域加窗处理:传统加窗模式采用在ROM中存储常见的窗函数,但这样会带来一个问题,首先,需要把常见的窗函数都存入,会带来很大资源的增加,并且以后升级会比较麻烦,比如需要增加新的窗函数等,本发明根据Xilinx SoC系列PL和PS交互的优势,采取PS端,也就是ARM端完成窗函数的下发,从而可以实现窗函数的在线配置,本发明采用RAM来存储窗函数,主要解决的问题是窗函数的配置和窗函数的使用冲突的问题;
参见图6,图6是本发明的窗函数配置模块状态机跳转图,本发明的窗函数配置模块状态机有三个状态,分别为IDLE、CONFIG和RUN状态,当系统复位后,进入窗函数配置模块状态机初始化状态,此刻对IQ数据操作为:数据直通;当WIN_COE_valid信号有效,也即代表ARM有配置窗函数的命令,窗函数配置模块状态机会进入到CONFIG状态,在此状态下完成窗系数存储操作,并对存储系数计数,也就是判断窗长度,当窗长度等于FFT长度,并此刻有WIN_COE_valid下降,则说明此刻ARM窗系数下发正确,并且已完成正确的RAM存储,当产生CONFIG_end信号,进入RUN状态,若通过计数,判断窗系数长度和FFT长度是否相同,若不相同则说明ARM窗函数下发有问题,返回IDLE状态,不进行加窗处理。
窗函数配置模块状态机在RUN状态下,主要完成针对每一帧IQ数据,读取RAM中存储的窗系数,从而完成IQ数据和对应的窗系数相乘,从而完成时域加窗。在RUN状态下,若WIN_COE_valid拉高,则代表又有新的窗函数配置命令,则再次返回CONFIG状态,否则,在没有复位信号下,一直处于RUN状态,完成时域的加窗,并将得到的结果送往FFT模块,参见图14,图14为本发明的时域加窗模块的仿真图。
FFT计算模块:本发明的FFT计算模块直接调用XILINX的FFTIP核,采取模式基二/基四模式。此步骤由于直接调用FFT的IP核,属于现有技术的直接应用,所以就不再阐述,作为一种优选的方式,图15为本发明的FFT计算模块的仿真图。
实施例5
动态截位:在相同数据位宽的情况下,块浮点FFT能够保证功率最大的频率点的功率精度达到该数据位宽下的最高精度。但是,在FFT分析数据内存在多个频率信号时,只能保证最大功率频点功率精度,其他频率的功率精度会达不到该数据位宽的最高精度。
为了解决上文提出的传统块浮点FFT问题,本发明的改进方法为:根据每一个块浮点进行独立判断和截位,FFT IP核输出位宽会有较大的增加,原因是经过每一级的蝶形运算输出位宽会有1bit的增加,当FFT点数过大,蝶形运算级数过多,会带来较大的位宽的增加,不做任何处理会带来资源的极大消耗,所以本实施例的FFT动态截位模块通过判断最高数据位,产生指数位和尾数位,能够有效降低输出位宽,节省资源。
参见图7和图8,由于需要完成实部和虚部的相加,那就必须保证指数位相等,总的数据标识位为实部和虚部数据标识位内较大的值,
具体的是,本实施例产生指数和尾数的方法包括:步骤51:当实部输入数据第DATA_OUT_WIDTH+i-1bit数据与符号位数据相同,则将Shift_Flag_Re[i]设置为1,否则设置为0;
步骤52:当虚部输入数据第DATA_OUT_WIDTH+i-1bit数据与符号位数据相同,则将Shift_Flag_Re[i]设置为1,否则设置为0;
步骤53:完成实部和虚部的相加,其中,总的数据标识位为实部和虚部标识位内较大的值。
实施例6
CORDIC求模处理:模值的计算涉及到开平方,开平方在硬件中实现比较复杂,目前常用的在硬件中实现开平方的方法为CORDIC算法,也即通过向量旋转方式,实现求取模值的计算。本模块考虑到资源问题,实验证明,Xilinx的IP核为了保持通用性,往往占据较多的资源消耗,考虑到整个项目的庞大,资源往往成为瓶颈,故未采用Xilinx官方IP核,采用CORDIC算法实现;
本发明针对传统CORDIC算法求取模值,做了以下改进:通过对进入CORDIC数据预处理,也即提前判断I路和Q路绝对值的大小做相应的处理,若Q路大于I路,则两者值对换;若Q路小于I路,则不做任何处理;这样能够保证IQ的复平面在[0:π/2],能够加速迭代效率。最后仿真表明,与XILINX的IP核输出结果完全相同。
坐标旋转数字计算方法(Coordinate Rotation Digital Computer,CORDIC)是FPGA经典算法,该算法执行过程中只存在移位和加减法,非常适合FPGA实现。此外,CORDIC算法可以实现坐标转换、平方根、正余弦计算等一系列操作。CORDIC工作如图9所示,在第一象限任选一个点(x0,y0)通过CORDIC算法旋转θ到达(xn,yn),坐标模增大,增大的倍数与θ无关。
参见图9,(x'n,y'n)旋转θ后应该到达1/∏cosαi,他们满足公式:
在旋转角度θ过程可以分解成为n步旋转,只要n次旋转角度和为θ就能保证结果一致,最坐标旋转到(x'n,y'n);
CORDIC算法实际工作工程中要求第i次旋转的角度满足tanαi=±2-i,旋转过程忽略cosαi,则每次旋转过程中只需要移位和加减操作,坐标会放大。旋转完成后坐标会到达(xn,yn),数据放大倍数为1/∏cosαi,当旋转到达一定次数,放大倍数几乎不再发生改变,所以可以在旋转完成以后对坐标统一缩小,他们满足公式:
d的计算公式为:
其中,d表示旋转方向,正数表示逆时钟旋转,负数表示顺时钟旋转,取决于当前旋转角度大于还是小于θ,Zi为角度累加器,用来在每次迭代过程中,追踪累加的旋转角度。
实施例7
针对不同的应用场合,需要选取不同的检波模式输出频谱,本实施例的检波模式有最大值模式、最小值模式和平均模式;
其中最大值模式能够有效检测到抖动信号,最小值模式能够检测低信噪比的小信号,平均模式有线性平均和RMS平均,能够有效减小噪声对信号的影响;
线性平均模式,对频谱数据在测量时间内线性平均,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
其中,M表示测量时间内数据帧数目,Gxampi(k)表示第i次k频率处幅度谱;
RMS平均模式,对频谱数据在测量时间内RMS平均,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
其中,M表示测量时间内数据帧数目,Gxampi(k)表示第i次k频率处幅度谱;
最大值保持模式,对频谱数据在测量时间内检测功率最大值,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
Gxp_max(k)=max({|Gxpi(k)|});
其中,Gxpi(k)表示第i次k频率处功率谱;
最小值保持模式,对频谱数据在测量时间内检测功率最小值,一个测量时间进行一次更新,更新完成后重新进行计算:
Gxp_max(k)=min({|Gxpi(k)|});
其中,Gxpi(k)表示第i次k频率处功率谱。
参见图10,图10是本发明的频谱检波计算状态机图,其存在四个状态机转换标志:分别为IDLE、FIRST、MIDDLE和LAST四种状态,在复位信号下,频谱检波计算状态机完成初始化,进入IDLE状态;当Measure_Data_In_Valid有效,表明有新的一帧数据的到来,进入FIRST状态,表示第一帧数据;当Measure_Data_In_Last_d2有效,表示第一帧数据输入完毕,进入MIDDLE状态;在MIDDLE状态下,根据测量模式和测量帧数,完成频谱的测量后,会产生Last_flag信号,表明测量的结束,进入LAST状态;在LAST状态下,主要完成频谱检波结果的输出,输出完成后再次进入IDLE状态,继续进行下一次测量结果的产生,参见图16,图16为本发明的频谱检波的仿真图。
实施例8
对数运算:本实施例得对数运算为带指数位基2对数运算,参见图11,图11是本实施例的对数模块实现框图,本实施例的基于查找表的高速基2对数算法如下,输入数据首先进入带有优先级的解码器,优先级解码器能够得到对数结果的整数部分,整数部分的获取直接通过查找表的最高有效位确定即可,整数位按位取反通过移位器,把整个数据向左移,也即通过左移,移除掉最高数据位,让最高数据位的后面几位作为小数部分查找表输入,通过LUT查找表,获得对数的小数部分,最后小数位与整数位一起输出,从而实现硬件上高速基2对数的求取;
本实施例的求取对数的具体实现过程是:假设输入数据为x,输出的整数为Qi,输出的小数部分为Qf,整数部分的求取通过优先编码器判断输入数据的最高有效位的位置,从而判断出整数数值,实现比较简单,在此不做推导。
本实施例的小数部分推导如下:
log2x=Qf+Qi (1);
公式(1)把x的对数求解分为整数和小数部分,整数部分直接可以通过优先编码器实现,小数部分的求解只需要求取x右移Qf位后的对数,在本发明中,采取对Qf取反后,左移的方式实现让最高数据为后面的小数部分作为查找表输入,在本发明中,采取查找8位小数的深度,可以实现精度达到1/2^8,可以同时兼顾精度和面积的要求,若要提高求取对数的精度,可以加深查找表的深度,但是同样会带来面积的消耗,本发明的查找表的计算可以通过matlab轻松获取;
作为优选的方式,以64bit输入数据0x0000_4F12_1234_9876为例,最高有效位为第46bit,所以整数为6’h2E,整数部分取反可得17,对原数据进行移位之后取最高8bit后通过查找表可得小数部分,参见图17,图17为本发明的对数模块仿真图。
最后在进行频谱抽取,具体的是,本发明的频谱抽取的实现方案:此模块比较简单,根据ARM下发的抽取系数,对数据按帧计数,记到抽取系数的值的时刻,输出一帧即可。
以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
Claims (9)
1.一种基于SoC动态可配的频谱分析系统,其特征在于:包括数据通路和控制通路,所述数据通路用于对IQ数据处理,所述控制通路负责解析PS端下发的控制命令,并对功率谱密度分析的数据通路动态配置;
所述数据通路包括数据预处理模块、FFT计算模块和频谱数据处理模块;
所述数据预处理模块用于对进入FFT之前的IQ数据做处理,所述数据预处理模块包括时域分帧模块、时域交叠模块和时域加窗模块;
所述时域分帧模块用于通过配置FFT点数,把输入的流数据转化为块数据,一帧长度与FFT点数相等,所述时域交叠模块用于实现对帧与帧点数的交叠和通过PS端动态配置,所述时域加窗模块用于对IQ数据按照指定的窗系数进行时域加窗;
所述FFT计算模块包括FFTIP核计算模块和动态截位模块;
所述FFT IP核计算模块用于实现时域到频域的转变,所述动态截位模块用于通过判断最高数据位,产生指数位和尾数位;
所述频谱数据处理模块包括CORDIC计算模值模块、MAC乘法器计算模平方模块、频谱检波模块、高速基2对数求取模块和频谱抽取模块;
所述CORDIC计算模值模块用于求取模值,所述MAC乘法器计算模平方模块用于实现I2+Q2计算,所述频谱检波模块用于针对不同的场景,完成不同的检波处理,所述高速基2对数求取模块用于硬件上的高速基2对数的求取,所述谱抽取模块用于对频谱数据按照比例进行抽取,抽取比例通过ARM下发。
2.根据权利要求1所述的一种基于SoC动态可配的频谱分析系统,其特征在于:所述功率谱密度分析的数据通路动态配置包括交叠率配置、窗函数配置、FFT点数配置、检波模式配置、检波帧数配置和频谱抽取比例配置。
3.一种基于SoC动态可配的频谱分析的实现方法,应用于权利要求1-2任意一项所述的一种基于SoC动态可配的频谱分析系统,其特征在于:包括以下步骤:
步骤1:将DDC输出的流数据转化为AXI协议格式的数据;
步骤2:根据交叠点数进行帧与帧之间的交叠处理;
步骤3:进行时域加窗处理;
步骤4:调用Xilinx的FFT IP核完成时域向频域的转换;
步骤5:根据每一个点进行独立判断和截位,从而产生指数位和尾数位,用于实现FFT输出的动态截位;
步骤6:采取坐标旋转数字计算方法计算信号的模值;
步骤7:针对不同的应用场合,选取不同的频谱检波模式输出频谱;
步骤8:根据查表方式快速求出数据的对数值;
步骤9:动态配置频域数据的抽取系数。
4.根据权利要求3所述的一种基于SoC动态可配的频谱分析的实现方法,其特征在于:所述步骤1具体为:把流数据按照FFT点数进行拼块处理,并加上valid信号和tlast信号指示信号;
所述步骤2具体为:按照交叠点数进行帧与帧之间的交叠处理,同时根据交叠点数的配置,重新整理valid信号和tlast信号。
5.根据权利要求3所述的一种基于SoC动态可配的频谱分析的实现方法,其特征在于:所述步骤3具体为:采用窗系数动态配置的方式,根据不同的场景所需的不同窗系数,通过ARM下发,加窗子模块用ARM下发的窗系数对IQ数据完成加窗处理。
6.根据权利要求3所述的一种基于SoC动态可配的频谱分析的实现方法,其特征在于:所述步骤5中产生指数和尾数的方法具体是:
步骤51:当实部输入数据第DATA_OUT_WIDTH+i-1bit数据与符号位数据相同,则将Shift_Flag_Re[i]设置为1,否则设置为0;
步骤52:当虚部输入数据第DATA_OUT_WIDTH+i-1bit数据与符号位数据相同,则将Shift_Flag_Re[i]设置为1,否则设置为0;
步骤53:完成实部和虚部的相加,其中,总的数据标识位为实部和虚部标识位内较大的值。
7.根据权利要求3所述的一种基于SoC动态可配的频谱分析的实现方法,其特征在于:所述步骤6具体为:通过对进入CORDIC数据进行预处理,即提前判断I路和Q路绝对值的大小并做相应的处理,若Q路大于I路,则两者值对换;若Q路小于I路,则不做任何处理。
8.根据权利要求3所述的一种基于SoC动态可配的频谱分析的实现方法,其特征在于:所述步骤7具体为:所述频谱检波模式包括线性平均模式、RMS平均模式、最大值保持模式和最小值保持模式,所述最大值保持模式用于有效检测到抖动信号,所述最小值保持模式用于检测低信噪比的小信号,所述线性平均模式和RMS平均模式均用于有效减小噪声对信号的影响;
所述线性平均模式,对频谱数据在测量时间内线性平均,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
其中,M表示测量时间内数据帧数目,Gxampi(k)表示第i次k频率处幅度谱;
所述RMS平均模式,对频谱数据在测量时间内RMS平均,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
其中,M表示测量时间内数据帧数目,Gxampi(k)表示第i次k频率处幅度谱;
所述最大值保持模式,对频谱数据在测量时间内检测功率最大值,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
Gxp_max(k)=max({|Gxpi(k)|});
其中,Gxpi(k)表示第i次k频率处功率谱;
所述最小值保持模式,对频谱数据在测量时间内检测功率最小值,一个测量时间进行一次更新,更新完成后重新进行计算,其公式为:
Gxp_max(k)=min({|Gxpi(k)|});
其中,Gxpi(k)表示第i次k频率处功率谱。
9.根据权利要求3所述的一种基于SoC动态可配的频谱分析的实现方法,其特征在于:所述步骤8具体为:基于查找表的高速基2对数算法包括如下步骤:
步骤81:先将输入数据进入带有优先级的解码器,通过优先级的解码器得到对数结果的整数部分;
步骤82:整数位按位取反通过移位器,把整个数据向左移,也即通过左移,移除掉最高数据位,让最高数据位的后面几位作为小数部分查找表输入,通过LUT查找表,获得对数的小数部分;
步骤83:最后将小数位与整数位一起输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110153376.6A CN112986677B (zh) | 2021-02-04 | 2021-02-04 | 一种基于SoC动态可配的频谱分析的系统及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110153376.6A CN112986677B (zh) | 2021-02-04 | 2021-02-04 | 一种基于SoC动态可配的频谱分析的系统及实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112986677A CN112986677A (zh) | 2021-06-18 |
CN112986677B true CN112986677B (zh) | 2022-01-28 |
Family
ID=76346827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110153376.6A Active CN112986677B (zh) | 2021-02-04 | 2021-02-04 | 一种基于SoC动态可配的频谱分析的系统及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112986677B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992487B (zh) * | 2021-09-18 | 2022-10-28 | 电子科技大学 | 一种基于soc的可配模拟解调方法 |
CN118626411A (zh) * | 2024-08-13 | 2024-09-10 | 北京大有半导体有限责任公司 | 基于滑动fft的数据读写方法、装置、系统及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2205668B1 (zh) * | 1972-11-07 | 1981-04-10 | Thomson Csf | |
CN100498349C (zh) * | 2006-01-23 | 2009-06-10 | 天津市德力电子仪器有限公司 | 中频全数字化频谱仪 |
CN106353594B (zh) * | 2016-08-15 | 2019-01-18 | 中国电子科技集团公司第四十一研究所 | 一种快速多分辨率频谱分析系统及方法 |
EP3532854A4 (en) * | 2016-09-27 | 2020-10-14 | BAE SYSTEMS Information and Electronic Systems Integration Inc. | METHOD OF IMPLEMENTING A PORTABLE SPECTRUM ANALYZER |
CN109001532A (zh) * | 2018-05-08 | 2018-12-14 | 浙江万里学院 | 基于fpga的模拟信号fft实现方法及其电路 |
CN110471018B (zh) * | 2019-09-19 | 2021-12-24 | 中南大学 | 一种频谱校正方法 |
CN111753249B (zh) * | 2020-06-30 | 2023-09-19 | 成都博宇利华科技有限公司 | 一种基于fpga芯片计算信号频谱的方法及系统 |
-
2021
- 2021-02-04 CN CN202110153376.6A patent/CN112986677B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112986677A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112986677B (zh) | 一种基于SoC动态可配的频谱分析的系统及实现方法 | |
CN105515597B (zh) | 一种接收机自动增益控制电路 | |
CN113376570A (zh) | 一种基于信道化处理的相关干涉仪实时测向方法 | |
JP4251484B2 (ja) | ヒストグラム計算システム、電子試験装置及びヒストグラム計算方法 | |
Langlois et al. | Low power direct digital frequency synthesizers in 0.18/spl mu/m CMOS | |
CN109521269B (zh) | 一种幅度调制信号数字化测频方法 | |
CN116388759A (zh) | 一种数字信号杂散检测及校正电路及方法 | |
KR100457925B1 (ko) | 로그 변환과 선형 근사를 이용하여 주파수 오프셋을계산하는 방법 | |
CN109613334B (zh) | 一种频率估计装置、终端以及计算机可读介质 | |
Mandal et al. | Implementation of complex digital PLL for phase detection in software defined radar | |
US20160291069A1 (en) | Phase angle measurement using residue number system analogue-to-digital conversion | |
CN114184837B (zh) | 一种基于Cordic算法的瞬时测频方法 | |
CN101552753B (zh) | 无线通信装置的直流偏移校正电路及其校正方法 | |
AU721642B2 (en) | Reduction of the amount of memory needed by a DSP modulator | |
CN112260980B (zh) | 一种基于超前预测实现相位噪声补偿的硬件系统及其实现方法 | |
US6518897B1 (en) | Angle quantization using log division | |
CN114826541B (zh) | 一种低样本数信号中心频率估计方法及系统 | |
CN118277709A (zh) | 一种fft的实现方法 | |
CN114124199A (zh) | 一种适用于卫星基带处理芯片的抗干扰信道解调加速器 | |
CN118151888A (zh) | 数字运算电路及其方法、信号处理电路和芯片 | |
CN111130660B (zh) | 一种相位噪声测量探头电路 | |
US7139330B1 (en) | System for signal mixing and method thereof | |
US20220366004A1 (en) | Linear approximation of a complex number magnitude | |
KR100530636B1 (ko) | 디지털 오디오 방송 수신기에서의 방향 시퀀스 생성기와그 방법 | |
CN118214631A (zh) | 低采样率下宽带宽信号的频率估计方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |