当前位置: 首页 > article >正文

TI的Doppler-Azimuth架构(TI文档)

        TI在AWR2944平台上推出新的算法架构,原先的处理方式是做完二维FFT后在RD图上做CFAR检测,然后提取各个通道数据做测角。

        Doppler-Azimuth架构则是做完二维FFT后,再做角度维FFT,生成Doppler-Azimuth频谱图,然后在该频谱图上做目标检测。这种处理方式的信号链如下图所示,整个处理链路由DSP、ARM和HWA协作完成。

        另外需要注意的是,由于TDM模式下测角需要先做速度补偿,因此这种架构只支持DDM模式。

1 Doppler-Azimuth架构处理步骤

        从接收ADC数据到生成点云是DDMA接收链路的核心部分,由DSP和HWA协作完成,包括下面步骤:

        1.Chirp级处理:DDMA的chirp级处理链路和TDM是一样的,由DFE触发EDMA搬运数据,使用HWA自动完成运算,不需要DSP参与,对每个chirp执行一次,执行去直流,干扰抑制,1D-FFT和数据压缩,通过EDMA将压缩后的1D-FFT结果保存在L3。

        在SDK的demo中,chirp级处理是通过RangeProc DPU完成的。

        2.Range gete级处理:对每个range gate执行一次,主要的处理在HWA完成,但是需要DSP接入两次。

        在SDK中,Range gate级处理是通过DopplerProc-DDMA DPU完成的,它的处理工作分为:

        2.1.数据解压缩:将L3上的压缩数据通过EDMA搬移进HWA,执行数据解压缩,解压缩后的数据保存在L3上的scratch buffer。

        2.2.2D-FFT和DDMA解调:待一个range bin对应的所有Doppler bin的1D-FFT结果都解压缩完成后,通过EDMA将L3上scratch buffer的数据搬移进HWA,执行2D-FFT和DDMA解调。DDMA解调完成后,需要DSP第一次介入,根据获得的发射天线Tx和子带sub-band的对应关系,对2D-FFT的结果按照虚拟天线的位置进行重排。

        2.3.相关检测:由HWA对上一步按照虚拟天线位置重排过的2D-FFT数据,执行天线相位/增益补偿和水平角度FFT,接着由HWA在Doppler维度进行CFAR-OS和Local Maxima的计算,在HWA计算完成后需要DSP第二次介入,根据HWA的输出结果提取可能的(Doppler,azimuth)目标列表,并把这个目标在所有虚拟天线上的2D-FFT结果保存下来供后面的垂直角度估计使用。

        3.内插和垂直角度估计:待所有range  bin的range gate级处理都完成后,由DSP对所有检出的(Doppler,azimuth)目标列表进行内插和垂直角度估计,形成最后的点云列表保存在L3,并通过mailbox将点云列表的信息通知ARM。

        ARM在得到L3上的点云列表后,进行后续的目标跟踪,得到tracker的目标列表,并通过UART输出。

2 Chrip级处理

        在demo中chirp级处理是通过RangeProc DPU完成的。这个DPU的处理流程如下图所示。

        ADC buffer中一个chirp的ADC数据收齐后,将通过ADC_CAPTURE_COMPLETE事件自动触发EDMA的通道31(EDMA_DSS_TPCC_A_EVT_RSS_ADC_CAPTURE_COMPLETE),将ADC数据从ADC buffer搬移到HWA的M0/M1,并启动HWA进行后面的运算。整个chirp级处理信号链包含ping和pong两个通道,每个ADC_CAPTURE_COMPLETE事件触发ping或pong通道执行一次,完成一个chirp的处理。信号链总共使用了10个HWA Param(ping/pong各5个),5个EDMA channel,下面的表格分别列出这些HWA Param和EDMA channel的功能。

表1 Chirp级处理HWA Param配置(Ping)
Param编号功能触发机制运算Engine输入->输出Mem说明
1DummyDMANone-由EDMA out signature通道触发,保证当前chirp处理开始前,上一个chirp已经处理完并输出
2DC估计

DMA

FFTM0->M2由EDMA in signature通道触发,估计信号的直流分量,保存在寄存器中
3DC去除+干扰统计ImmediateFFTM0->M2从信号中减去2中得到的DC估计值后保存到M2,同时进行干扰统计
4干扰消除+FFTImmediateFFTM0->M2利用3中得到的干扰统计先进行干扰消除,然后再进行加窗和FFT
5数据压缩ImmediateCompressM0->M2完成一个chirp的4根天线数据的压缩
表2 Chirp级处理EDMA通道配置
Channel编号功能触发机制触发通道输入->输出Mem说明
1EDMA InDFE-ADC buf->M0/M1每个chirp由硬件事件ADC_CAPTURE_COMPLETE触发一次,根据当前chirp编号将数据搬移到M0或M1
2EDMA In SigChainEDMA InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER根据当前chirp编号,选择触发对应的ping/pong通道的HWA DC估计Param
3EDMA Out PingHWA-M2->L3 radar cube由HWA ping通道数据压缩Param触发,每个chirp的压缩完成触发一次,根据当前chirp编号将数据搬移到L3 radar cube的对应位置
4EDMA Out PongHWA-M3->L3 radar cube由HWA pong通道数据压缩Param触发,每个chirp的压缩完成触发一次,根据当前chirp编号将数据搬移到L3 radar cube的对应位置
5EDMA Out SigChainEDMA Out Ping/PongSIG_DMACHx_DONE-> DMA2HWA_TRIGGER根据当前chirp编号,选择触发对应的ping/pong通道的HWA Dummy Param

        需要注意的是AWR2944在ADC buffer上的数据格式是交织模式,这点和AWR1642/AWR1843不同。

3 数据压缩

        HWA中的数据压缩模块能够对1D-FFT的结果进行压缩,再保存到L3上。在2D-FFT前可以使用HWA的解压缩模块先把L3上的数据解压缩,再送给HWA的FFT模块。通过这个功能可以使有限的L3空间保存更大的radar cube,有利于提高DDMA波形的chirp总数。

        HWA数据压缩模块使用EGE(Exponential Golomb Encoder)算法,对每个chirp的1D-FFT结果进行了50%压缩比的数据压缩。压缩以block为单位进行,每个block包含4根天线,连续8个range bin的1D-FFT结果,每个block压缩前的数据长度为128字节(1D-FFT结果的每个采样点的宽度是4字节,总共32个采样点),压缩后的数据长度为64字节。

        demo共有192个range bin,所以每个chirp的数据压缩将分为24个block进行。对每个chirp,数据压缩前后HWA Mem上的数据格式如下图所示。HWA完成一个chirp的数据压缩后,将通过EDMA Out Ping/Pong通道将压缩后的数据搬移到L3上的radar cube。为了方便2D-FFT前的数据解压缩,Radar cube上不同chirp的同一个编号的压缩block是紧排在一起的,所以我们可以看到下图中768个chirp的block1顺序排列在radar cube最前面,然后是768个chirp的block2,block3,...,block24。

        按照demo的波形配置,radar cube在压缩前的空间大小为2304KB(4byte*4ant*192range*768chirp),压缩后的空间大小为1152KB(64byte*24block*768chirp)。可以看出AWR2944增加的数据压缩功能对RAM空间的节省是巨大的。

4 数据解压缩

        在range gate级处理的开始,必须先通过EDMA把radar cube上数据搬移到HWA后进行数据解压缩。2D-FFT需要对所有chirp(demo中N=768)的同一个range gate进行FFT计算,这就需要对上图中每行的所有768个压缩block(chirp)进行解压缩。考虑到1个HWA Mem的大小只有16KB,HWA只能分次完成这768个block的解压缩。demo的解压缩数据处理信号链如下图所示,这个信号链包括ping和pong两个通道(采用ping-pong是为了使EDMA数据搬移和HWA解压缩运算流水运行,提高效率),每个通道1次可以解压缩64个block(chirp)的压缩数据,ping通道HWA计算完成将触发pong通道HWA继续执行,ping和pong通道的1次执行将完成128个chirp的数据解压缩,这也叫解压缩的1个loop。1个loop执行完后将自动触发下1个loop的执行,这样通过6个loop完成768个block(chirp)的数据解压缩。信号链总共使用了2个HWA Param(ping/pong各1个),6个EDMA channel,表格3和4将分别列出这些HWA Param和EDMA channel的功能。

