Оценка и эквализация нисходящего канала LTE

Этот пример показов, как использовать LTE Toolbox™, чтобы создать систему координат количество данных, передать его через канал с замираниями и выполнить оценку канала и эквализацию. Создаются два рисунков, иллюстрирующие принятый и выравниваемую систему координат.

Введение

Этот пример показывает, как простая симуляция канала-передатчика-приемника может быть создано с использованием функций из LTE Toolbox. Пример генерирует системы координат данные на одном порту антенны. Поскольку в этом примере транспортный канал не создается, данные являются случайными битами, QPSK модулирует и преобразует в каждый символ в субкадре. Создаются и отображаются в камеру кадр опорного сигнала и первичные и вторичные сигналы синхронизации. 10 подкадров генерируются индивидуально, чтобы создать систему координат. Система координат модулируется OFDM, передается через канал с расширенной моделью A (EVA5) с замираниями, добавляется аддитивный белый Гауссов шум и демодулируется. Применяется выравнивание MMSE с помощью оценки канала и шума, и, наконец, строятся полученные и выравненные ресурсные сетки.

Настройки всей ячейки

Настройки всей ячейки заданы в структуре enb. Для ряда функций, используемых в этом примере, требуется подмножество настроек, указанных ниже. В этом примере используется только одна передающая антенна.

enb.NDLRB = 15;                 % Number of resource blocks
enb.CellRefP = 1;               % One transmit antenna port
enb.NCellID = 10;               % Cell ID
enb.CyclicPrefix = 'Normal';    % Normal cyclic prefix
enb.DuplexMode = 'FDD';         % FDD

Строение ОСШ

Операционный ОСШ сконфигурирован в децибелах на значение SNRdB который также преобразуется в линейный ОСШ.

SNRdB = 22;             % Desired SNR in dB
SNR = 10^(SNRdB/20);    % Linear SNR  
rng('default');         % Configure random number generators

Строение модели канала

Модель канала сконфигурирована с помощью структуры. В этом примере используется канал с замираниями с расширенным профилем задержки транспортного средства A (EVA) и 120Hz доплеровской частотой. Эти параметры наряду с корреляцией MIMO и другими параметрами модели канала установлены.

cfg.Seed = 1;                  % Channel seed
cfg.NRxAnts = 1;               % 1 receive antenna
cfg.DelayProfile = 'EVA';      % EVA delay spread
cfg.DopplerFreq = 120;         % 120Hz Doppler frequency
cfg.MIMOCorrelation = 'Low';   % Low (no) MIMO correlation
cfg.InitTime = 0;              % Initialize at time zero
cfg.NTerms = 16;               % Oscillators used in fading model
cfg.ModelType = 'GMEDS';       % Rayleigh fading model type
cfg.InitPhase = 'Random';      % Random initial phases
cfg.NormalizePathGains = 'On'; % Normalize delay profile power 
cfg.NormalizeTxAnts = 'On';    % Normalize for transmit antennas

Строение оценщика канала

Пользовательское окно используется для среднего значения пилот-символов для уменьшения эффекта шума. Размер окна усреднения настраивается с точки зрения ресурсных элементов (RE), по времени и частоте. Консервативное окно 9 на 9 используется в этом примере как профиль задержки EVA 120Hz и доплеровская частота вызывает быстрые изменения канала с течением времени и частоты. Окно 9 на 9 включает 4 пилота, непосредственно окружающих интересующий пилот при усреднении. Выбор окна усреднения рассматривается в Channel Estimation.

cec.PilotAverage = 'UserDefined'; % Pilot averaging method
cec.FreqWindow = 9;               % Frequency averaging window in REs
cec.TimeWindow = 9;               % Time averaging window in REs

Интерполяция выполняется оценщиком канала между оценками пилот-сигнала, чтобы создать оценку канала для всех RE. Для улучшения оценки можно использовать несколько подкадров при интерполяции. Окно интерполяции из 3 подкадров с центрированным окном интерполяции использует оценки пилот-сигнала из 3 последовательных подкадров, чтобы оценить центральный подкадр.

cec.InterpType = 'Cubic';         % Cubic interpolation
cec.InterpWinSize = 3;            % Interpolate up to 3 subframes 
                                  % simultaneously
cec.InterpWindow = 'Centred';     % Interpolation windowing method

Размер сетки ресурса подкадра

В этом примере полезно иметь доступ к размерностям сетки ресурсов подкадров. Они определяются с помощью lteDLResourceGridSize. Эта функция возвращает массив, содержащую количество поднесущих, количество символов OFDM и количество портов передающей антенны в этом порядке.

gridsize = lteDLResourceGridSize(enb);
K = gridsize(1);    % Number of subcarriers
L = gridsize(2);    % Number of OFDM symbols in one subframe
P = gridsize(3);    % Number of transmit antenna ports

Передайте Ресурсную Сетку

Пустая сетка ресурсов txGrid создается, который будет заполнен подкадрами.

txGrid = [];

Генерация данных полезной нагрузки

Поскольку в этом примере транспортный канал не используется, данные, переданные по каналу, будут представлять собой случайные модулированные символы QPSK. Для преобразования символа в каждый ресурсный элемент создается подрамник. Другие сигналы, необходимые для передачи и приема, будут перезаписывать эти символы в ресурсной сетке.

% Number of bits needed is size of resource grid (K*L*P) * number of bits
% per symbol (2 for QPSK)
numberOfBits = K*L*P*2; 

% Create random bit stream
inputBits = randi([0 1], numberOfBits, 1); 

% Modulate input bits
inputSym = lteSymbolModulate(inputBits,'QPSK');

Генерация систем координат

Система координат будет создаваема путем генерации отдельных подкадров в цикле и добавления каждого созданного подкадра к предыдущим подкадрам. Набор добавленных подкадров содержится в txGrid. Это добавление повторяется десять раз, чтобы создать систему координат. Когда сигнал модулированного временного интервала OFDM передается через канал, сигнал испытывает задержку. Чтобы избежать пропуска любых выборок из-за этой задержки, генерируется дополнительный подкадр, поэтому всего генерируется 11 подкадров. Для каждого субкадра добавляется специфический для ячейки опорный сигнал (Cell RS). Также добавляются основной сигнал синхронизации (PSS) и вторичный сигнал синхронизации (SSS). Обратите внимание, что эти сигналы синхронизации происходят только в подкадрах 0 и 5, но LTE Toolbox заботится о генерации пустых сигналов и индексов в других подкадрах, так что синтаксис вызова здесь может быть полностью равномерным для всех подкадров.

% For all subframes within the frame
for sf = 0:10
    
    % Set subframe number
    enb.NSubframe = mod(sf,10);
    
    % Generate empty subframe
    subframe = lteDLResourceGrid(enb);
    
    % Map input symbols to grid
    subframe(:) = inputSym;

    % Generate synchronizing signals
    pssSym = ltePSS(enb);
    sssSym = lteSSS(enb);
    pssInd = ltePSSIndices(enb);
    sssInd = lteSSSIndices(enb);

    % Map synchronizing signals to the grid
    subframe(pssInd) = pssSym;
    subframe(sssInd) = sssSym;

    % Generate cell specific reference signal symbols and indices
    cellRsSym = lteCellRS(enb);
    cellRsInd = lteCellRSIndices(enb);

    % Map cell specific reference signal to grid
    subframe(cellRsInd) = cellRsSym;
    
    % Append subframe to grid to be transmitted
    txGrid = [txGrid subframe]; %#ok
      
end

OFDM-модуляция

В порядок преобразования частотного диапазона символов OFDM в временной интервал, требуется модуляция OFDM. Это достигается с помощью lteOFDMModulate. Функция возвращает два значения; матрица txWaveform и структура info содержит частоту дискретизации. txWaveform является полученной временным интервалом формой волны. Каждый столбец содержит сигнал временного интервала для каждого порта антенны. В этом примере, поскольку используется только один порт антенны, возвращается только один столбец. info.SamplingRate - скорость дискретизации, с которой была создаваем временной интервал форма волны. Это значение требуется для модели канала.

[txWaveform,info] = lteOFDMModulate(enb,txGrid); 
txGrid = txGrid(:,1:140);

Канал с замираниями

Форма волны во временном интервале передается через модель канала (lteFadingChannel) конфигурируется структурой cfg. Модель канала требует частоты дискретизации временного интервала волны, так что параметр cfg.SamplingRate устанавливается в значение, возвращаемое lteOFDMModulate. Форма волны, сгенерированная функцией модели канала, содержит по одному столбцу на приемную антенну. В этом примере используется одна приемная антенна, поэтому возвращенная форма волны имеет один столбец.

cfg.SamplingRate = info.SamplingRate;

% Pass data through the fading channel model
rxWaveform = lteFadingChannel(cfg,txWaveform);

Аддитивный шум

ОСШ задается как SNR=Es/N0 где Es - энергия интересующего сигнала и N0 - степень шума. Шум, добавленный перед демодуляцией OFDM, будет усилен БПФ. Поэтому, чтобы нормализовать ОСШ в приемник (после демодуляции OFDM), шум должен быть масштабирован. Усиление является квадратным корнем из размера БПФ. Размер БПФ может быть определен из частоты дискретизации временного интервала волны (info.SamplingRate) и интервалы между поднесущими (15 кГц). Степень добавляемого шума может быть масштабирована так, что Es и N0 нормализуются после демодуляции OFDM для достижения желаемого ОСШ (SNRdB).

% Calculate noise gain
N0 = 1/(sqrt(2.0*enb.CellRefP*double(info.Nfft))*SNR);

