Этот пример сравнивает Ортогональное мультиплексирование деления частоты (OFDM) с Фильтрованным-OFDM (F-OFDM) и подсвечивает достоинства схемы модуляции кандидата Пятого поколения (5G) системы связи.
Этот пример сравнивает Фильтрованную-OFDM модуляцию с типовым Циклическим Префиксным OFDM (CP-OFDM) модуляция. Для F-OFDM хорошо спроектированный фильтр применяется к временному интервалу символ OFDM, чтобы улучшить внеполосное излучение сигнала поддиапазона при поддержании комплексно-доменной ортогональности символов OFDM.
Этот пример демонстрирует Filtered-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
Соответствующая фильтрация для F-OFDM удовлетворяет следующим критериям:
Должен иметь плоскую полосу пропускания по поднесущим в поддиапазоне
Должен иметь полосу резкого перехода, чтобы минимизировать защитные полосы
Должен иметь достаточное затухание в полосе задерживания
Фильтр с прямоугольной частотной характеристикой, i.e. sinc импульсная характеристика, соответствует этим критериям. Чтобы сделать это причинным, фильтр lowpass понят с помощью окна, которое, эффективно обрезает импульсную характеристику и предлагает плавные переходы, чтобы обнулить на обоих концах [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
В 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); % QAM Symbol mapper symbolsIn = qammod(bitsIn, 2^bitsPerSubCarrier, 'InputType', 'bit', ... 'UnitAveragePower', true); % 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, с помощью полной занятой полосы, с той же длиной циклический префикс.
% 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 имеет более низкие лепестки стороны. Это позволяет более высокое использование выделенного спектра, ведя к увеличенному спектральному КПД.
Обратитесь к comm.OFDMModulator
Система object™, который может также использоваться, чтобы реализовать модуляцию CP-OFDM.
Пример затем подсвечивает, что основные получают обработку для F-OFDM для одного символа OFDM. Полученный сигнал передается через согласованный фильтр, сопровождаемый нормальным приемником CP-OFDM. Это составляет и наращивание фильтрации и задержку до операции FFT.
Никакой исчезающий канал не рассматривается в этом примере, но шум добавляется к полученному сигналу достигнуть желаемого ОСШ.
% 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 % BER computation BER = comm.ErrorRate; % Perform hard decision and measure errors rxBits = qamdemod(dataRxSymbols, 2^bitsPerSubCarrier, 'OutputType', 'bit', ... 'UnitAveragePower', true); ber = BER(bitsIn, rxBits); disp(['F-OFDM Reception, BER = ' num2str(ber(1)) ' at SNR = ' ... num2str(snrdB) ' dB']);
F-OFDM Reception, BER = 0.00083333 at SNR = 18 dB
% Restore RNG state
rng(s);
Как подсвечено, Ф-ОФДМ добавляет этап фильтрации в существующую обработку CP-OFDM в обоих передача, и получите концы. Пример демонстрирует выделение полной полосы для пользователя, но тот же подход может быть применен для нескольких полос (один на пользователя) для восходящей асинхронной операции.
Обратитесь к comm.OFDMDemodulator
Система object™, который может использоваться, чтобы реализовать демодуляцию CP-OFDM после, получает согласованную фильтрацию.
Пример представляет основные характеристики схемы модуляции F-OFDM и в передаче, и получите концы системы связи. Исследуйте различные значения системного параметра для количества блоков ресурса, количества поднесущих на блоки, отфильтруйте длину, настройте смещение и ОСШ.
Схема модуляции Универсальной фильтрованной мультинесущей (UFMC) является другим подходом к отфильтрованному OFDM поддиапазона. Для получения дополнительной информации смотрите UFMC по сравнению с примером Модуляции OFDM. Этот пример F-OFDM использует один поддиапазон, в то время как пример UFMC использует несколько поддиапазонов.
F-OFDM и UFMC и фильтрация временного интервала использования с тонкими различиями в пути фильтр спроектированы и применены. Для UFMC длина фильтра ограничивается быть равной длине циклического префикса, в то время как для F-OFDM, это может превысить длину CP.
Для F-OFDM создание фильтра приводит к небольшой потере в ортогональности (строго говоря), которая влияет только на поднесущие ребра.
Абдоли Дж., Цзя М. и Ма Дж., "Фильтрованный OFDM: Новая Форма волны для будущих Беспроводных Систем", Международный семинар 2015 IEEE® 16th на Усовершенствованиях Обработки сигналов в Радиосвязях (SPAWC), Стокгольме, 2015, стр 66-70.
R1-162152. "OFDM основывал гибкую форму волны для 5G". 3GPP TSG ЗАПУСТИЛ встречу WG1 84bis. Huawei; HiSilicon. Апрель 2016.
R1-165425. "Схема F-OFDM и создание фильтра". 3GPP TSG ЗАПУСТИЛ WG1, встречающийся 85. Huawei; HiSilicon. Май 2016.