LTE DL-SCH и PDSCH обработка цепочки

В LTE Нисходящий Разделяемый Канал (DL-SCH) является транспортным каналом, используемым для передачи пользовательских данных, выделенного управления и специфичной для пользователя более высокой информации о слое и нисходящей информации о системе. Физический Нисходящий Разделяемый Канал (PDSCH) является физическим каналом, который несет закодированные данные DL-SCH. Этот пример показывает различные этапы, вовлеченные в Нисходящий Разделяемый Канал (DL-SCH) и Физический Нисходящий Разделяемый Канал (PDSCH) обработка, и обеспечивает доступ к данным из этих промежуточных стадий.

Введение

LTE Toolbox™ обеспечивает функции для моделирования физического уровня с переменными уровнями гранулярности в пределах от функций уровня системы, которые могут сгенерировать полные восходящие и нисходящие формы волны к функциям уровня канала PHY, которые выполняют транспортную/физическую обработку канала и отдельные функции этапа обработки канала, выполняющие кодирование CRC, турбокодирование, и т.д. Эти функции, с простым интерфейсом и простотой параметризации, справки в быстром прототипировании стандартных совместимых моделей и поэтому полезны в большом разнообразии приложений. Преимущества теста и рабочего процесса верификации с помощью отдельных этапов обработки канала, проиллюстрированных в этом примере:

  • Используйте в качестве золотой ссылки для альтернативных реализаций

  • Простота создания статических или динамических тестовых векторов для получателя или тестирования аппаратного блока

  • Поймите обработку DL-SCH/PDSCH

Переменные уровни гранулярности позволяют пользователям создавать модели с таким же доступа к промежуточным данным как требуется и генерировать большое количество форм волны или тестовых векторов для автоматизированного тестирования. Для DL-SCH и PDSCH обработка и декодирование, тулбокс обеспечивает lteDLSCH, ltePDSCH, ltePDSCHDecode и lteDLSCHDecode. Это функции уровня канала, способные к обработке всех этапов соответствующего транспортного или физического канала, как описано в Разделе TS 36.212 5.3.2 [1] и Разделе TS 36.211 6.4 [2]. Этот пример показывает, как использовать функции, выполняющие отдельные шаги обработки канала для DL-SCH и PDSCH кодирование и декодирование для вариантов использования, где доступ к промежуточным значениям/этапам обработки требуется. Различные этапы цепочки обработки и функций, LTE Toolbox предусматривает DL-SCH и PDSCH, показывают схемы ниже.

Настройка

Функции, используемые в примере, требуют комбинации параметров всей ячейки и образовывают канал определенные параметры. Они вводятся к функциям как поля структур или как отдельные параметры.

% Cell-wide Settings
% The cell-wide parameters are grouped into a single structure enb. A
% number of the functions used in this example require a subset of the
% parameters specified below. In this example we use the configuration
% according to the RMC R.14 FDD specified in TS 36.101 Annex A.3.4 which
% uses 50 RB, 4 port, 'SpatialMux' transmission scheme, '16QAM' symbol
% modulation, 2 codewords and a code rate of 1/2.
enb.NDLRB = 50;                 % Number of resource blocks
enb.CellRefP = 4;               % Cell-specific reference signal ports
enb.NCellID = 0;                % Cell ID
enb.CyclicPrefix = 'Normal';    % Normal cyclic prefix
enb.CFI = 2;                    % Length of control region
enb.DuplexMode = 'FDD';         % FDD duplex mode
enb.TDDConfig = 1;              % Uplink/Downlink configuration (TDD only)
enb.SSC = 4;                    % Special subframe configuration (TDD only)
enb.NSubframe = 0;              % Subframe number

% Transport/Physical channel settings for ease of use the DL-SCH and PDSCH
% channel specific settings are specified in a parameter structure pdsch.
% For the R.14 FDD RMC, there are two codewords, so the modulation scheme
% is specified as a cell array containing the modulation schemes of both
% codewords. If configuring for one codeword, the modulation scheme can be
% a character vector or a cell array with character vectors.
% It is also important to configure the TrBlkSizes parameter to have the
% correct number of elements as the intended number of codewords. The
% number of soft bits for the rate matching stage is decided by the UE
% category as specified in TS 36.306 Table 4.1-1. In this example, the
% transport block size is looked up from tables in TS 36.101 Annex A.3.4.
% This can also be done by using the lteRMCDL function for R.14 RMC.

% DL-SCH Settings
TrBlkSizes = [11448; 11448];    % 2 elements for 2 codeword transmission
pdsch.RV = [0 0];               % RV for the 2 codewords
pdsch.NSoftbits = 1237248;      % No of soft channel bits for UE category 2
% PDSCH Settings
pdsch.TxScheme = 'SpatialMux';  % Transmission scheme used
pdsch.Modulation = {'16QAM','16QAM'}; % Symbol modulation for 2 codewords
pdsch.NLayers = 2;              % Two spatial transmission layers
pdsch.NTxAnts = 2;              % Number of transmit antennas
pdsch.RNTI = 1;                 % The RNTI value
pdsch.PRBSet = (0:enb.NDLRB-1)';% The PRBs for full allocation
pdsch.PMISet = 0;               % Precoding matrix index
pdsch.W = 1;                    % No UE-specific beamforming
% Only required for 'Port5', 'Port7-8', 'Port8' and 'Port7-14' schemes
if any(strcmpi(pdsch.TxScheme,{'Port5','Port7-8','Port8', 'Port7-14'}))
    pdsch.W = transpose(lteCSICodebook(pdsch.NLayers,pdsch.NTxAnts,[0 0]));
end

Нисходящий разделяемый канал (DL-SCH) обработка

Этот раздел объясняет транспортное кодирование канала DL-SCH. Один транспортный блок входит, обработка объединяют каждый запланированный подкадр в цепочку (для пространственных схем мультиплексирования, может быть два транспортных блока). Транспортные блоки закодированы и уровень, соответствующий к емкости в битах канала PDSCH. Способность PDSCH зависит от выделений PRB, схемы модуляции, и схема передачи и это значение предоставлены как вывод от функции ltePDSCHIndices. Транспортный процесс кодирования канала включает следующие этапы как показано в фигуру 1 выше.

  • Транспортное прикрепление CRC Блока: Выявление ошибок для транспортных блоков обеспечивается 24-битным CRC согласно Разделу TS 36.212 5.3.2.1 [1].

  • Сегментация блока кода и прикрепление блока CRC кода: Как показано в фигуре 1 выше, сегментация блока кода разделяет битовый вектор входных данных в массив ячеек сегментов блока кода (с битами заполнителя и CRC типа-24B, добавленным как соответствующий) согласно правилам Раздела TS 36.212 5.3.2.2 [1]. Функция lteDLSCHInfo предоставляет информацию о сегментации блока кода для данного размера блока.

  • Кодирование канала: блоки кода являются индивидуально турбо, закодированным согласно Разделу TS 36.212 5.3.2.3 [1]. Турбо кодер (lteTurboEncode) может обработать массив ячеек, содержащий все сегменты блока кода параллельно, и возвращается, массив ячеек, содержащий отдельное турбо, закодировал сегменты блока.

  • Уровень, Соответствующий и код, блокируют конкатенацию: закодированные блоки турбо являются затем индивидуально уровнем, соответствующим согласно Разделу TS 36.212 5.3.2.4 [1], и получившийся уровень соответствовал, блоки конкатенированы согласно Разделу TS 36.212 5.3.2.5 [1], чтобы создать одну кодовую комбинацию для передачи на PDSCH.

% Random number initialization for creating random transport block(s)
rng('default');

% Convert the modulation scheme char array or cell array to string array
% for uniform processing
 pdsch.Modulation = string(pdsch.Modulation);

% Get the number of codewords from the number of transport blocks
nCodewords = numel(TrBlkSizes);

% Generate the transport block(s)
trBlk = cell(1,nCodewords); % Initialize the codeword(s)
for n=1:nCodewords
    trBlk{n} = randi([0 1],TrBlkSizes(n),1);
end
% Get the physical channel bit capacity required for rate matching from
% ltePDSCHIndices info output
[~,pdschInfo] = ltePDSCHIndices(enb,pdsch,pdsch.PRBSet);

% Define a structure array with parameters for lteRateMatchTurbo
chs = pdsch;
chs(nCodewords) = pdsch; % For 2 codewords, the array has two elements
% Initialize the codeword(s)
cw = cell(1,nCodewords);
for n=1:nCodewords
    % CRC addition for the transport block
    crccoded = lteCRCEncode(trBlk{n},'24A');
    % Code block segmentation returns a cell array of code block segments
    % with filler bits and type-24B CRC appended as required
    blksegmented = lteCodeBlockSegment(crccoded);
    % Channel coding returns the turbo coded segments in a cell array
    chencoded = lteTurboEncode(blksegmented);

    % Bundle the parameters in structure chs for rate matching as the
    % function requires both cell-wide and channel specific parameters
    chs(n).Modulation = pdsch.Modulation{n};
    chs(n).DuplexMode = enb.DuplexMode;
    chs(n).TDDConfig = enb.TDDConfig;
    % Calculate number of layers for the codeword
    if n==1
        chs(n).NLayers = floor(pdsch.NLayers/nCodewords);
    else
        chs(n).NLayers = ceil(pdsch.NLayers/nCodewords);
    end
    % Rate matching returns a codeword after sub-block interleaving, bit
    % collection and bit selection and pruning defined for turbo encoded
    % data and merging the cell array of code block segments
    cw{n} = lteRateMatchTurbo(chencoded,pdschInfo.G(n),pdsch.RV(n),chs(n));
end

Физический нисходящий разделяемый канал (PDSCH) обработка

Закодированные блоки одного или двух транспортов (кодовые комбинации) могут быть переданы одновременно на PDSCH в зависимости от используемой схемы передачи (см. раздел TS 36.211 6.4 [2]). Как показано в фигуре 2 выше, кодовые комбинации подвергаются скремблированию, модуляции, отображению слоя, предварительному кодированию, дополнительному UE-specific beamforming и отображению элемента ресурса. Размер матричного precoded является N-by-P с N быть количеством символов модуляции для одного порта антенны и P быть количеством антенн передачи.

  • Скремблирование: до двух кодовых комбинаций могут быть переданы в подкадре и для каждой кодовой комбинации, биты скремблированы с различной последовательностью скремблирования согласно Разделу TS 36.211 6.3.1 [2]. Борющаяся последовательность инициализируется в начале каждого подкадра и зависит от RNTI, NCellID, NSubframe и индекса кодовой комбинации.

  • Модуляция: скремблированная кодовая комбинация (комбинации) является затем символом, модулируемым с помощью одной из схем модуляции ('QPSK', '16QAM', '64QAM' или '256QAM')

  • Отображение слоя: модулируемые символы комплекса затем сопоставлены на одном или нескольких слоях согласно используемой схеме передачи (Раздел TS 36.211 6.3.3 [1]). Для одного порта (порт 0, 5, 7 или 8), используется единственный слой. Для разнообразия передачи позволена только одна кодовая комбинация, и количество слоев (2 или 4) должно быть равно количеству портов антенны, используемых для передачи физического канала. Для пространственного мультиплексирования 1 или 2 кодовых комбинаций может быть передан максимум на 8 слоях. Количество слоев меньше чем или равно количеству портов антенны, используемых для передачи физического канала.

  • Предварительное кодирование: этап перед кодированием берет в матрице M слоями от этапа отображения слоя и возвращает матрицу размера M-by-P для передачи на антеннах P, как задано в Разделе TS 36.211 6.3.4 [2]. Для одного порта (порт 0, 5, 7 или 8), этот этап прозрачен и для разнообразия передачи, предварительное кодирование применяется для 2 или 4 портов антенны. Предварительно кодирование для пространственного мультиплексирования зависит от того, используются ли порты антенны со специфичными для ячейки ссылочными сигналами ('SpatialMux', 'CDD' и 'Многопользовательские' схемы передачи) или порты антенны со ссылочными сигналами UE-specific ('Port5', 'Port7-8', 'Port8' и схемы передачи 'Port7-14').

  • Отображение с Элементами Ресурса: модулируемые символы комплекса затем сопоставлены на элементах ресурса, как задано в Разделе TS 36.211 6.3.5 [2], чтобы создать сетку для передачи. Этот этап не показывают в этом примере, но можно легко сделать путем создания пустой сетки ресурса с помощью lteDLResourceGrid и сопоставив символы, чтобы снабдить элементы, возвращенные функцией ltePDSCHIndices.

% Initialize the modulated symbols
modulated = cell(1,nCodewords);
for n=1:nCodewords
   % Generate the scrambling sequence
   scramseq = ltePDSCHPRBS(enb,pdsch.RNTI,n-1,length(cw{n}));
   % Scramble the codewords
   scrambled = xor(scramseq,cw{n});
   % Symbol modulate the scrambled codewords
   modulated{n} = lteSymbolModulate(scrambled,pdsch.Modulation{n});
end
% Layer mapping results in a (symbols per layer)-by-NLayers matrix
layermapped = lteLayerMap(pdsch,modulated);
% Precoding results in a (symbols per antenna)-by-NTxAnts matrix
precoded = lteDLPrecode(enb, pdsch, layermapped);
% Apply beamforming optionally (W should be 1 or identity if no beamforming)
pdschsymbols = precoded*pdsch.W;

Декодирование PDSCH

Декодирование является инверсией Физического Нисходящего Разделяемого Канала (PDSCH), обрабатывающий на матрице модулируемых символов комплекса PDSCH, в зависимости от структуры настроек всей ячейки enb и специфичная для канала конфигурационная структура pdsch. Обработка инверсии канала включает deprecoding, слой demapping и разделение кодовой комбинации, мягкая демодуляция и дескремблирование. deprecoding выполняется с помощью матричной псевдо инверсии матриц перед кодированием. Для приложений включающие каналы распространения и/или шум, оценка канала и коррекция сделан на полученных символах перед декодированием. См. ltePDSCHDecode для получения дополнительной информации.