表3 数据解压缩HWA Param配置
Param编号功能触发机制运算Engine输入->输出Mem说明
1解压缩PingDMACompressM0->M2由EDMA In Ping signature通道触发,在ping通道EDMA将64个压缩数据搬移到M0后执行
2解压缩PongDMACompress

M4->M6

由EDMA In Pong signature通道触发,在pong通道EDMA将64个block压缩数据搬移到M4后执行
表4 数据解压缩EDMA通道配置
Channel编号功能触发机制触发通道输入->输出Mem说明
1EDMA Ping InSW/chain-/EDMA Ping OutL3 Radar cube->M0第1个loop由SW启动,后面5个loop由EDMA Ping Out通道chain,6个loop完成768个chirp的解压缩
2EDMA Ping In SigChainEDMA Ping InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA解压缩Ping Param
3

EDMA

Pong In

SW/chain-/EDMA Ping OutL3 Radar cube->M4第1个loop由SW启动,后面5个loop由EDMA Pong Out通道chain,6个loop完成768个chirp的解压缩
4EDMA Pong In SigChainEDMA Pong InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA 解压缩Pong Param
5

EDMA

Ping Out

HWA-M2 -> L3 Decomp Scratch buf由HWA解压缩Ping Param触发,每个block的解压缩完成触发一次,将当前block解压缩数据搬移到L3 Decomp scratch buf的对应位置
6EDMA Pong OutHWA-M6->L3 Decomp Scratch buf由HWA解压缩Pong Param触发,每个block的解压缩完成触发一次,将当前block解压缩数据搬移到L3 Decomp scratch buf的对应位置

        需要注意的是HWA通过6个loop将解压缩出对应8个range bin的所有768个chirp的1D-FFT数据,这些数据通过EDMA Ping/Pong Out通道搬移到L3上的Decomp Scratch buf。这个Decomp Scratch buf的大小是98304byte((4byte*4ant*8range*768chirps),格式如下图所示。这里的数据将供后面的DDMA解调和相关检测使用。每8个range bin的所有range gate级处理完成后,再通过软件启动下8个range bin的数据解压缩操作,并更新Decomp Scratch buf中的内容为下8个range bin的解压缩数据,这样的循环要执行24次,完成总共192个range bin的处理。

5 2D-FFT和DDMA解调

        当第4节中1次数据解压缩的循环完成,输出连续8个range bin的768个chirp的1D-FFT解压缩数据到L3上的Decomp Scratch buf后,demo将循环8次,分别对每个range bin进行2D-FFT,DDMA解调,相关检测,得到这个range bin上所有的(Doppler,azimuth)目标列表。这是range gate级处理的核心部分。range gate级核心处理中HWA和DSP需要协同工作。对于1个range bin,需要顺序完成下面4个运算步骤:

        1)HWA完成2D-FFT和DDMA Metric生成,这是HWA处理的第一阶段(Stage),称之为Doppler Stage

        2)DSP根据HWA输出的DDMA Metric,获得Tx ant和sub-band的对应关系,对2D-FFT的结果按照虚拟天线的位置进行重排,称之为DDMA解调(DDMA Demodulation)

        3)HWA进行水平角度FFT(Azimuth FFT),CFAR-OS和2D Maxima,称之为Azim Stage

        4)DSP根据HWA输出的CFAR-OS和2D Maxima结果提取出这个range bin上所有的(Doppler,azimuth)目标列表,称之为Extract Obj

        为了提高执行效率,使HWA处理的步骤1)、3)和DSP处理的步骤2)、4)流水并行执行,避免HWA和DSP互相等待,demo以2个range bin为一个基本的处理循环,在这个循环中实现了ping-pong两个数据处理通道,分别处理range bin x和x+1。整个range gate级处理的时序如下图所示。

        TI以DSP第一次介入的DDMA解调(DDMA Demodulation)为边界,将HWA的处理工作分为两个阶段(Stage):Doppler Stage和Azim Stage。本节将介绍Doppler Stage的实现,下一节将介绍Azim Stage。

        Doppler stage的信号链如图所示,包含ping-pong两个数据处理通道。demo在需要进行range gate级处理的时候,根据当前range bin的编号通过软件触发对应ping或pong通道的EDMA,将对应这个range bin的所有4根天线768个chirp的1D-FFT数据搬移到HWA的M0或M2(搬移前后数据都是按照天线交织格式排列的),并启动HWA的ping或pong通道进行后面的运算。

        信号链总共使用了12个HWA Param(ping/pong各6个),10个EDMA channel(ping/pong各5个),下面的表格将分别列出这些HWA Param和EDMA channel的功能。

