Турбо-перемежитель для высоких скоростей передачи данных

Иллюстрации

Показать все

Изобретение относится к связи и, более конкретно, к способам кодирования и декодирования. Передатчик может кодировать кодовый блок битов данных с помощью турбо-кодера. Приемник может выполнять декодирование для кодового блока с помощью турбо-декодера, имеющего множество декодеров с программным входом и программным выходом (SISO). Бесконфликтный турбо-перемежитель может быть использован, если размер кодового блока больше, чем пороговый размер. Обычный турбо-перемежитель может быть использован, если размер кодового блока равен или меньше, чем пороговый размер. Бесконфликтный турбо-перемежитель переупорядочивает биты данных в кодовом блоке таким образом, что информация из множества SISO-декодеров после перемежения или обратного перемежения может быть записана параллельно в множество модулей памяти в каждом цикле записи без возникновения конфликта доступа к памяти. Обычный турбо-перемежитель может переупорядочивать биты данных в кодовом блоке любым способом безотносительно к бесконфликтному доступу к памяти. Технический результат - обеспечение поддержания высокой производительности декодирования. 4 н. и 26 з.п. ф-лы, 12 ил.

Реферат

Настоящая заявка испрашивает приоритет предварительной заявки США № 60/863962, озаглавленной “Способ и устройство, предназначенные для бесконфликтного турбо-перемежителя”, поданную 1 ноября 2006 г., права на которую переданы заявителю настоящего изобретения, и включенной в настоящее описание посредством ссылки.

Уровень техники

Область техники, к которой относится изобретение

Настоящее раскрытие, в общем, относится к связи и, более конкретно, к способам кодирования и декодирования.

Уровень техники

Беспроводные системы связи широко развернуты, чтобы предоставлять разное содержимое связи, такое как речь, видео, пакетные данные, обмен сообщениями, широковещательная передача и т.д. Эти беспроводные системы могут быть системами множественного доступа, которые могут поддерживать множество пользователей с помощью совместного использования имеющихся системных ресурсов. Примеры таких систем множественного доступа включают в себя системы множественного доступа с кодовым разделением (CDMA), системы множественного доступа с разделением времени (TDMA), системы множественного доступа с частотным разделением (FDMA), системы с ортогональным FDMA (OFDMA) и системы FDMA с одной несущей.

Более новые беспроводные системы связи могут поддерживать широкую полосу частот и/или работу с множеством числом входов и выходов (MIMO), для того чтобы достичь высокой пропускной способности данных. Аппаратура пользователя (UE) с широкой полосой частот и функциональными возможностями MIMO должна поддерживать очень высокую максимальную скорость передачи данных. Например, максимальная скорость передачи данных для UE в системе с 20 MHz с конфигурацией MIMO 4х4 может быть до 200+ мегабит/секунду (Mbps). Производительность декодирования UE, которая обычно является узким местом приемника, обрабатывающего в UE, должна быть спроектирована соответствующим образом, для того чтобы поддерживать такую высокую максимальную скорость передачи данных.

Сущность изобретения

Способы поддержки высокой производительности декодирования описаны в настоящей заявке. Передатчик (например, базовая станция) может кодировать кодовый блок битов данных с помощью турбо-кодера, имеющего множество составляющих кодеров и перемежитель кода. Приемник (например, UE) может выполнять декодирование для кодового блока с помощью турбо-декодера, имеющего, по меньшей мере, один декодер с мягким входом и мягким выходом (SISO), по меньшей мере, один перемежитель кода и, по меньшей мере, один модуль обратного перемежения кода. Приемник может использовать множество SISO-декодеров, работающих параллельно относительно разных сегментов кодового блока, чтобы достичь высокой производительности декодирования. Множество SISO-декодеров могут работать совместно с множеством перемежителей кода, множеством модулей обратного перемежения и множеством модулей памяти.

Биты данных в кодовом блоке могут быть перемежены (т.е. переупорядочены или перетасованы) на основе турбо-перемежителя. Турбо-перемежитель является отображением или функцией, которая задает, как должны быть переупорядочены биты данных в кодовом блоке. Перемежитель кода в турбо-кодере работает на основе турбо-перемежителя. Аналогично один или множество перемежителей кода в турбо-декодере работают на основе турбо-перемежителя, и один или множество модулей обратного перемежения кода в турбо-декодере работают на основе инверсии турбо-перемежителя.