% Create additive white Gaussian noise
noise = N0*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));   

% Add noise to the received time domain waveform
rxWaveform = rxWaveform + noise;

Синхронизация

Смещение, вызванное каналом в принятом сигнале временного интервала, получается с помощью lteDLFrameOffset. Эта функция возвращает значение offset который указывает, сколько выборок задержана форма волны. Смещение рассматривается идентичным для формы волны, полученной на всех антеннах. Затем можно манипулировать принимаемой временным интервалом формой волны, чтобы удалить задержку с помощью offset.

offset = lteDLFrameOffset(enb,rxWaveform);
rxWaveform = rxWaveform(1+offset:end,:);

Демодуляция OFDM

Сигнал временного интервала подвергается демодуляции OFDM, чтобы преобразовать его в частотный диапазон и воссоздать ресурсную сетку. Это достигается с помощью lteOFDMDemodulate. Получившаяся сетка является трехмерной матрицей. Количество строк представляет количество поднесущих. Количество столбцов равняется количеству символов OFDM в подкадре. Количество поднесущих и символов одинаковое для возвращенной сетки из демодуляции OFDM, когда сетка перешла в lteOFDMModulate. Количество плоскостей (3-ья размерность) в сетке соответствует количеству приемных антенн.

rxGrid = lteOFDMDemodulate(enb,rxWaveform);

Оценка канала

Чтобы создать оценку канала в течение длительности переданной ресурсной сетки lteDLChannelEstimate используется. Функция оценки канала сконфигурирована структурой cec. lteDLChannelEstimate принимает, что первый подкадр в ресурсной сетке является номером подкадра enb.NSubframe и поэтому номер подкадра должен быть установлен перед вызовом функции. В этом примере весь принятая система координат будет оцениваема в один вызов, а первый подкадр внутри системы координат является номером подкадра 0. Функция возвращает 4-D массив комплексных весов, которые канал применяет к каждому ресурсному элементу в переданной сетке для каждой возможной комбинации передающей и приемной антенны. Возможные комбинации основаны на строении eNodeB enb и количество приемных антенн (определяется размером полученной ресурсной сетки). 1-ая размерность - поднесущая, 2-ая размерность - символ OFDM, 3-ья размерность - приемная антенна и 4-ая размерность - передающая антенна. В этом примере используются одна передающая и одна приемная антенны, поэтому размер estChannel 180 на 140 на 1 на 1.

enb.NSubframe = 0;
[estChannel, noiseEst] = lteDLChannelEstimate(enb,cec,rxGrid);

MMSE- Эквализации

Эффекты канала на полученной ресурсной сетке выравниваются с помощью lteEqualizeMMSE. Эта функция использует оценку канала estChannel и шумовые noiseEst выравнивание полученной ресурсной сетки rxGrid. Функция возвращается eqGrid который является выравниваемой сеткой. Размерности выравниваемой сетки те же, что и исходной переданной сетки (txGrid) перед OFDM модуляцией.

eqGrid = lteEqualizeMMSE(rxGrid, estChannel, noiseEst);

Анализ

Полученная ресурсная сетка сравнивается с выровненной ресурсной сеткой. Вычисляется ошибка между переданной и уравненной сеткой и переданной и принятой сетками. Это создает две матрицы (тот же размер, что и массивы ресурсов), которые содержат ошибку для каждого символа. Для простого осмотра полученные и уравненные сетки строятся по логарифмической шкале с помощью surf в пределах hDownlinkEstimationEqualizationResults.m. Эти схемы показывают, что выполнение эквализации канала резко уменьшает ошибку в полученной ресурсной сетке.

% Calculate error between transmitted and equalized grid
eqError = txGrid - eqGrid;
rxError = txGrid - rxGrid;

% Compute EVM across all input values
% EVM of pre-equalized receive signal
EVM = comm.EVM;
EVM.AveragingDimensions = [1 2];
preEqualisedEVM = EVM(txGrid,rxGrid);
fprintf('Percentage RMS EVM of Pre-Equalized signal: %0.3f%%\n', ...
        preEqualisedEVM); 
Percentage RMS EVM of Pre-Equalized signal: 124.133%
% EVM of post-equalized receive signal
postEqualisedEVM = EVM(txGrid,eqGrid);
fprintf('Percentage RMS EVM of Post-Equalized signal: %0.3f%%\n', ...
        postEqualisedEVM); 
Percentage RMS EVM of Post-Equalized signal: 15.598%
% Plot the received and equalized resource grids 
hDownlinkEstimationEqualizationResults(rxGrid, eqGrid);

Figure contains an axes. The axes with title Received resource grid contains an object of type surface.

Figure contains an axes. The axes with title Equalized resource grid contains an object of type surface.

Приложение

В этом примере используется функция helper: