В этом примере показано, как сгенерировать передачу расширенного физического нисходящего канала управления (EPDCCH) с помощью LTE Toolbox™.
Этот пример показов, как сгенерировать передачу по нисходящей линии связи, включая EPDCCH, Опорный сигнал демодуляции EPDCCH (DMRS), Cell-Specific Опорного сигнала (CRS) и Channel State Information Опорного сигнала (CSI-RS). Формирование луча maEPDCCH включено как для локализованной, так и для распределенной передачи. Выходом примера является ресурсная сетка, заполненная переданными каналами, и модулированная OFDM сигнал временной области, который передает эту ресурсную сетку. Также создается график, который детализирует использование ресурсного элемента (RE) для каждого из каналов.
Настройки всей ячейки сконфигурированы со структурой enb
. Эта структура содержит параметры, которые относятся к eNodeB.
% Number of downlink resource blocks corresponding to 5MHz bandwidth enb.NDLRB = 25; % Duplexing mode: 'FDD' or 'TDD' enb.DuplexMode = 'FDD'; % Number of Cell-specific Reference Signal (CRS) antenna ports enb.CellRefP = 1; % Subframe number enb.NSubframe = 0; % Cyclic prefix length: 'Normal' or 'Extended' enb.CyclicPrefix = 'Normal'; % Frame number enb.NFrame = 0; % Cell identity enb.NCellID = 0; % Channel State Information Reference Signal (CSI-RS) subframe schedule enb.CSIRSPeriod = 'On'; % Configuration index of the CSI-RS enb.CSIRSConfig = 1; % Number of CSI-RS antenna ports in use with this configuration enb.CSIRefP = 2; % Zero-Power CSI-RS subframe schedule enb.ZeroPowerCSIRSPeriod = 'Off';
Структурный chs
создается, содержащая параметры, относящиеся к передаче сообщения DCI, которое будет кодироваться и модулироваться по каналу EPDCCH. В отличие от структуры enb
выше, который конфигурирует настройки всей ячейки, структура здесь конфигурирует специфические для канала настройки для передачи конкретного канала, в этом случае EPDCCH. (Имя структуры chs
- сокращение «специфический для канала».)
% DCI format to send on the EPDCCH chs.DCIFormat = 'Format1A'; % Radio Network Temporary Identifier (RNTI) chs.RNTI = 1; % Transmission type: 'Localized' or 'Distributed' chs.EPDCCHType = 'Localized'; % Zero-based indices of PRB pair set associated with EPDCCH search space chs.EPDCCHPRBSet = 4:5; % Initial transmission symbol for EPDCCH transmission chs.EPDCCHStart = 2; % Scrambling identity for the EPDCCH chs.EPDCCHNID = 0; % EPDCCH format chs.EPDCCHFormat = 1;
Пустая сетка ресурсов subframe
создается для одного подрамника. В этом примере 3-ья размерность (плоскости) этой ресурсной сетки предназначены для представления физических антенн. Отображение между портами антенны и физическими антеннами для различных каналов и сигналов, используемых в этом примере, будет описано, когда каналы и сигналы будут отображены в эту ресурсную сетку. Пустая ресурсная сетка подкадров создается с помощью lteDLResourceGrid
функция. Дополнительный второй входной параметр позволяет явно задать размер 3-ьей размерности (количество плоскостей) (по умолчанию значение enb.CellRefP
, количество портов CRS, используется для определения количества плоскостей). Обратите внимание, что для распределенной передачи EPDCCH используются два порта антенны, и поэтому требуется минимум две физические антенны; если количество портов CRS или портов CSI-RS больше 2, то используется самое большое из этих значений, это позволяет ресурсной сетке содержать все сконфигурированные порты CRS или CSI-RS.
maxEpdcchPorts = 2; nTxAnts = max([enb.CSIRefP enb.CellRefP maxEpdcchPorts]); subframe = lteDLResourceGrid(enb,nTxAnts);
Сообщение DCI формата, обозначенного chs.DCIFormat
создается с помощью функции lteDCI
. Область структуры output dci
представляет сообщение DCI, как описано в TS36.212 разделе 5.3.3.1 [3]. Вектор бит dciBits
содержит фактические биты сообщений, которые будут закодированы.
% Create a DCI message
[dci,dciBits] = lteDCI(enb,chs);
EPDCCH передается в «кандидате EPDCCH», наборе улучшенных элементов канала управления (ECCE). Каждая ECCE преобразуется в набор расширенных групп ресурсных элементов (EREG), которые, в свою очередь, отображаются на конкретные ресурсные элементы в подрамной ресурсной сетке. В порядок создания индексов ресурсного элемента для конкретной передачи EPDCCH должен быть выбран кандидат EPDCCH. Функция lteEPDCCHSpace
создает матрицу действительных кандидатов EPDCCH для заданного строения, причем каждая строка матрицы дает включенные [начальные, конечные] индексы одного кандидата EPDCCH. Поэтому любая строка этой матрицы может быть извлечена и присвоена chs.EPDCCHECCE
поле параметра, которое будет использоваться функцией ltePDCCHIndices
для определения индексов ресурсного элемента для передачи EPDCCH.
candidates = lteEPDCCHSpace(enb,chs); chs.EPDCCHECCE = candidates(3,:);
В порядок определения битовой емкости данных EPDCCH функция lteEPDCCHIndices
используется, который создает индексы ресурсного элемента для EPDCCH, следуя TS36.211 раздела 6.8A.5 [3]; эти индексы будут использоваться позже для отображения передачи EPDCCH в подрамную ресурсную сетку. Эта функция также возвращает структуру, содержащую полезные значения EPDCCH «информации о размерности», включая epdcchInfo.EPDCCHG
, емкость битов данных EPDCCH, которая будет использоваться, чтобы сконфигурировать соответствие скорости при кодировании сообщения DCI.
% Calculate EPDCCH resource element indices and associated dimensionality % information including the EPDCCH data bit capacity epdcchInfo.EPDCCHG [epdcchIndices,epdcchInfo] = lteEPDCCHIndices(enb,chs);
Далее, вектор битов dciBits
передается в функцию lteDCIEncode
который выполняет вставку CRC, сверточное кодирование с укусом хвоста и согласование скорости в соответствии TS36.212 разделами 5.3.3.2 - 5.3.3.4 [3]. Обратите внимание, что третий аргумент в lteDCIEncode
задает пропускную способность согласования скорости (для не расширенных передач PDCCH этот третий аргумент может быть опущен, и пропускная способность согласования скорости определяется внутренне из формата PDCCH).
% Perform DCI message encoding with a rate matching output size equal to % the EPDCCH data bit capacity codedDciBits = lteDCIEncode(chs,dciBits,epdcchInfo.EPDCCHG);
Модуляция EPDCCH выполняется с помощью функции lteEPDCCH
, следующие TS36.211 Разделы 6.8A-2- 6.8A-4 [2]. Получившиеся символы epdcchSymbols
будет сопоставлено с подкадровой ресурсной сеткой после соответствующего формирования луча. EPDCCH передается на подмножестве портов антенны 107... 110:
Для chs.EPDCCHType='Localized'
EPDCCH передается по одному порту антенны, выбранному из 107... 110 как функция от ряда параметров, включая RNTI.
Для chs.EPDCCHType='Distributed'
EPDCCH передается на двух портах антенны, либо {107,109} для нормального циклического префикса, либо {107,108} для расширенного циклического префикса.
Индексы, произведенные lteEPDCCHIndices
функция сопоставляет порты антенны 107... 110 (на основе 0) с плоскостями 1... 4 (на основе 1) подрамной ресурсной сетки. Плоскость является третьей размерностью ресурсной сетки подкадров, как описано в документации Resource Grids. Обычно функции LTE Toolbox разделяют символы и индексы для различных портов антенны на отдельные столбцы. Однако для EPDCCH символы и их индексы представлены в одном столбце, и индексы в нем соответствуют соответствующему порту антенны для каждого ресурсного элемента. Такой подход применяется по двум причинам:
Количество символов EPDCCH, сопоставленных с каждым портом антенны, может быть разным.
Отображение между символами и портами антенны зависит от многих параметров и представлять это в lteEPDCCH
приведет к очень значительному увеличению количества параметров, требуемых этой функцией.
Формирование луча EPDCCH для передачи через физические антенны будет описано ниже.
epdcchSymbols = lteEPDCCH(enb,chs,codedDciBits);
DMRS, сопоставленный с EPDCCH, epdcchDmrsSymbols
, создается с помощью функции lteEPDCCHDMRS
, в соответствии TS36.211 разделом 6.10.3A.1 [2]. Связанные индексы ресурсного элемента, epdcchDmrsIndices
, также создаются с помощью функции lteEPDCCHDMRSIndices
, в соответствии TS36.211 разделом 6.10.2.A.2 [2]. Расположение символов DMRS и их индексов для различных портов антенны зеркало, которое описано для символов и индексов EPDCCH выше. Формирование луча EPDCCH DMRS для передачи после физических антенн будет описано ниже.
epdcchDmrsSymbols = lteEPDCCHDMRS(enb,chs); epdcchDmrsIndices = lteEPDCCHDMRSIndices(enb,chs);
Создаются сигналы CRS и CSI-RS и соответствующие им индексы ресурсного элемента, и сигналы отображаются в подрамную ресурсную сетку:
Индексы, произведенные lteCellRSIndices
сопоставить порты антенн 0... 3 (на основе 0) с плоскостями 1... 4 (на основе 1) ресурсной сетки подкадра. В этом примере один порт CRS (enb.CellRefP=1
) сконфигурирована, и поэтому CRS будет сопоставлена с первой плоскостью ресурсной сетки подкадра.
Индексы, произведенные lteCSIRSIndices
сопоставить порты антенны 15... 22 (на основе 0) с плоскостями 1... 8 (на основе 1) ресурсной сетки подкадра. В этом примере два порта CSI-RS (enb.CSIRefP=2
) сконфигурированы, и поэтому CSI-RS будет сопоставлен с первыми двумя плоскостями ресурсной сетки подкадра.
Это отображение соответствует типовой модели формирования луча, описанной в TS36.101 Annex B.4.3 [1].
% Create CSI-RS and map to the subframe resource grid csirsIndices = lteCSIRSIndices(enb); csirsSymbols = lteCSIRS(enb); subframe(csirsIndices) = csirsSymbols; % Create CRS and map to the subframe resource grid crsIndices = lteCellRSIndices(enb); crsSymbols = lteCellRS(enb); subframe(crsIndices) = crsSymbols;
Теперь EPDCCH и его DMRS должны быть сформированы лучом и сопоставлены с физическими антеннами для передачи. Векторы формирования луча здесь выбираются в соответствии TS36.101 Приложением B.4.4 [1] для распределенной передачи и TS36.101 Приложением B.4.5 [1] для локализованной передачи.
При подготовке к формированию луча символы EPDCCH конкатенируются с символами DMRS EPDCCH, и соответствующие индексы также конкатенируются. EPDCCH и его DMRS должны подвергаться одному и тому же формированию луча, поэтому они могут обрабатываться вместе при применении формирования луча.
% Concatenate EPDCCH symbols/indices with EPDCCH DMRS symbols/indices to % facilitate beamforming allSymbols = [epdcchSymbols; epdcchDmrsSymbols]; allIndices = [epdcchIndices; epdcchDmrsIndices];
Полный набор индексов allIndices
затем преобразуется в индексы, и индексы обрабатываются для получения списка активных портов антенны EPDCCH ports
и активные ресурсные блоки EPDCCH rbs
. ports
и rbs
будет использоваться для управления двумя циклами, которые выполняют формирование луча на порте и на базисе ресурсного блока.
% Determine the set of EPDCCH antenna ports 'ports' and resource blocks % 'rbs' used by the EPDCCH and its DMRS; the value of 4 below is the % number of EPDCCH antenna ports (107...110) on which an EPDCCH might be % transmitted (i.e. 'allIndices' may generally contain indices for any of % the 4 EPDCCH antenna ports). [K,L,~] = size(subframe); [resubs,~,portsubs] = ind2sub([K L 4],allIndices); rbsubs = floor((resubs-1)/12)+1; rbs = unique(rbsubs); ports = unique(portsubs.');
Для локализованной передачи EPDCCH, формирование луча, описанное в TS36.101 Приложении B.4.5 [1], использует один случайный вектор формирования луча во всех ресурсных блоках.
% For localized transmission, a single beamforming vector 'W' is used for % the single EPDCCH port and across all resource blocks if (strcmpi(chs.EPDCCHType,'Localized')) codebookIdx = randi([0 3],1); W = lteDLPrecode(1,nTxAnts,'SpatialMux',codebookIdx); end
Для распределенной передачи EPDCCH, формирование луча, описанное в TS36.101 приложении B.4.4 [1], использует другой вектор формирования луча W для каждого ресурсного блока и каждого из двух используемых портов антенны. Поэтому выбор вектора формирования луча выполняется в циклах через набор ресурсных блоков и портов. Обратите внимание, что циклы ниже применимы и для распределенной и для локализованной передачи: для локализованной передачи beamforming вектор, отобранный выше, применен к каждому блоку ресурса (для единственного используемого порта), тогда как для распределенной передачи beamforming вектор и отбирают и используют каждый блок ресурса и порт антенны. Код структурирован следующим образом:
Для каждого порта антенны и для каждого ресурсного блока (RB):
вектор логических значений thisport
true для символов EPDCCH/DMRS, которые применяются к текущему порту антенны.
вектор логических значений thisrb
true для символов EPDCCH/DMRS, которые применяются к текущему RB.
Для распределенной передачи выберите вектор формирования луча W
Примените формирование луча к символам EPDCCH/DMRS и индексам EPDCCH/DMRS для текущего порта антенны и текущего RB. Чтобы помочь с формированием луча индексов, функция lteExtractResources
используется. Вызов этой функции принимает в качестве входных параметров индексы ресурсных элементов для данного порта антенны. Первый выход функции, который пропускается здесь, является набором RE для всех физических антенн в ресурсной сетке подкадра subframe
в тех же местоположениях времени/частоты, что и входные индексы. Второй вывод, который используется в качестве наших светоформированных индексов, содержит соответствующие индексы для RE в первом выходе, по существу, проекцию входных индексов на все физические антенны. Символы и индексы для текущего порта антенны и тока RB получаются с помощью логических векторов thisport
и thisrb
для извлечения соответствующих элементов символов EPDCCH/DMRS allSymbols
и индексы EPDCCH/DMRS allIndices
.
Сопоставьте сформированные лучи EPDCCH/DMRS с ресурсной сеткой подрамника.
% Matrix to store the codebook index used for each resource block and % antenna port codebookIdxs = zeros(length(rbs),length(ports)); % For each EPDCCH antenna port in use: for p=1:length(ports) thisport = (portsubs==ports(p)); % For each RB in use: for r = 1:length(rbs) thisrb = (rbsubs==rbs(r)); % For distributed transmission, a beamforming vector 'W' is % selected for each EPDCCH port and each resource block; the % beamforming vector chosen for a particular resource block must be % different on each of the antenna ports if (strcmpi(chs.EPDCCHType,'Distributed')) unusedIdxs = setxor(0:3,codebookIdxs(r,1:p-1)); codebookIdx = unusedIdxs(randi(length(unusedIdxs),1)); W = lteDLPrecode(1,nTxAnts,'SpatialMux',codebookIdx); end % Record the codebook index used for this resource block and % antenna port codebookIdxs(r,p) = codebookIdx; % Apply beamforming to the symbols and indices bfSymbols = allSymbols(thisport & thisrb) * W; [~,bfIndices] = ... lteExtractResources(allIndices(thisport & thisrb),subframe); % Map the beamformed symbols to the physical antennas. The symbols % must be added to the existing subframe resource grid because % different ports may share the same time/frequency locations and % therefore the beamformed symbols must be superposed. subframe(bfIndices) = subframe(bfIndices) + bfSymbols; end end
Сетка ресурсов подкадров строится для указания местоположения EPDCCH, EPDCCH DMRS, CRS и CSI-RS. Если chs.EPDCCHStart>0
также показано местоположение унаследованной области управления.
hEPDCCHGenerationPlot(enb,chs);
Наконец, ресурсная сетка подкадра модулируется OFDM; получившаяся матрица имеет два столбца; каждый столбец содержит сложные выборки формы волны основной полосы и временной области для каждой физической антенны.
waveform = lteOFDMModulate(enb,subframe);
В этом примере используется функция helper:
3GPP TS 36.101 «Радиопередача и прием пользовательского оборудования (UE)»
3GPP ТС 36.211 «Физические каналы и модуляция»
3GPP TS 36.212 «Мультиплексирование и канальное кодирование»