В 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. Один транспортный блок входит, обработка объединяют каждый запланированный подкадр в цепочку (для пространственных схем мультиплексирования, может быть два транспортных блока). Транспортные блоки закодированы и уровень, соответствующий к емкости в битах канала 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 в зависимости от используемой схемы передачи (см. раздел 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, в зависимости от структуры настроек всей ячейки 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) декодирование включает восстановление уровня, турбо декодирование, конкатенацию блока и вычисления 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).
3GPP TS 36.212 "Мультиплексирование и кодирование канала"
3GPP TS 36.211 "Физические каналы и модуляция"
3GPP TS 36.213 "Процедуры физического уровня"
3GPP TS 36.101 "Передача радио оборудования пользователя (UE) и прием"
3GPP TS 36.306 "Возможности доступа радио оборудования пользователя (UE)"