S32R45雷达芯片SPT3

SPT算法加速

SPT是S32r45雷达芯片内的算法加速模块,其使用的语言为类汇编。可以通过SPT将雷达原始数据进行快速的傅里叶变换、加窗、简单的逻辑运算、添加导向矢量。
总的来说,你可以用SPT来计算目标的4D信息,距离、速度、水平角、俯仰角。
因为关于SPT的中文资料太少(即使现在是24年末),遂小编决定发布此篇文章。
本文章仅做简单说明,实际涉及到的参数各位完全可以通过看相关文档来了解(实际是小编一年前搞的东西,现在忘的差不多了,又不敢误导大家哈哈哈)
此图为SPT在S32R45中的模块构成

SPT的参考资料

一般使用SPT时,会参考四个资料:
1.《as-spt3-manual.pdf》:SPT的语法固定格式
2.《rm590505 - S32R45 Reference Manual (0.5).pdf》:SPT内语言的使用参数说明
3.《SPT_Kernels_RRM_Design_Document.pdf》:SPT提供的历程算法流程
4.《SPT Tips.pdf》:此文档解释了SPT使用的局限性
另外,有任何问题可以去NSP官网社区询问,SPT是有中国工程师可以帮你解答的(咱也不知道为啥他不给写简化版的使用说明,现在知识壁垒都这么严重吗?难道是这玩意涉密?),所以不一定非得使用英文。

SPT命令简介

SPT有自己单独的数据空间,专门用于数据的计算。所以它有专用的数据载入或输出命令,因为是自己单独的数据空间,所以很多正常的计算方法都需要将其考虑在内:例如实际的计算空间(包含输入输出和运算空间)是否满足要求,因此想要自由地计算数据需要提前将SPT的限制条件全部搞清楚。
也正因为SPT内部存在独立的存储空间,所以大家可以将它看做是矩阵类型的存储方式,由此一定会涉及到转置等操作。
另外,SPT是可以进行多线程运算的,目前所给的例子中最多涉及到两线程运算。其实这样也已经很快了。亲测实际的256samples,64chirp,192channel的多普勒运算时间也就是2ms,所以它的加速功能非常实用。

PDMA命令

PDMA是比较重要的命令,需要仔细研究。
PDMA命令是用于在SPT内部空间与外部空间进行数据搬移的命令
简单来说就是数据的输入和输出。一般用于在运算开始和结束时。
以下是PDMA命令的其中一种写法说明(注意后面不再做说明,使用格式不止一种,需要大家根据实际场景进行适配,参见《as-spt3-manual.pdf》)
在这里插入图片描述它可以实现隔行输入或输出,这样更有利于将数据排列成后一步计算所需的格式要求(例如对行做FFT和对列做FFT)。
其也可以用作数据压缩的工具,将其存储在外部时会涉及到数据量超大的问题,这时候进行数据压缩,可以减少一半的存储量,当然了,压缩一定会损失精度。小编这里常用的压缩格式是CP4Q

COPY命令

COPY命令可以用来对数据进行清除、转移、转置等操作。
例如进行完RANG的FFT操作以后,可以对数据进行转置操作,这样更方便进行后面的多普勒维FFT。
在这里插入图片描述

VMT命令

VMT复杂操作指令,其实包含了提取绝对值、共轭、偏移、缩放等操作
此命令可以根据设置操作1和操作2的不同阶段来对应实际的数据操作。
在这里插入图片描述

MAX命令

MAX命令顾名思义,就是寻找最大值的命令。
其不止可以用于寻找最大值,还可以用于筛选一定范围的值,输出不同的最大值格式例如最大值序号,最大值。
建议MAX配合repeat一起使用效果更佳~
在这里插入图片描述

SCP命令

SCP非相干累积
简单来说就是加和后取平均。
一般会用于查找峰值前的处理(查找目标前先给相同的数据合并)
在这里插入图片描述

HIST命令

HIST命令用于输出直方图
在这里插入图片描述

RDX4/RDX2命令

RDX4/RDX2其实就是用于FFT
不同的使用次数可以直接看做FFT大小
例如FFT512需要4个RDX4和1个RDX2,实际对照关系可以参照《rm590505 - S32R45 Reference Manual (0.5).pdf》的74.9.9.5。
或者可以直接参照SDK中的例子进行复制粘贴(抄是最简单的办法)
可以在FFT中直接进行加窗操作。

WIN命令

WIN命令顾名思义就是加窗命令,需要引用外部文件,进行加窗。外部文件可以使用matlab进行窗生成,根据需要生成不同的窗文件。
在这里插入图片描述

EVT/WAIT命令

此两种命令可以组合使用,EVT命令可以引起外部函数事件,WAIT命令可以等待外部函数触发以达到等待与继续运行的目的。一般拿来一边发波一边处理。

其他命令

其他会存在一些基本的命令,类似于C代码中的for循环,if判断,第二线程使用的命令。
还有WR工作寄存器,可以用于保存源地址和输出地址,与ADD命令配合,还能实现源地址和目的地址的偏移。一般也会与loop循环(即for循环)相配合。
还有set赋值语句在地址跳转放入时会提前使用设置。
线程命令thread在提高效率方面还是非常好用的,不过要注意不同的现成需要使用不同的命令,例如copy是用在主线程的,copyb是用在子线程的。

写在最后

SPT的命令有很多种组合,但其实总的来说,适合的只有几种,所以大家不要一看这么多写法就放弃。希望对各位的使用有帮助。

posted @ 2024-11-27 17:17  东风点点吹  阅读(76)  评论(0)    收藏  举报