关注我,追更更多通信仿真代码!

摘要

通信感知一体化(Integrated Sensing and Communication, ISAC)是第六代(6G)移动通信系统的核心使能技术之一,它允许在同一硬件平台和频谱资源上同时实现无线通信与环境感知。本文以正交频分复用(OFDM)波形为基础,设计并实现了一个完整的ISAC系统仿真框架。通信部分采用哈达玛(Hadamard)码实现多用户码分多址(CDMA),每用户使用QPSK调制;雷达感知部分利用相同的OFDM信号作为探测波形,通过匹配滤波和二维快速傅里叶变换(FFT)生成距离‑多普勒图,并采用有序统计恒虚警率(OS‑CFAR)算法进行目标检测。仿真实验验证了系统在通信误码率、星座恢复、目标距离‑速度估计及检测性能等方面的有效性,为ISAC系统的工程设计和参数优化提供了参考。

1 引言

1.1 研究背景与意义

随着5G的大规模部署和6G研究的全面展开,未来的无线网络不仅需要提供超高速率、极低时延和海量连接,还需要具备对物理世界的感知能力,以实现智能交通、智慧工厂、增强现实等新兴应用。传统上,通信和雷达感知各自采用独立的硬件和频段,这导致频谱利用率低、设备成本高、体积大。通信感知一体化(ISAC)技术应运而生,它通过统一波形和软硬件平台,使通信与感知功能深度融合,成为6G的关键技术方向之一。

1.2 OFDM波形在ISAC中的优势

正交频分复用(OFDM)因其频谱效率高、抗多径能力强、易于实现MIMO扩展等优点,已广泛应用于4G/5G、WiFi等通信标准。在ISAC场景中,OFDM同样极具吸引力:

  • 通信与感知共用:OFDM信号在频域上由多个正交子载波构成,可直接用于数据调制,同时其确定性的频域结构适合作为雷达参考信号。

  • 高分辨能力:OFDM信号的模糊函数呈“图钉状”,具有同时实现距离高分辨和多普勒高分辨的潜力。

  • 循环前缀(CP):CP的存在不仅消除符号间干扰,还可简化雷达回波中距离模糊的处理。

因此,基于OFDM的ISAC系统成为当前研究的热点。

1.3 本文工作与组织结构

本文基于MATLAB平台,实现了一个端到端的OFDM‑ISAC仿真系统,主要工作如下:

  • 设计基于Hadamard码的多用户CDMA通信方案,并评估其在QPSK调制下的误码性能。

  • 采用同一OFDM信号作为雷达探测波形,推导并实现匹配滤波、距离‑多普勒成像。

  • 引入OS‑CFAR算法实现稳健的目标检测,并与真实目标进行匹配分析。通过仿真实验全面评估系统的通信和感知性能。

2 系统模型与信号处理

2.1 OFDM信号模型

在这里插入图片描述

2.2 通信信号模型

2.2.1 多用户CDMA与Hadamard码

在这里插入图片描述

2.2.2 发射端通信处理

在这里插入图片描述

2.2.3 接收端通信处理

在这里插入图片描述

2.3 雷达感知信号模型

在这里插入图片描述

2.3.1 目标回波建模

在这里插入图片描述

2.3.2 匹配滤波与距离估计

在这里插入图片描述

2.3.3 距离‑多普勒处理

在这里插入图片描述

2.4 OS‑CFAR目标检测

从距离‑多普勒图中提取目标需要有效的恒虚警率(CFAR)检测。本文采用有序统计CFAR(OS‑CFAR),因其在多目标和杂波边缘环境下更为稳健。

在这里插入图片描述
在这里插入图片描述

3 仿真实现

3.1 系统参数配置