В некотором аспекте “бесконфликтный” турбо-перемежитель может быть использован, если размер кодового блока больше, чем пороговый размер, и “обычный” турбо-перемежитель может быть использован, если размер кодового блока равен или меньше, чем пороговый размер. Бесконфликтный турбо-перемежитель является отображением или функцией, которая переупорядочивает биты данных в кодовом блоке, таким образом, что информация из множества SISO-декодеров после перемежения или обратного перемежения может быть записана параллельно во множество модулей памяти в каждом цикле записи без возникновения конфликта доступа к памяти этих модулей памяти. Обычный турбо-перемежитель является отображением или функцией, которая может переупорядочивать биты данных в кодовом блоке любым способом безотносительно к бесконфликтному доступу к памяти в турбо-декодере. Большие размеры кодовых блоков могут быть использованы для больших полезных нагрузок данных, требующих высокой производительности декодирования, в то время как небольшие размеры кодовых блоков могут быть использованы для небольших полезных нагрузок данных. Множество SISO-декодеров может быть использовано для больших размеров кодовых блоков (например, размеров, больших, чем пороговый размер), и может быть извлечена выгода из использования бесконфликтного турбо-перемежителя.

Передатчик может выполнять турбо-кодирование для кодового блока на основе множества составных кодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер. Передатчик может выполнять турбо-кодирование для кодового блока на основании множества составных кодеров и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.

Приемник может выполнять турбо-декодирование для кодового блока на основе множества SISO-декодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер. Приемник может выполнять турбо-декодирование для кодового блока на основе, по меньшей мере, одного SISO-декодера и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.

Различные аспекты и признаки раскрытия описаны более подробно ниже.

Краткое описание чертежей

Фиг.1 изображает блок-схему базовой станции и UE.

Фиг.2 изображает блок-схему процессора передачи (TX) данных.

Фиг.3 изображает блок-схему турбо-кодера.

Фиг.4 изображает блок-схему процессора приема (RX) данных.

Фиг.5 изображает блок-схему турбо-декодера.

Фиг.6 изображает блок-схему турбо-декодера с одним SISO-декодером.

Фиг.7 изображает блок-схему турбо-декодера с множеством SISO-декодеров.

Фиг.8 изображает график размера кодового блока относительно данных полезной нагрузки.

Фиг.9 изображает работу перемежителя относительно простого числа со смешиванием (DRP).

Фиг.10 изображает блок-схему конфигурируемого турбо-декодера.

Фиг.11 изображает схему процесса обработки данных.

Фиг.12 изображает схему устройства обработки данных.

Осуществление изобретения

Способы, описанные в настоящей заявке, могут быть использованы для различных систем связи, таких как CDMA, TDMA, FDMA, OFDMA, SC-FDMA и других систем. Понятия “система” и ”сеть” часто использованы взаимозаменяемо. Система CDMA может осуществлять способ радиосвязи, такой как универсальный наземный радиодоступ (UTRA), cdma2000 и т.д. UTRA включает в себя широкополосный CDMA и низкую скорость элементарных посылок (LCR). cdma2000 охватывает стандарты IS-2000, IS-95 и IS-856. Система TDMA может осуществлять способ радиосвязи, такой как глобальная система мобильной связи (GSM). Система OFDMA может осуществлять способ радиосвязи, такой как расширенная UTRA (Е-UTRA), сверх мобильная широкополосная передача (UMB), IEEE 802.11 (WiFi), IEEE 802.16 (WiMAX), IEEE 802.20, Flash-OFDM® и т. д. UTRA, Е-UTRA и GSM являются частью универсальной мобильной телекоммуникационной системы (UMTS). Долгосрочное развитие (LTE) 3GPP является развивающейся версией UMTS, которая использует Е-UTRA, который использует OFDMA в нисходящей линии связи и SC-FDMA в восходящей линии связи. UTRA, Е-UTRA, GSM, UMTS и LTE описаны в документах из организации под названием “Проект партнерства 3-го поколения (3GPP)”. cdma2000 и UMB описаны в документах из организации под названием “Проект партнерства 2-го поколения (2GPP)”. Эти способы также могут быть использованы для беспроводных локальных сетей (WLAN), которые могут осуществлять любой способ радиосвязи в семействе IEEE 802.11 стандартов, Hiperlan и т.д. Эти различные способы радиосвязи и стандарты известны в данной области техники. Для пояснения определенные аспекты способов описаны ниже для LTE, и терминология LTE использована в некоторой части описания ниже.

