DDMA信号处理以及数据处理的流程---原始数据生成
你好呀!大家好!我是叫Xiaojie的小助手哦!很久没有见到你了,在这里非常欢迎各位随时加入我的学习小组,在这里共同探讨毫米波雷达的相关知识!我计划通过一系列文章深入探讨DDMA信号处理及其数据处理流程。本文将系统地从以下八个方面展开:首先是目标生成过程的详细阐述;其次是基于仿真平台的信号建模与验证;随后是关键的技术环节——距离测量;接着是速度估计方法的探讨;之后是对CFAR检测技术的应用分析;随后是对角度估计问题的研究;最后是多目标识别与跟踪方案的设计与优化。预计这个系列将包含七到八篇文章的内容。
最终效果如下:

整体文件的目录树如下:

本篇文章主要讲的是原始数据生成的部分。
基本理论
FMCW雷达基本结构
下图展示了FMCW雷达的基本架构,其中时序器和本地振荡器输出线性调频信号;相位调制模块对信号进行相位调制;功率放大器增强信号幅度;最终经由发射天线向外界发送。当电磁波在传播过程中遇到目标后会反射回来,接收天线捕获这些反射波;经过低噪声放大器处理后与原发射信号进行混频生成中频信号;所得中频信号包含了目标的方位与速度数据;通过低通滤波器处理后将数字信息用于目标分析

发射信号chirp序列
下图为发射chirp发射信号和接收信号序列

单个chirp发射信号表达式为:
S_T(t)=A_Te^{j[2\pi(f_ct+\frac{1}{2}St^2)]}
当发射信号遇到目标后,会被反射,形成回波信号,回波信号的表达式为:
S_R(t)=A_Re^{j{2\pi[(f_c+f_d)(t-t_d)+\frac{1}{2}S(t-t_d)^2]}}
接收到目标的回波信号与发射信号进行混频得到中频信号,其表达式为:
S_{IF}=A_{IF}e^{j{2\pi[(St_d-f_d)t+(f_c+f_d)t_d-\frac{1}{2}St_d^2]}}
距离、速度、角度
距离公式:
t_d = \frac{2R}{c}
速度公式:
f_d = \frac{2v}{\lambda}
角度公式:
\Delta\phi= \frac{2\pi}{\lambda}dsin(\theta)
仿真
雷达参数
基本参数
下表为仿真雷达的基本参数

阵列排布
阵列排布采用均匀阵列,暂不考虑俯仰角测量