参数符号数值
采样率 F s F_s Fs​2 GHz
FFT点数 M M M2048
循环前缀长度 N C P N_{\rm CP} NCP​1024
有效子载波起始索引 n 0 n_0 n0​200
有效子载波数(Hadamard码维度) H s i z e H_{\rm size} Hsize​128
OFDM符号数 N s y m N_{\rm sym} Nsym​512
通信信噪比 SNR c o m m \text{SNR}_{\rm comm} SNRcomm​0 dB
雷达信噪比 SNR r a d a r \text{SNR}_{\rm radar} SNRradar​10 dB
用户数 N u N_u Nu​10
每用户码片数 N p e r N_{\rm per} Nper​10
载波频率 f c f_c fc​5.8 GHz
目标个数 T T T4
匹配滤波FFT点数 N f f t _ c o r r N_{\rm fft\_corr} Nfft_corr​ 2 ⌈ log ⁡ 2 ( 2 ( M + N C P ) − 1 ) ⌉ 2^{\lceil \log_2(2(M+N_{\rm CP})-1) \rceil} 2⌈log2​(2(M+NCP​)−1)⌉
慢时间FFT点数 N f f t _ d o p N_{\rm fft\_dop} Nfft_dop​ 2 ⌈ log ⁡ 2 ( 2 N s y m ) ⌉ 2^{\lceil \log_2(2N_{\rm sym}) \rceil} 2⌈log2​(2Nsym​)⌉
OS‑CFAR训练单元数 N t r a i n N_{\rm train} Ntrain​40
OS‑CFAR保护单元数 N g u a r d N_{\rm guard} Nguard​10
OS‑CFAR秩因子 η \eta η0.75
OS‑CFAR门限因子 α \alpha α3.5
幅度门限 A g a t e A_{\rm gate} Agate​0.035
最小检测间隔(距离单元) N s e p N_{\rm sep} Nsep​25

3.2 仿真流程

发送端流程在这里插入图片描述
接收端流程
在这里插入图片描述

3.3 仿真图分析

3.3.1 通信性能

在这里插入图片描述

  • 图1给出了10个用户之间Hadamard扩频码的相关性矩阵。对角线元素精确为1,非对角线元素绝对值均小于0,验证了Hadamard矩阵的理想正交性。这一特性保证了多用户信号在理想条件下互不干扰。
  • 图2展示了接收端恢复的QPSK星座,SNR =0 dB 条件下,接收符号围绕理想星座点呈高斯弥散。
  • 结果表明,SNR =0 dB 条件下 用户的通信ser为10^-3之下,该系统仍能实现可接受的通信质量,验证了CDMA‑OFDM方案的可靠性。
3.3.2 雷达感知性能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 图3给出了沿距离维的匹配滤波输出。在预设的4个目标延迟位置(对应采样点250、430、680、900)处观察到清晰的峰值,表明匹配滤波具有良好的脉冲压缩性能。
  • 图4为二维距离‑多普勒图,图中可清晰分辨4个目标。
  • OS‑CFAR检测结果显示所有4个真实目标均被正确检测(真阳性率100%),无虚警(假阳性0),无漏检

3.4 部分代码

function [decodedData, rangeMatrix] = runIsac(cfg, txData)
% runIsac - 执行通信和雷达一体化处理
%   cfg       : 配置结构体
%   txData    : 发送的 QPSK 符号(cell 数组,每个用户一个矩阵)
%   decodedData : 解码后的符号(cell 数组)
%   rangeMatrix : 匹配滤波输出的距离-慢时间矩阵

decodedData = cell(cfg.numUsers, 1);
for u = 1:cfg.numUsers
    decodedData{u} = zeros(cfg.numSymbols, cfg.NPerUser);
end

rangeMatrix = zeros(cfg.NfftCorr, cfg.numSymbols);

% 目标多普勒参数
targetVelocity = cfg.targets(:,2);
dopplerHz = 2 * targetVelocity * cfg.fc / cfg.c;
phaseStep = 2 * pi * dopplerHz * cfg.Tsym;   % 每个符号间的相位增量

for k = 1:cfg.numSymbols
    % ---------- 发射端:生成 OFDM 符号 ----------
    Xshared = zeros(1, cfg.HSize);
    for u = 1:cfg.numUsers
        codeBlock = cfg.H(cfg.userRows(u,:), :);
        Xshared = Xshared + txData{u}(k,:) * codeBlock;
    end

    Xfreq = zeros(1, cfg.M);
    Xfreq(cfg.n0 + 1 : cfg.n0 + cfg.HSize) = Xshared;

    xTx = real(ifft(Xfreq));
    xTxCp = [xTx(end-cfg.N_CP+1:end), xTx];   % 添加循环前缀

    % ---------- 通信信道 ----------
    signalPower = mean(xTxCp.^2);
    noisePower = signalPower / 10^(cfg.SNR_dB/10);
    xRxCp = xTxCp + sqrt(noisePower) * randn(size(xTxCp));

    % 去除 CP,FFT 解调
    Y = fft(hilbert(xRxCp(cfg.N_CP+1:end)));
    Yshared = Y(cfg.n0 + 1 : cfg.n0 + cfg.HSize);

    % 解扩(利用 Hadamard 码正交性)
    for u = 1:cfg.numUsers
        codeBlock = cfg.H(cfg.userRows(u,:), :);
        decodedData{u}(k,:) = Yshared * codeBlock.';
    end

    % ---------- 雷达回波 ----------
    radarReference = xTxCp;
    radarPower = mean(abs(radarReference).^2);
    radarNoise = radarPower / 10^(cfg.SNR_radar_dB/10);

    % 初始化噪声回波
    xRadar = sqrt(radarNoise/2) * ...
        (randn(size(radarReference)) + 1j*randn(size(radarReference)));

    % 叠加各目标回波
    for t = 1:size(cfg.targets,1)
        delay = cfg.targets(t,1);          % 延迟采样数
        amp = cfg.targets(t,3);            % 幅度
        phase = exp(1j*(phaseStep(t)*(k-1) + cfg.phaseNoiseStd*randn()));

        delayed = [zeros(1, delay), radarReference(1:end-delay)];
        xRadar = xRadar + amp * delayed * phase;
    end

    % 匹配滤波(频域相关)
    RX = fft(xRadar, cfg.NfftCorr);
    REF = fft(radarReference, cfg.NfftCorr);
    rangeMatrix(:,k) = ifft(RX .* conj(REF));
