最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

F-OFDM と OFDM 変調

この例では、直交周波数分割多重方式 (OFDM) とフィルター処理された OFDM (F-OFDM) を比較し、第 5 世代 (5G) 通信システムの候補となる変調方式の利点について説明します。

はじめに

この例では、フィルター処理された OFDM 変調と標準的な巡回プレフィックス OFDM (CP-OFDM) 変調を比較します。F-OFDM の場合、OFDM シンボルの複素領域の直交性を維持しつつ、サブバンド信号の帯域外放射を改善するため、よく設計されたフィルターが時間領域 OFDM シンボルに適用されます。

この例では、構成可能なパラメーターを使用してフィルター処理された OFDM 変調をモデル化します。フィルターの設計法と基本の送信/受信処理に注目します。

s = rng(211);       % Set RNG state for repeatability

システム パラメーター

例として、システム パラメーターを定義します。これらのパラメーターを変更することで、システムへの影響を調べることができます。

numFFT = 1024;           % Number of FFT points
numRBs = 50;             % Number of resource blocks
rbSize = 12;             % Number of subcarriers per resource block
cpLen = 72;              % Cyclic prefix length in samples

bitsPerSubCarrier = 6;   % 2: QPSK, 4: 16QAM, 6: 64QAM, 8: 256QAM
snrdB = 18;              % SNR in dB

toneOffset = 2.5;        % Tone offset or excess bandwidth (in subcarriers)
L = 513;                 % Filter length (=filterOrder+1), odd

フィルター処理された OFDM フィルターの設計

F-OFDM の適切なフィルター処理は、次の条件を満たすものです。

  • サブバンド内の副搬送波全体に平坦な通過帯域があること

  • 保護帯域を最小化する急峻な遷移帯域があること

  • 十分な阻止帯域の減衰量があること

矩形周波数応答 (sinc インパルス応答) をもつフィルターは、これらの条件を満たします。これに因果性をもたせるため、インパルス応答を効果的に切り捨て、両端でのゼロへの滑らかな遷移を提供するウィンドウを使用してローパス フィルターを実現します [ 3 ]。

numDataCarriers = numRBs*rbSize;    % number of data subcarriers in sub-band
halfFilt = floor(L/2);
n = -halfFilt:halfFilt;

% Sinc function prototype filter
pb = sinc((numDataCarriers+2*toneOffset).*n./numFFT);

% Sinc truncation window
w = (0.5*(1+cos(2*pi.*n/(L-1)))).^0.6;

% Normalized lowpass filter coefficients
fnum = (pb.*w)/sum(pb.*w);

% Filter impulse response
h = fvtool(fnum, 'Analysis', 'impulse', ...
    'NormalizedFrequency', 'off', 'Fs', 15.36e6);
h.CurrentAxes.XLabel.String = 'Time (\mus)';
h.FigureToolbar = 'off';

% Use dsp filter objects for filtering
filtTx = dsp.FIRFilter('Structure', 'Direct form symmetric', ...
    'Numerator', fnum);
filtRx = clone(filtTx); % Matched filter for the Rx

% QAM Symbol mapper
qamMapper = comm.RectangularQAMModulator( ...
    'ModulationOrder', 2^bitsPerSubCarrier, 'BitInput', true, ...
    'NormalizationMethod', 'Average power');

F-OFDM の送信処理

F-OFDM では、サブバンド CP-OFDM 信号は、設計したフィルターを介して渡されます。フィルターの通過帯域は、信号の帯域幅に対応するため、エッジに近い少数の副搬送波のみが影響を受けます。重要な考慮事項は、フィルター長が F-OFDM の巡回プレフィックス長を超えられることです [ 1 ]。ウィンドウ処理 (とソフト切り捨て) を使用するフィルター設計により、発生する符号間干渉が最小限になります。

送信から終了までの処理操作を次の F-OFDM 送信機の図に示します。

% Set up a figure for spectrum plot
hFig = figure('Position', figposition([46 50 30 30]), 'MenuBar', 'none');
axis([-0.5 0.5 -200 -20]);
hold on;
grid on
xlabel('Normalized frequency');
ylabel('PSD (dBW/Hz)')
title(['F-OFDM, ' num2str(numRBs) ' Resource blocks, '  ...
    num2str(rbSize) ' Subcarriers each'])

% Generate data symbols
bitsIn = randi([0 1], bitsPerSubCarrier*numDataCarriers, 1);
symbolsIn = qamMapper(bitsIn);

% Pack data into an OFDM symbol
offset = (numFFT-numDataCarriers)/2; % for band center
symbolsInOFDM = [zeros(offset,1); symbolsIn; ...
                 zeros(numFFT-offset-numDataCarriers,1)];
ifftOut = ifft(ifftshift(symbolsInOFDM));

% Prepend cyclic prefix
txSigOFDM = [ifftOut(end-cpLen+1:end); ifftOut];

% Filter, with zero-padding to flush tail. Get the transmit signal
txSigFOFDM = filtTx([txSigOFDM; zeros(L-1,1)]);

% Plot power spectral density (PSD)
[psd,f] = periodogram(txSigFOFDM, rectwin(length(txSigFOFDM)), ...
                      numFFT*2, 1, 'centered');
plot(f,10*log10(psd));

% Compute peak-to-average-power ratio (PAPR)
PAPR = comm.CCDF('PAPROutputPort', true, 'PowerUnits', 'dBW');
[~,~,paprFOFDM] = PAPR(txSigFOFDM);
disp(['Peak-to-Average-Power-Ratio for F-OFDM = ' num2str(paprFOFDM) ' dB']);
Peak-to-Average-Power-Ratio for F-OFDM = 11.371 dB

OFDM 変調と対応するパラメーター

比較のために、同じ長さの巡回プレフィックスをもつ全占有帯域を使用して、既存の OFDM 変調方式を確認します。

% Plot power spectral density (PSD) for OFDM signal
[psd,f] = periodogram(txSigOFDM, rectwin(length(txSigOFDM)), numFFT*2, ...
                      1, 'centered');
hFig1 = figure('Position', figposition([46 15 30 30]));
plot(f,10*log10(psd));
grid on
axis([-0.5 0.5 -100 -20]);
xlabel('Normalized frequency');
ylabel('PSD (dBW/Hz)')
title(['OFDM, ' num2str(numRBs*rbSize) ' Subcarriers'])

% Compute peak-to-average-power ratio (PAPR)
PAPR2 = comm.CCDF('PAPROutputPort', true, 'PowerUnits', 'dBW');
[~,~,paprOFDM] = PAPR2(txSigOFDM);
disp(['Peak-to-Average-Power-Ratio for OFDM = ' num2str(paprOFDM) ' dB']);
Peak-to-Average-Power-Ratio for OFDM = 9.721 dB

CP-OFDM と F-OFDM スキームのスペクトル密度のプロットを比較すると、F-OFDM の方がサイドローブが低くなっています。これにより、割り当てられたスペクトルの使用率を向上させることができ、スペクトル効率の向上につながります。

CP-OFDM 変調の実装にも使用できる comm.OFDMModulator System object™ を参照してください。

チャネルのない F-OFDM 受信機

次の例では、シングル OFDM シンボルの F-OFDM の基本的な受信処理について示します。受信した信号は、整合フィルター、次に通常の CP-OFDM 受信機を介して渡されます。これは、FFT 操作の前に立ち上がりとレイテンシをフィルター処理します。

この例ではフェージング チャネルは考慮されていませんが、目的の SNR を達成するために受信した信号にノイズが追加されています。

% Add WGN
rxSig = awgn(txSigFOFDM, snrdB, 'measured');

受信処理操作を次の F-OFDM 受信機の図に示します。

% Receive matched filter
rxSigFilt = filtRx(rxSig);

% Account for filter delay
rxSigFiltSync = rxSigFilt(L:end);

% Remove cyclic prefix
rxSymbol = rxSigFiltSync(cpLen+1:end);

% Perform FFT
RxSymbols = fftshift(fft(rxSymbol));

% Select data subcarriers
dataRxSymbols = RxSymbols(offset+(1:numDataCarriers));

% Plot received symbols constellation
switch bitsPerSubCarrier
    case 2  % QPSK
        refConst = qammod((0:3).', 4, 'UnitAveragePower', true);
    case 4  % 16QAM
        refConst = qammod((0:15).', 16,'UnitAveragePower', true);
    case 6  % 64QAM
        refConst = qammod((0:63).', 64,'UnitAveragePower', true);
    case 8  % 256QAM
        refConst = qammod((0:255).', 256,'UnitAveragePower', true);
end
constDiagRx = comm.ConstellationDiagram( ...
    'ShowReferenceConstellation', true, ...
    'ReferenceConstellation', refConst, ...
    'Position', figposition([20 15 30 40]), ...
    'EnableMeasurements', true, ...
    'MeasurementInterval', length(dataRxSymbols), ...
    'Title', 'F-OFDM Demodulated Symbols', ...
    'Name', 'F-OFDM Reception', ...
    'XLimits', [-1.5 1.5], 'YLimits', [-1.5 1.5]);
constDiagRx(dataRxSymbols);

% Channel equalization is not necessary here as no channel is modeled

% Demapping and BER computation
qamDemod = comm.RectangularQAMDemodulator('ModulationOrder', ...
    2^bitsPerSubCarrier, 'BitOutput', true, ...
    'NormalizationMethod', 'Average power');
BER = comm.ErrorRate;

% Perform hard decision and measure errors
rxBits = qamDemod(dataRxSymbols);
ber = BER(bitsIn, rxBits);

disp(['F-OFDM Reception, BER = ' num2str(ber(1)) ' at SNR = ' ...
    num2str(snrdB) ' dB']);

% Restore RNG state
rng(s);
F-OFDM Reception, BER = 0.00083333 at SNR = 18 dB

示されているように、F-OFDM はフィルター処理の段階を送信および受信の両端で既存の CP-OFDM 処理に追加します。この例では、1 人のユーザーへの全帯域の割り当てをモデル化しますが、同じ方法をアップリンクの非同期操作の複数の帯域 (ユーザーごとに 1 つ) に適用できます。

受信側の整合フィルター処理の後に、CP-OFDM 復調の実装に使用できる comm.OFDMDemodulator System object™ を参照してください。

まとめとその他の調査

この例では、通信システムの送信および受信の両端における F-OFDM 変調方式の基本的な送信および受信特性を示しました。リソース ブロックの数、ブロックごとの副搬送波の数、フィルター長、トーン オフセット、および SNR について、さまざなシステム パラメーター値を使用して調査してください。

ユニバーサル フィルター マルチキャリア (UFMC) 変調方式は、サブバンドがフィルター処理された OFDM に対するもう 1 つの方法です。詳細については、UFMC と OFDM 変調の例を参照してください。UFMC の例では複数のサブバンドを使用していますが、この F-OFDM の例では単一のサブバンドを使用しています。

F-OFDM と UFMC はどちらも時間領域のフィルター処理を使用していますが、フィルターの設計方法と適用方法に微妙な差があります。UFMC では、フィルターの長さが巡回プレフィックス長と等しくなるよう制約されますが、F-OFDM では、CP 長を超えることができます。

F-OFDM では、フィルターの設計によって直交性が少し失われ、(厳密に言えば) これによりエッジの副搬送波のみが影響を受けます。

参考文献

  1. Abdoli J., Jia M. and Ma J., "Filtered OFDM: A New Waveform for Future Wireless Systems," 2015 IEEE® 16th International Workshop on Signal Processing Advances in Wireless Communications (SPAWC), Stockholm, 2015, pp. 66-70.

  2. R1-162152."OFDM based flexible waveform for 5G."3GPP TSG RAN WG1 meeting 84bis.Huawei; HiSilicon.April 2016.

  3. R1-165425."F-OFDM scheme and filter design."3GPP TSG RAN WG1 meeting 85. Huawei; HiSilicon.May 2016.