Способы могут быть использованы для UE, а также базовой станции. UE также может быть упомянута как подвижная станция, терминал, терминал доступа и абонентское устройство, станция и т.д. UE может быть сотовым телефоном, персональным цифровым ассистентом (PDA), беспроводным устройством связи, беспроводным модемом, карманным устройством, переносным портативным компьютером, беспроводным телефоном и т.д. UE может взаимодействовать с одной или более базовыми станциями через передачи в нисходящей линии связи и восходящей линии связи. Базовая станция также может быть упомянута как узел В, расширенный узел В (eNB), точка доступа и т.д.

Способы могут быть использованы для передачи в системе с одним входом и одним выходом, одним входом и множеством выходов, множеством входов и одним выходом и/или множеством входов и множеством выходов (MIMO). Один вход относится к одной антенне передачи, а множество входов относятся к множеству антенн передачи для передачи данных. Один выход относится к одной антенне приема, а множество выходов относится к множеству антенн приема для приема данных.

Фиг.1 изображает блок-схему конструкции базовой станции 110 и UE 150 в беспроводной системе 100 связи. Базовая станция оборудована множеством (Т) антенн с 134а по 134t, которые могут быть использованы для передачи и приема данных. UE 150 оборудована множеством (R) антенн с 152а по 152r, которые могут быть использованы для передачи и приема данных. Каждая антенна может быть физической антенной или антенной решеткой.

В базовой станции 110 процессор 120 данных передачи (ТХ) может принимать данные трафика из источника 112 данных, обрабатывать (например, форматировать, кодировать, перемежать и выполнять отображение символов) данные трафика на основании транспортного формата и предоставлять символы данных. Как использовано в настоящей заявке, символ данных является символом для данных, пилот-символ является символом для пилот-данных, и символ обычно является комплексной величиной. Символы данных и пилот-символы могут быть символами модуляции из схемы модуляции, такой как PSK и QAM. Пилот-данные являются данными, известными априори как передатчику, так и приемнику. Транспортный формат может указывать размер кодового блока, схему модуляции и кодирования и т.д. Транспортный формат также может быть упомянут как скорость, формат пакета и т.д.

Процессор 130 MIMO ТХ может мультиплексировать символы данных с пилот-символами и может выполнять прямое отображение MIMO, предварительное кодирование/формирование луча и т.д. Символ может быть послан из одной антенны для прямого отображения MIMO или из множества антенн для предварительного кодирования/формирования диаграммы направленности. Процессор 130 может выдавать Т выходных потоков символов в Т передатчиков (TMTR) с 132а по 132t. Каждый передатчик 132 может обрабатывать свой выходной поток символов (например, для OFDM, SC-FDM, CDMA и т.д.), чтобы получить выходной поток элементарных посылок. Каждый передатчик 132 дополнительно может приводить в определенное состояние (например, преобразовывать в аналоговый вид, фильтровать, усиливать и преобразовывать с повышением частоты) свой выходной поток элементарных посылок и генерировать сигнал нисходящей линии связи. Т сигналов нисходящей линии связи из передатчиков с 132а по 132t могут быть переданы из Т антенн с 134а по 134t, соответственно.

В UE 150 R антенн с 152а по 152r могут принимать сигналы нисходящей линии связи, и каждая антенна 152 может подавать принятый сигнал в соответствующий приемник (RCVR) 154. Каждый приемник 154 может обрабатывать (например, фильтровать, усиливать, преобразовывать с понижением частоты и преобразовывать в цифровой вид) свой принятый сигнал, чтобы получить выборки, и может дополнительно обрабатывать выборки (например, OFDM, SC-FDMA, CDMA и т.д.), чтобы получить символы данных. Приемники с 154а по 154r могут подавать принятые символы данных в детектор 160 MIMO и подавать принятые пилот-символы в процессор 194 канала. Процессор 194 канала может оценивать отклик канала нисходящей линии связи на основании принятых пилот-символов и подавать оценки канала в детектор 160 MIMO. Детектор 160 MIMO может выполнять детектирование MIMO относительно принятых символов данных с оценками канала и выдавать оценки символов данных. Процессор 170 данных приема (RX) может дополнительно обрабатывать (выполнять обратное преобразование символов, выполнять обратное перемежение и декодировать) оценки символов данных и подавать декодированные данные в приемник 172 данных. В общем обработка с помощью детектора 160 MIMO и процессора 172 данных RX является комплементарной к обработке с помощью процессора 130 MIMO TX и процессора 120 данных TX в базовой станции 110.