仿真代码
generateParameter.m文件
在generateParameter.m文件中主要设置了若干雷达相关的宏量,并用于设定这些雷达的关键参数数值。
% 参数设置
function parameter = generateParameter()
parameter.frameNumLoops = 18; %初始化frame循环
parameter.frameCount = 0; %帧计数
parameter.targetNums = 1; %初始化真实目标
parameter.c = 3e8; %光速
parameter.frameNums = 70; %帧数
parameter.frameTime = 60e-3; %帧周期
parameter.startFreq = 76.2e9; %起始频率
parameter.Fs = 18.75e6; %采样率 实采样率37.5MHz的采样率 复采样率为18.75MHz的采样率
parameter.tr = 1 / parameter.Fs; %采样间隔
parameter.Slope = 20e12; %chirp斜率
parameter.Samples = 512; %采样点
parameter.rangeBin = 512; %rangebin
parameter.Chirps = 384; %chirp数
parameter.dopplerBin = 384; %dopplerbin
parameter.dopplerBinHalf = parameter.dopplerBin / 2; %多普勒bin的一半
parameter.TrValid = parameter.Samples / parameter.Fs; %采样有效时间
parameter.TrTotal = 38e-6; %chirp周期
parameter.t = 0:parameter.tr:parameter.TrValid - parameter.tr; %chirp时间下标
parameter.validBandWidth = parameter.Slope * parameter.TrValid; %有效带宽
parameter.totalBandWidth = parameter.Slope * parameter.TrTotal; %总带宽
parameter.centerFreq = parameter.startFreq + parameter.validBandWidth / 2; %中心频率
parameter.lambda = parameter.c / parameter.centerFreq; %波长
parameter.txAntenna = [0 4 8 12]; %发射天线 暂不考俯仰 2944的方位发射天线
parameter.rxAntenna = [0 1 2 3]; %接收天线 2944的方位接收天线
parameter.txNum = length(parameter.txAntenna); %发射天线的数量
parameter.rxNum = length(parameter.rxAntenna); %接收天线的数量
parameter.dx = parameter.lambda / 2; %虚拟天线的方位最小间距
parameter.subBand = 6; %子带数
parameter.emptyBand = 2; %空子带数
parameter.validBand = parameter.txNum; %有效子带为发射天线数量
parameter.subDopplerBin = parameter.dopplerBin / parameter.subBand; %一个子带dopplerbin的数目
parameter.subBandRelation = [0, 1, 2, 3] * parameter.subDopplerBin; %子带间的关系
parameter.phaseShift = mod(2*pi .* (1:1:parameter.Chirps).' .* (0:1:parameter.txNum-1) ./ parameter.subBand, 2*pi); %chirp信号的相移值
end
代码解读
generateSignal.m文件
generateSignal.m文件的主要功能是生成雷达原始数据;该脚本会构建一个维度为rxNums×chirpNums×samples的空间
具体代码如下:
function rawData = generateSignal(Parameter,target)
c = Parameter.c; %光速
TrTotal = Parameter.TrTotal; %脉冲重复周期
samples = Parameter.Samples; %采样点
chirps = Parameter.Chirps; %chirp数
slope = Parameter.Slope; %chirp斜率
startFreq = Parameter.startFreq; %起始频率
deltaFreq = Parameter.deltaFreq; %步进频率
lambda = Parameter.lambda; %波长
txAntenna = Parameter.txAntenna; %发射天线的位置
rxAntenna = Parameter.rxAntenna; %接收天线的位置
txNum = Parameter.txNum; %发射天线数
rxNum = Parameter.rxNum; %接收天线数
dx = Parameter.dx; %水平间距
targetNum = size(target,1); %目标数
t = Parameter.t; %时间序列
phaseShift = Parameter.phaseShift; %移相值
rawData = zeros(rxNum,chirps,samples);
for rxId = 1:rxNum %接收天线循环
rxPos = rxAntenna(rxId); %每根接收天线的位置
for chirpId = 1:chirps %chirp数目循环
Sif = zeros(1,samples);
centerFreq = startFreq + (chirpId - 1) * deltaFreq;
for txId = 1:txNum %发射天线循环
txPos = txAntenna(txId); %每跟发射天线的位置
virtualAntennaPos = rxPos + txPos; %虚拟天线位置
phaseValue = phaseShift(chirpId,txId); %DDMA移相位值
St = exp((1i*2*pi) * (centerFreq * (t + chirpId * TrTotal) + slope / 2 * t.^2) + 1i * phaseValue); %发射信号
for targetId = 1:targetNum %目标数目循环
targetRange = target(targetId,1); targetSpeed = target(targetId,2); targetAngle = target(targetId,3); %目标信息
tau = 2 * targetRange / c; %距离信息
fd = 2 * targetSpeed / lambda; %频移信息
wx = 2 * pi * virtualAntennaPos / lambda * dx * sind(targetAngle); %天线相位信息
Sr = exp((1i*2*pi) * ((centerFreq-fd) * (t - tau + chirpId * TrTotal) + slope / 2 * (t-tau).^2) - 1i * wx); %回波信号
% Sr = exp((1i*2*pi) * ((centerFreq-fd) * (t - tau + chirpId * TrTotal) + slope / 2 * (t-tau).^2)); %回波信号
Sif = Sif + St .* conj(Sr);
end
end
rawData(rxId,chirpId,:) = Sif;
end
rawData(rxId,:,:) = awgn(rawData(rxId,:,:),0); %添加噪声
end
end
代码解读
运行结果如下:

参考文献
Xiaojie的雷达技术发展之旅—基于TDM-MIMO技术的雷达处理流程仿真
至此,本片文章就此结束了。
