主要内容

带前追加循环前缀的 OFDM 和均衡

此示例在 OFDM 调制的 16-QAM 数据前追加了一个循环前缀。为了实现有效均衡,循环前缀 (CP) 的长度必须等于或大于信道长度。

定义用于 QAM 和 OFDM 处理的变量。生成符号,并执行 QAM 调制和 OFDM 调制,然后向信号添加 CP。可以同时处理多个 OFDM 符号,然后将其串行化。

bps = 4;    % Number of bits per symbol 
M = 2^bps;  % Modulation order
nFFT = 128; % Number of FFT bins
nCP = 8;    % CP length

txsymbols = randi([0 M-1],nFFT,1);
txgrid = qammod(txsymbols,M,UnitAveragePower=true);
txout = ifft(txgrid,nFFT);
% To process multiple symbols, vectorize the txout matrix
txout = txout(:);
txcp = txout(nFFT-nCP+1:nFFT);
txout = [txcp; txout];

通过向接收的信号添加噪声、频率依赖性和延迟的信道对发射进行滤波。

hchan = [0.4 1 0.4].';
rxin = awgn(txout,40);       % Add noise   
rxin = conv(rxin,hchan);     % Add frequency dependency
channelDelay = dsp.Delay(1); % Could use fractional delay
rxin = channelDelay(rxin);   % Add delay

添加一个小于 CP 长度的随机偏移量。偏移量设置为零表示发射信号和接收信号之间完美同步。任何小于 CP 长度的定时偏移量都可以通过附加线性相位的均衡来补偿。

offset = randi(nCP) - 1; % random offset less than length of CP
% Remove CP and synchronize the received signal
rxsync = rxin(nCP+1+channelDelay.Length-offset:end);
rxgrid = fft(rxsync(1:nFFT),nFFT);

实际系统在信号恢复过程中需要进行信道估计。OFDM 和 CP 的组合将均衡简化为每个频率 bin 对应一个复数标量。只要延迟不超过 CP 长度,信道估计器就可以完成同步。这里提供了一个控制选项,使您能够通过在接收机前端禁用均衡来进行试验。比较发射信号和接收机输出。

useEqualizer = true;
if useEqualizer
    hfchan = fft(hchan,nFFT);
    % Linear phase term related to timing offset
    offsetf = exp(-1i * 2*pi*offset * (0:nFFT-1).'/nFFT);
    rxgrideq = rxgrid ./ (hfchan .* offsetf);
else % Without equalization errors occur
    rxgrideq = rxgrid;
end
rxsymbols = qamdemod(rxgrideq,M,UnitAveragePower=true);
if max(txsymbols - rxsymbols) < 1e-8
    disp("Receiver output matches transmitter input.");
else
    disp("Received symbols do not match transmitted symbols.")
end
Receiver output matches transmitter input.

另请参阅

函数

主题

外部网站