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

FBMC と OFDM 変調

この例では、フィルター バンク マルチキャリア (FBMC) と直交周波数分割多重方式 (OFDM) を比較し、第 5 世代 (5G) 通信システムの候補となる変調方式の利点について説明します。

FBMC は、3GPP Release 14 の間は 3GPP RAN 研究段階 I の OFDM の代替波形として考えられていました。

はじめに

この例では、フィルター バンク マルチキャリア (FBMC) 変調と標準的な OFDM 変調を比較します。FBMC は、OFDM の既知の制限であるスペクトル効率の低下や、厳しい同期の要件を解決する方法を提供しています。これらの利点により、5G 通信システム用の変調方式の 1 つとして検討されるようになっています [ 2, 4 ]。

この例では、フィルター バンク マルチキャリア変調を構成可能なパラメーターによってモデル化し、基本的な送信および受信処理に焦点を当てて説明します。

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

システム パラメーター

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

numFFT = 1024;           % Number of FFT points
numGuards = 212;         % Guard bands on both sides
K = 4;                   % Overlapping symbols, one of 2, 3, or 4
numSymbols = 100;        % Simulation length in symbols
bitsPerSubCarrier = 2;   % 2: 4QAM, 4: 16QAM, 6: 64QAM, 8: 256QAM
snrdB = 12;              % SNR in dB

フィルター バンク マルチキャリア変調

FBMC は、マルチキャリア システムにおいて副搬送波変調信号を個々にフィルター処理します。プロトタイプ フィルターはゼロ周波数搬送波に使用するもので、さらに他の副搬送波フィルターの基礎になります。フィルターは、オーバーラップ係数 K によって特性を指定します。この係数は、時間領域でオーバーラップするマルチキャリア シンボルの数です。プロトタイプ フィルターの次数は 2*K-1 で選択可能です。ここで、K は、2、3、または 4 であり、PHYDYAS プロジェクトに従って選択されます [ 1 ]。

現在の FBMC の実装は、周波数拡散を使用しています。長さ N*K で、N/2 の遅延によってシンボルがオーバーラップする IFFT を使用します。ここで、N は副搬送波の数です。この設計選択により、FBMC を解析して、他の変調方式と比較することが容易になります。

全容量を実現するには、オフセット直交振幅変調 (OQAM) 処理を採用します。複素数データ シンボルの実数部と数部は、虚数部がシンボル区間の半分だけ遅延するため同時に送信されません。

送信から終了までの処理を次の図に示します。

% Prototype filter
switch K
    case 2
        HkOneSided = sqrt(2)/2;
    case 3
        HkOneSided = [0.911438 0.411438];
    case 4
        HkOneSided = [0.971960 sqrt(2)/2 0.235147];
    otherwise
        return
end
% Build symmetric filter
Hk = [fliplr(HkOneSided) 1 HkOneSided];

% Transmit-end processing
%   Initialize arrays
L = numFFT-2*numGuards;  % Number of complex symbols per OFDM symbol
KF = K*numFFT;
KL = K*L;
dataSubCar = zeros(L, 1);
dataSubCarUp = zeros(KL, 1);

sumFBMCSpec = zeros(KF*2, 1);
sumOFDMSpec = zeros(numFFT*2, 1);

numBits = bitsPerSubCarrier*L/2;    % account for oversampling by 2
inpData = zeros(numBits, numSymbols);
rxBits = zeros(numBits, numSymbols);
txSigAll = complex(zeros(KF, numSymbols));
symBuf = complex(zeros(2*KF, 1));

