MATLAB Examples

F-OFDM vs. OFDM Modulation

This example compares Orthogonal Frequency Division Multiplexing (OFDM) with Filtered-OFDM (F-OFDM) and highlights the merits of the candidate modulation scheme for Fifth Generation (5G) communication systems.

Refer to the 5G Library for LTE System Toolbox™ for an example on how F-OFDM is applied to the LTE Downlink (PDSCH) channel.

Contents

Introduction

This example compares Filtered-OFDM modulation with generic Cyclic Prefix OFDM (CP-OFDM) modulation. For F-OFDM, a well-designed filter is applied to the time domain OFDM symbol to improve the out-of-band radiation of the subband signal, while maintaining the complex-domain orthogonality of OFDM symbols.

This example models Filtered-OFDM modulation with configurable parameters. It highlights the filter design technique and the basic transmit/receive processing.

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

System Parameters

Define system parameters for the example. These parameters can be modified to explore their impact on the system.

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

Filtered-OFDM Filter Design

Appropriate filtering for F-OFDM satisfies the following criteria:

  • Should have a flat passband over the subcarriers in the subband
  • Should have a sharp transition band to minimize guard-bands
  • Should have sufficient stop-band attenuation

A filter with a rectangular frequency response, i.e. a sinc impulse response, meets these criteria. To make this causal, the low-pass filter is realized using a window, which, effectively truncates the impulse response and offers smooth transitions to zero on both ends [ 3 ].

numDataCarriers = numRBs*rbSize;    % number of data subcarriers in subband
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

% QAM Symbol mapper
qamMapper = comm.RectangularQAMModulator( ...
    'ModulationOrder', 2^bitsPerSubCarrier, 'BitInput', true, ...
    'NormalizationMethod', 'Average power');

F-OFDM Transmit Processing

In F-OFDM, the subband CP-OFDM signal is passed through the designed filter. As the filter's passband corresponds to the signal's bandwidth, only the few subcarriers close to the edge are affected. A key consideration is that the filter length can be allowed to exceed the cyclic prefix length for F-OFDM [ 1 ]. The inter-symbol interference incurred is minimized due to the filter design using windowing (with soft truncation).

Transmit-end processing operations are shown in the following F-OFDM transmitter diagram.

% 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);
symbolsIn = qamMapper(bitsIn);

% 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 Modulation with Corresponding Parameters

For comparison, we review the existing OFDM modulation technique, using the full occupied band, with the same length cyclic prefix.

% 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

Comparing the plots of the spectral densities for CP-OFDM and F-OFDM schemes, F-OFDM has lower sidelobes. This allows a higher utilization of the allocated spectrum, leading to increased spectral efficiency.

Refer to the comm.OFDMModulator System object which can also be used to implement the CP-OFDM modulation.

F-OFDM Receiver with No Channel

The example next highlights the basic receive processing for F-OFDM for a single OFDM symbol. The received signal is passed through a matched filter, followed by the normal CP-OFDM receiver. It accounts for both the filtering ramp-up and latency prior to the FFT operation.

No fading channel is considered in this example but noise is added to the received signal to achieve the desired SNR.

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

Receive processing operations are shown in the following F-OFDM receiver diagram.

% 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

% Demapping and BER computation
qamDemod = comm.RectangularQAMDemodulator('ModulationOrder', ...
    2^bitsPerSubCarrier, 'BitOutput', true, ...
    'NormalizationMethod', 'Average power');
BER = comm.ErrorRate;

% Perform hard decision and measure errors
rxBits = qamDemod(dataRxSymbols);
ber = BER(bitsIn, rxBits);

disp(['F-OFDM Reception, BER = ' num2str(ber(1)) ' at SNR = ' ...
    num2str(snrdB) ' dB']);

% Restore RNG state
rng(s);
F-OFDM Reception, BER = 0.00083333 at SNR = 18 dB

As highlighted, F-OFDM adds a filtering stage to the existing CP-OFDM processing at both the transmit and receive ends. The example models the full-band allocation for a user, but the same approach can be applied for multiple bands (one per user) for an uplink asynchronous operation.

Refer to the comm.OFDMDemodulator System object which can be used to implement the CP-OFDM demodulation after receive matched filtering.

Conclusion and Further Exploration

The example presents the basic characteristics of the F-OFDM modulation scheme at both transmit and receive ends of a communication system. Explore different system parameter values for the number of resource blocks, number of subcarriers per blocks, filter length, tone offset and SNR.

Universal Filtered Multi-Carrier (UFMC) modulation scheme is another approach to subband filtered OFDM. For more information, see the UFMC vs. OFDM Modulation example. This F-OFDM example uses a single subband while the UFMC example uses multiple subbands.

F-OFDM and UFMC both use time-domain filtering with subtle differences in the way the filter is designed and applied. For UFMC, the length of filter is constrained to be equal to the cyclic-prefix length, while for F-OFDM, it can exceed the CP length.

For F-OFDM, the filter design leads to a slight loss in orthogonality (strictly speaking) which affects only the edge subcarriers.

Refer to the 5G Library for LTE System Toolbox™ for an example on how F-OFDM is applied to the LTE Downlink (PDSCH) channel.

Selected Bibliography

  1. Abdoli J., Jia M. and Ma J., "Filtered OFDM: A New Waveform for Future Wireless Systems," 2015 IEEE 16th International Workshop on Signal Processing Advances in Wireless Communications (SPAWC), Stockholm, 2015, pp. 66-70.
  2. R1-162152. "OFDM based flexible waveform for 5G." 3GPP TSG RAN WG1 meeting 84bis. Huawei; HiSilicon. April 2016.
  3. R1-165425. "F-OFDM scheme and filter design." 3GPP TSG RAN WG1 meeting 85. Huawei; HiSilicon. May 2016.