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

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

Введение

В этом примере показано, как простая симуляция приемника канала передатчика может быть создана с помощью функций из LTE Toolbox. Пример генерирует ценность системы координат данных по одному порту антенны. Когда никакой транспортный канал не создается в этом примере, данные являются случайными битами, QPSK, модулируемый и сопоставленный с каждым символом в подкадре. Ячейка определенный опорный сигнал и первичные и вторичные сигналы синхронизации создана и сопоставлена с подкадром. 10 подкадров индивидуально сгенерированы, чтобы создать систему координат. Система координат является модулируемым OFDM, прошел через Расширенное Автомобильное Модель (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) и 120 Гц используется Доплеровская частота. Эти параметры наряду с корреляцией 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

Настройка средства оценки канала

Определяемое пользователем окно используется к средним экспериментальным символам, чтобы уменьшать эффект шума. Размер окна усреднения сконфигурирован в терминах элементов ресурса (REs), вовремя и частоты. Консерватор 9 9 окно используется в этом примере в качестве профиля задержки EVA и 120 Гц Доплеровская причина частоты, которую канал изменяет быстро в зависимости от времени и частота. 9 9 окно включает эти 4 пилотов, сразу окружающих пилота интереса при усреднении. Выбор окна усреднения обсужден в концепциях оценки канала.

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

Интерполяция выполняется средством оценки канала между экспериментальными оценками, чтобы создать оценку канала для всего REs. Чтобы улучшить оценку, несколько подкадров могут использоваться при интерполяции. Окно интерполяции 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 подкадров сгенерированы всего. Для каждого подкадра добавляется Специфичный для ячейки Опорный сигнал (Ячейка 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. Получившаяся сетка является 3-мерной матрицей. Количество строк представляет количество поднесущих. Количество столбцов равняется количеству символов 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);

Приложение

Этот пример использует функцию помощника: