Этот пример сравнивает ортогональную частоту Деления мультиплексирования (OFDM) с Filtered-OFDM (F-OFDM) и подчеркивает преимущества схемы модуляции кандидата для систем связи Пятой Генерации (5G).
Этот пример сравнивает Filtered-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 удовлетворяет следующим критериям:
Должен иметь плоскую полосу пропускания по поднесущим в поддиапазоне
Должен иметь резкую полосу перехода, чтобы минимизировать защитные полосы
Должно иметь достаточное затухание в полосе задерживания
Фильтр с прямоугольной частотной характеристикой, то есть с синусоидальной импульсной характеристикой, удовлетворяет этим критериям. Чтобы сделать эту причинно-следственную связь, 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. Он учитывает как усиление фильтрации, так и задержку перед операцией БПФ.
Канал с замираниями в этом примере не рассматривается, но шум добавляется к принимаемому сигналу для достижения желаемого ОСШ.
% 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);
Как выделено, F-OFDM добавляет каскад фильтрации к существующей обработке 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 создание фильтра приводит к некоторой потере ортогональности (строго говоря), которая влияет только на краевые поднесущие.
Abdoli J., Jia M. and Ma J., «Filtered OFDM: A New Waveform for Future Wireless Systems», 2015 IEEE ® 16-й Международный семинар по достижениям обработки сигналов в беспроводной связи (SPAWC), Стокгольм, 2015,
R1-162152. «Гибкая форма волны для 5G. на основе OFDM» 3GPP TSG RAN WG1 встречи 84-бис. Huawei; Привет, Кремний. Апрель 2016.
R1-165425. «Схема F-OFDM и создание фильтра». 3GPP TSG RAN WG1 совещание 85. Huawei; Привет, Кремний. Май 2016.