Настоящая заявка испрашивает приоритет предварительной заявки США № 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 может быть выбрано на основании компромисса между сложностью турбо-перемежителя и издержками дополнения. Меньшее значение L соответствует большему числу поддерживаемых больших размеров кодовых блоков, что может увеличивать сложность турбо-перемежителя, но уменьшать издержки дополнения. Обратное является справедливым для большого значения L.
В одной конструкции поддерживаемые большие размеры кодовых блоков могут быть выражены как:
Ni = 4096 + 32i, для i = 1, 2, …, 128 Уравнение (4)
Конструкция в Уравнении (4) поддерживает 128 разных больших размеров кодовых блоков, находящихся в диапазоне от 4128 до 8192, с приращением L = 32. Для 128 разных больших размеров кодовых блоков могут быть определены 128 бесконфликтных турбо-перемежителей. Издержки дополнения для каждого большого размера кодового блока равны менее чем одному проценту.
В другой конструкции поддерживаемые большие размеры кодовых блоков могут быть выражены как:
Ni = 4096 + 64i, для i = 1, 2, …, 64 Уравнение (5)
Конструкция в Уравнении (5) поддерживает 64 разных больших размеров кодовых блоков, находящихся в диапазоне от 4160 до 8192, с приращением L = 64. Для 64 разных больших размеров кодовых блоков могут быть определены 64 бесконфликтных турбо-перемежителя. Издержки дополнения для каждого большого размера кодового блока приблизительно равны 1,5 процента или меньше.
Для Nth и L также могут быть использованы другие значения, которые определяют число поддерживаемых больших размеров кодовых блоков и издержки дополнения.
В другой конструкции поддерживаемые большие размеры кодовых блоков могут быть выражены как:
Ni = Ni-1 + Li, для i = 1, 2,…, Уравнение (6)
где N0 = Nth, а Li - приращение для i-го большого размера кодового блока. В конструкции, изображенной в Уравнении (6), поддерживаемые большие размеры кодовых блоков могут увеличиваться на разные величины Li. Например, Li может быть выбран таким образом, чтобы достичь целевых издержек дополнения для каждого большого размера кодового блока, в то же время уменьшая сложность турбо-перемежителя.
В общем может быть поддержано любое число больших размеров кодовых блоков. Бесконфликтный турбо-перемежитель может быть определен для каждого большого размера кодового блока на основе различных конструкций.
В одной конструкции бесконфликтный турбо-перемежитель может быть осуществлен с помощью перемежителя относительно простого числа со смешиванием (DRP). Перемежитель DRP использует перемежитель относительно простого числа (RP), который отображает бит данных в местоположении n в местоположение (s + P*n) mod N, где P и N - относительно простые числа, s - начальный индекс, а “mod N” обозначает операцию по модулю N. Перемежитель DRP дополнительно применяет смешивание до и после перемежителя RP.
Фиг.9 изображает работу перемежителя DRP. Кодовый блок размера N разделяют на множество секций размера KR, где N - целое кратное KR. KR битов в каждой секции перемежают на основе функции первого/считывания смешивания Ia(n). Затем N битов после первого смешивания перемежают на основе перемежителя RP, который может быть задан как Ib(n) = (s + P*n) mod N. N битов после перемежения RP разделяют на множество секций размера KW, где N - целое кратное KW. KW битов в каждой секции перемежают на основе функции второго/считывания смешивания Ic(n), чтобы получить окончательно перемеженные биты. Перемежитель DRP подробно описан в статье S. Crozier and P. Guinand под заголовком “High-Performance Low-Memory Interleaver Banks for Turbo-Codes”, Proc. 54-th IEEE Vehicular Tech., Oct. 2001, pages 2394-2398, которая является открыто доступной.
Функция перемежителя DRP πdrp(n) может быть определена на основе двух функций смешивания Ia(n) и Ic(n) и функции перемежителя RP Ib(n)следующим образом:
πdrp(n) = Ic(Ib(Ia(n))), для n = 0, …, N-1 Уравнение (7)
Функция перемежителя DRP имеет следующие характеристики:
πdrp((n + Q) mod N) = (πdrp(n) + Q*P) mod N, Уравнение (8)
πdrp((n + 1) mod N) = (πdrp(n) + D(n mod Q)) mod N, Уравнение (9),
где D(n) - общая функция смешивания с периодом Q, а Q - наименьшее общее кратное KR и KW. Можно показать, что перемежитель DRP удовлетворяет критерию бесконфликтного перемежителя в Уравнении (1) и (2) с K = Q.
В другой конструкции бесконфликтный перемежитель может быть осуществлен с помощью перемежителя с почти регулярной перестановкой (ARP). Перемежитель ARP использует перемежитель RP, но добавляет небольшое отклонение в каждом местоположении. Функция перемежителя ARP πarp(n) может быть определена следующим образом:
πarp(n) = (P*n + P*A(n)) + B(n) mod N, для n = 0, …, N-1, Уравнение (10),
где A(n) и B(n) - функции с периодом С, который является делителем N.
Значения A(n) и B(n) могут быть малыми по сравнению с P и N/K. Член P*A(n) и B(n) добавляет возмущение в перемежитель RP. Перемежитель ARP подробно описан в статье C. Berrou и др. под заголовком “Designing Good Permutations for Turbo Codes: Towards a Single Model”, IEEE Int. Conf. on Comm., vol. 1, 20-24 June 2004, pages 341-345, которая является открыто доступной. С помощью тщательного выбора A(n) и B(n) статья Berrou показывает, что перемежитель ARP может удовлетворять критерию бесконфликтного перемежителя в Уравнении (1) и (2) при М = С, и, возможно, при М = p*С, при условии, что N является кратным p.
Еще в одной конструкции бесконфликтный турбо-перемежитель может быть осуществлен с помощью перемежителя с квадратичным полиномом возмущения (QPP). Функция перемежителя QPP πqpp(n) может быть определена следующим образом:
πqpp(n) = (a*n + b*n) mod N, для n = 0, …, N-1, Уравнение (11),
где a и b - две константы для квадратичного полинома. Для каждого большого размера кодового блока могут быть выбраны конкретные значения для a и b для перемежителя QPP.
Можно показать, что, если квадратичный полином является полиномом возмущения для N, тогда перемежитель QPP является бесконфликтным для любого К, которое делится на N. Перемежитель QPP подробно описан в статье Jin Sun and Oscar Y. Takeshita под заголовком “Interleavers for Turbo Codes Using Permutation Polynomials Integer Rings”, IEEE Transaction of Information Theory, Issue 1, page 101-119, 2005, которая является открыто доступной. Показано, что перемежитель QPP может удовлетворять критерию бесконфликтного перемежителя Уравнения (1) и (2), пока K является делителем N.
Фиг.10 изображает блок-схему конструкции турбо-декодера 430d, которая также может быть использована для турбо-декодера на фиг.4. В турбо-декодере 430d модуль 1060 управления может принимать выбранный размер кодового блока и определять, больше ли размер кодового блока, чем пороговый размер. Модуль 1060 может выбирать обычный турбо-перемежитель 1030а, если размер кодового блока не больше, чем пороговый размер, и может выбирать бесконфликтный турбо-перемежитель 1030b в противном случае. Модуль 1060 может генерировать различные управляющие сигналы на основании размера кодового блока.
Переключатель 1010 может принимать входные LLR для кодового блока, подавать входные LLR в SISO-декодер 1020, если размер кодового блока не больше, чем пороговый размер, и подавать входные LLR в SISO-декодеры 1020b в противном случае. SISO-декодер 1020а может содержать SISO-декодер 620 на фиг.6. Обычный турбо-перемежитель 1030а может содержать перемежитель 630, модуль 640 обратного перемежения и модуль 650 памяти на фиг.6. SISO-декодер 1020а и обычный турбо-перемежитель 1030а могут работать, как описано выше для фиг.6. Модуль 1060 может подавать выбранный размер кодового блока и/или управляющие сигналы в SISO-декодер 1020а и обычный турбо-перемежитель 1030а, который может работать на основании размера кодового блока.
SISO-декодеры 1020b могут содержать демультиплексор 710 и SISO-декодеры 720а по 720m на фиг.7. Бесконфликтный турбо-перемежитель 1030b может содержать перемежители 730а по 730m кода, модули 740а по 740m обратного перемежения кода и модули 750а по 750m памяти на фиг.7. SISO-декодеры 1020b и бесконфликтный турбо-перемежитель 1030b могут работать, как описано выше для фиг.7. Модуль 1060 может подавать размер кодового блока в SISO-декодеры 1020b, которые могут демультиплексировать и декодировать входные LLR на основании размера сегмента К для размера кодового блока. Модуль 1060 также может подавать размер кодового блока в бесконфликтный турбо-перемежитель 1030b, который может выбирать подходящую функцию бесконфликтного турбо-перемежителя, чтобы использовать для декодирования.
После того как все операции декодирования завершены, модуль 1040 выбора может принять окончательные LLR битов данных из турбо-перемежителя 1030а или 1030b. Модуль 1040 выбора может выдавать окончательные LLR битов данных из турбо-перемежителя 1030а, если размер кодового блока не больше, чем пороговый размер, и может выдавать окончательные LLR битов данных из турбо-перемежителя 1030b в противном случае. Детектор 1050 может принимать окончательные LLR битов данных из модуля 1040 выбора и выдавать декодированные биты.
Фиг.11 изображает схему процесса 1100, предназначенного для обработки данных. Процесс 1100 может быть выполнен с помощью передатчика или приемника, например, с помощью UE, базовой станции или некоторого другого объекта. Размер кодового блока, выбранный среди множества размеров кодовых блоков, может быть определен (этап 1112). Размер кодового блока может быть выбран на основании размера передаваемой полезной нагрузки данных, например, как изображено на фиг.8. Бесконфликтный турбо-перемежитель может быть использован, если размер кодового блока больше, чем пороговый размер (этап 1114). Обычный турбо-перемежитель может быть использован, если размер кодового блока равен или меньше порогового размера (этап 1116). Множество размеров кодовых блоков могут содержать множество больших размеров кодовых блоков, которые больше, чем пороговый размер. Каждый больший размер кодового блока может быть ассоциативно связан с соответственным бесконфликтным турбо-перемежителем. Множество больших размеров кодовых блоков могут линейно увеличиваться на предварительно определенный размер шага. Множество размеров кодовых блоков также могут содержать множество меньших размеров кодовых блоков, которые равны или меньше порогового размера. Обычный турбо-перемежитель может быть использован для всех из меньших размеров кодовых блоков.
Турбо-кодирование или декодирование может быть выполнено на основе бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер (этап 1118). Турбо-кодирование или декодирование может быть выполнено на основе обычного перемежителя, если размер кодового блока равен или меньше, чем пороговый размер (этап 1120).
Для передатчика (например, базовой станции) турбо-кодирование может быть выполнено на основе множества составляющих кодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер. Турбо-кодирование может быть выполнено для кодового блока на основе множества составляющих кодеров и обычного перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
Для приемника (например, UE) турбо-декодирование может быть выполнено для кодового блока на основе множества SISO-декодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер. Множество модулей памяти могут быть использованы для того, чтобы запоминать информацию из множества SISO-декодеров. Информация из множества SISO-декодеров после перемежения или обратного перемежения на основе бесконфликтного турбо-перемежителя может быть записана параллельно во множество модулей памяти в каждом цикле записи. Бесконфликтный турбо-перемежитель может быть основан на перемежителе DRP, перемежителе ARP, перемежителе QPP или некотором другом типе перемежителя, который может поддерживать бесконфликтный доступ множества модулей памяти. Турбо-декодирование может быть выполнено на основе, по меньшей мере, одного SISO-декодера и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
Фиг.12 изображает конструкцию устройства 1200 обработки данных. Устройство 1200 включает в себя средство определения размера кодового блока, выбранного из множества размеров кодового блока (модуль 1212), средство использования бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер (модуль 1214), средство использования обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер (модуль 1216), средство выполнения турбо-кодирования или декодирования на основе бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер (модуль 1218), и средство выполнения турбо-кодирования или декодирования на основе обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер (модуль 1220).
Модули на фиг.12 могут содержать процессоры, электронные устройства, устройства аппаратного обеспечения, электронные компоненты, логические схемы, памяти и т.д. или любые их комбинации.
Специалистам в данной области техники будет понятно, что информация и сигналы могут быть представлены с использованием любого из множества различных технологий и способов. Например, данные, инструкции, команды, информация, сигналы, биты, символы и элементарные посылки, которые могут быть упомянуты по всему вышеприведенному описанию, могут быть представлены с помощью напряжений, токов, электромагнитных волн, магнитных полей или частиц, оптических полей или частиц, или любых их комбинаций.
Специалисты в данной области техники дополнительно примут во внимание, что различные иллюстративные логические блоки, модули, схемы и этапы алгоритмов, описанные в связи с раскрытием, приведенным в настоящей заявке, могут быть осуществлены как электронное аппаратное обеспечение, компьютерное программное обеспечение или комбинация первого и второго. Чтобы понятно проиллюстрировать эту взаимозаменяемость аппаратного обеспечения и программного обеспечения, различные иллюстративные компоненты, блоки, модули, схемы и этапы описаны выше обычно в понятиях их функционального назначения. Осуществлено ли такое функциональное назначение, как аппаратное обеспечение или программное обеспечение, зависит от особых ограничений приложения и конструкции, наложенных на всю систему. Опытные изобретатели могут осуществить описанное функциональное назначение различными способами для каждого конкретного приложения, но такие решения осуществления не должны быть интерпретированы как вызывающие выход за рамки объема настоящего раскрытия.
Различные иллюстративные логические блоки, модули и схемы, описанные в связи с раскрытием, приведенным в настоящей заявке, могут быть осуществлены или выполнены с помощью универсального процессора, процессора цифровых сигналов (DSP), интегральной схемы прикладной ориентации (ASIC), вентильной матрицы, программируемой в условиях эксплуатации (FPGA), или другого программируемого логического устройства, дискретного вентиля или транзисторной логики, дискретных компонентов аппаратного обеспечения или любой их комбинации, сконструированной с возможностью выполнения функций, описанных в настоящей заявке. Универсальный процессор может быть микропроцессором, но в качестве альтернативы процессор может быть любым традиционным процессором, контроллером, микроконтроллером или конечным автоматом. Процессор также может быть осуществлен как комбинация вычислительных устройств, например комбинация DSP и микропроцессора, множество микропроцессоров, один или более микропроцессоров в сочетании с ядром DSP или любая другая такая конфигурация.
Этапы способа или алгоритма, описанные в связи с раскрытием, приведенным в настоящей заявке, могут быть осуществлены непосредственно в аппаратном обеспечении, в программном обеспечении, модуле, выполняемом с помощью процессора, или в комбинации первого и второго. Модуль программного обеспечения может находиться в памяти RAM, флэш-памяти, памяти ROM, памяти EPROM, памяти EEPROM, в регистрах, на жестком диске, на сменном диске, CD-ROM или любом другом виде среды памяти, известной в данной области техники. Иллюстративная среда памяти соединена с процессором таким образом, что процессор может считывать информацию из среды памяти и записывать информацию в среду памяти. В качестве альтернативы среда памяти может неотъемлемой частью процессора. Процессор и среда памяти могут находиться в ASIC. ASIC может находиться в терминале пользователя. В качестве альтернативы процессор и среда памяти могут находиться в дискретных компонентах терминала пользователя.
В одном или более иллюстративных вариантах осуществления описанные функции могут быть осуществлены в аппаратном обеспечении, программном обеспечении, программно-аппаратном обеспечении или любой их комбинации. Если осуществлены в программном обеспечении, функции могут быть запомнены как одна или более инструкций или код в среде, доступной для чтения с помощью компьютера, или переданы через среду, доступную для чтения с помощью компьютера. Среда, доступная для чтения с помощью компьютера, включает в себя, как среду компьютерной памяти, так и среду связи, включающую в себя любую среду, которая способствует передаче компьютерной программы из одного места в другое. Среда памяти может быть любой доступной средой, доступ к которой может быть осуществлен с помощью компьютера. В качестве примера, а не ограничения, такая среда, доступная для чтения с помощью компьютера, может содержать RAM, ROM, EEPROM, CD-ROM или другую память на оптическом диске, память на магнитном диске или другие устройства магнитной памяти или любую другую среду, которая может быть использована, чтобы переносить или запоминать желаемый программный код в виде инструкций или структур данных, и доступ к которой может быть осуществлен с помощью компьютера. Также любое соединение соответственно называют средой, доступной для чтения с помощью компьютера. Например, если программное обеспечение передают из web-сайта, сервера или другого дистанционного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радиоволны и микроволны, тогда коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радиоволны и микроволны, включены в определение среды. Disk и disc, как использованы в настоящей заявке, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), гибкий диск и диск blu-ray, где disks обычно воспроизводят данные магнитным способом, в то время как discs воспроизводят данные оптическим способом с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в рамки объема среды, доступной для чтения с помощью компьютера.
Предыдущее описание раскрытия предоставлено для того, чтобы дать возможность любому специалисту в данной области техники изготовить и использовать настоящее изобретение. Различные модификации в раскрытии будут без труда понятны специалистам в данной области техники, и общие принципы, определенные в настоящей заявке, могут быть применены к другим вариантам, не выходя за рамки сущности и объема изобретения. Таким образом, не подразумевается, что раскрытие ограничено примерами и конструкциями, описанными в настоящей заявке, но должно соответствовать самым широким рамкам, согласующимся с принципами и новыми признаками, раскрытыми в настоящей заявке.
Изобретение относится к связи и, более конкретно, к способам кодирования и декодирования. Передатчик может кодировать кодовый блок битов данных с помощью турбо-кодера. Приемник может выполнять декодирование для кодового блока с помощью турбо-декодера, имеющего множество декодеров с программным входом и программным выходом (SISO). Бесконфликтный турбо-перемежитель может быть использован, если размер кодового блока больше, чем пороговый размер. Обычный турбо-перемежитель может быть использован, если размер кодового блока равен или меньше, чем пороговый размер. Бесконфликтный турбо-перемежитель переупорядочивает биты данных в кодовом блоке таким образом, что информация из множества SISO-декодеров после перемежения или обратного перемежения может быть записана параллельно в множество модулей памяти в каждом цикле записи без возникновения конфликта доступа к памяти. Обычный турбо-перемежитель может переупорядочивать биты данных в кодовом блоке любым способом безотносительно к бесконфликтному доступу к памяти. Технический результат - обеспечение поддержания высокой производительности декодирования. 4 н. и 26 з.п. ф-лы, 12 ил.
1. Устройство обработки данных, содержащее, по меньшей мере, один процессор, конфигурированный для:
определения размера кодового блока, выбранного из множества размеров кодовых блоков,
использования, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер, и
использования обычного турбо-перемежителя иного типа, чем бесконфликтный турбо-перемежитель, если размер кодового блока равен или меньше, чем пороговый размер,
выполнения декодирования для кодового блока на основе, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер, и
выполнения декодирования для кодового блока на основе обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер; и
память, связанную с, по меньшей мере, одним процессором.
2. Устройство по п.1, в котором упомянутый, по меньшей мере, один процессор конфигурирован, если используется бесконфликтный турбо-перемежитель, для:
деления кодового блока на множество секций; и
при этом выполнение декодирования для кодового блока содержит выполнение параллельного декодирования по множеству секций с использованием множества параллельных декодеров с программным входом и программным выходом (SISO) и, по меньшей мере, одного бесконфликтного турбо-перемежителя.
3. Устройство по п.2, в котором память конфигурирована для реализации множества модулей памяти для хранения информации из множества SISO-декодеров.
4. Устройство по п.3, в котором, по меньшей мере, один процессор конфигурирован для записи информации из множества SISO-декодеров, после перемежения или обратного перемежения на основе бесконфликтного турбо-перемежителя, во множество модулей памяти параллельно в каждом цикле записи.
5. Устройство по п.1, в котором множество размеров кодовых блоков включает в себя множество размеров кодовых блоков, больших, чем пороговый размер, и в котором каждый из множества размеров кодовых блоков ассоциирован с соответствующим бесконфликтным турбо-перемежителем.
6. Устройство по п.5, в котором множество размеров кодовых блоков линейно увеличивается на предварительно определенный размер шага.
7. Устройство по п.5, в котором множество размеров кодовых блоков задано, как
где Nth - минимальный размер; L - размер шага между последовательными размерами кодовых блоков, и Ni - i-й размер кодового блока из множества размеров кодовых блоков.
8. Устройство по п.5, в котором множество размеров кодовых блоков задано, как
где Li - приращение для i-го размера кодового блока, и Ni- i-й размер кодового блока из множества размеров кодовых блоков.
9. Устройство по п.1, в котором, по меньшей мере, один процессор, конфигурированный для выполнения декодирования для кодового блока, выполняет декодирование на основе, по меньшей мере, одного декодера с программным входом и программным выходом (SISO) и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
10.Устройство по п.1, в котором множество размеров кодовых блоков включает в себя множество размеров кодовых блоков, равных или меньших, чем пороговый размер, и в котором обычный турбо-перемежитель используется для множества размеров кодовых блоков.
11. Устройство по п.1, в котором, по меньшей мере, один процессор конфигурирован для выбора размера кодового блока на основании размера полезной нагрузки данных.
12. Устройство по п.1, в котором, по меньшей мере, один процессор конфигурирован для выполнения кодирования для кодового блока на основе множества составляющих кодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер.
13. Устройство по п.1, в котором, по меньшей мере, один процессор конфигурирован для выполнения кодирования для кодового блока на основе множества составляющих кодеров и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
14. Устройство по п.1, в котором бесконфликтный турбо-перемежитель основан на одном из перемежителя относительно простого числа с возмущением (DRP), перемежителя с почти регулярной перестановкой (ARP) и перемежителя с квадратичным полиномом перестановки (QPP).
15. Устройство по п.1, в котором, по меньшей мере, один процессор, конфигурированный для выполнения декодирования для кодового блока, выполняет декодирование на основе множества декодеров с программным входом и программным выходом (SISO) и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер, и выполняет декодирование для кодового блока на основе, по меньшей мере, одного SISO-декодера и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
16. Способ обработки данных, содержащий этапы, на которых
определяют размер кодового блока, выбранный из множества размеров кодовых блоков,
используют, по меньшей мере, один бесконфликтный турбо-перемежитель, если размер кодового блока больше, чем пороговый размер,
используют обычный турбо-перемежитель иного типа, чем бесконфликтный турбо-перемежитель, если размер кодового блока равен или меньше, чем пороговый размер,
выполняют декодирование для кодового блока на основе, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер, и
выполняют декодирование для кодового блока на основе обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
17. Способ по п.16, в котором использование бесконфликтного турбо-перемежителя содержит:
деление кодового блока на множество секций, и
при этом выполнение декодирования для кодового блока содержит выполнение параллельного декодирования по множеству секций с использованием множества параллельных декодеров с программным входом и программным выходом (SISO) и, по меньшей мере, одного бесконфликтного турбо-перемежителя.
18. Способ по п.17, дополнительно содержащий этап, на котором:
записывают информацию из множества SISO-декодеров после перемежения или обратного перемежения на основе бесконфликтного турбо-перемежителя во множество модулей памяти параллельно в каждом цикле записи.
19. Способ по п.16, в котором выполнение декодирования для кодового блока содержит выполнение декодирования на основе, по меньшей мере, одного декодера с программным входом и программным выходом (SISO) и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
20. Способ по п.16, дополнительно содержащий этап, на котором:
выполняют кодирование для кодового блока на основе множества составляющих кодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер.
21. Способ по п.16, дополнительно содержащий этап, на котором:
выполняют кодирование для кодового блока на основе множества составляющих кодеров и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
22. Устройство обработки данных, содержащее:
средство для определения размера кодового блока, выбранного из множества размеров кодовых блоков,
средство для использования, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер;
средство для использования обычного турбо-перемежителя иного типа, чем бесконфликтный турбо-перемежитель, если размер кодового блока равен или меньше, чем пороговый размер;
средство для выполнения декодирования для кодового блока на основе, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер; и
средство для выполнения декодирования для кодового блока на основе обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
23. Устройство по п.22, в котором средство для использования бесконфликтного турбо-перемежителя содержит:
средство для деления кодового блока на множество секций; и средство для выполнения декодирования для кодового блока содержит средство для выполнения параллельного декодирования по множеству секций с использованием множества параллельных декодеров с программным входом и программным выходом (SISO) и, по меньшей мере, одного бесконфликтного турбо-перемежителя.
24. Устройство по п.23, дополнительно содержащее:
средство для записи информации из множества SISO-декодеров после перемежения или обратного перемежения на основе бесконфликтного турбо-перемежителя во множество модулей памяти параллельно в каждом цикле записи.
25. Устройство по п.22, в котором средство для выполнения декодирования для кодового блока содержит средство для выполнения декодирования для кодового блока на основе, по меньшей мере, одного декодера с программным входом и программным выходом (SISO) и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
26. Устройство по п.22, дополнительно содержащее:
средство для выполнения кодирования для кодового блока на основе множества составляющих кодеров и бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер.
27. Устройство по п.22, дополнительно содержащее:
средство для выполнения кодирования для кодового блока на основе множества составляющих кодеров и обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
28. Машиночитаемый носитель, содержащий инструкции, которые, при выполнении посредством машины, побуждают машину выполнять операции, включающие в себя:
определение размера кодового блока, выбранного из множества размеров кодовых блоков;
использование, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер;
использование обычного турбо-перемежителя иного типа, чем бесконфликтный турбо-перемежитель, если размер кодового блока равен или меньше, чем пороговый размер;
выполнение декодирования для кодового блока на основе, по меньшей мере, одного бесконфликтного турбо-перемежителя, если размер кодового блока больше, чем пороговый размер; и
выполнение декодирования для кодового блока на основе обычного турбо-перемежителя, если размер кодового блока равен или меньше, чем пороговый размер.
29. Машиночитаемый носитель по п.28, дополнительно содержащий инструкции, которые, при выполнении посредством машины, побуждают машину выполнять операции, дополнительно включающие в себя:
деление кодового блока на множество секций; и
при этом выполнение декодирования для кодового блока содержит выполнение параллельного декодирования по множеству секций с использованием множества параллельных декодеров с программным входом и программным выходом (SISO) и, по меньшей мере, одного бесконфликтного турбо-перемежителя.
30. Машиночитаемый носитель по п.29, дополнительно содержащий инструкции, которые, при выполнении посредством машины, побуждают машину выполнять операции, дополнительно включающие в себя:
запись информации из множества SISO-декодеров после перемежения или обратного перемежения на основе бесконфликтного турбо-перемежителя во множество модулей памяти параллельно в каждом цикле записи.
ЕР 1667329 А1, 07.06.2006 | |||
СПОСОБ И УСТРОЙСТВО ДЛЯ ДЕПЕРЕМЕЖЕНИЯ ПОТОКА ПЕРЕМЕЖЕННЫХ ДАННЫХ В СИСТЕМЕ СВЯЗИ | 2003 |
|
RU2274951C2 |
US 2003014700 А1, 16.01.2003 | |||
ПЕРЕМЕЖИТЕЛЬ ТУРБОКОДА, ИСПОЛЬЗУЮЩИЙ ЛИНЕЙНЫЕ КОНГРУЭНТНЫЕ ПОСЛЕДОВАТЕЛЬНОСТИ | 1999 |
|
RU2235424C2 |
US 6453442 В1, 17.09.2002. |
Авторы
Даты
2011-11-27—Публикация
2007-11-01—Подача