UE 150 может оценивать состояния канала и посылать информацию обратной связи в базовую станцию 110. Информация обратной связи может содержать ранг MIMO, указывающий число потоков данных или уровней, которые посылаются параллельно, указатели качества канала (CQI) и/или другую информацию. Информация обратной связи и данные трафика из источника 180 данных могут быть обработаны с помощью процессора 182 данных ТХ, мультиплексированы с пилот-символами и обработаны с помощью процессора 184 MIMO ТХ и дополнительно обработаны с помощью передатчиков с 154а по 154r, чтобы сгенерировать R сигналов восходящей линии связи, которые могут быть переданы через антенны с 152а по 152r.

В базовой станции 110 сигналы восходящей линии связи могут быть приняты с помощью Т антенн с 134а по 134t и дополнительно обработаны с помощью процессора 138 данных RX, чтобы восстановить информацию обратной связи и данные трафика, посланные с помощью UE 150. Контроллер/процессор 140 могут управлять передачей данных в UE 150 на основании информации обратной связи. Процессор 144 канала может оценивать отклик канала восходящей линии связи на основании принятых пилот-символов и выдавать оценки канала, которые могут быть использованы для обработки и детектирования MIMO.

Контроллеры/процессоры 140 и 190 могут управлять работой в базовой станции 110 и UE 150 соответственно. Памяти 142 и 192 могут запоминать данные и программные коды для базовой станции 110 и UE 150 соответственно.

Фиг.2 изображает блок-схему конструкции процессора 120 данных ТХ, которая также может быть использована для процессора 182 данных ТХ на фиг.1. В процессоре 120 данных ТХ модуль 210 разделения может принимать данные, чтобы передать и разделить данные на кодовые блоки выбранного размера кодового блока. Кодовый блок также может быть упомянут как блок данных, транспортный блок, пакет и т.д. Каждый кодовый блок может быть закодирован и декодирован отдельно. Генератор 220 контроля избыточным циклическим кодом (CRC) может генерировать значение CRC для каждого кодового блока и присоединять значение CRC к кодовому блоку. Значение CRC может быть использовано приемником, чтобы определять, декодирован ли кодовый блок правильно или с ошибками. Турбо-кодер 230 может кодировать каждый кодовый блок на основании выбранной скорости кода и выдавать закодированный блок. Модуль согласования скорости и перемежитель 240 канала может выбирать подмножество битов кода из турбо-кодера 230 для закодированного блока, перемежать выбранные биты кода и выдавать перемеженный блок. Согласование скорости и перемежение может обеспечивать время, частоту и/или пространственное разнесение для битов кода. Модуль 250 отображения символов может отображать перемеженные биты на символы данных на основании выбранной схемы модуляции. Выбранный размер кодового блока, скорость кода и схема модуляции могут быть определены на основании транспортного формата, который может быть выбран на основании состояний канала, функциональных возможностей UE, доступности системных ресурсов и т.д.

Фиг.3 изображает блок-схему конструкции турбо-кодера 230 на фиг.2. Турбо-кодер 230 осуществляет параллельный конкатенированный сверточный код (РССС) и включает в себя два составляющих кодера 310а и 310b, перемежитель 320 кода и модуль 330 прокалывания и мультиплексирования (Mux). Турбо-кодер 230 кодирует N битов данных и выдает соответствующий блок из S битов кода, где N и S могут быть любыми подходящими значениями.

В турбо-кодере 230 перемежитель 320 кода может перемежать или переупорядочивать биты данных (обозначенные как x) в кодовом блоке на основе выбранного турбо-перемежителя, который может быть бесконфликтным турбо-перемежителем или обычным турбо-перемежителем, как описано ниже. Составляющий кодер 310а может кодировать биты данных на основании первого составляющего кода и выдавать первые биты контроля четности (обозначенные как y). Подобным образом составляющий кодер 310b может кодировать перемеженные биты данных из перемежителя 320 кода на основании второго составляющего кода и выдавать вторые биты контроля четности (обозначенные как z). Составляющие кодеры 310а и 310b могут осуществлять два рекурсивных систематических составляющих кода, которые могут быть сверточными кодами. Модуль 330 может принимать биты данных и биты контроля четности из составляющих кодеров 310а и 310b и может прокалывать или удалять достаточное число бит на основании выбранной скорости кода, чтобы получить желаемое число бит. Модуль 330 может мультиплексировать не удаленные биты данных и биты контроля четности и выдавать закодированные биты для закодированного блока. Закодированные биты могут включать в себя биты данных (которые также упоминают как систематические биты), за которыми следуют первые биты контроля четности, а затем следуют вторые биты контроля четности.