% Deprecoding (pseudo-inverse based) returns (Number of symbols)-by-NLayers matrix
if (any(strcmpi(pdsch.TxScheme,{'Port5' 'Port7-8' 'Port8' 'Port7-14'})))
    rxdeprecoded=pdschsymbols*pinv(pdsch.W);
else
    rxdeprecoded = lteDLDeprecode(enb,pdsch,pdschsymbols);
end
% Layer demapping returns a cell array containing one or two codewords. The
% number of codewords is deduced from the number of modulation scheme
% character vectors
layerdemapped = lteLayerDemap(pdsch,rxdeprecoded);

% Initialize the recovered codewords
cws = cell(1,nCodewords);
for n=1:nCodewords
    % Soft demodulation of received symbols
    demodulated = lteSymbolDemodulate(layerdemapped{n},pdsch.Modulation{n},'Soft');
    % Scrambling sequence generation for descrambling
    scramseq = ltePDSCHPRBS(enb,pdsch.RNTI,n-1,length(demodulated),'signed');
    % Descrambling of received bits
    cws{n} = demodulated.*scramseq;
end

Декодирование DL-SCH

Нисходящий Разделяемый Канал (DL-SCH) декодирование включает восстановление уровня, турбо декодирование, конкатенацию блока и вычисления CRC. Кроме того, функция lteDLSCHDecode также обеспечивает ту же функциональность. Эта функция также возвращает транспортный результат декодирования блока CRC типа-24A, введите-24B результат декодирования CRC набора блока кода, декодирование процесса HARQ утверждают, и обеспечивает параметризацию для определения начального состояния процесса HARQ.

% Initialize the received transport block and CRC
rxTrBlk = cell(1,nCodewords);
crcError = zeros(1,nCodewords);
for n=1:nCodewords
    % Rate recovery stage also allows combining with soft information for
    % the HARQ process, using the input cbsbuffers. For the first
    % transmission of the transport block, the soft buffers are initialized
    % as empty. For retransmissions, the parameter cbsbuffers should be the
    % soft information from the previous transmission
    cbsbuffers = [];  % Initial transmission of the HARQ process
    % Rate recovery returns a cell array of turbo encoded code blocks
    raterecovered = lteRateRecoverTurbo(cws{n},TrBlkSizes,pdsch.RV(n),chs(n),cbsbuffers);
    NTurboDecIts = 5; % Number of turbo decoding iteration cycles
    % Turbo decoding returns a cell array of decoded code blocks
    turbodecoded = lteTurboDecode(raterecovered,NTurboDecIts);
    % Code block desegmentation concatenates the input code block segments
    % into a single output data block, after removing any filler and
    % type-24B CRC bits that may be present
    [blkdesegmented,segErr] = lteCodeBlockDesegment(turbodecoded,(TrBlkSizes+24));
    % CRC decoding returns the transport block after checking for CRC error
    [rxTrBlk{n},crcError(n)] = lteCRCDecode(blkdesegmented,'24A');
end

Заключение

Этот пример объяснил Нисходящий Разделяемый Канал (DL-SCH) и Физический Нисходящий Разделяемый Канал (PDSCH) обработка и обеспечил понимание различных функций, доступных в LTE Toolbox, чтобы поддержать эти каналы. Пример также проиллюстрировал, как функции низкого уровня могут использоваться, чтобы смоделировать каналы, и этот подход может использоваться в приложениях включая золотую ссылочную генерацию тестового вектора от этих промежуточных этапов обработки, чтобы независимо подтвердить различные этапы обработки альтернативных реализаций. Этот пример также показывает, как платформа LTE Toolbox и MATLAB включает создание мощной среды для крупномасштабной верификации и теста.

Дальнейшее исследование

Можно изменить параметры, обеспеченные в этом примере, чтобы экспериментировать с различными настройками. Для, например, при симуляции для различных режимов передачи, некоторые параметры интереса являются схемой передачи (TxScheme), схема модуляции (Modulation), количество кодовых комбинаций (число элементов TrBlkSizes).

Выбранная библиография

  1. 3GPP TS 36.212 "Мультиплексирование и кодирование канала"

  2. 3GPP TS 36.211 "Физические каналы и модуляция"

  3. 3GPP TS 36.213 "Процедуры физического уровня"

  4. 3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"

  5. 3GPP TS 36.306 "Возможности доступа радио оборудования пользователя (UE)"

Для просмотра документации необходимо авторизоваться на сайте