论文推荐
如果觉着这篇文章有帮助的话可以在发论文的时候引用一下博主在IEEE WCNC的最新论文嘛
https://ieeexplore.ieee.org/abstract/document/10978219
OTFS 调制
本案例模拟了一条使用正交时频空间(OTFS)调制的通信链路,与标准的正交频分复用(OFDM)调制相比,突出了其载波间干扰(ICI)消除能力。OTFS 是一种多载波调制技术,在由高多路径组成的信道环境中具有弹性[1]。大多数现代无线系统都使用 OFDM,但由于其无法消除 ICI,因此在高多普勒信道中会受到影响。本示例实现了一个简单的 OTFS 发射器和接收器,通过具有移动散射体的信道过滤数据,并使用估计的信道参数在延迟-多普勒(DD)域均衡信道,以检测传输的编码字。
OTFS 原理
在高多普勒信道中,信道特性变化迅速,导致信道相干时间较短。相干时间与信道系数变化成反比。OFDM 多年来一直是各种无线系统的首选调制方案。使用 OFDM 时,高多普勒信道环境需要频繁的信道测量和 ICI。在高多普勒信道环境中,OFDM 的两个缺点包括需要更频繁地测量信道和 ICI:OFDM 在时频(TF)域传输数据,每个数据符号都有自己的正交频率子载波。参考(先导)符号可用于信道测量,但会占用部分信道载波。
延迟多普勒域
在延迟多普勒域中的操作类似于在脉冲多普勒雷达信号处理中处理雷达回波。雷达发射窄带脉冲,并根据返回信号的到达时间(由发射和接收之间的延迟测量)和多普勒回波的速度,将返回的回波分为不同的范围。同样,发射机向接收机发送信号时可能会出现多路径反射,这与雷达回波很相似。每个多路径反射可能相对于发射器有一定的延迟,并且由于反射器相对于接收器的移动而产生一定的多普勒频移。
在下图中,基站向位于移动汽车中的接收器发射信号。右上方显示的二维延迟-多普勒信道响应用各自的路径编号表示各个路径。数字的大小和路径的粗细与路径强度成正比。
直视线为参考时间,用粗线表示,延迟为 0 个采样点。汽车正以 130 公里/小时的速度向基站方向行驶,但路径的多普勒频移指数为 0,因为汽车上的接收器会调整载波频率以补偿任何多普勒频移效应。路径 1 表示来自比接收汽车速度慢的邻近卡车的反射。由于信号传输距离较长,路径 1 的传输延迟稍长,多普勒频移指数为负值。
多路径对单个 DD 网元的影响如下所示。 包含五个传输信号,
是信道响应,
是
和
的二维卷积。 在 OTFS 中,限时信令意味着卷积是环形的,包括相位旋转,即所谓的扭曲卷积。
延迟-多普勒域到时频域的表示方法
要了解延迟-多普勒域如何转换到时频域,可以将这一过程与 OFDM 联系起来。下图显示了作为预编码 OFDM 调制-解调系统的 OTFS 调制和解调。
模拟高机动性信道上的 OTFS
在延迟-多普勒域中传输先导信号,以探测高移动性信道,并观察延迟-多普勒域中的信道响应。本例使用零填充来演示信道探测和数据传输。
模拟设置
配置模拟参数。为演示 OTFS 的基本概念,设置 = 64 和 = 30。将信噪比设为较高值,以显示不同调制和信道条件下 ISI 和 ICI 的影响。
M = 64; % 子载波的数量
N = 30; % 每帧的子符号数量
df = 15e3; % 将此设置为LTE的频率间隔
fc = 5e9; % 载波频率,单位赫兹
padLen = 10; % 使这个值大于信道延迟扩展的样本数
padType = 'ZP'; % 此示例需要ZP来减轻符号间干扰(ISI)
SNRdB = 40; % 信噪比,单位分贝
网格总数
创建一个大小为 -by- 的空数组,其中行对应于延迟分区,列对应于多普勒分区。为了演示延迟-多普勒域的数据如何在高移动性信道中传播,请在网格位置(1,16)处放置一个先导信号以探测信道。其他网格元素留空,以便散射体回波出现在接收到的延迟-多普勒网格中。
% 导频生成和网格填充
pilotBin = floor(N/2)+1;
% 计算导频信号放置的网格位置,取N的一半的向下取整值,然后加1,以确定DD域中的中心子符号位置。
Pdd = zeros(M,N);
% 初始化一个M行N列的零矩阵,这个矩阵将用于表示延迟-多普勒(DD)域。
Pdd(1,pilotBin) = exp(1i*pi/4);
% 在DD域的特定位置填充导频信号。这里使用exp(1i*pi/4)生成一个复数值作为导频信号,放置在第一行第pilotBin列的位置,以此来观察导频信号在信道中的效果。
OTFS调制
% OTFS modulation
txOut = helperOTFSmod(Pdd,padLen,padType);
高移动性信道
创建一个 AWGN 高移动性信道,其中有固定的发射机和移动接收机,以及不同延迟和多普勒频移的移动散射体:
创建一条代表从基站到接收器的主要传播路径的视距路径,该路径具有零延迟和零归一化多普勒。由于接收机与基站的时间和频率同步,因此视距路径的延迟和多普勒均为零。
创建距离接收机延迟五个采样点并远离接收机的散射体 1,其多普勒为归一化多普勒的三倍。
创建散射体 2,距离接收机延迟八个采样点,以五倍于归一化多普勒的多普勒向接收机移动。
% 配置路径参数
chanParams.pathDelays = [1 5 8 ]; % 路径延迟的样本数
chanParams.pathGains = [1 0.7 0.5]; % 复杂路径增益
chanParams.pathDopplers = [1 -3 5 ]; % 多普勒指数,以fsamp/MN为倍数
fsamp = M*df; % Nyquist率的采样频率
if strcmp(padType,'ZP') || strcmp(padType,'CP')
Meff = M + padLen; % 每个OTFS子符号的样本数
numSamps = Meff * N; % 每个OTFS符号的样本数
T = ((M+padLen)/(M*df)); % 符号时长(秒)
else
Meff = M; % 每个OTFS子符号的样本数
numSamps = M*N + padLen; % 每个OTFS符号的样本数
T = 1/df; % 符号时长(秒)
end
% 从多普勒指数计算实际的多普勒频率
chanParams.pathDopplerFreqs = chanParams.pathDopplers * 1/(N*T); % Hz
% 将OTFS调制信号通过信道发送
dopplerOut = dopplerChannel(txOut,fsamp,chanParams);
% 添加白色高斯噪声
Es = mean(abs(pskmod(0:3,4,pi/4).^ 2));
n0 = Es/(10^(SNRdB/10));
chOut = awgn(dopplerOut,SNRdB,'measured');
显示实际的散射体参数延迟和多普勒频移值,以便将归一化值与实际值联系起来。
for k = 1:length(chanParams.pathDelays)
fprintf('Scatterer %d\n',k);
fprintf('\tDelay = %5.2f us\n', 1e6*chanParams.pathDelays(k)/(Meff*df));
fprintf('\tRelative Doppler shift = %5.0f Hz (%5.0f km/h)\n', ...
chanParams.pathDopplerFreqs(k), (physconst('LightSpeed')*chanParams.pathDopplerFreqs(k)/fc)*(3600/1000));
end
OTFS 解调
开始解调过程时,接收到的信号矢量会被打包到一个-比-矩阵中。维格纳变换是海森堡变换的逆变换。由于本例使用矩形脉冲整形,因此维格纳变换只是一个 OFDM 解调操作。继 Wigner 变换之后,SFFT 将时频域网格转换为延迟-多普勒域。
在本例中,使用效率更高的 Zak 变换对信号进行解调:
% 获取一个样本窗口
rxIn = chOut(1:numSamps);
% OTFS解调
Ydd = helperOTFSdemod(rxIn,M,padLen,0,padType);
figure;
xa = 0:1:N-1;
ya = 0:1:M-1;
mesh(xa,ya,abs(Hdd));
view([-9.441 62.412]);
title('Delay-Doppler Channel Response H_{dd} from Channel Sounding');
xlabel('Normalized Doppler');
ylabel('Normalized Delay');
zlabel('Magnitude');
信道估计
延迟-多普勒域的信道估计需要估计信道响应中所有散射体的参数(延迟、多普勒和复增益)。从信道响应中找出超过预设增益阈值的路径,并存储每条路径的参数。存储信道估计值,以便以后在同一信道上传输数据时使用。
[lp,vp] = find(abs(Hdd) >= 0.05);
chanEst.pathGains = diag(Hdd(lp,vp)); % 获取路径增益
chanEst.pathDelays = lp - 1; % 获取延迟指数
chanEst.pathDopplers = vp - pilotBin; % 获取多普勒指数
比较高移动性信道中的 OFDM 和 OTFS
OTFS 和 OFDM 都通过循环前缀来抵消 ISI 的影响。然而,OFDM 接收机通常使用的单抽头频域均衡器(FDE)无法消除不同路径多普勒频移产生的 ICI 影响。在本节中,我们将对 QPSK 映射符号进行逐个网格划分,并使用 OFDM 和 OTFS 在高移动性信道上进行传输,以比较两者的性能。
生成用于传输的数据。
% 数据生成
Xgrid = zeros(M,N);
Xdata = randi([0,1],2*M,N);
Xgrid(1:M,:) = pskmod(Xdata,4,pi/4,InputType="bit");
高多普勒信道上的 OFDM
在 OFDM 中,通过发射已知符号(先导符)并测量接收器上先导符的失真来估计信道。通过在所有符号的所有子载波上发射先导信号来估计信道。
%在所有子载波和符号上传输引导信号,以探测信道的声音
txOut = ofdmmod(exp(1i*pi/4)*ones(M,N),M,padLen); % 在整个网格上发送先导信号
dopplerOut = dopplerChannel(txOut,fsamp,chanParams); % 通过通道发送
chOut = awgn(dopplerOut,SNRdB,'measured'); % 添加噪声
Yofdm = ofdmdemod(chOut(1:(M+padLen)*N),M,padLen); % 解调
Hofdm = Yofdm * conj(Pdd(1,pilotBin)) / (abs(Pdd(1,pilotBin))^2 + n0); % LMMSE 信道估计值
使用 OFDM 发送数据网格。利用测得的信道估计值,对所有符号进行单抽头 FDE 均衡。
%在同一信道上传输数据,并使用信道估计值进行均衡
txOut = ofdmmod(Xgrid,M,padLen); % 传输数据网格
dopplerOut = dopplerChannel(txOut,fsamp,chanParams); % 通过信道发送
chOut = awgn(dopplerOut,SNRdB,'measured'); % 添加噪声
rxWindow = chOut(1:(M+padLen)*N);
Yofdm = ofdmdemod(rxWindow,M,padLen); % 解调
Xhat_ofdm = conj(Hofdm) .* Yofdm ./ (abs(Hofdm).^2+n0); % 用 LMMSE 均衡
显示接收到的星座图。即使信噪比很高,星座也会产生噪声。您可以将两个散射体的多普勒频移设为零,观察星座的误差矢量幅度(EVM)是否减小,从而验证噪声主要来自 ICI。
constDiagOFDM = comm.ConstellationDiagram( ...
'ReferenceConstellation',pskmod(0:3,4,pi/4), ...
'XLimits',[-2 2], ...
'YLimits',[-2 2], ...
'Title','OFDM with Single-Tap FDE');
constDiagOFDM(Xhat_ofdm(:));
XhatData = pskdemod(Xhat_ofdm,4,pi/4, ...
OutputType="bit",OutputDataType="logical"); % decode
[~,ber] = biterr(Xdata,XhatData);
fprintf('OFDM BER with single-tap equalizer = %3.3e\n', ber);
OTFS Over High-Doppler Channel
Transmit the same data grid using OTFS modulation.
% OTFS 调制
txOut = helperOTFSmod(Xgrid,padLen,padType);
% 添加通道和噪声
dopplerOut = dopplerChannel(txOut,fsamp,chanParams);
chOut = awgn(dopplerOut,SNRdB,'measured');
% 使用信道估计值形成 G 矩阵
G = getG(M,N,chanEst,padLen,padType);
rxWindow = chOut(1:numSamps);
y_otfs = ((G'*G)+n0*eye(Meff*N)) \ (G'*rxWindow); % LMMSE
Xhat_otfs = helperOTFSdemod(y_otfs,M,padLen,0,padType); % OTFS 解调
constDiagOTFS = comm.ConstellationDiagram( ...
'ReferenceConstellation',pskmod(0:3,4,pi/4), ...
'XLimits',[-2 2], ...
'YLimits',[-2 2], ...
'Title','OTFS with Time-Domain LMMSE Equalization');
constDiagOTFS(Xhat_otfs(:));


总结
OTFS 是一种很有前途的调制方案,可抵消移动环境中高多普勒的影响。本例介绍了延迟-多普勒域的概念、移动信道对该域中传输符号的影响,以及如何调制和解调 OTFS 符号。使用 OTFS 和 OFDM 在同一信道上传输相同的数据,并在进行简单的信道估计和均衡后观察它们的误码率,结果表明 OTFS 能有效消除 ICI,而 OFDM 却不能。
文献中还有更精确的信道估计和更有效的数据检测方法。本示例使用简单的信道估计技术和直接的信道均衡方法,展示了在高多普勒信道中 OTFS 相对于 OFDM 的优势。