表5 Doppler stage处理HWA Param配置(Ping)
Param编号功能触发机制运算Engine输入->输出Mem说明
1DummyDMANone-

由Doppler FFT Data In Sig通道触发,保证当前range bin处理开始前,输入数据已经搬移到M0

2Doppler FFTImmediateFFTM0->M4计算4次768点FFT,输入输出的数据都按天线交织排列,输入每个采样点4 byte,输出每个采样点8 byte
3Log2AbsImmediateFFTM4->M0对2中计算的每个采样点求对数绝对值,输入输出的数据格式不变,输入每个采样点8 byte,输出每个采样点2 byte
4天线累加ImmediateFFTM0->M1对3中得到的4天线768点的对数绝对值,进行4天线累加,利用FFT的bin0实现,输出768点的累加值,每个累加值2 byte
DDMA metricImmediateFFTM1->M0DDMA metric计算,利用了FFT的bin0实现了4点累加,同时利用HWA的SHUFFLE功能实现了输入点位置的控制(根据DDMA metric计算需要)
6Sub-band累加SWFFT

M1->M0

+768*2

等待DDMA metric计算和搬移完毕后手工触发,根据4的输出,将6个sub-band上128个Doppler bin的对数绝对值累加起来,利用了FFT的bin0实现了6点累加,同时利用HWA的SHUFFLE功能实现了输入点位置的控制
表6 Doppler stage处理EDMA通道配置(Ping)
Channel编号功能触发机制触发通道输入->输出Mem说明
1Doppler FFT Data InSW-L3 Decomp Scratch buf ->M0每个range bin开始处理前,由软件手工触发将数据搬移到M0
2Doppler FFT Data In SigChainDoppler FFT Data InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA ping通道的Dummy Param
3Doppler FFT Data OutHWA-M4->L3 Doppler FFT Scratch Buf由HWA ping通道Log2Abs Param触发,在对数绝对值计算完毕后,将Doppler FFT数据搬移到L3 Doppler FFT Scratch buf的对应位置
4DDMA Metric Data OutHWA-M0->L3 DDMA Metric Scratch Buf由HWA ping通道DDMA metric Param触发,将计算完的DDMA metric搬移到L3 DDMA Metric Scratch buf的对应位置
5SumTx Data OutHWA-M0+768*2->L3 Det Matrix Buf由HWA ping 通道Sub-band累加Param触发,将计算完的Sub-band累加结果搬移到L3 Det Matrix的对应位置

        DDMA解调的核心是DDMA Metric的计算(HWA完成)和2D-FFT结果的重排(DSP)完成。demo里HWA在完成Doppler FFT,Log2Abs和天线累加后,将生成对应768个Doppler bin的能量热图,这768个Doppler bin分为6个sub-band,每个sub-band有128个Doppler bin。demo采用下表所示的算法进行DDMA解调。

        DDMA Metric是一个128*6的数组,保存对于128个Doppler bin的[Z1,Z2,...,Z6]的能量,它的计算是通过HWA DDMA Metric Param的FFT运算功能实现的,采用4点FFT的bin0获得4个bin的累加值,而计算时访问Doppler bin能量热图的格式是通过HWA的SHUFFLE功能实现的,计算的结果输出到L3上的DDMA Metric Scratch buf。下图给出了HWA DDMA Metric Param计算DDMA Metric的实现方法。在HWA计算完DDMA Metric后,需要DSP介入,在每个Doppler bin对应的6个Metric[Z1,Z2,...,Z6]上找到最大值Zi,根据上表的方法,推断出4个发射天线Tx1/2/3/4在6个sub-band 2D-FFT数据(保存在L3上的Doppler FFT Scratch Buf)中的位置,然后把Tx1/2/3/4的数据顺序提取出来,拷贝到L3上的dopFFTSubMat buf,这就是DSP的DDMA解调。DDMA解调前2D-FFT数据的格式是[128 Doppler][6 sub-band][4 Rx ant][8 byte],DDMA解调后2D-FFT数据的格式变为[128 Doppler][4 Tx ant][4 Rx ant][8 byte]。解调后的数据格式中每个range bin的16根虚天线的数据按Tx1Rx1->Tx1Rx2->Tx1Rx3->Tx1Rx4->Tx3Rx1->Tx3Rx2->Tx3Rx3->Tx3Rx4->Tx4Rx1->Tx4Rx2->Tx4Rx3->Tx4Rx4->Tx2Rx1->Tx2Rx2->Tx2Rx3->Tx2Rx4的顺序排列,方便后面的水平角度FFT的计算。

