Этот пример сравнивает множество несущих блока фильтров (FBMC) с мультиплексированием с ортогональным частотным разделением каналов (OFDM) и подчеркивает преимущества схемы модуляции-кандидата для систем связи пятого поколения (5G).
FBMC рассмотрели как альтернативную форму волны к OFDM в 3GPP, УПРАВЛЯЛ фазой I исследования во время 3GPP Выпуск 14.
В этом примере сравнивается модуляция банка фильтров с множеством несущих (FBMC) с общей модуляцией OFDM. FBMC предлагает способы преодоления известных ограничений OFDM сниженной спектральной эффективности и строгих требований к синхронизации. Эти преимущества привели к тому, что его рассматривают как один из методов модуляции для 5G систем связи [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 длину IFFT с символами, перекрывающимися с задержкой 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. Изучите этот пример, изменив количество перекрывающихся символов, длины БПФ, длины защитной полосы и значения SNR.
Пример, описывающий схему модуляции UFMC (UFMC) и OFDM.
FBMC считается выгодным по сравнению с OFDM, предлагая более высокую спектральную эффективность. Из-за фильтрации по поднесущим она несет большую задержку фильтра (по сравнению с UFMC), а также требует обработки OQAM, которая требует модификаций для обработки MIMO.
Дальнейшие исследования должны включать в себя модификации для обработки MIMO с более полной обработкой на уровне линии связи, включая оценку и выравнивание канала [2].
«Физический слой FBMC: праймер», PHYDYAS EU FP7 Project 2010. http://www.ict-phydyas.org
Шеллман, М., Чжао, З., Линь, Х., Сиохан, П., Раджатхева, Н., Люэккен, В., Ишак, А., «Воздушный интерфейс на базе FBMC для 5G мобиля: Вызовы и предлагаемые решения», CROWNCOM 2014, pp 102-107.
Farhang-Boroujeny, B., «OFDM против множества несущих банков фильтров», IEEE ® Signal Proc. Mag., том 28, стр. 92-112, май 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.