В 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)"