基于stm32的符号速率测量方法、装置及存储介质
技术领域
1.本发明涉及通信符号速率测量技术领域,具体涉及基于stm32的符号速率测量方法、装置及存储介质。
背景技术:
2.符号速率是码元传输速率,简称传码率,表示单位时间内传输码元的数目。在通信系统中,符号速率的准确测量是进行调制识别、译码等后续信号处理的基础。现有符号速率测量方法大致可以划分为三类:(1)基于循环谱的符号速率测量方法;信号经过调制后,呈现周期平稳特性,基于此可以提取符号速率的基频或谐频分量。(2)基于小波变换的符号速率测量方法;小波变换具有提取信号的瞬变特性的功能,因此可以提取信号跳变的时刻,从而获得符号速率。(3)基于延时相乘的符号速率测量方法。
3.基于循环谱的符号速率测量方法运算量大,且在低信噪比或数据长度较短时测量性能较差;基于小波变换的符号速率测量方法对信噪比要求较高,在低信噪比情况下误差较大;基于延时相乘的符号速率测量方法,在数据长度较短时,符号速率谱线不明显,测量效果较差。然而,在基于stm32实现符号速率测量算法的过程中,受内存和官方dsp库所能支持的采样点数目限制,运算量不能太大,且用于测量符号速率的数据长度不能太长,因此需要一种在低信噪比和数据量较少条件下可以实现的基于stm32的符号速率测量软件实现方法。
技术实现要素:
4.本发明所要解决的技术问题是通过现有技术对符号速率测量需要大量数据且信噪比要求较高,目的在于提供基于stm32的符号速率测量方法、装置及存储介质,解决上述的问题。
5.本发明通过下述技术方案实现:
6.基于stm32的符号速率测量方法,包括如下步骤:
7.步骤s1:基于接收信号获得待测文本数据,并将待测文本数据存入缓存区;
8.步骤s2:读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据;
9.步骤s3:基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号;
10.步骤s4:基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,获得符号速率。
11.进一步地,步骤s2中,所述读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据,包括:
12.步骤s21:读取缓存区的待测文本数据;
13.步骤s22:基于读取的待测文本数据,判断待测文本数据是否存在分隔字符:
14.若待测文本数据存在分隔字符,则通过atof函数将待测文本数据转换为浮点类型
数据,并判断缓存区的待测文本数据是否读完,若缓存区的待测文本数据未读完,则返回步骤s21;若缓存区的待测文本数据已读完,则执行步骤s3;
15.若待测文本数据不存在分隔字符,则将待测文本数据存入字符数组,返回步骤s21。
16.进一步地,步骤s3中,所述基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号,具体为:
17.基于待测浮点数据,对接收信号进行延时,获得延时信号,然后将接收信号与延时信号进行相乘,获得延时相乘信号。
18.进一步地,步骤s4中,所述基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,包括:
19.步骤s41:对延时相乘信号进行频谱计算,以获得功率谱;
20.步骤s42:对功率谱进行去直流分量的处理,获得去直流功率谱;
21.步骤s43:基于去直流功率谱谱搜索符号速率谱线位置,并进行符号速率计算,获得符号速率。
22.进一步地,步骤s1中,所述基于接收信号获得待测文本数据,并将待测文本数据存入缓存区,包括:通过串口接收获得待测文本数据,并将待测文本数据存入缓存区。
23.进一步地,所述对接收信号进行延时,获得延时信号,然后将接收信号与延时信号进行相乘,获得延时相乘信号,具体为:
24.假设接收信号为:
25.x(t)=a(t)cosw0t+n1(t)
ꢀꢀꢀꢀ
(1)
26.其中,a(t)是数字基带信号,w0为载波频率,n1(t)为高斯白噪声,这里假设载波初相位为0,延时相乘信号y(t)为:
[0027][0028]
其中,y(t)为延时相乘信号,x(t)为接收信号,x(t-τ)为延时信号,n2(t)为相乘运算后的噪声项,a(t)是数字基带信号,w0为载波频率,τ为延时时间。
[0029]
进一步地,所述功率谱计算公式为:进一步地,所述功率谱计算公式为:
[0030]
其中,p(f)表示功率谱,g1(f)和g2(f)分别表示消息码“0”、消息码“1”对应的符号波形的频谱函数,fb是符号速率,从上式可以看出,当g1(f)≠g2(f)时,可以从基带信号的功率谱中检测到频率等于符号速率的离散谱线。
[0031]
进一步地,步骤s43中,所述基于去直流功率谱谱搜索符号速率谱线位置,并进行符号速率计算,获得符号速率,包括:基于去直流功率谱谱搜索符号速率谱线位置,并进行基于快速傅立叶变换的符号速率计算,获得符号速率。
[0032]
一种基于stm32的符号速率测量装置,基于所述的符号速率测量方法,包括:数据收发模块、数据格式转换模块和符号速率测量模块;所述数据收发模块包括数据接收模块和数据发送模块;
[0033]
所述数据接收模块用于通过串口接收待测文本数据,并将待测文本数据存入缓存
区;
[0034]
所述数据格式转换模块用于读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据;
[0035]
所述符号速率测量模块用于采用基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,获得符号速率,并将符号速率传输给数据发送模块;
[0036]
所述数据发送模块用于通过串口将符号速率发送给上位机。
[0037]
一种计算机可读存储介质,包括程序,所述的程序可被处理器执行以支持完成所述的一种基于stm32的符号速率测量方法。
[0038]
在基于stm32实现符号速率测量的过程中,受内存和官方dsp库所能支持的采样点数目限制,本发明采用基于延迟自相关的符号速率测量算法,能够在低信噪比和数据量较少的条件下,实现符号速率的测量。本发明克服了现有技术中存在的对符号速率测量需要大量数据和信噪比要求较高的缺陷。
[0039]
本发明与现有技术相比,具有如下的优点和有益效果:
[0040]
本发明提供的基于stm32的符号速率测量方法、装置及存储介质,能够在低信噪比和数据量较少的条件下,实现符号速率的测量。
附图说明
[0041]
为了更清楚地说明本发明示例性实施方式的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。在附图中:
[0042]
图1为本发明符号速率测量方法总体流程图;
[0043]
图2为本发明软件流程框图;
[0044]
图3为本发明数据格式转换模块流程图;
[0045]
图4为本发明符号速率测量模块流程;
[0046]
图5为本发明串口接收的部分文本数据;
[0047]
图6为本发明部分缓存区数据与格式转换后的对应数据;
[0048]
图7为本发明不同的信噪比下的峰值幅度与符号速率谱线幅度的差值;
[0049]
图8为本发明符号速率测量结果;
[0050]
图9为本发明不同信噪比下的符号速率测量误差精度。
具体实施方式
[0051]
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
[0052]
实施例1
[0053]
如图1所示,一种基于stm32的符号速率测量方法,主要包括如下步骤:
[0054]
步骤s1:基于接收信号获得待测文本数据,并将待测文本数据存入缓存区;
[0055]
步骤s2:读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据;
[0056]
步骤s3:基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号;
[0057]
步骤s4:基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,获得符号速率。
[0058]
其中,步骤s2中,所述读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据,包括:
[0059]
步骤s21:读取缓存区的待测文本数据;
[0060]
步骤s22:基于读取的待测文本数据,判断待测文本数据是否存在分隔字符:
[0061]
若待测文本数据存在分隔字符,则通过atof函数将待测文本数据转换为浮点类型数据,并判断缓存区的待测文本数据是否读完,若缓存区的待测文本数据未读完,则返回步骤s21;若缓存区的待测文本数据已读完,则执行步骤s3;
[0062]
若待测文本数据不存在分隔字符,则将待测文本数据存入字符数组,返回步骤s21。
[0063]
其中,步骤s4中,所述基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,包括:
[0064]
步骤s41:对延时相乘信号进行频谱计算,以获得功率谱;
[0065]
步骤s42:对功率谱进行去直流分量的处理,获得去直流功率谱;
[0066]
步骤s43:基于去直流功率谱谱搜索符号速率谱线位置,并进行符号速率计算,获得符号速率。
[0067]
其中,步骤s3中,所述基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号,具体为:基于待测浮点数据,对接收信号进行延时,获得延时信号,然后将接收信号与延时信号进行相乘,当满足一定条件时,相乘信号的频谱中将含有频率等于符号速率的谱线,假设接收的中频已调信号为:
[0068]
x(t)=a(t)cosw0t+n1(t)
ꢀꢀꢀꢀ
(1)
[0069]
其中,a(t)是数字基带信号,w0为载波频率,n1(t)为高斯白噪声,这里假设载波初相位为0,对x(t)进行自相关运算可以得到延时相乘信号y(t)为:
[0070][0071]
其中,n2(t)=n2(t)a(t-τ)cosw0(t-τ)+n2(t-τ)a(t)cosw0t+n2(t)n2(t-τ)为相乘运算后的噪声项;y(t)为延时相乘信号,x(t)为接收信号,x(t-τ)为延时信号,n2(t)为相乘运算后的噪声项,a(t)是数字基带信号,w0为载波频率,τ为延时时间。
[0072]
从上式可以看出,接收的中频已调信号延时相乘的频谱其实就是基带信号延时相乘后频谱的平移,即在符号速率测量的过程中,起作用的是基带信号延时相乘信号成分a(t)a(t-τ)。
[0073]
对于二进制基带信号,可以分解为稳态波成分和交变波成分,稳态波成分对应于离散谱,交变波成分对应于连续谱,假设出现0码的概率为p,则功率谱用公式描述为:
[0074][0075]
其中,g1(f)和g2(f)分别表示消息码“0”、消息码“1”对应的符号波形的频谱函数,fb是符号速率。从上式可以看出,当g1(f)≠g2(f)时,可以从基带信号的功率谱中检测到频率等于符号速率的离散谱线。
[0076]
实施例2
[0077]
如图2所示,本发明一种基于stm32的符号速率测量装置,包括数据收发模块、数据格式转换模块和符号速率测量模块;
[0078]
数据收发模块通过串口来实现数据的导入导出,串口接收的数据来源于txt文本,奇数个文本数据代表采样点数据的实部,偶数个文本数据代表采样点虚部,每两个文本数据代表一个采样点。从串口的角度出发,每个文本数据都是由数字和小数点组成的字符串,有的数据还存在负号字符。串口接收并存入缓存区的数据是字符的ascii码,而后续符号速率测量模块处理的是与字符串对应的浮点类型数据,因此需要进行数据格式转换。
[0079]
数据格式转换包括五个步骤,流程如图3所示:步骤1,读缓存区数据:串口接收的数据存储在一个8位的缓存区数组中,每一个文本数据的整数部分预留3个数字字符,小数部分预留6位数字字符,加上1个小数点字符、可能存在的1个负号字符和1个用于分隔的空格字符,共计12个字符。步骤2,识别空格字符:不同数据之间以空格字符隔开,将缓存区数组中每一个字符的ascii码与空格字符的ascii码比较,直到一致才认为得到了同一个文本数据的所有字符。步骤3,写入字符类型数组:字符类型的数组是本模块开辟的临时变量,数组长度为20,复用存储两个空格字符之间的所有字符。如果当前字符为空格字符,则写入字符串的结束字符’\0’,标志当前文本数据的所有字符都已经存储完毕并等待格式转换。步骤4,转换格式:atof函数用于将字符串转化为浮点数,这里将单个文本数据字符类型数组的首地址作为atof函数的输入参数,以转化为32位浮点数据类型。步骤5,存浮点类型数据:浮点类型的数组是本模块开辟的全局变量,支持32位浮点,用以存储每个字符类型文本数据转化为浮点类型之后的结果,以供符号速率测量模块使用。
[0080]
符号速率测量模块采用基于延迟自相关的符号速率测量算法,由于符号速率谱线的检测与fft运算有关,因此算法的性能也会与fft性能相关。在采样频率不变的情况下,可以通过提高采样点数来提高fft的分辨率,间接提高符号速率测量的精度,但目前官方dsp库所能支持的最大采样点数为4096。考虑内存限制,所设计符号速率测量软件采用1024个采样点进行符号速率测量。在采样点数为1024的情况下,接收的延时相乘已调信号的完整频谱中左右两条符号速率谱线不够明显,不能通过直接搜索峰值得到。但两条符号速率谱线之间的采样点的幅度相差不大,所以在搜索到一段幅度接近于峰值的谱线集合时,可以将集合中的第一个位置认为是符号速率谱线的位置,而用以判断幅度是否与峰值差距不大的阈值可以通过仿真得到。符号速率测量模块主要包括延迟自相关计算、频谱计算、去直流成分、搜索符号速率谱线位置、符号速率及误差计算五个部分,流程如图4所示。延迟自相关计算包括计算待测数据的延迟、取共轭、点乘三个流程,频谱计算包括计算延迟自相关数据的频谱、幅度计算、频谱搬移三个流程。而符号速率谱线搜索包括去直流成分和搜索符号速
率谱线位置两个流程,对直流成分及其前后各20个数据求平均值并以平均值覆盖这段数据。取去直流后数据的峰值,搜索到去直流后数据与峰值相差不超过阈值时,记下此时的位置索引index。符号速率为(index-1024)*fs/1024的绝对值,fs为已知的采样率,测量误差为(测量值-理论值)/理论值*100%。
[0081]
本实施例采用的mcu选用st公司stm32f407zgt6芯片,开发软件采用keil5.20.0.0,串口接收的待测数据文本由matlab仿真产生,仿真主要参数中的采样率为64khz以及符号速率为16ksps,共计2052个文本数据,部分数据如图5所示,每两个文本数据代表一个采样点,图5中,实部-0.017497和虚部-0.290569表示复数采样点-0.017497-0.290569。
[0082]
在数据模式转换模块中,串口接收缓存区数组长度设置为25000,2052个文本数据共计24624个字符,未超出缓存区数组长度,通过串口传输测试数据文本,完成数据格式转换后串口调试助手打印结果如图6所示,从图中可以看出一个实部或虚部数据由多个字符组成,在缓存区中分开存放,通过数据格式转换模块后,实部或虚部数据被正确转换为浮点数。
[0083]
在符号速率测量模块中,在不同的信噪比下仿真100次取平均值,得到峰值幅度与符号速率谱线幅度的差值如图7所示。从图可以看出,差值始终不为0,即符号速率谱线始终不是峰值位置,但是符号速率谱线幅度与峰值相差不超过8.5,所以取阈值为10,当搜索到幅度与峰值相差不超过阈值的第一条谱线时,此位置即是符号速率谱线的位置。通过串口打印符号速率测量结果如图8所示,测量结果与matlab仿真结果一致。将该模块的算法通过matlab仿真验证,在不同信噪比下得到测量误差精度曲线如图9所示,由图可以看出测量误差精度最大不超过1.4%,可以保证测量性能。
[0084]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
技术特征:
1.基于stm32的符号速率测量方法,其特征在于,包括如下步骤:步骤s1:基于接收信号获得待测文本数据,并将待测文本数据存入缓存区;步骤s2:读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据;步骤s3:基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号;步骤s4:基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,获得符号速率。2.根据权利要求1所述的基于stm32的符号速率测量方法,其特征在于,步骤s2中,所述读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据,包括:步骤s21:读取缓存区的待测文本数据;步骤s22:基于读取的待测文本数据,判断待测文本数据是否存在分隔字符:若待测文本数据存在分隔字符,则通过atof函数将待测文本数据转换为浮点类型数据,并判断缓存区的待测文本数据是否读完,若缓存区的待测文本数据未读完,则返回步骤s21;若缓存区的待测文本数据已读完,则执行步骤s3;若待测文本数据不存在分隔字符,则将待测文本数据存入字符数组,返回步骤s21。3.根据权利要求1所述的基于stm32的符号速率测量方法,其特征在于,步骤s3中,所述基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号,具体为:基于待测浮点数据,对接收信号进行延时,获得延时信号,然后将接收信号与延时信号进行相乘,获得延时相乘信号。4.根据权利要求1所述的基于stm32的符号速率测量方法,其特征在于,步骤s4中,所述基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,包括:步骤s41:对延时相乘信号进行频谱计算,以获得功率谱;步骤s42:对功率谱进行去直流分量的处理,获得去直流功率谱;步骤s43:基于去直流功率谱谱搜索符号速率谱线位置,并进行符号速率计算,获得符号速率。5.根据权利要求1所述的基于stm32的符号速率测量方法,其特征在于,步骤s1中,所述基于接收信号获得待测文本数据,并将待测文本数据存入缓存区,包括:通过串口接收获得待测文本数据,并将待测文本数据存入缓存区。6.根据权利要求3所述的基于stm32的符号速率测量方法,其特征在于,所述对接收信号进行延时,获得延时信号,然后将接收信号与延时信号进行相乘,获得延时相乘信号,具体为:假设接收信号为:x(t)=a(t)cosw0t+n1(t)
ꢀꢀꢀꢀ
(1)其中,a(t)是数字基带信号,w0为载波频率,n1(t)为高斯白噪声,这里假设载波初相位为0,延时相乘信号y(t)为:其中,y(t)为延时相乘信号,x(t)为接收信号,x(t-τ)为延时信号,n2(t)为相乘运算后的噪声项,a(t)是数字基带信号,w0为载波频率,τ为延时时间。7.根据权利要求4所述的基于stm32的符号速率测量方法,其特征在于,所述功率谱计
算公式为:算公式为:其中,p(f)表示功率谱,g1(f)和g2(f)分别表示消息码“0”、消息码“1”对应的符号波形的频谱函数,f
b
是符号速率,从上式可以看出,当g1(f)≠g2(f)时,可以从基带信号的功率谱中检测到频率等于符号速率的离散谱线。8.根据权利要求4所述的基于stm32的符号速率测量方法,其特征在于,步骤s43中,所述基于去直流功率谱谱搜索符号速率谱线位置,并进行符号速率计算,获得符号速率,包括:基于去直流功率谱谱搜索符号速率谱线位置,并进行基于快速傅立叶变换的符号速率计算,获得符号速率。9.一种基于stm32的符号速率测量装置,基于权利要求1-8任一项所述的符号速率测量方法,其特征在于,包括:数据收发模块、数据格式转换模块和符号速率测量模块;所述数据收发模块包括数据接收模块和数据发送模块;所述数据接收模块用于通过串口接收待测文本数据,并将待测文本数据存入缓存区;所述数据格式转换模块用于读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据;所述符号速率测量模块用于采用基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,获得符号速率,并将符号速率传输给数据发送模块;所述数据发送模块用于通过串口将符号速率发送给上位机。10.一种计算机可读存储介质,其特征在于,包括程序,所述的程序可被处理器执行以支持完成权利要求1至8中任一项所述的一种基于stm32的符号速率测量方法。
技术总结
本发明公开了基于STM32的符号速率测量方法、装置及存储介质,所述方法包括如下步骤:步骤S1:基于接收信号获得待测文本数据,并将待测文本数据存入缓存区;步骤S2:读取缓存区的待测文本数据,并将待测文本数据转换为待测浮点数据;步骤S3:基于待测浮点数据,进行接收信号的延迟自相关计算,获得延时相乘信号;步骤S4:基于延迟自相关的符号速率测量算法对延时相乘信号进行符号速率谱线的检测,获得符号速率。本发明能够在低信噪比和数据量较少的条件下,实现符号速率的测量。实现符号速率的测量。实现符号速率的测量。
技术研发人员:李腊 龙豪 唐盟
受保护的技术使用者:重庆两江卫星移动通信有限公司
技术研发日:2021.12.14
技术公布日:2022/3/8