Оценка канала нисходящего канала 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);

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

ОСШ дан тем, где энергия сигнала интереса и является шумовой степенью. Шум, добавленный перед демодуляцией OFDM, будет усилен БПФ. Поэтому, чтобы нормировать ОСШ в получателе (после демодуляции OFDM) шум должен масштабироваться. Усиление является квадратным корнем из размера БПФ. Размер БПФ может быть определен от уровня выборки формы волны области времени (info.SamplingRate) и поднесущая, располагающая (15 кГц с интервалами). Степень шума, который будет добавлен, может масштабироваться так, чтобы и были нормированы после демодуляции 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);
% EVM of post-equalized receive signal
postEqualisedEVM = EVM(txGrid,eqGrid);
fprintf('Percentage RMS EVM of Post-Equalized signal: %0.3f%%\n', ...
        postEqualisedEVM);

% Plot the received and equalized resource grids
hDownlinkEstimationEqualizationResults(rxGrid, eqGrid);
Percentage RMS EVM of Pre-Equalized signal: 124.133%
Percentage RMS EVM of Post-Equalized signal: 15.598%

Приложение

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