Фиг.4 изображает блок-схему конструкции процессора 170 данных RX, которая также может быть использована для процессора 138 данных RX на фиг.1. В процессоре 170 данных RX модуль 410 вычисления коэффициента логарифмической вероятности (LLR) может принимать оценки символов данных из детектора 160 MIMO и вычислять LLR битов кода для каждой оценки символа данных. Символ данных может быть получен с помощью отображения В битов кода на комплексную величину в совокупности сигнала. B LLR могут быть вычислены для В битов кода символа данных на основании соответствующей оценки символа данных. LLR для каждого бита кода может указывать вероятность того, что бит кода является нулем ('0') или единицей ('1'), учитывая оценку символа данных для этого бита кода. Модуль обратного перемежения канала и модуль 420 обратного согласования скорости 420 могут выполнять обратное перемежение и обратное согласование скорости относительно LLR из модуля 410 способом, комплементарным к перемежению и согласованию скорости, выполняемым с помощью модуля 240 на фиг.2, и выдавать входные LLR. Турбо-декодер 430 может декодировать каждый блок входных LLR из модуля 420 обратного перемежения канала и выдавать декодированный блок. Модуль 440 контроля CRC может контролировать каждый декодированный блок и выдавать статус декодирования для блока. Модуль 450 сборки может собирать декодированные блок и выдавать декодированные данные.

Фиг.5 изображает блок-схему конструкции турбо-декодера 430а, которая может быть использована для турбо-декодера 430 на фиг.4. В турбо-декодере 430а демультиплексор (Demux) 510 может принимать входные LLR для кодового блока и демультиплексировать входные LLR в LLR X для битов данных x, LLR Y для первых битов контроля четности y и LLR Z для вторых битов контроля четности z. SISO-декодер 520а может принимать LLR X битов данных и LLR Y первых битов контроля четности из демультиплексора 510 и LLR X2 битов данных с обратным перемежением из модуля 540 обратного перемежения кода. SISO-декодер 520а может получать новые LLR X1 для битов данных на основании первого составляющего кода. Перемежитель 530 кода может перемежать LLR X1 битов данных на основе выбранного турбо-перемежителя (который используют для перемежителя 320 кода на фиг.3) и выдавать LLR X~1 перемеженных битов данных. SISO-декодер 520b может принимать LLR X битов данных и LLR Z вторых битов контроля четности из демультиплексора 510 и LLR X~1 перемеженных битов данных из перемежителя 530. Декодер 520b может получать новые LLR X~2 для битов данных на основании второго составляющего кода. Модуль 540 обратного перемежения кода может выполнять обратное перемежение LLR X~2 битов данных на основе инверсии выбранного турбо-перемежителя и выдавать LLR X2 битов данных с обратным перемежением.

SISO-декодеры 520а и 520b могут быть максимальными апостериорными (МАР) декодерами, которые могут осуществлять алгоритм МАР BCJR или производную меньшей сложности. SISO-декодеры 520а и 520b также могут осуществлять алгоритм Витерби с программным выходом (SOV) или некоторый другой алгоритм декодирования, известный в данной области техники.

Декодирование с помощью SISO-декодеров 520а и 520b может быть повторено множество раз, например, 6, 8, 10 и более раз. Результаты декодирования могут быть более надежными после каждой итерации. После того как все итерации декодирования завершены, детектор 560 может принять окончательные LLR битов данных из SISO-декодера 520а, выполнить аппаратное решение относительно каждого LLR и выдать декодированные биты.

Декодеры 520а и 520b могут управляться последовательно, причем внешнюю информацию из одного SISO-декодера подают в качестве входной информации в другой SISO-декодер. Вследствие последовательной работы двух SISO-декодеров один физический SISO-декодер может быть использован для того, чтобы осуществлять оба SISO-декодера 520а и 520b.

Фиг.6 изображает блок-схему турбо-декодера 430b, которая является одной конструкцией турбо-декодера 430а на фиг.5. В турбо-декодере 430b демультиплексор 610 может принимать входные LLR для кодового блока и демультиплексировать входные LLR в LLR U для первого составляющего кода и LLR V для второго составляющего кода. LLR U могут включать в себя LLR X битов данных и LLR Y первых битов контроля четности. LLR V могут включать в себя LLR X битов данных и LLR Z вторых битов контроля четности.