end
end
% 主脚本:运行 ISAC 系统仿真
clear; clc; close all;

% 获取当前脚本所在路径
root = fileparts(mfilename('fullpath'));
if isempty(root)
    root = pwd;
end

% 添加配置和源码目录
addpath(fullfile(root, 'config'));
addpath(genpath(fullfile(root, 'src')));

% 加载配置
cfg = projectConfig();
rng(cfg.seed, 'twister');   % 固定随机种子

% 设置图形默认字体(支持中文)
setupFigures();

% 创建结果文件夹
resultsFolder = fullfile(root, cfg.resultsFolder);
if ~exist(resultsFolder, 'dir')
    mkdir(resultsFolder);
end

% 生成发送数据
txData = makeTxData(cfg);

% 运行 ISAC 处理(通信解码 + 雷达距离矩阵)
[decodedData, rangeMatrix] = runIsac(cfg, txData);

% 通信性能指标
comm = communicationMetrics(txData, decodedData, cfg);

% 距离-多普勒处理
radar = rangeDoppler(rangeMatrix, cfg);

% OS-CFAR 目标检测
cfar = osCfar(radar.profile, cfg);

% 估计检测结果并匹配真实目标
detection = estimateDetections(cfar, radar, cfg);

% 打印性能摘要
printSummary(comm, detection, cfg);

% 绘制各图
plotCommunication(comm, cfg, resultsFolder);
plotRangeProcessing(rangeMatrix, radar, cfg, resultsFolder);
plotRangeDoppler(radar, detection, cfg, resultsFolder);
plotCfar(radar, cfar, detection, cfg, resultsFolder);

5 总结

本文基于MATLAB平台设计并实现了一个以OFDM波形为核心的通信感知一体化系统仿真,覆盖了从信号生成、多用户CDMA通信、雷达回波模拟、匹配滤波、距离‑多普勒成像到OS‑CFAR目标检测的完整链路。通过理论分析和仿真实验,得到以下结论:

  • 通信功能:基于Hadamard码的CDMA方案可实现多用户正交复用,在0 dB SNR下仍能获得较低的误符号率,星座图清晰可辨,证明其具有良好的抗干扰能力。

  • 雷达感知功能:利用同一OFDM信号进行匹配滤波和二维FFT处理,能够精确估计目标的距离和速度,满足一般感知场景需求。

  • 目标检测:OS‑CFAR算法在多目标环境下表现出色,所有预设目标均被检测且无虚警,验证了算法对噪声和杂波的稳健性。

本文工作验证了OFDM‑ISAC系统的可行性,为后续研究提供了基础框架。未来可拓展至MIMO‑OFDM架构以提升角度分辨力,研究自适应资源分配(子载波、功率)以平衡通信和感知性能,以及探索复杂环境(多径、非均匀杂波)下的稳健处理算法。

参考文献:

[1] Liu F, Cui Y, Masouros C, et al. Integrated sensing and communications: Toward dual-functional wireless networks for 6G and beyond[J]. IEEE Journal on Selected Areas in Communications, 2022, 40(6): 1728-1767.

[2] Rohling H. OFDM radar systems - A promising approach for future automotive radar[J]. IEEE Transactions on Intelligent Transportation Systems, 2009, 10(4): 512-520.

[3] You D, Song Z, Wang Z. Ordered-statistic CFAR for OFDM radar[J]. IET Radar, Sonar & Navigation, 2020, 14(6): 835-843.
仿真代码可见文末VX公众号(包含往期博客所有代码),所见即所得!

更多推荐