% Loop over symbols
for symIdx = 1:numSymbols

    % Generate mapped symbol data
    inpData(:, symIdx) = randi([0 1], numBits, 1);
    modData = qammod(inpData(:, symIdx), 2^bitsPerSubCarrier, ...
        'InputType', 'Bit', 'UnitAveragePower', true);

    % OQAM Modulator: alternate real and imaginary parts
    if rem(symIdx,2)==1     % Odd symbols
        dataSubCar(1:2:L) = real(modData);
        dataSubCar(2:2:L) = 1i*imag(modData);
    else                    % Even symbols
        dataSubCar(1:2:L) = 1i*imag(modData);
        dataSubCar(2:2:L) = real(modData);
    end

    % Upsample by K, pad with guards, and filter with the prototype filter
    dataSubCarUp(1:K:end) = dataSubCar;
    dataBitsUpPad = [zeros(numGuards*K,1); dataSubCarUp; zeros(numGuards*K,1)];
    X1 = filter(Hk, 1, dataBitsUpPad);
    % Remove 1/2 filter length delay
    X = [X1(K:end); zeros(K-1,1)];

    % Compute IFFT of length KF for the transmitted symbol
    txSymb = fftshift(ifft(X));

    % Transmitted signal is a sum of the delayed real, imag symbols
    symBuf = [symBuf(numFFT/2+1:end); complex(zeros(numFFT/2,1))];
    symBuf(KF+(1:KF)) = symBuf(KF+(1:KF)) + txSymb;

    % Compute power spectral density (PSD)
    currSym = complex(symBuf(1:KF));
    [specFBMC, fFBMC] = periodogram(currSym, hann(KF, 'periodic'), KF*2, 1);
    sumFBMCSpec = sumFBMCSpec + specFBMC;

    % Store transmitted signals for all symbols
    txSigAll(:,symIdx) = currSym;
end

% Plot power spectral density
sumFBMCSpec = sumFBMCSpec/mean(sumFBMCSpec(1+K+2*numGuards*K:end-2*numGuards*K-K));
plot(fFBMC-0.5,10*log10(sumFBMCSpec));
grid on
axis([-0.5 0.5 -180 10]);
xlabel('Normalized frequency');
ylabel('PSD (dBW/Hz)')
title(['FBMC, K = ' num2str(K) ' overlapped symbols'])
set(gcf, 'Position', figposition([15 50 30 30]));

プロットされた FBMC 伝送信号のパワー スペクトル密度は、帯域外の漏れが少ないことを示しています。

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

比較のために、全占有帯域を使用するが巡回プレフィックスは使用しない、既存の OFDM 変調方式を確認します。

for symIdx = 1:numSymbols

    inpData2 = randi([0 1], bitsPerSubCarrier*L, 1);
    modData = qammod(inpData2, 2^bitsPerSubCarrier, ...
        'InputType', 'Bit', 'UnitAveragePower', true);

    symOFDM = [zeros(numGuards,1); modData; zeros(numGuards,1)];
    ifftOut = sqrt(numFFT).*ifft(ifftshift(symOFDM));

    [specOFDM,fOFDM] = periodogram(ifftOut, rectwin(length(ifftOut)), ...
        numFFT*2, 1, 'centered');
    sumOFDMSpec = sumOFDMSpec + specOFDM;
end

% Plot power spectral density (PSD) over all subcarriers
sumOFDMSpec = sumOFDMSpec/mean(sumOFDMSpec(1+2*numGuards:end-2*numGuards));
figure;
plot(fOFDM,10*log10(sumOFDMSpec));
grid on
axis([-0.5 0.5 -180 10]);
xlabel('Normalized frequency');
ylabel('PSD (dBW/Hz)')
title(['OFDM, numFFT = ' num2str(numFFT)])
set(gcf, 'Position', figposition([46 50 30 30]));

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

チャネルのない FBMC 受信機

この例では、基本的な FBMC 復調器を実装し、チャネルなしで選択された構成の BER を測定します。この処理では、整合フィルターの実行後に OQAM 分離が実行され、受信データ シンボルが作成されます。これらはビットにデマッピングされ、結果として得られたビット誤り率が求められます。チャネルが存在する場合は、線形マルチタップ イコライザーを使用して、周波数選択性フェージングの影響を軽減できます。

