TI 2944 DDMA波形设计和matlab仿真

本例程介绍一个参考TI 2944文档的DDMA波形的设计。2944芯片是一款4T4R的芯片,可以四个天线同时发射电磁波,提高了发射功率,因此相比于TDMA能够探测更远的距离,适合与汽车雷达应用。但是四根天线同时发射波形同时也带来的问题是需要在接收端解调出每个天线的波形,采用了DDMA(多普勒维多址),TI文档中给出的DDMA原理是:

2944采用的是4T4R的4个发射通道,在施加了人为的相位偏移之后,导致了最大不模糊距离降低,因此需要解速度模糊,因此增加了2个空band,这这里我们介绍发射波形的设置:

TI 文档介绍的4个发射通道的相位偏转如上图所示。具体的原理可以参考TI 的AWR 2944的文档。里面讲的比较详细。

这里我们直接根据文档设计DDMA的波形。并设计两个目标,目标的参数分别是距离、速度、方位角和俯仰角四个参数。波形的其他参数我们参考TI 原有的参数。

%% ---------------------------------------------------------------------------------------

c = physconst('LightSpeed'); % 设置光速

fc = 76.42e9; % 频率77G 载频

numADC = 384; % ADC采样点数 时域 adc samples

numChirps =768; % 每个frame的chirp个数

numCPI = 1; % 一个frame

rampEndTime = 18.81e-6; %采样时间

idleTime = 5e-6; %空闲时间


T = rampEndTime+ idleTime; % pulse repetition interval (PRI)

F = 30e6; % 采样频率 ,最大频率

dt = 1/F; % 采样间隔 :时间间隔

slope = 8.883e12; % 斜率

lambda = c/fc; %波长

N = numChirps*numADC*numCPI; % ADC一共的 采样个数 点数

t = linspace(0,T*numChirps*numCPI,N); % frame的时间轴

t_onePulse = 0:dt:dt*numADC-dt; % 一个chirp的时间轴

numTX = 4; % 发射天线

numRX = 4; % 接收天线


d_rx = lambda/2; % 接收天线之间的间隔

d_tx = lambda/2; % 发射天线之间的间隔

%% ------------------目标设置,一共是两个目标------------------------------------------

target_1 = [100 20 -15 6]; %距离-速度-方位角-俯仰角

r1_y = target_1(1)*cosd(target_1(4))*cosd(target_1(3)); %目标1的y坐标

r1_x = target_1(1)*cosd(target_1(4))*sind(target_1(3)); %目标1的x坐标

r1_z = target_1(1)*sind(target_1(4));

v1_y = target_1(2)*cosd(target_1(4))*cosd(target_1(3)); %目标1速度Y分量

v1_x = target_1(2)*cosd(target_1(4))*sind(target_1(3)); %目标1速度X分量

v1_z = target_1(2)*sind(target_1(4)); %目标1速度X分量

r1 = [r1_x r1_y r1_z]; %目标1的坐标值

target_2 = [40 10 10 -10]; %距离-速度-方位角-俯仰角


r2_y = target_2(1)*cosd(target_2(4))*cosd(target_2(3)); %目标2的y坐标

r2_x = target_2(1)*cosd(target_2(4))*sind(target_2(3)); %目标2的x坐标

r2_z = target_2(1)*sind(target_2(4)); %目标2的z坐标

v2_y = target_2(2)*cosd(target_2(4))*cosd(target_2(3)); %目标2速度Y分量

v2_x = target_2(2)*cosd(target_2(4))*sind(target_2(3)); %目标2速度X分量

v2_z = target_2(2)*sind(target_2(4));

r2 = [r2_x r2_y r2_z];

%% ---------------------- 计算发射天线的坐标值 ------------

figure(1)

tx_loc = cell(1,numTX); %构建一个1行numTX列的cell数据

tx_loc{1} = [0, 0, 0]; %发射天线的坐标,第一个是0 0 0

tx_loc{2} = [2*d_tx, 0, 1.6*d_tx]; %发射天线的坐标,第一个是0 0 0

tx_loc{3} = [4*d_tx, 0, 0]; %发射天线的坐标,第一个是0 0 0

tx_loc{4} = [8*d_tx, 0, 0]; %发射天线的坐标,第一个是0 0 0

for ii=1:numTX

scatter3(tx_loc{ii}(1),tx_loc{ii}(2),tx_loc{ii}(3),'r','filled')

hold on

end


rx_loc = cell(1,numRX); %numRX

rx_loc{1} = [-5.5*d_rx, 0, 0];

rx_loc{2} = [-5*d_rx, 0, 0];

rx_loc{3} = [-4.5*d_rx, 0, 0];

rx_loc{4} = [-4*d_rx, 0, 0];


for i = 1:numRX

scatter3(rx_loc{i}(1),rx_loc{i}(2),rx_loc{i}(3),'b','filled')

end

title('MIMO天线虚拟阵列图')

xlabel('x坐标/m');

ylabel('y坐标/m')

text(tx_loc{1}(1),tx_loc{1}(2),tx_loc{1}(3),'发射天线1')

%% 计算目标在雷达信号发射期间内的移动距离,转换为坐标

tar1_loc = zeros(length(t),3); % 目标1的位置预定义

tar2_loc = zeros(length(t),3); % 目标2的位置预定义


tar1_loc(:,1) = r1(1) + v1_x*t; % 第一列定义为x坐标,意思是在雷达发射脉冲768 chirp全部时间内,目标在X方向移动的距离值

tar1_loc(:,2) = r1(2) + v1_y*t; % 目标位置坐标

tar1_loc(:,3) = r1(3) + v1_z*t;


tar2_loc(:,1) = r2(1) + v2_x*t;

tar2_loc(:,2) = r2(2) + v2_y*t;

tar2_loc(:,3) = r2(3) + v2_z*t;

%% 计算目标在移动中,信号从发射到每个接收天线之间的时间 路程/光速=时间

delays_tar1 = cell(numTX,numRX); %目标1的在运动时间,信号从发射到接收走过的时间

delays_tar2 = cell(numTX,numRX);


for i = 1:numTX

for j = 1:numRX

delays_tar1{i,j} = (vecnorm(tar1_loc-repmat(rx_loc{j},N,1),2,2)+vecnorm(tar1_loc-repmat(tx_loc{i},N,1),2,2))/c; %范数重复数组副本

delays_tar2{i,j} = (vecnorm(tar2_loc-repmat(rx_loc{j},N,1),2,2)+vecnorm(tar2_loc-repmat(tx_loc{i},N,1),2,2))/c; %计算延迟时间

end

end

%% 信号设置

phase1 = @(tx,fx) 2*pi*(fx.*tx+slope/2*tx.^2); % 发射信号时域表示形式

phase2 = @(tx,fx,k) 2*pi*(fx.*tx+slope/2*tx.^2)+2*pi/6*(k-1); % 发射信号时域表示形式

phase3 = @(tx,fx,k) 2*pi*(fx.*tx+slope/2*tx.^2)+4*pi/6*(k-1) ; % 发射信号时域表示形式

phase4 = @(tx,fx,k) 2*pi*(fx.*tx+slope/2*tx.^2)+6*pi/6*(k-1); % 发射信号时域表示形式


mixed = cell(1,numRX);


for j = 1:numRX

% for ii = 1:numTX

% disp(['Processing Channel: ' num2str(j) '/' num2str(numRX)]);

for k = 1:numChirps*numCPI

phase_t1 = phase1(t_onePulse,fc); %设置发射信号波形 ,一个chirp信号

phase_t2 = phase2(t_onePulse,fc,k) ;

phase_t3 = phase3(t_onePulse,fc,k);

phase_t4 = phase4(t_onePulse,fc,k);



phase_1 = phase1(t_onePulse-(delays_tar1{1,j}((k-1)*numADC+1:k*numADC))',fc); %T1-T numRX

phase_2 = phase2(t_onePulse-(delays_tar1{2,j}((k-1)*numADC+1:k*numADC))',fc,1);

phase_3 = phase3(t_onePulse-(delays_tar1{3,j}((k-1)*numADC+1:k*numADC))',fc,1);

phase_4 = phase4(t_onePulse-(delays_tar1{4,j}((k-1)*numADC+1:k*numADC))',fc,1) ;

phase_21 = phase1(t_onePulse-(delays_tar2{1,j}((k-1)*numADC+1:k*numADC))',fc); % 计算每个接收天线对应第二个目标的回波信号

phase_22 = phase2(t_onePulse-(delays_tar2{2,j}((k-1)*numADC+1:k*numADC))',fc,1);

phase_23 = phase3(t_onePulse-(delays_tar2{3,j}((k-1)*numADC+1:k*numADC))',fc,1);

phase_24 = phase4(t_onePulse-(delays_tar2{4,j}((k-1)*numADC+1:k*numADC))',fc,1);

% signal_t((k-1)*numADC+1:k*numADC) = exp(1i*phase_t1);

signal_1((k-1)*numADC+1:k*numADC) = exp(1i*(phase_t1 - phase_1))+exp(1i*(phase_t2 - phase_2)) +exp(1i*(phase_t3 - phase_3)) +exp(1i*(phase_t4 - phase_4));

signal_2((k-1)*numADC+1:k*numADC) = exp(1i*(phase_t1 - phase_21))+exp(1i*(phase_t2 - phase_22))+exp(1i*(phase_t3 - phase_23))+exp(1i*(phase_t4 - phase_24));

end

mixed{1,j} = awgn(signal_1 + signal_2,5,'measured'); %接收到的信号

mixed{1,j} = reshape(mixed{1,j},[384,768]);

end

signal_1=[];

for ik = 1:numRX

signal_1 = cat(3,signal_1,mixed{1,ik});

end

AdcData = permute(signal_1,[3 1 2]);


figure(2);

mesh(squeeze(abs(AdcData(1,:,:))));

%% 1D-FFT

FFT_1D = fft(AdcData , [],2); %加窗后fft计算, frameAdcData:4*384*768

FFT_1D = FFT_1D(:,1:192,:); % 取一半 4*192*768

%% 2D-FFT

FFT_2D= fft(FFT_1D, [],3); %加窗后fft,注意把dopplerWin转换为了1*1*768,才能加窗 = 4*192*768

FFT_2D(:,1,:)=0; % 消除直流分量

FFT_2Dsum_acrossRx = 20*log10(squeeze(sum(abs(FFT_2D),1))); %每一列数据是4个天线幅值累加,=192*768

fft2d=fftshift(fft(FFT_1D,[],3),3);

vector_v=(-384:383)*0.106;

vector_r=(1:192)* 1.3;% 取一半

figure(3)

mesh(vector_v,vector_r,db(squeeze(abs(fft2d(1,:,:)))));

xlabel('doppler');ylabel('距离向');grid on;title('2dfft');

%% 程序结束,本程序最终到2D-FFT结果,后面的计算过程可以根据自己的需求继续,例如距离维度的CFAR、角度FFT和速度维度的CFAR等过程以及点云输出。

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值