【TI毫米波雷达测评】XWR14XX 数据路径
[复制链接]
本帖最后由 a736015 于 2019-12-9 10:35 编辑
IWR1443BOOST开箱测试:https://bbs.eeworld.com.cn/thread-1101610-1-1.html
SDK及例程下载:https://bbs.eeworld.com.cn/thread-1102315-1-1.html
一、总体
顶层数据路径处理链
顶层数据路径时序
如上图所示,数据路径处理包括:
- 如时序图中所示,在线性调频期间进行处理:
- 这包括一维(范围)FFT处理,该处理针对每个线性调频(对应于发射天线的线性调频模式)从ADC缓冲区的多个接收天线接收输入,并对其执行FFT,并将转置后的输出生成到L3 RAM中。这是使用HWA和EDMA完成的。
- 在线性调频结束到下一个线性调频周期开始之间的时间中的处理,在时序图中显示为“帧间周期”。该处理包括:
- 2D(速度)FFT处理,该处理从L3 RAM中的1D输出获取输入并执行FFT,以在L3 RAM中给出(范围,速度)矩阵。这是使用HWA和EDMA完成的。
- 使用HWA进行CFAR检测。
- 使用R4F进行后期处理。
- 到达估算方向(方位、仰角)。
二、天线配置
下图显示了从EVM xWR14xx板的正面与x,y,z坐标约定一起看到的天线布局。
xWR14xx天线布局
毫米波演示支持两种天线配置:
- 两个发射天线和四个接收天线。发射天线Tx1和Tx3在d = 2 Lambda处水平间隔,其发射交错在一个帧中。该配置允许方位角估计。
- 三个发射和四个接收天线。第三个Tx天线Tx2位于其他两个Tx天线之间,高度为半λ。该配置允许方位角和仰角估计。
三、一维FFT处理
数据路径1D
数据路径1D时序图
上面的图片说明了一种情况,即每帧3 * 16 = 48个片,每个线性调频脉冲每个接收天线有225个采样,如天线配置中提到的那样,在帧内以重复模式(Tx1,Tx3,Tx2)线性调频。这就是3D轮廓(速度和x,y,z)情况。有4个rx天线,其样本被颜色编码并标记为1,2,3,4,每个each具有独特的颜色,以乒乓方式处理以并行化加速器和EDMA处理,并从ADC采集样本。硬件加速器的参数RAM设置为执行256点FFT,该FFT在输入ADC ping和pong缓冲区上运行,以在HWA的M2和M3存储器中产生输出。最初,软件触发(MmwDemo_dataPathTrigger1D)通过激活HWA的伪参数PARAM_0(ping)和PARAM_2(pong)进行处理,而伪参数PARAM_0(ping)和PARAM_3(pong)又激活等待ADC满信号的处理PARAM_1(ping)和PARAM_3(pong)。当ADC有采样要在ADC缓冲区Ping或Pong存储器中处理时,相应的处理PARAM将触发FFT计算并将FFT输出传输到M2或M3存储器中。在将ADC样本发送到FFT引擎之前,在HWA中将Blackman窗口应用于它们。FFT的完成还会触发EDMA,该EDMA已设置为执行从M2 / M3存储器到L3 RAM的转置复制(Radar Cube Matrix,MmwDemo_DataPathObj :: radarCube),如图所示。进行此HWA-EDMA乒乓处理48/2(ping / pong)= 24次,以便处理帧的所有chi。设置EDMA,以便在处理每个线性调频脉冲后,从EDMA A和EDMA C通道链接的EDMA B或EDMA D将触发HWA的虚拟PARAM。图片中的EDMA C被设置为在最后一次调频后发出完成中断,该中断通知软件1D处理已完成,并且当该时间到来时,软件可以在下一个调频周期再次触发1D处理。EDMA的影子(链接)PaRAM用于重新加载PaRAM,因此避免了重新编程。EDMA块之间的蓝色箭头表示链接,红色箭头表示链接。
在上面的图片中:
- A是MMW_EDMA_1D_PING_CH_ID
- B是MMW_EDMA_1D_PING_CHAIN_CH_ID
- A_shadow是MMW_EDMA_1D_PING_SHADOW_LINK_CH_ID
- B_shadow是MMW_EDMA_1D_PING_ONE_HOT_SHADOW_LINK_CH_ID
- C是MMW_EDMA_1D_PONG_CH_ID,
- D是MMW_EDMA_1D_PONG_CHAIN_CH_ID
- C_shadow是MMW_EDMA_1D_PONG_SHADOW_LINK_CH_ID
- D_shadow是MMW_EDMA_1D_PONG_ONE_HOT_SHADOW_LINK_CH_ID
四、较低精度的二维处理
数据路径2D FFT高级图
数据路径2D FFT时序图
如上面的高级图中所示,2D处理对来自1D输出的范围数据执行二维(Doppler)FFT,该处理以乒乓方式进行。它包括以下步骤:
- 如果启用,则可以消除静态杂波。对于每个测距箱,每个天线,计算样本平均值并从样本中减去。该操作由R4F直接对L3中的数据执行。
- 来自L3 RAM(MmwDemo_DataPathObj :: radarCube)的数据通过EDMA传输到HWA的M0(偶数对或ping)和M1(奇数对或pong)存储器中,然后执行2D-FFT并在M2中产生输出和M3记忆。在进行FFT操作之前,将输入样本乘以窗口函数。
- HWA从上述步骤对M2和M3存储器执行对数幅度运算,并在M0和M1中产生结果。对数幅度输出为Q11格式。
- HWA对上述步骤中的M0和M1存储器执行求和运算,并在步骤2的结果之后的M2和M3存储器中生成结果。该和是使用HWA中的FFT完成的,其和是在DC(0th)中获得的斌 该FFT编程的srcScale为2,这意味着将2个冗余位(符号扩展,在这种情况下为无符号)添加到MSB中,并用0填充6个LSB,因此在计算前输入为Q17格式。dstScale设置为8,因此求和输出将被丢弃8位,从而得出Q [17-8] = Q9格式的结果。FFT大小是虚拟天线数量2的下一个幂,并且FFT被编程为启用所有蝶形缩放级,因此FFT输出将为1 / N'* sum(。),其中N'= 2 ^ ceil( log2(numVirtualAntennas))真实平均值为1 / numVirtualAntennas * sum(。)。因此,当设置CFAR阈值时,
- EDMA将步骤1的结果复制到MmwDemo_DataPathObj :: radarCube的L3 RAM中(与步骤1中的输入相同),然后EDMA将先前步骤的结果复制到MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix的L3 RAM中。
数据以MMW_NUM_RANGE_BINS_PER_TRANSFER行的大块形式传输和处理。上面的时序图中显示了乒乓并行的时序。有关数据流的更多详细信息,例如级之间的存储器中的数据格式,EDMA和HWA资源等,请参阅下面的详细图表。
数据路径2D FFT详细图
在详细图中:
- A是MMW_EDMA_2D_PING_CHAIN_CH_ID2,
- B是MMW_EDMA_2D_PING_CHAIN_CH_ID3
- A_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID3
- B_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID4
- C是MMW_EDMA_2D_PONG_CHAIN_CH_ID2,
- D是MMW_EDMA_2D_PONG_CHAIN_CH_ID3
- C_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID3
- D_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID4
- E是MMW_EDMA_2D_PING_CH_ID,
- F是MMW_EDMA_2D_PING_CHAIN_CH_ID1(链接到A)
- E_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID1
- F_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID2
- G是MMW_EDMA_2D_PONG_CH_ID,
- H是MMW_EDMA_2D_PONG_CHAIN_CH_ID1(链接到C)
- G_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID1
- H_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID2
通过启动EDMA A和EDMA C(MmwDemo_dataPathTrigger2D),由软件触发2D处理。
五、高精度的二维处理
在上述数据路径处理中(较低精度的二维处理),FFT输出具有24位精度,但转换为16位以存储在雷达多维数据集中,并且该16位还用于log2处理。该方案的原因是雷达立方体中的存储空间有限。然而,这种精度的损失导致尖峰的噪声分布,这增加了CFAR中的错误检测。解决此问题的一种方法是在log2操作之前将FFT的输出存储为32位而不是16位在M存储器中。但是,这需要存储(以字节为单位)= 3(数量为tx的天线)* 4(数量为rx的天线)* 8(复杂的32位)*多普勒FFT大小。这必须适合四个M存储器中每个存储器的16 KB大小,这将多普勒FFT大小限制为512,但我们最多支持1024。因此,我们必须选择HWA中的选项以直接链接FFT和对数幅度而无需转到M存储器,这保留了24位精度。但是,这是以在DOA计算期间重新计算2D FFT为代价的。因此,这是精度和MIPS之间的权衡。默认情况下,已选择此较高精度方案,但用户可以通过更改以下代码行来更改为较低精度方案main.c将左侧变量设置为DATA_PATH_CHAIN_SEPARATE_LOGMAG。
gMmwMCB.dataPathObj.datapathChainSel = DATA_PATH_CHAIN_COMBINED_LOGMAG;
下图显示了修改后的数据路径2D FFT。由于2D FFT输出未存储在Radar Cube中,因此Radar Cube仍包含1D FFT数据。
数据路径2D FFT详细图-结合了2D FFT和对数幅度
在详细图中:
- A是MMW_EDMA_2D_PING_CHAIN_CH_ID2,
- B是MMW_EDMA_2D_PING_CHAIN_CH_ID3
- A_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID3
- B_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID4
- C是MMW_EDMA_2D_PONG_CHAIN_CH_ID2,
- D是MMW_EDMA_2D_PONG_CHAIN_CH_ID3
- C_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID3
- D_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID4
- E是MMW_EDMA_2D_PING_CH_ID(链接到A),
- E_shadow是MMW_EDMA_2D_PING_SHADOW_LINK_CH_ID1
- G是MMW_EDMA_2D_PONG_CH_ID(链接到C),
- G_shadow是MMW_EDMA_2D_PONG_SHADOW_LINK_CH_ID1
通过启动EDMA A和EDMA C(MmwDemo_dataPathTrigger2D),由软件触发2D处理。
六、CFAR检测
数据路径CFAR检测图
如上图所示,CFAR处理包括:
- 该软件触发(MmwDemo_dataPathTriggerCFAR)EDMA,该EDMA将范围多普勒对数幅度矩阵从L3 RAM MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix(二维处理的输出)传输到M0存储器。
- HWA在M0中执行CFAR计算,并在M2存储器中产生输出,并且将来自HWA的CFAR完成中断生成到R4F CPU。
在上图中:
- 一个是MMW_EDMA_CFAR_INP_CH_ID
- B是MMW_EDMA_CFAR_INP_CHAIN_CH_ID
- A_Shadow是MMW_EDMA_CFAR_INP_SHADOW_LINK_CH_ID1
- B_Shadow是MMW_EDMA_CFAR_INP_SHADOW_LINK_CH_ID2
以下是默认的CFAR配置参数:
- MMW_HWA_NOISE_AVG_MODE
- MMW_HWA_CFAR_THRESHOLD_SCALE
- MMW_HWA_CFAR_WINDOW_LEN
- MMW_HWA_CFAR_GUARD_LEN
- MMW_HWA_CFAR_NOISE_DIVISION_RIGHT_SHIFT
- MMW_HWA_CFAR_PEAK_GROUPING
可以使用cli配置命令cfarCfg更改这些参数。带有参数的命令如下所述:
cfarCfg <averageMode> <winLen> <guardLen> <noiseDiv> <cyclicMode> <peakGrouping> <thresholdScale>
- <averageMode>-0-CFAR_CA,1-CFAR_CAGO,2-CFAR_CASO
- <winLen>-CFAR噪声平均窗口长度
- <guardLen>-CFAR保护长度
- <noiseDiv>-CFAR噪声平均除数(右移值)
- <cyclicMode>-禁用0循环模式,启用1循环模式
- <peakGrouping>-禁用0峰值分组,启用1峰值分组
- <thresholdScale>-检测比例因子
注意:如“ 较低精度的二维处理”一节所述(这也适用于“ 较高精度的二维处理”中的较高精度的处理链),输入到CFAR的总和为Q9格式,因此上面的CFAR thresholdScale也需要采用Q9格式。另外,如果CFAR阈值最初打算以dB表示(例如,为了用户友好),那么我们需要在馈送给HWA CFAR之前进行一些转换。这可以如下得出:
令N为虚拟天线的数量,并且N'= 2 ^ ceil(log2(N)),以dB为单位的用户友好CFAR阈值为TdB(= 20 * log10(|。|))。CFAR通常需要做的事情:
CUT = 1 / N * sum(log10(|。|))> TdB / 20 +噪声项的平均值[类似于LHS上的CUT]
给定log10(|。|)= log2(|。|)/ log2(10 ),然后进一步调整各项以进行类似的计算,以匹配低精度第维处理中描述的总和输出:
2 ^ 9 * 1 / N'* sum(log2(|。|))> TdB / 20 * log2(10)* 2 ^ 9 +噪声项的平均值[类似于LHS上的CUT]
因此,要提供给HWA(来自CLI)的
阈值为Tcli = 512 * TdB / 6 * N / N'
七、后处理
后处理包括峰分组和多普勒相移补偿。
峰值分组功能(MmwDemo_peakGrouping)由CFAR处理后的R4F CPU完成。它的输入是:
- 从M2中的2D输出通过CFAR检测检测到的对象列表。如cfarDetOutput_t所示,每个检测到的对象都由三个参数来描述:范围索引,多普勒索引和CFAR单元中的噪声能量。
- 雷达立方矩阵,位于L3内存中(MmwDemo_DataPathObj :: radarCube)。
- 在L3内存中记录幅度范围多普勒矩阵(MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix)。
该函数执行以下操作:
- 丢弃范围索引超出peakGrouping CLI命令指定的范围的检测到的对象。
- 丢弃检测到的对象,这些对象的FFT峰在距离多普勒矩阵(MmwDemo_DataPathObj :: rangeDopplerLogMagMatrix)中小于其邻居。
- 对于每个选定对象,将位于MmwDemo_DataPathObj :: radarCube中的已接收虚拟天线的2维FFT复数值复制到M0(方位角天线)和M1(仰角天线),以进一步进行方位角和仰角FFT计算。
- 对于每个选定对象,将其(范围,多普勒)索引复制到R4F CPU的本地内存MmwDemo_DataPathObj :: objOut,将在完成方位角和x,y,z计算后最终将其发出。
多普勒补偿功能(MmwDemo_dopplerCompensation)由CFAR和峰值分组处理之后的R4F CPU完成。
它的输入是单独的方位角和海拔符号阵列。
它在与虚拟Rx天线相对应的符号上对多普勒相移进行补偿。在2Tx MIMO方案的情况下,第二组Rx符号被旋转对应于相同Tx天线的后续线性调频脉冲之间的估计多普勒相移的一半。在3Tx MIMO高程方案的情况下,第二组Rx符号旋转了估计的多普勒相移的三分之一,而与第三Tx天线相对应的第三组Rx符号旋转了估计的多普勒相移的2/3 。请参考下面的图片。
多普勒补偿
最后,该函数返回所选对象的数量。
八、与较低精度的2D处理相对应的FFT计算到达方向
如果后处理阶段之后检测到的峰值数大于零,则由软件(MmwDemo_dataPathTriggerAngleEstimation)触发方位角/高程FFT计算。对于M0(方位角天线)和M1(仰角天线)中的每个检测到的物体,它执行以下步骤:
- 从M1到M3的仰角天线阵列的复数FFT。
- 从M0到M2的方位角天线阵列的复数FFT。
- 从M0到M1的阵列方位角天线的对数FFT(覆盖步骤1的输入)。执行此步骤是为了找到峰值。峰的位置用于查找以上两个步骤中的计算输出,以获得方位角和仰角峰点,分别在“ 到达估计的方向(x,y,z)”中分别称为P1和P2。
当前,FFT的大小由MMW_NUM_ANGLE_BINS进行硬编码和定义。如果Tx高程天线的数量等于零(无高程),则仅执行上面的步骤2。
九、高精度2D处理对应的到达FFT计算方向
要进行更高精度的2D处理,请记住在2D FFT阶段,
- HWA无需输出格式化为16位数据即可计算对数幅度和2D FFT,以保留CFAR检测的分辨率。
- 它仅保存rangeDoppler矩阵,而雷达立方体却被一维FFT数据填充。
在CFAR和峰分组阶段之后,
- 将针对检测到的对象重新计算2D FFT。
- 其余角度估计和高程估计与对应于低精度2D处理的到达FFT计算的数据路径方向相同。
在图中:
- A是MMW_EDMA_2DFFT_SINGLERBIN_CH_ID,
- B是MMW_EDMA_2DFFT_SINGLERBIN_CHAIN_CH_ID
- A_shadow是MMW_EDMA_2DFFT_SINGLERBIN_SHADOW_LINK_CH_ID
- B_shadow是MMW_EDMA_2DFFT_SINGLERBIN_SHADOW_LINK_CH_ID2
十、到达估算方向(x,y,z)
图A:坐标几何
图wz
图wx
几何图显示x,y,z轴相对于传感器/天线位置的方向。目的是估计每个检测到的对象的(x,y,z)坐标。wx是2D FFT的连续接收方位角天线wz之间的相位差,是方位角和该方位角天线上方相应仰角天线之间的相位差。每个天线的相位在多普勒图中显示。图_wz显示,距离AB代表相交连续高程天线的波阵面之间的相对距离
因此
因此
注意,与上天线相比,下天线的相位提前了,这就是图片X在上天线中显示-Wz项的原因。图_wx显示其表示波阵面相交的连续方位天线之间的相对距离的距离CD
因此
因此
对于单个障碍物,在8个方位角天线处的信号将为(A1并且ψ是在第一个天线处的任意起始振幅/相位):
上述信号的FFT将产生的峰P1在wx与该峰是的相位ψ即
如果
是表示为范围签署指数数幅度FFT峰的指数
,然后wx将
4个仰角天线处的信号将为:
上述信号的FFT将产生的峰
在
与该峰存在的相
从上面,
因此,
计算范围(以米为单位)为:
其中,c是光速(m / sec),
是范围索引,
是采样频率(Hz),S是线性调频斜率(Hz / sec),
是1D FFT大小。基于对上述计算R,
并且
将(x,y,z)可作为看到计算出的物体的位置几何图,
(x,y,z)每个对象的计算出的峰峰值和方位角分别填充在MmwDemo_DataPathObj :: objOut中的相应位置,然后将其运送到UART端口(MmwDemo_transmitProcessedOutput)上。为了能够检测到具有相同距离多普勒指数但角度不同的两个对象,请在方位角FFT中搜索第二个峰,并将其高度与第一个峰高进行比较,如果检测到,则在列表中创建新的对象相同的范围/多普勒指数,并重复上述步骤以计算(x,y,z)坐标。要启用/禁用两个峰值检测或更改检测阈值,请参考MMWDEMO_AZIMUTH_TWO_PEAK_DETECTION_ENABLE和MMWDEMO_AZIMUTH_TWO_PEAK_THRESHOLD_SCALE。
|