6 相关检测

        通过DDMA解调获得每个range bin按照虚天线顺序排列好的2D-FFT数据,demo的相关检测就是在虚天线维度对2D-FFT的结果进行水平角度FFT,并对FFT的结果在Doppler维度进行CFAR检测(为了输出尽可能多的点云,demo没有进行range维度的CFAR)。因为在doppler维度进行检测的时候,利用了虚天线阵列的2D-FFT结果,这是一个相关检测(另一种常用的非相关检测方法是先简单地把所有虚天线的2D-FFT结果合并,再检测)。在4接收天线的场景,相关检测的性能比非相关检测要好1.5到2dB,这也是demo提高雷达性能的一个重要手段。

        2D-FFT做完水平角度的FFT后,RA-Map和DA-Map图分别如下图所示。

        相关检测的信号链如下图所示,包含ping-pong两个数据处理通道。

        每个通道1次处理1个range bin,首先通过EDMA将这个range bin对应的DDMA解调后的128个Doppler bin上的12根水平虚拟天线的2D-FFT数据搬移到HWA内。然后在每个Doppler bin的12根虚天线数据做48点的补零FFT,得到下图所示的128*48的[Doppler,Azimuth]热图。在这个热图上,将分别使用HWA的CFAR和Local-Maxima engine进行1次Doppler维度的CFAR-OS检测,和2D平面上的Maxima检测,只有当1个bin同时满足:1)在Doppler维CFAR-OS检测超过门限,2)能量大于2D平面上下左右4个bin的能量,才判断这个bin是一个有效的[Doppler,Azimuth]目标,放入有效目标列表。需要注意的是,HWA的CFAR和Local-Maxima engine的结果都通过EDMA先输出到L2上的CFAR Scratch Buf和Local Max Scratch Buf,然后由DSP从这两个buffer中提取有效信息并进行比较,保存同时满足上面两个条件的bin,这就是DSP执行的Extract Obj的工作。

        信号链总共使用了10个HWA Param(ping/pong各5个), 10个EDMA channel(ping/pong各5个), 表格7 和8分别列出了这些HWA Param和EDMA channel的功能。