Для первого составляющего кода SISO-декодер 620 может принимать LLR U из демультиплексора 610 и LLR X2 из модуля 650 памяти и получать новые LLR X1. Перемежитель 630 кода может перемежать LLR X1 на основе выбранного турбо-перемежителя и выдавать перемеженные LLR X~1 в модуль 650 памяти. Для второго составляющего кода SISO-декодер 620 может принимать LLR V из демультиплексора 610 и LLR X~1 из модуля 650 памяти и получать новые LLR X~2. Модуль 640 обратного перемежения кода может выполнять обратное перемежение LLR X~2 на основе инверсии выбранного турбо-перемежителя и выдавать LLR X2 с обратным перемежением в модуль 650 памяти. Модуль 650 памяти может осуществлять (i) перемежитель 630 кода с помощью запоминания LLR X1 из SISO-декодера 620 в перемеженной последовательности и (ii) модуль 640 обратного перемежения кода с помощью запоминания LLR X2 из SISO-декодера 620 в последовательности с обратным перемежением. Перемежение и обратное перемежение кода могут быть выполнены с помощью генерации соответствующих адресов для модуля 650 памяти. Детектор 660 может принимать окончательные LLR битов данных после того, как завершены все итерации декодирования, и может выдавать декодированные биты.

UE 150 может иметь широкий диапазон частот и/или функциональные возможности MIMO и должна поддерживать очень высокую максимальную скорость передачи данных, например 200+ Мбит/с. Функциональные возможности декодирования UE 150 может быть узким местом. Турбо-декодер высокой пропускной способности с параллельными SISO-декодерами может быть использован для того, чтобы поддерживать высокую максимальную скорость передачи данных.

Турбо-кодер может кодировать кодовый блок из N битов данных и генерировать закодированный блок из S битов кода, где S зависит от скорости кода R или R = N/S. Турбо-декодер с параллельными SISO-декодерами может разделять всю решетку из N переходов для N битов данных кодового блока на М сегментов. Каждый сегмент может охватывать одно окно решетки из К переходов, таким образом, что M = N/K. Каждый сегмент может быть обработан с помощью отдельного SISO-декодера. М SISO-декодеров могут выполнять декодирование для М сегментов параллельно.

Фиг.7 изображает блок-схему конструкции турбо-декодера 430с, которая может быть использована для турбо-декодера 430 на фиг.4. Турбо-декодер 430с включает в себя демультиплексор 710 и М декодеров 712а по 712m параллельных сегментов. Каждый декодер 712 сегмента включает в себя SISO-декодер 720 перемежитель 730 кода, модуль 740 обратного перемежения кода и модуль 750 памяти.

В турбо-декодере 430с демультиплексор 710 может принимать и демультиплексировать входные LLR для кодового блока в LLR Um и Vm для каждого сегмента m, где m {1,…,M}. LLR Um могут включать в себя LLR Xm битов данных и LLR Ym первых битов контроля четности для первого составляющего кода для сегмента m. LLR Vm могут включать в себя LLR Xm битов данных и LLR Zm первых битов контроля четности для второго составляющего кода для сегмента m. Демультиплексор 710 может подавать каждый входной LLR в один декодер 712 сегмента.

В декодере 712 сегмента для сегмента m SISO-декодер 720 может выполнять декодирование для первого или второго составляющего кода в любой данный момент. Для первого составляющего кода SISO-декодер 720 может принимать LLR Um из демультиплексора 710 и LLR Xm2 из модуля 750 памяти и получать новые LLR Xm1. Перемежитель 730 кода может перемежать LLR Xm1 и подавать перемеженные X~m1 в модуль 750 памяти. Для второго составляющего кода SISO-декодер 620 может принимать LLR Vm из демультиплексора 710 и LLR X~m1 из модуля 750 памяти и получать новые LLR X~m2. Модуль 740 обратного перемежения кода может выполнять обратное перемежение LLR X~m2 и подавать LLR Xm2 с обратным перемежением в модуль 750 памяти. Модуль 750 памяти может осуществлять как перемежитель 730 кода, так и модуль 740 обратного перемежения.

Для декодирования первого составляющего кода входные LLR (или входные АРР) находятся в натуральной последовательности. Для сегмента m входные LLR соответствуют битам данных Km, Km+1,…,K(m+1)-1 в кодовом блоке. Для декодирования второго составляющего кода входные LLR не находятся в натуральной последовательности. Для сегмента m входные LLR соответствуют битам данных π(Km), π(Km+1),…, π(K(m+1)-1) в кодовом блоке, где π(x) обозначает функцию отображения для выбранного турбо-перемежителя, которая отображает бит данных в позиции x в позицию π(x).

