Этот пример демонстрирует инкрементальную избыточность (IR) гибридного автоматического повторного запроса (Hybrid-ARQ) в передаче совместно используемого канала нисходящей линии связи (DL-SCH) с использованием LTE Toolbox™.
Общий канал нисходящей линии связи (DL-SCH) описан в TS36.212, раздел 5.3.2 [2]. Этот пример демонстрирует, как передатчик повторно передает одно кодовое слово на одном слое, используя другую версию избыточности (RV) каждый раз, пока CRC принятого кодового слова не укажет на успешную передачу. Передача DL-SCH 16QAM модулируется целевой частотой кодирования 1/2, переданной по одному антенному порту. Настройка, используемая в этом примере, основана на R.3 Фиксированного Опорного Канала, определенных в Таблице A.3.3.1-2 TS36.101 [1].
Hybrid Automatic Repeat reQuest (Hybrid-ARQ) является комбинацией Forward Коррекция (FEC) и Automatic Repeat reQuest оптимальным способом. Гибридные схемы ARQ обычно используются, чтобы облегчить надежную связь по шумным беспроводным каналам. HARQ способен компенсировать ссылку ошибки адаптации и обеспечивает более мелкую детализацию скорости кодирования, что приводит к лучшей эффективности пропускной способности, чем другие схемы FEC.
Существует три типа гибридных ARQ: тип I, тип II и тип III.
Самый простой метод: Гибридный ARQ Type I использует CRC, чтобы определить, произошла ли ошибка в передаче. Если пакет обнаружен как ошибочный, то передатчику будет отправлен запрос повторной передачи, и ошибочный пакет будет отброшен. Передатчик затем повторно передает тот же пакет до тех пор, пока пакет не будет успешно декодирован приемником или не будет достигнут максимальный предел повторной передачи.
Гибридный ARQ Type I может быть расширен, чтобы включать объединение пакетов, это известно как гибридный ARQ Type I с объединением пакетов или объединением чейза. После каждой неудачной повторной передачи ошибочные пакеты сохраняются в буфере. Затем приемник использует объединение максимального отношения, чтобы объединить каждый принятый бит канала с любыми предыдущими переданиями того же бита, и объединенный сигнал подается на декодер. Объединение чейза не дает никакого дополнительного усиления кодирования, это только увеличивает накопленное отношение принимаемого сигнала к шуму для каждой повторной передачи.
В Hybrid ARQ Type II, также известном как полная инкрементальная избыточность (IR), каждая повторная передача не обязательно идентична исходной передаче. Вместо этого генерируется множество наборов закодированных бит, и всякий раз, когда требуется повторная передача, повторно переданные данные представляют набор кодированных бит, отличный от предыдущего. Приемник объединяет повторную передачу с предыдущими попытками передачи того же пакета. Поскольку повторная передача содержит дополнительные биты четности, не включенные в предыдущие попытки передачи, результирующая скорость кода обычно снижается при последующих повторных передачах. Каждая передача содержит разный набор бит четности, что приводит к более высокому усилению кодирования по сравнению с объединением погонь.
Конечный способ гибридного ARQ типа III, также известный как частичный IR, уменьшает скорость кодирования путем передачи дополнительных бит избыточности в каждой повторной передаче. Однако это гарантирует, что повторные передачи способны к самодекодированию. Это означает, что повторно переданный пакет может быть объединен с предыдущими пакетами, чтобы увеличить коэффициент усиления разнесения.
LTE использует IR HARQ с 1/3 турбо- энкодера, используемой для FEC. CRC транспортного блока (TB) используется для обнаружения ошибок. Приемник принимает только различные проколотые версии тех же самых турбокодированных данных; каждая из этих повторных передач является декодируемой самостоятельно. Таким образом, он попадает в категорию гибридного ARQ типа III.
В LTE повторные передачи передаются с начальной скоростью кодирования 1/2 или 3/4. Максимальное количество одновременных процессов DL-HARQ (количество поддерживаемых передач PDSCH) ограничено 8, как указано в TS36.213, раздел 7 [3].
В LTE протокол остановки и ожидания N-канала используется в качестве протокола Hybrid ARQ, поскольку он предлагает низкие требования к буферизации и низкие накладные расходы на подтверждение (ACK )/отрицательное подтверждение (NACK).
В этом примере генерируется транспортный блок, который подвергается кодированию DL-SCH для создания кодового слова. Кодовое слово подвергается физическому нисходящему совместному каналу кодирования для формирования сложных модулированных символов.
Аддитивный белый Гауссов шум добавляется к символам. Шумные символы затем подвергаются обработке приемником, чтобы получить переданное кодовое слово. Кодовое слово затем восстанавливают турбонаддувом, десегментируют блок кода и декодируют блок CRC, чтобы проверить, была ли передача успешной. Если в транспортном блоке обнаружена ошибка CRC, то повторная передача выполняется с использованием другого RV. Этот процесс продолжается до тех пор, пока передача не будет успешной или не будет достигнут предел повторной передачи.
Настройки широкой камеры заданы в структуре enb
.
enb.NDLRB = 50; % No of Downlink RBs in total BW enb.CyclicPrefix = 'Normal'; % CP length enb.PHICHDuration = 'Normal'; % PHICH duration enb.NCellID = 10; % Cell ID enb.CellRefP = 1; % Single antenna ports enb.DuplexMode = 'FDD'; % FDD Duplex mode enb.CFI = 2; % 2 PDCCH symbols enb.Ng = 'sixth'; % HICH groups enb.NSubframe = 0; % Subframe number 0
Общий канал физического нисходящего канала (PDSCH) сконфигурирован с использованием структуры pdsch
для одной схемы передачи антенны.
pdsch.NLayers = 1; % No of layers to map the transport block pdsch.TxScheme = 'Port0'; % Transmission scheme pdsch.Modulation = {'16QAM'}; % Modulation pdsch.RV = 0; % Initialize Redundancy Version pdsch.RNTI = 500; % Radio Network Temporary Identifier pdsch.NTurboDecIts = 5; % Number of turbo decoder iterations pdsch.PRBSet = (0:enb.NDLRB-1).'; % Define the PRBSet pdsch.CSI = 'On'; % CSI scaling of soft bits
Определите параметры, необходимые для кодирования DL-SCH. Размер транспортного блока, используемый здесь, следующий R.3 RMC в таблице A.3.3.1-2 TS36.101 [1]. Размер кодированного блока DL-SCH может быть вычислен ltePDSCHIndices
функция, использующая enb
и pdsch
. The ltePDSCHIndices
функция возвращает информационную структуру в качестве второго выхода, содержащую параметр G
который определяет количество закодированных и согласованных по скорости бит данных DL-SCH, чтобы удовлетворить физической емкости PDSCH.
rvIndex = 0; % Redundancy Version index transportBlkSize = 12960; % Transport block size [~,pdschIndicesInfo] = ltePDSCHIndices(enb,pdsch,pdsch.PRBSet); codedTrBlkSize = pdschIndicesInfo.G; % Available PDSCH bits dlschTransportBlk = randi([0 1], transportBlkSize, 1); % DL-SCH data bits % Possible redundancy versions (number of retransmissions) redundancyVersions = 0:3;
Этот пример моделирует один процесс HARQ. После каждой передачи значение blkCRCerr
используется для проверки успешной передачи транспортного блока. Если обнаружена ошибка CRC, то есть blkCRCerr >=1
затем выполняют повторную передачу с использованием другого значения RV.
Первая передача выполняется с использованием RV 0, это указывает на этап инициализации. Если пользовательское оборудование (UE) обнаруживает ошибку CRC, то оно отправляет NACK на базовую станцию (BS), так что повторная передача инициируется с использованием другого значения RV. Значение 1 или больше возвращено для ошибки CRC блока.
eNodeB будет продолжать передавать один и тот же транспортный блок, используя различные значения RV, пока UE не получит свободный от ошибок транспортный блок или не произойдет общий предел повторной передачи. В LTE общее количество процессов HARQ, которые могут быть инициированы в любой заданный момент времени, составляет 8.
Для передачи и приема транспортного блока происходят следующие шаги:
Кодирование канала DL-SCH. Биты DL-SCH генерируются и проходят канальное кодирование. В этот процесс включены транспортный блок 24A-type вставка CRC, сегментация кодового блока и вставка CRC кодового блока, турбокодирование, согласование скорости и конкатенация кодового блока. Количество кода сегментации блоков и вставок CRC в каждый сегмент зависит от заданного размера транспортного блока. Каждый сегментированный блок отдельно турбокодируется и скорость согласовывается после вставки кодового блока 24B-type CRC. Процесс конкатенации применяется к согласованным со скоростью турбо кодированным блокам для формирования кодового слова. Если передача приводит к ошибке, UE сигнализирует о NACK. Повторная передача ошибочного пакета выполняется с использованием различных RV. Каждый RV соответствует другому набору бит четности из одного и того же кодированного блока; RV управляет этим изменением. Все эти операции могут быть выполнены с помощью функции тулбокса lteDLSCH
.
Генерация сложных символов PDSCH. Скремблирование, модуляция, отображение слоя и предварительное кодирование применяются к кодированному транспортному блоку, чтобы сгенерировать комплексные символы PDSCH. Это достигается с помощью ltePDSCHPRBS
.
Шумовые Сложения. Сгенерированный шум затем добавляется к комплексным символам PDSCH. Путем изменения значения отклонения nVariance
количество повторных передач также будет изменяться, это связано с тем, что количество обнаруженных ошибок будет колебаться с количеством шума, присутствующего на символах.
Обработка приемника PDSCH. В приемнике PDSCH к шумным комплексным символам PDSCH применяется демпфирование слоя, мягкая демодуляция и дескремблирование.
Декодирование канала DL-SCH. Декодирование канала выполняется с помощью lteDLSCHDecode
который выполняет восстановление скорости, мягкое объединение, десегментацию кодовых блоков, удаление CRC и декодирование CRC блоков. Эта функция принимает мягкий буфер как параметр входа, который затем используется в мягком объединении с принятыми мягкими битами кодового слова перед декодированием битов.
% Define soft buffer decState = []; % Noise power can be varied to see the different RV SNR = 4; % dB % Initial value blkCRCerr = 1; while blkCRCerr >= 1 % Increment redundancy version for every retransmission rvIndex = rvIndex + 1; if rvIndex > length(redundancyVersions) error('Failed transmission'); end pdsch.RV = redundancyVersions(rvIndex); % PDSCH payload codedTrBlock = lteDLSCH(enb, pdsch, codedTrBlkSize, ... dlschTransportBlk); % PDSCH symbol generation pdschSymbols = ltePDSCH(enb, pdsch, {codedTrBlock}); % Add noise to pdschSymbols to create noisy complex modulated symbols pdschSymbolsNoisy = awgn(pdschSymbols,SNR); % PDSCH receiver processing rxCW = ltePDSCHDecode(enb, pdsch, pdschSymbolsNoisy); % DL-SCH channel decoding [rxBits, blkCRCerr, decState] = lteDLSCHDecode(enb, ... pdsch, transportBlkSize, rxCW, decState); end
blkCRCerr
- блочная ошибка CRC для полученного транспортного блока. UE отправляет NACK, если обнаруживает ошибку CRC на полученном транспортном блоке. Кроме того, новый мягкий буфер, decState
, содержимое доступно на выходе этой функции, которая будет использоваться в следующий раз вокруг.
Используя этот пример, можно наблюдать эффект, который шум оказывает на количество повторных передач, необходимых для успешного приема. В этом примере для заданного уровня шума, добавленного к переданным символам, требуется в общей сложности 1 повторная передача для успешного приема данных.
fprintf(['\n\nTransmission successful, total number of Redundancy ' ... 'Versions used is ' num2str(redundancyVersions(rvIndex) + 1) ' \n\n']);
Transmission successful, total number of Redundancy Versions used is 2
3GPP TS 36.101 «Радиопередача и прием пользовательского оборудования (UE)»
3GPP TS 36.212 «Мультиплексирование и канальное кодирование»
3GPP TS 36.213 «Процедуры физического слоя»