表7 Azim stage处理HWA Param配置(Ping)
Param编号功能触发机制运算Engine输入->输出Mem说明
1DummyDMANone-由Azim FFT Data In Sig通道触发,保证当前 range bin处理前,重排后的2D-FFT结果已经搬移 到M0
2Azim FFTImmediateFFTM0->M4计算128次48点FFT (12根水平虚天线后补36 个零)并求log2Abs,输入每个样点8 byte, 输出每 个样点2 byte
3CFARImmediateCFARM4->M0对2中输出的[Doppler, Azim]热图在Doppler方向 做CFAR-OS
4LocalMaxImmediateLOCAL MAXM4->M1对2中输出的[Doppler, Azim]热图计算2D Local Maxima
5DummyImmediateNone-通过中断通知软件Azim Stage HWA执行完毕
表8 Azim stage处理EDMA通道配置(Ping)
Channel编号功能触发机制触发通道输入->输出Mem说明
1Azim FFT Data InSW-L3 dopFFTSubMat buf ->M0每个range bin的DDMA解调完成 后,由软件手工触发将重排后的2D FFT结果搬移到M0
2Azim FFT Data In SigChainAzim FFT Data InSIG_DMACHx_DONE-> DMA2HWA_TRIGGER触发HWA ping通道的Dummy Param
3CFAR OutHWA-M0->L2 CFAR Scratch Buf由HWA ping通道CFAR Param触 发,对这个range bin的Doppler维 度CFAR完成后,将结果搬移到L2 CFAR Scratch Buf的对应位置
4LOCAL MAX OutHWA-M1->L2 LocalMax Scratch Buf由HWA ping通道LocalMax Param 触发,对这个range bin的LocalMax 完成后,将结果搬移到L2 LocalMax Scratch Buf的对应位置
5Azim FFT Data OutHWA-M4->L2 AzimFFT Buf由HWA ping通道最后的Dummy触 发,将Azim FFT结果搬移到L2 AzimFFT Buf的对应位置

7 内插和垂直角度估计

        demo通过前面介绍的Chirp级和Range gate级处理,在对一个frame的128个doppler bin完成相关检测后,将形成当前 frame 有效的 [Doppler, Azimuth] 目标列表。在这个列表的基础上,demo 进行了Azimuth维度的角度内插,和垂直角度估计,以形成最终的点云列表,这个计算是在DSP上完成的。 首先对于相关检测得到的每个目标的 Azimuth bin 的索引 peakIdx 和它前后的两个相邻索引 peakIdx-1, peakIdx+1,执行内插,精度提升(将azimuth bin的数量N从48提高到256)和镜像翻转,获得在[-128, 128] 范围内的索引peakIdxRound,算法如下表所示。

        AWR2944 EVM的虚拟天线阵列下图所示,包含12根水平虚拟天线,4根垂直虚拟天线。

        假设目标的水平角度为θ,垂直角度为φ, 则根据图20的天线阵列,目标在水平方向相邻天线间的相位旋转值𝜔𝑥和 目标在垂直方向相邻天线间的相位旋转值𝜔𝑧满足:

        对目标来说,在12根水平虚天线上的接收信号可表示为(假设目标在第1根水平虚天线上的信号为𝐴𝑒𝑗𝜓):

        类似的,目标在4根垂直虚天线上的接收信号可表示为

         demo中采用下表中的算法来估计目标的水平角度θ和垂直角度φ

        根据表 中的第1和第6步结果,利用三角函数关系很容易计算出𝑐𝑜𝑠(𝜃)和𝑐𝑜𝑠(𝜑),再结合目标的距离R,就可以得到目标在三维坐标系中的坐标(X, Y, Z)和速度V。


http://www.kler.cn/a/586188.html

相关文章:

  • 山东省新一代信息技术创新应用大赛-计算机网络管理赛项(样题)
  • LSTM方法实践——基于LSTM的汽车销量时序建模与预测分析
  • 华为OD机试-测试用例执行计划(Java 2024 D卷 100分)
  • MIFNet (论文阅读笔记)
  • 【实战篇】MySQL 时间字段的处理
  • java学习笔记1
  • 【eNSP实战】三层交换机使用ACL实现网络安全
  • C++中的单例模式及具体应用示例
  • 阿里云dataworks入门操作
  • Go语言单元测试和基准测试
  • 一个网络安全产品设计文档
  • 「Unity3D」UGUI运行时设置元素的锚点Anchor,维持元素Rect的显示不变,即待在原处
  • 3D文物线上展览如何实现?
  • pythonSTL---sys
  • Upload-labs靶场通关(2)
  • DeepSeek 助力 C++ 开发:探索智能编程新境界
  • 大模型学习笔记------Llama 3模型架构之旋转编码(RoPE)
  • 【论文精读】Deformable DETR:用于端到端目标检测可变形 Transformer
  • PHP:从入门到进阶的全方位指南
  • 微软 System Center Configuration Manager(SCCM)的组件文件