Перемежители 730а по 730m кода могут работать на основе выбранного турбо-перемежителя. Модули 740а по 740m обратного перемежения кода могут работать на основе инверсии выбранного турбо-перемежителя. Для первого составляющего кода модули 750а по 750m памяти могут подавать входные LLR в SISO-декодеры 720а по 720m соответственно и могут запоминать выходные данные перемежителей 730а по 730m кода соответственно. Для второго составляющего кода модули 750а по 750m памяти могут подавать входные LLR в SISO-декодеры 720а по 720m соответственно и могут запоминать выходные данные модулей 740а по 740m обратного перемежения кода соответственно. После того как все итерации декодирования завершены, детектор 760 может принимать окончательные LLR битов данных из модулей 750а по 750m памяти и выдавать декодированные биты.

Как изображено на фиг.5 по фиг.7, важным признаком турбо-декодирования является обмен “внешней” информацией между декодированием двух составляющих кодов. Выходные LLR из декодирования первого составляющего кода подают как входные LLR для декодирования второго составляющего кода и наоборот. Выходные LLR из декодирования одного составляющего кода находятся в отличной от входных LLR последовательности для декодирования другого составляющего кода. Следовательно, выходные LLR перемежают или выполняют обратное перемежение, соответствующим образом, до запоминания в модуле (модулях) памяти.

Каждый модуль 750 памяти может запоминать LLR для одного SISO-декодера 720 для одного сегмента. Каждый модуль 750 памяти может запоминать LLR в натуральной последовательности для первого составляющего кода, затем запоминать LLR в перемеженной последовательности для второго составляющего кода, затем запоминать LLR в натуральной последовательности для первого составляющего кода и т.д.

Каждый SISO-декодер 720 выдает выходные LLR, которые могут быть перемежены или в которых может быть выполнено обратное перемежение, а затем поданы в М модулей 750а по 750m памяти. Каждый выходной LLR после перемежения или обратного перемежения может быть подан в любой из М модулей 750 памяти.

М декодеров 720а по 720m могут непрерывно выдавать выходные LLR, которые могут быть перемежены или в которых может быть выполнено обратное перемежение, а затем поданы в М модулей 750а по 750m памяти. Если выходные LLR из множества SISO-декодеров отображаются в один и тот же модуль памяти в данном цикле записи как результат перемежения или обратного перемежения, тогда может случаться конфликт памяти, и может быть вставлено время задержки, чтобы разрешить конфликт памяти. Время задержки может уменьшить пропускную способность турбо-декодера.

Бесконфликтный турбо-перемежитель может быть использован, чтобы избежать конфликта памяти во время параллельного декодирования с помощью множества SISO-декодеров. Бесконфликтный турбо-перемежитель переупорядочивает биты данных в кодовом блоке таким образом, что информация из множества SISO-декодеров после перемежения или обратного перемежения может быть записана параллельно во множество модулей памяти в каждом цикле записи без возникновения конфликта доступа к памяти. Бесконфликтный турбо-перемежитель математически может быть определен следующим образом:

для 0<m, n<M, m=n и 0<k<K,

где обозначает операцию отбрасывания дробной части, которая выдает наибольшее целое, равное или меньшее x,

π(x) обозначает функцию перемежения кода, и

π-1(x) обозначает функцию обратного перемежения кода.

Уравнение (1) указывает, что k-е биты данных в любых двух сегментах m и n должны быть перемежены в разные сегменты. Это условие гарантирует, что M выходных LLR из SISO-декодеров 720а по 720m для каждого цикла записи после перемежения отображают в М разных модулей 750а по 750m памяти, где отображение зависит от функции перемежения кода π(x).

Уравнение (2) указывает, что в k-х битах данных в любых двух сегментах m и n должно быть выполнено обратное перемежение в разные сегменты. Это условие гарантирует, что M выходных LLR из SISO-декодеров 720а по 720m для каждого цикла записи после обратного перемежения отображают в М разных модулей 750а по 750m памяти, где отображение зависит от функции обратного перемежения кода π(x).

Условия в Уравнениях (1) и (2) могут быть выполнены на основе разных конструкций перемежителя, как описано ниже. Бесконфликтный турбо-перемежитель может быть определен для конкретных значений N, M и K. Затем бесконфликтный турбо-перемежитель может предоставлять бесконфликтный доступ к памяти для этих конкретных значений N, M и K и может предоставлять или не предоставлять бесконфликтный доступ к памяти для других значений N, M и K.

Система может поддерживать множество размеров кодовых блоков, которые могут быть выбраны на основании различных факторов, таких как ожидаемый диапазон полезной нагрузки данных, чтобы эффективно передавать, кодировать и т.д. Подходящий размер кодового блока может быть выбран для использования на основании количества данных для передачи.

