一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于DSP实现Sar成像中提高精度和时效性的方法与流程

2022-02-19 07:49:44 来源:中国专利 TAG:

一种基于dsp实现sar成像中提高精度和时效性的方法
技术领域
1.本发明属于信息与信号处理技术领域,具体涉及一种基于dsp实现sar成像中提高精度和时效性的方法。


背景技术:

2.在信息化社会的发展中,很大程度上取决于信息与信号处理技术的先进性,数字信号处理技术的出现改变了信息与信号处理技术的整个面貌,数字信号处理器作为数字信号处理的核心技术,其应用已经涉及到信号处理的各个领域。以雷达为例,随着数字信号处理器性能的提高,使得雷达信号处理的新算法在工程中得以实现,带来雷达整体性能的提高,其中ti公司的dsp c6000系列是数字信号处理器中性能最高产品。
3.在合成孔径雷达成像算法中,主要对雷达回波数据进行滤波,去直流,距离向和方位向脉压处理,量化等处理。项目中根据matlab的合成孔径雷达成像代码以fpga dsp处理器架构工程化实现雷达成像,其中dsp6678主要解析辅助数据,计算距离向和方位向脉压复乘因子 (复乘因子是与雷达回波进行复乘)等工作。
4.dsp解析辅助数据用于计算复乘因子,需要使用ployfit()获取当前数据集的拟合结果,polyval()获取当前数据对应的输出结果。现有技术方案实现ployfit()时,由于dsp与matlab精确度的差异,使得拟合出来的系数误差较大,导致成像质量较差,无法满足项目分辨率的需求。
5.dsp在计算复乘因子时经常会遇到欧拉公式(e^(i*x)= cosx i*sinx),1/sqrt(1

x)这类公式计算,在现有技术方案中,不做任何修改,对一序列直接进行n次数学计算,由于在for循环中直接调用了c语言实时运行库,dsp流水无法建立,理论计算时间为n*time1/sqrt(1

x)或n*timecosx,无法满足项目时效性要求。


技术实现要素:

6.本发明的目的是为解决上述问题,提供一种基于dsp实现sar成像中提高精度和时效性的方法,通过多次迭代来提高plotfit()函数的精度;通过在序列循环中加入一些限制关键字和循环次数的信息来优化时效性,对无法建立流水的数据计算通过泰勒公式展开来建立流水。
7.为实现上述目的,本发明提供以下技术方案:一种基于dsp实现sar成像中提高精度和时效性的方法,包含提高plotfit精度和运算时效性:dsp在计算复乘因子时,需要对两个矢量进行拟合计算,将拟合系数与矢量进行ployval()后,再与原矢量相减后再次拟合得到拟合系数的误差值,与原拟合系数相加,可得到精度较高的拟合系数;在雷达成像算法中,耗时最长的是对一序列进行数学计算,为提高序列计算的时效性,应使其计算能建立流水,建立流水的条件是循环内只有加减乘算术运算或使用6678指令集,当某序列乘以或加上另一序列,通过在ide上对该文件开三级优化可实现代码的流水,当对一序列进行cos、log或sqrt需要调用c语言实时运行库,由于在循环内调用c语言库
函数,使循环无法建立流水,为提高循环代码时效性,应按照以下步骤来优化:1)通过对输入和输出序列加restrict关键字来限定输入和输出,使输入和输出在内存地址上相互独立,在循环中没有依赖,减小迭代间隔;2)使输入和输出序列地址8字节或4字节对齐,通过在程序中加断言语句(_nassert())告诉dsp地址已8字节或4字节对齐,使得cpu在读输入或回写输出时,可一次读取或回写8字节或4字节,能够减小读取和写回时间;3)当知道循环次数时,应通过预处理指令(#prama must_iterate)告诉dsp循环次数最大和最小几次,循环次数是否是2或4的整数倍,当循环次数是2或4的整数倍时,dsp为了使2组寄存器资源均衡,通过展开循环来优化流水;4)针对在循环中调用sqrt和除法运算,使用指令集rsqrsp指令,再通过牛顿差值来提高计算精度,建立序列循环流水;针对在循环中调用log、cos、sin函数,先通过泰勒公式转换成只有加减乘的运算,再调用dsp6678指令集实现函数计算。
8.进一步的:所述dsp 6678指令集把指令的处理分成若干个子操作,每个子操作在微处理器内部由不同的部件来完成,每个部件一周期可进入一条新指令,在同一时间内,就会有多条指令交迭地在不同部件内处理,形成流水的工作模式。
9.与现有技术相比,本发明的有益效果在于:1. 提高dsp计算精度,使成像质量较高。将拟合的系数与x进行ployval(),得到有误差的yerror,将矢量y与yerror相减得到dely后再与x拟合得到多项式系数误差值,与原先得到的拟合系数相加,可得到精度较高的系数。
10.2. 提高dsp计算时效性。为提高序列计算的时效性,使其计算能建立流水,针对只有加减乘算术运算或使用6678指令集能够直接建立流水;对一些无法建立流水的数据计算通过泰勒公式转换成只有加减乘的运算,再调用dsp 6678指令集实现函数计算,以此展开来建立流水。
附图说明
11.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是为了更清楚地说明本发明实施例或现有技术中的技术方案,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
12.图1为本发明plotfit精度优化流程图;图2为本发明提高时效性的算法流水优化流程图。
具体实施方式
13.为了使本领域技术人员更好地理解本发明的技术方案能予以实施,下面结合具体实施例对本发明作进一步说明,但所举实施例只作为对本发明的说明,不作为对本发明的限定。
14.如图1~2所述的一种基于dsp实现sar成像中提高精度和时效性的方法,包含提高plotfit精度和运算时效性:dsp在计算复乘因子时,常常需要对两个矢量进行拟合计算,但是拟合出来的系数较差,为此将拟合系数与矢量进行ployval()后,再与原矢量相减后再
次拟合得到拟合系数的误差值,与原拟合系数相加,可得到精度较高的拟合系数,例如对两个矢量x与y求拟合多项式系数,由于matlab比dsp精度较高,导致拟合(plotfit())的系数误差较大,因此本发明将拟合的系数与矢量x进行ployval(),得到有误差的yerror;将矢量y与yerror相减得到dely后再与矢量x拟合得到多项式系数误差值,与原先得到的拟合系数相加,可得到精度较高的拟合系数;在雷达成像算法中,耗时最长的是对一序列(例如32*1024的序列)进行数学计算,为提高序列计算的时效性,应使其计算能建立流水,建立流水的条件是循环内只有加减乘算术运算或使用6678指令集,当某序列乘以或加上另一序列,通过在ide上对该文件开三级优化可实现代码的流水;当对一序列进行cos、log或sqrt需要调用c语言实时运行库,由于在循环内调用c语言库函数,使循环无法建立流水,为提高循环代码时效性,应按照以下步骤来优化:1)通过对输入和输出序列加restrict关键字来限定输入和输出,使输入和输出在内存地址上相互独立,在循环中没有依赖,减小迭代间隔。
15.2)使输入和输出序列地址8字节或4字节对齐,通过在程序中加断言语句(_nassert())告诉dsp地址已8字节或4字节对齐,使得cpu在读输入或回写输出时,可一次读取或回写8字节或4字节,能够减小读取和写回时间。
16.3)当知道循环次数时,应通过预处理指令(#prama must_iterate)告诉dsp循环次数最大和最小几次,循环次数是否是2或4的整数倍;当循环次数是2或4的整数倍时,dsp为了使2组寄存器资源均衡,能够通过展开循环来优化流水;4)针对在循环中调用sqrt和除法运算,使用指令集rsqrsp指令,再通过牛顿差值来提高计算精度,建立序列循环流水;针对在循环中调用log、cos、sin函数,先通过泰勒公式转换成只有加减乘的运算,再调用dsp6678指令集实现函数计算。
17.dsp 6678指令集是用结构的复杂性来换取速度的提高,把指令的处理分成若干个子操作,每个子操作在微处理器内部由不同的部件来完成,每个部件一周期可进入一条新指令,在同一时间内,就会有多条指令交迭地在不同部件内处理,将这种工作模式称为流水。
18.本发明的关键点和保护点:1. 通过多次迭代来提高plotfit()函数的精度;2. 通过在序列循环中加入一些限制关键字和循环次数的信息来优化时效性,对一些无法建立流水的数据计算先通过泰勒公式,再调用dsp 6678指令集,以此展开来建立流水。
19.本发明中未做详细描述的内容均为现有技术。
20.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献