Этот пример сравнивает Filter Bank Multi-Carrier (FBMC) с ортогональным частотным разнесением (OFDM) и подсвечивает преимущества схемы модуляции кандидата для систем связи пятого поколения (5G).
FBMC рассматривался как альтернативная форма волны к OFDM в 3GPP фазе исследования RAN I во время 3GPP релиза 14.
Этот пример сравнивает модуляцию Filter Bank Multi-Carrier (FBMC) с типовой модуляцией OFDM. FBMC предлагает способы преодоления известных ограничений OFDM пониженной спектральной эффективности и строгих требований синхронизации. Эти преимущества привели к тому, что он был рассмотрен как один из методов модуляции для 5G систем связи [2, 4].
Этот пример моделирует модуляцию Filter Bank Multi-Carrier с конфигурируемыми параметрами и подсвечивает базовую обработку сигнала при приеме и передаче.
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 фильтрует каждый модулированный сигнал поднесущей в системе с несколькими несущими. Фильтр прототипа является фильтром, используемым для несущей нулевой частоты, и является базисом для других фильтров поднесущей. Фильтры характеризуются коэффициентом перекрытия К, который является количеством многосветных символов, которые перекрываются во временном интервале. Порядок фильтра прототипа может быть выбран как 2 * K-1, где K = 2, 3 или 4 и выбран согласно проекту PHYDYAS [1].
В текущей реализации FBMC используется расширение частоты. Он использует IFFT длины N * K с символами, перекрывающимися с задержкой N/2, где 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, используя полный занятую полосу, однако, без циклического префикса.
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 и измеряет 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'])
FBMC Reception for K = 4, BER = 0 at SNR = 12 dB
% Restore RNG state
rng(s);
Пример представляет основные характеристики передачи и приема схемы модуляции FBMC. Исследуйте этот пример, изменив количество перекрывающихся символов, длины БПФ, длины защитной полосы и значения ОСШ.
См. UFMC vs. OFDM Modulation для примера, который описывает схему универсальной фильтрованной многосветной модуляции (UFMC).
FBMC считается выгодным по сравнению с OFDM, предлагая более высокую спектральную эффективность. Из-за фильтрации по поднесущим она вызывает большую задержку фильтра (по сравнению с UFMC), а также требует обработки OQAM, которая требует модификаций для обработки MIMO.
Дальнейшие исследования должны включать изменения для обработки MIMO с более полной обработкой на канальном уровне, включая оценку канала и эквализацию [2].
«Физический слой FBMC: праймер», PHYDYAS EU FP7 Project 2010. http://www.ict-phydyas.org
Schellman, M., Zhao, Z., Lin, H., Siohan, P., Rajatheva, N., Luecken, V., Ishaque, A., «радиоинтерфейс на базе FBMC для 5G мобильного: Вызовы и предлагаемые решения», CROROWRONCCOM OM 2014, PP P.
Farhang-Boroujeny, B., «OFDM versus filter bank multicarrier», IEEE ® Signal Proc. Mag., vol. 28, pp. 92-112, May 2011.
Чудо, G., Kasparick, M., Дикий, T., Schaich, F., Еджиэн Чен, Дрыянский, M., Буцзковский, M., Pietrzyk, S., Michailow, N., Matthe, M., Гэспэр, я., Mendes, L., Festag, A., Fettweis, G., Дор, J.-B., Cassiau, N., Ktenas, D., Айсберг, V., Eged, B., Vago, P., «5GNOW: Промежуточная структура системы координат и концепции приемопередатчика», семинары Globecom, стр 565-570, 2014.