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

技术编号:31745383 阅读:17 留言:0更新日期:2022-01-05 16:24
本发明专利技术涉及一种基于DSP实现Sar成像中提高精度和时效性的方法,提高DSP计算精度:DSP在计算复乘因子时,常常需要根据两个矢量拟合出系数,但是拟合出来的误差较大,导致成像质量不高,为此将拟合系数与矢量进行ployval()后,再与原矢量相减后再次拟合得到拟合系数的误差值,与原拟合系数相加,可得到精度较高的拟合系数;提高DSP计算时效:针对一些无法在DSP内核建立流水的运算,通过泰勒公式展开成只有加减乘的基础运算,以达到能够在内核建立流水的目的,然后对输入输出地址、循环次数加以限制,来提高单次读取内存的数量。来提高单次读取内存的数量。来提高单次读取内存的数量。

【技术实现步骤摘要】
一种基于DSP实现Sar成像中提高精度和时效性的方法


[0001]本专利技术属于信息与信号处理
,具体涉及一种基于DSP实现Sar成像中提高精度和时效性的方法。

技术介绍

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

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

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

技术实现思路

[0006]本专利技术的目的是为解决上述问题,提供一种基于DSP实现Sar成像中提高精度和时效性的方法,通过多次迭代来提高plotfit()函数的精度;通过在序列循环中加入一些限制关键字和循环次数的信息来优化时效性,对无法建立流水的数据计算通过泰勒公式展开来建立流水。
[0007]为实现上述目的,本专利技术提供以下技术方案:一种基于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指令集实现函数计算。
[0008]进一步的:所述DSP 6678指令集把指令的处理分成若干个子操作,每个子操作在微处理器内部由不同的部件来完成,每个部件一周期可进入一条新指令,在同一时间内,就会有多条指令交迭地在不同部件内处理,形成流水的工作模式。
[0009]与现有技术相比,本专利技术的有益效果在于:1. 提高DSP计算精度,使成像质量较高。将拟合的系数与x进行ployval(),得到有误差的yerror,将矢量y与yerror相减得到Dely后再与x拟合得到多项式系数误差值,与原先得到的拟合系数相加,可得到精度较高的系数。
[0010]2. 提高DSP计算时效性。为提高序列计算的时效性,使其计算能建立流水,针对只有加减乘算术运算或使用6678指令集能够直接建立流水;对一些无法建立流水的数据计算通过泰勒公式转换成只有加减乘的运算,再调用DSP 6678指令集实现函数计算,以此展开来建立流水。
附图说明
[0011]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是为了更清楚地说明本专利技术实施例或现有技术中的技术方案,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1为本专利技术Plotfit精度优化流程图;图2为本专利技术提高时效性的算法流水优化流程图。
具体实施方式
[0013]为了使本领域技术人员更好地理解本专利技术的技术方案能予以实施,下面结合具体实施例对本专利技术作进一步说明,但所举实施例只作为对本专利技术的说明,不作为对本专利技术的限定。
[0014]如图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.一种基于DSP实现Sar成像中提高精度和时效性的方法,其特征在于:包含提高Plotfit精度和运算时效性:DSP在计算复乘因子时,需要对两个矢量进行拟合计算,将拟合系数与矢量进行ployval()后,再与原矢量相减后再次拟合得到拟合系数的误差值,与原拟合系数相加,可得到精度较高的拟合系数;在雷达成像算法中,耗时最长的是对一序列进行数学计算,为提高序列计算的时效性,应使其计算能建立流水,建立流水的条件是循环内只有加减乘算术运算或使用6678指令集,当某序列乘以或加上另一序列,通过在IDE上对该文件开三级优化可实现代码的流水,当对一序列进行cos、log或sqrt需要调用C语言实时运行库,由于在循环内调用C语言库函数,使循环无法建立流水,为提高循环代码时效性,应按照以下步骤来优化:1)通过对输入和输出序列加restrict关键字来限定输入和输出,使输入和输出在内存地址上相互独立,在循环中没有依赖,减小迭代间隔;2)使输入和输出序列地址8字节或4字节对齐,通过在程序中加断言...

【专利技术属性】
技术研发人员:聂智博穆东邵志阳王欣
申请(专利权)人:理工雷科电子西安有限公司
类型:发明
国别省市:

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

1