exponenta event banner

Оценка и выравнивание канала нисходящей линии связи LTE

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

Введение

В этом примере показано, как можно создать простое моделирование «передатчик-канал-приемник» с использованием функций из панели инструментов LTE. В примере генерируется кадр данных на одном антенном порту. Поскольку в этом примере транспортный канал не создается, данные являются случайными битами, 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

Конфигурация SNR

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

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 и доплеровская частота на 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

Интерполяция выполняется блоком оценки канала между оценками пилот-сигнала для создания оценки канала для всех 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 обеспечивает генерацию пустых сигналов и индексов в других подкадрах, так что синтаксис вызова здесь может быть полностью однородным по всем подкадрам.

% 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 задается SNR = Es/N0, где Es - энергия интересующего сигнала, а N0 - мощность шума. Шум, добавленный перед демодуляцией OFDM, будет усилен БПФ. Поэтому для нормализации SNR в приемнике (после демодуляции OFDM) шум должен быть масштабирован. Усиление представляет собой квадратный корень размера БПФ. Размер БПФ может быть определен из частоты дискретизации формы сигнала во временной области (info.SamplingRateи интервал между поднесущими (15 кГц). Мощность добавляемого шума может быть масштабирована так, чтобы Es и N0 нормализовались после демодуляции OFDM для достижения требуемого SNR (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 матрицу комплексных весов, которые канал применяет к каждому ресурсному элементу в передаваемой сетке для каждой возможной комбинации передающей и приемной антенны. Возможные комбинации основаны на конфигурации eNireB. enb и количество приемных антенн (определяемое размером принятой сетки ресурсов). Первое измерение является поднесущей, второе измерение является символом OFDM, третье измерение является приемной антенной, а четвертое измерение является передающей антенной. В этом примере используется одна передающая и одна приемная антенны, поэтому размер 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.

Приложение

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