受信から終了までの処理を次の図に示します。

BER = comm.ErrorRate;

% Process symbol-wise
for symIdx = 1:numSymbols
    rxSig = txSigAll(:, symIdx);

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

    % Perform FFT
    rxf = fft(fftshift(rxNsig));

    % Matched filtering with prototype filter
    rxfmf = filter(Hk, 1, rxf);
    % Remove K-1 delay elements
    rxfmf = [rxfmf(K:end); zeros(K-1,1)];
    % Remove guards
    rxfmfg = rxfmf(numGuards*K+1:end-numGuards*K);

    % OQAM post-processing
    %  Downsample by 2K, extract real and imaginary parts
    if rem(symIdx, 2)
        % Imaginary part is K samples after real one
        r1 = real(rxfmfg(1:2*K:end));
        r2 = imag(rxfmfg(K+1:2*K:end));
        rcomb = complex(r1, r2);
    else
        % Real part is K samples after imaginary one
        r1 = imag(rxfmfg(1:2*K:end));
        r2 = real(rxfmfg(K+1:2*K:end));
        rcomb = complex(r2, r1);
    end
    %  Normalize by the upsampling factor
    rcomb = (1/K)*rcomb;

    % De-mapper: Perform hard decision
    rxBits(:, symIdx) = qamdemod(rcomb, 2^bitsPerSubCarrier, ...
        'OutputType', 'bit', 'UnitAveragePower', true);
end

% Measure BER with appropriate delay
BER.ReceiveDelay = bitsPerSubCarrier*KL;
ber = BER(inpData(:), rxBits(:));

% Display Bit error
disp(['FBMC Reception for K = ' num2str(K) ', BER = ' num2str(ber(1)) ...
    ' at SNR = ' num2str(snrdB) ' dB'])

% Restore RNG state
rng(s);
FBMC Reception for K = 4, BER = 0 at SNR = 12 dB

まとめとその他の調査

この例では、FBMC 変調方式の基本的な送信および受信特性を示しました。この例で、オーバーラップするシンボルの数、FFT の長さ、保護帯域の長さ、SNR の値などを変更して、調査してください。

ユニバーサル フィルター マルチキャリア (UFMC) 変調方式を説明する例については、UFMC と OFDM 変調を参照してください。

FBMC は、より高いスペクトル効率を提供するため OFDM と比較して有利であると考えられています。副搬送波ごとのフィルター処理によって大きなフィルター遅延 (UFMC と比較した場合) が発生し、さらに MIMO 処理の変更が必要な OQAM 処理が要求されます。

さらに詳しく調査する場合は、チャネルの推定やイコライズなどを含む、より完全なリンク レベルの処理により、MIMO 処理の変更を行ってください [ 2 ]

参考文献

  1. "FBMC physical layer: a primer", PHYDYAS EU FP7 Project 2010. http://www.ict-phydyas.org

  2. Schellman, M., Zhao, Z., Lin, H., Siohan, P., Rajatheva, N., Luecken, V., Ishaque, A., "FBMC-based air interface for 5G mobile: Challenges and proposed solutions", CROWNCOM 2014, pp 102-107.

  3. Farhang-Boroujeny, B., "OFDM versus filter bank multicarrier", IEEE® Signal Proc.Mag., vol. 28, pp. 92-112, May 2011.

  4. Wunder, G., Kasparick, M., Wild, T., Schaich, F., Yejian Chen, Dryjanski, M., Buczkowski, M., Pietrzyk, S., Michailow, N., Matthe, M., Gaspar, I., Mendes, L., Festag, A., Fettweis, G., Dore, J.-B., Cassiau, N., Ktenas, D., Berg, V., Eged, B., Vago, P., "5GNOW: Intermediate frame structure and transceiver concepts", Globecom workshops, pp. 565-570, 2014.