Фиг.8 изображает график размера кодового блока относительно полезной нагрузки данных в соответствии с одной конструкцией. В этой конструкции наибольший размер кодового блока равен 8192. Для полезной нагрузки данных, равной или меньшей 8192, один кодовый блок может быть использован для всей полезной нагрузки данных. Для полезной нагрузки данных, находящейся в диапазоне от 8193 до 16384, могут быть использованы два кодовых блока, и полезная нагрузка данных может быть разделена поровну между двумя кодовыми блоками. В общем для полезной нагрузки данных, находящейся в диапазоне от 8192NB + 1 до 8192(NB + 1), могут быть использованы NB + 1 кодовых блоков, и полезная нагрузка данных может быть разделена поровну между NB + 1 кодовыми блоками. Как изображено на фиг.8, если полезная нагрузка данных является достаточно большой, размер кодового блока равен 4096 или более.

Турбо-декодер высокой пропускной способности с параллельными SISO-декодерами (например, как изображено на фиг.7) может быть использован для больших полезных нагрузок данных, которые могут быть переданы с широкой полосой частот и/или MIMO. Для небольших полезных нагрузок данных может быть достаточным турбо-декодер с одним SISO-декодером (например, как изображено на фиг.6). Таким образом, бесконфликтное турбо-перемежение может быть необходимо только для больших полезных нагрузок данных, например, определенного большого размера полезной нагрузки и выше.

В некотором аспекте турбо-перемежение может быть выполнено следующим образом:

использование обычного турбо-перемежителя для небольших размеров кодовых блоков, которые равны или меньше, чем пороговый размер, и

использование бесконфликтных турбо-перемежителей для больших размеров кодовых блоков, которые больше чем пороговый размер.

Для конструкции, изображенной на фиг.8, пороговый размер может быть равен 4096. В общем пороговый размер может быть выбран на основании точки, в которой требуется турбо-декодер высокой пропускной способности, чтобы отвечать требованиям пропускной способности декодирования.

Обычный турбо-перемежитель может быть использован для небольших размеров кодовых блоков до порогового размера. В одной конструкции обычный турбо-перемежитель может быть турбо-перемежителем, определенным в версии 6 3GPP и описанным в TS 25.212 3GPP, под заголовком “Multiplexing and channel coding (FDD)”, декабрь 2006 г., который открыто доступен. Турбо-перемежитель версии 6 3GPP может размещать размеры кодовых блоков до 5114 и хорошо определен и проверен. Для обычного турбо-перемежителя также могут быть использованы другие турбо-перемежители.

Как изображено в Уравнениях (1) и (2), конструкция бесконфликтного турбо-перемежителя зависит от размера кодового блока N, числа сегментов М и размера сегмента К. Между N и соответствующей комбинацией М и К может быть взаимно однозначное отображение. Для каждого большого размера кодового блока N может быть определена подходящая функция π(x) турбо-перемежителя для этого размера кодового блока N (при данных М и К), чтобы достичь хорошей производительности декодирования. Производительность декодирования с помощью функции π(x) турбо-перемежителя может быть проверена посредством компьютерного моделирования, лабораторных измерений, полевых испытаний и т.д. и, возможно, для каждой полезной нагрузки данных, использующей этот размер кодового блока N. Могут быть оценены разные конструкции турбо-перемежителя (например, с разными значениями параметров). Производительность декодирования может быть проверена для каждой конструкции турбо-перемежителя, для того чтобы найти конструкцию турбо-перемежителя, которая может обеспечить хорошую (или наилучшую возможную) производительность декодирования. Таким образом, процесс конструирования турбо-перемежителя может быть сложным и утомительным, особенно для большого числа размеров кодовых блоков. С помощью использования бесконфликтного турбо-перемежителя только для больших размеров кодовых блоков вместо всех размеров кодовых блоков, сложность конструирования турбо-перемежителя, а также сложность осуществления может быть значительно уменьшена.

В другом аспекте может быть поддержано ограниченное множество больших размеров кодовых блоков с помощью бесконфликтных турбо-перемежителей вместо всех возможных размеров. В одной конструкции поддерживаемые размеры кодовых блоков могут быть выражены как:

Ni = Nth + L*i, для i = 1, 2, …, Уравнение (3),

где Nth - пороговый размер,

L - размер шага или приращение между последовательными большими размерами кодовых блоков, и

Ni - i-й большой размер кодового блока.

В конструкции, изображенной в Уравнении (3), поддерживаемые большие размеры кодовых блоков увеличиваются линейно на L. Для каждого большого размера кодового блока Ni могут быть использованы до L-1 битов дополнения, и издержки дополнения могут быть до (L-1)/Ni. L может быть выбрано на основании компромисса между сложностью турбо-перемежителя и издержками