RU2571597C2 - Способ и устройство для декодирования турбокода - Google Patents

Способ и устройство для декодирования турбокода Download PDF

Info

Publication number
RU2571597C2
RU2571597C2 RU2013152333/08A RU2013152333A RU2571597C2 RU 2571597 C2 RU2571597 C2 RU 2571597C2 RU 2013152333/08 A RU2013152333/08 A RU 2013152333/08A RU 2013152333 A RU2013152333 A RU 2013152333A RU 2571597 C2 RU2571597 C2 RU 2571597C2
Authority
RU
Russia
Prior art keywords
intermediate variables
decoding
beginning
current path
code blocks
Prior art date
Application number
RU2013152333/08A
Other languages
English (en)
Other versions
RU2013152333A (ru
Inventor
Цзиньчжоу ДУ
Original Assignee
ЗетТиИ Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ЗетТиИ Корпорейшн filed Critical ЗетТиИ Корпорейшн
Publication of RU2013152333A publication Critical patent/RU2013152333A/ru
Application granted granted Critical
Publication of RU2571597C2 publication Critical patent/RU2571597C2/ru

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • H03M13/2978Particular arrangement of the component decoders
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/3972Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using sliding window techniques or parallel windows
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/65253GPP LTE including E-UTRA
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/6583Normalization other than scaling, e.g. by subtraction

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Abstract

Изобретение относится к технике связи и предназначено для декодирования турбокода. Технический результат - сокращение задержки декодирования и повышение скорости декодирования. В каждой процедуре итерации при выполнении многопутевого параллельного декодирования декодируемых кодовых блоков способ включает: для декодируемых кодовых блоков в текущем пути, получение модулем декодирования всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу; получение модулем декодирования всех логарифмических отношений правдоподобия текущего пути (LLR) согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным, а также всем метрикам ветвей декодируемых кодовых блоков; и получение модулем декодирования априорной информации и результата декодирования, выводимого текущим путем, согласно всем логарифмическим отношениям правдоподобия. В каждом параллельном пути модулей декодирования два вида промежуточных переменных вычисляют одновременно посредством рекуррентного вычисления от начала к концу и рекуррентного вычисления от конца к началу. 2 н. и 11 з.п. ф-лы, 9 ил.

Description

Область техники
Данное изобретение относится к области связи, в частности к способу и устройству для декодирования турбокода.
Предпосылки создания изобретения
Турбокоды стали широко применяться в системах радиосвязи с тех пор, как были предложены в 1993 г., из-за их превосходных рабочих характеристик, приближающихся к шенноновскому пределу, и были определены в качестве одной из схем канального кодирования/декодирования системы подвижной связи по стандартам Проекта сотрудничества по созданию системы подвижной связи третьего поколения (Third Generation Partnership Project, сокращенно 3GPP). В системе по стандарту долгосрочной эволюции (Long Term Evolution, сокращенно LTE) требуются более высокая скорость передачи и лучшая характеристика кода в отношении вероятности ошибки, и поэтому соответственно возрастают требования к канальному кодированию/декодированию. Однако из-за итеративного характера алгоритма декодирования турбокода его может быть проблематично реализовать аппаратными средствами, в которых наиболее важна скорость декодирования. Поэтому уменьшение сложности декодирования и задержки декодирования становится важной проблемой в случае аппаратной реализации, и рассмотрение компромисса между рабочими характеристиками и требуемыми ресурсами является ключом к внедрению турбокодов.
В соответствующей области техники для декодирования турбокода обычно используют алгоритм на основе максимума апостериорной вероятности (Maximum of A-posteriori Probability, MAP), такой как log-MAP или MAX-log-MAP. Важными особенностями этого алгоритма является то, что при аппаратной реализации он требует непрерывно выполнять итерации множество раз и также требует выполнять рекуррентную итерацию промежуточных переменных alpha (альфа) и beta (бета) во время каждой итерации. Эти особенности увеличивают системную задержку декодирования турбокода, что является неудобным для применения турбокода в высокоскоростных системах подвижной связи третьего поколения (Third Generation Mobile System, 3G) и LTE. В отношении этой проблемы предложенным решением в соответствующей области техники в настоящее время является использование многопутевого параллельного способа декодирования; в этом способе принимаемые данные разделяют на множество блоков согласно ограниченной длине кода и фактической длине входных данных, принимаемые данные декодируют одновременно и посылают соответствующим контроллерам коэффициента ошибок после того, как одно декодирование закончено, чтобы вычислить его коэффициенты ошибок. В этом способе во время обработки каждым параллельным модулем декодирования соответственно вычисляют промежуточные переменные (alpha и beta), и поэтому время декодирования является относительно длительным.
Другим решением, используемым в соответствующей области техники, является способ декодирования турбокода на основании управления скользящим окном, при этом целью выполнения управления на основании скользящего окна является экономия объема памяти для промежуточных переменных (alpha и beta), но проблема аппаратной реализации, вызванная рекуррентным вычислением промежуточных переменных, не решается.
Сущность изобретения
Данное изобретение предлагает способ и устройство для декодирования турбокода, которые могут решить, по меньшей мере, проблему соответствующей области техники, состоящую в том, что задержка декодирования является слишком длительной и скорость декодирования невысока из-за того, что промежуточные переменные являются рекуррентными и вычисляются соответствующим образом.
Согласно одному аспекту данного изобретения предлагается способ декодирования турбокода, в котором в каждой процедуре итерации при выполнении многопутевого параллельного декодирования декодируемых кодовых блоков, когда модуль декодирования каждого пути выполняет декодирование, способ включает: для декодируемых кодовых блоков в текущем пути получение модулем декодирования всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу; получение модулем декодирования всех логарифмических отношений правдоподобия текущего пути согласно всем полученным первым промежуточным переменным, вторым промежуточным переменным и всем метрикам ветвей декодируемых кодовых блоков; и получение модулем декодирования априорной информации и вывод результата декодирования текущего пути согласно всем логарифмическим отношениям правдоподобия.
Предпочтительно получение модулем декодирования всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу включает: получение модулем декодирования всех метрик ветвей текущего пути посредством рекуррентного вычисления от начала к концу и получение всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу согласно всем полученным метрикам ветвей; и в то же самое время получение модулем декодирования всех метрик ветвей текущего пути посредством рекуррентного вычисления от конца к началу и получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу согласно всем метрикам ветвей, полученным в этот раз.
Предпочтительно получение модулем декодирования всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу согласно всем полученным метрикам ветвей включает: при рекуррентном вычислении первой, считая от начала к концу, из первых промежуточных переменных передней половины декодируемых кодовых блоков текущего пути, после выполнения операции суммирования, во время выполнения операции нормализации выполнение модулем декодирования операции суммирования для рекуррентного вычисления первой, считая от начала к концу, из первых промежуточных переменных задней половины декодируемых кодовых блоков; и выполнение модулем декодирования операции суммирования для рекуррентного вычисления второй, считая от начала к концу, из первых промежуточных переменных передней половины и в то же самое время выполнение операции нормализации первой, считая от начала к концу, из первых промежуточных переменных задней половины, затем выполнение операции суммирования для второй, считая от начала к концу, из первых промежуточных переменных задней половины, в то же время выполнение операции нормализации второй, считая от начала к концу, из первых промежуточных переменных передней половины и так далее, чтобы получить все первые промежуточные переменные текущего пути посредством рекуррентного вычисления.
Предпочтительно получение модулем декодирования всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу согласно всем полученным метрикам ветвей включает: при рекуррентном вычислении первой, считая от конца к началу, из вторых промежуточных переменных задней половины декодируемых кодовых блоков текущего пути, после выполнения операции суммирования, во время выполнения операции нормализации, выполнение модулем декодирования операции суммирования для рекуррентного вычисления первой, считая от конца к началу, из вторых промежуточных переменных передней половины текущего пути декодируемых кодовых блоков; и выполнение модулем декодирования операции суммирования для рекуррентного вычисления второй, считая от конца к началу, из вторых промежуточных переменных задней половины, и в то же самое время выполнение операции нормализации первой, считая от конца к началу, из вторых промежуточных переменных передней половины, и выполнение операции суммирования для второй, считая от конца к началу, из вторых промежуточных переменных передней половины, и в то же время выполнение операции нормализации второй, считая от конца к началу, из вторых промежуточных переменных задней половины, и так далее, чтобы получить все вторые промежуточные переменные текущего пути посредством рекуррентного вычисления.
Предпочтительно способ дополнительно включает: сохранение в памяти модулем декодирования первых промежуточных переменных, соответствующих передней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих передней половине кодовых блоков задней половины; и сохранение в памяти модулем декодирования вторых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины.
Предпочтительно получение модулем декодирования всех логарифмических отношений правдоподобия текущего пути согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным и всем метрикам ветвей декодируемых кодовых блоков, включает:
при рекуррентном вычислении первых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, каждый раз при получении одной из первых промежуточных переменных посредством рекуррентного вычисления, считывание модулем декодирования хранящейся второй промежуточной переменной, соответствующей этой позиции, и получение одного логарифмического отношения правдоподобия, соответствующего этой позиции, согласно первой промежуточной переменной, второй промежуточной переменной и метрике ветви, соответствующих этой позиции; и
при рекуррентном вычислении вторых промежуточных переменных, соответствующих передней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих передней половине кодовых блоков передней половины, каждый раз при получении одной из вторых промежуточных переменных посредством рекуррентного вычисления, считывание модулем декодирования хранящейся первой промежуточной переменной, соответствующей этой позиции, и получение одного логарифмического отношения правдоподобия, соответствующего этой позиции, согласно второй промежуточной переменной, первой промежуточной переменной и метрике ветви, соответствующих этой позиции.
Предпочтительно после получения результата декодирования каждого пути способ дополнительно включает: выполнение проверки при помощи циклического кода (cyclic redundancy check, CRC) согласно результату декодирования каждого пути и коду CRC декодируемых кодовых блоков, и если результат проверки удовлетворительный, то остановка итерации и завершение процесса декодирования, а в противном случае - выполнение следующего итерационного процесса с использованием априорной информации, выводимой каждым путем.
Согласно другому аспекту данного изобретения предлагается устройство для турбокода, содержащее модули декодирования многочисленных путей, причем модуль декодирования каждого пути содержит: модуль рекуррентного вычисления, сконфигурированный так, чтобы для декодируемых кодовых блоков в текущем пути получать все первые промежуточные переменные текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получать все вторые промежуточные переменные текущего пути посредством рекуррентного вычисления от конца к началу; модуль вычисления логарифмического отношения правдоподобия (LLR), сконфигурированный так, чтобы получать все отношения LLR текущего пути согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным и всем метрикам ветвей декодируемых кодовых блоков; и модуль жесткого решения, сконфигурированный так, чтобы принимать жесткое решение относительно всех отношений LLR, полученных модулем вычисления LLR, и выводить результат жесткого решения в качестве результата декодирования.
Предпочтительно модуль рекуррентного вычисления содержит: первый модуль вычисления метрик ветвей, сконфигурированный, чтобы получать все метрики ветвей текущего пути посредством рекуррентного вычисления от начала к концу; первый модуль вычисления промежуточной переменной, сконфигурированный, чтобы получать все первые промежуточные переменные текущего пути посредством рекуррентного вычисления от начала к концу согласно всем метрикам ветвей, полученным первым модулем вычисления метрик ветвей; второй модуль вычисления метрик ветвей, сконфигурированный, чтобы получать все метрики ветвей текущего пути посредством рекуррентного вычисления от конца к началу; и второй модуль вычисления промежуточной переменной, сконфигурированный, чтобы получать все вторые промежуточные переменные текущего пути посредством рекуррентного вычисления от конца к началу согласно всем метрикам ветвей, полученным вторым модулем вычисления метрик ветвей.
Предпочтительно первый модуль вычисления промежуточной переменной содержит: первый блок суммирования и первый блок нормализации, причем первый блок суммирования сконфигурирован, чтобы выполнять операцию суммирования в процессе рекуррентного вычисления каждой из первых промежуточных переменных; а первый блок нормализации сконфигурирован, чтобы выполнять операцию нормализации в процессе рекуррентного вычисления каждой из первых промежуточных переменных.
Предпочтительно второй модуль вычисления промежуточной переменной содержит: второй блок суммирования и второй блок нормализации, причем второй блок суммирования сконфигурирован, чтобы выполнять операцию суммирования в процессе рекуррентного вычисления каждой из вторых промежуточных переменных; а второй блок нормализации сконфигурирован, чтобы выполнять операцию нормализации в процессе рекуррентного вычисления каждой из вторых промежуточных переменных.
Предпочтительно модуль декодирования дополнительно содержит: модуль памяти, сконфигурированный для хранения первых промежуточных переменных, соответствующих передней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих первой половине кодовых блоков задней половины, а также вторых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины.
Предпочтительно устройство дополнительно содержит: выходной модуль управления, сконфигурированный, чтобы выполнять проверку при помощи циклического кода (CRC) согласно результату декодирования каждого пути и коду CRC декодируемых кодовых блоков, и если результат проверки удовлетворительный, то останавливать итерацию и завершать процесс декодирования, а иначе выполнять следующий итерационный процесс, используя априорную информацию, выводимую каждым путем.
Посредством данного изобретения в каждом параллельном пути модулей декодирования две промежуточные переменные вычисляют одновременно посредством рекуррентного вычисления от начала к концу и посредством рекуррентного вычисления от конца к началу, соответственно, решая проблему существующего способа параллельного декодирования, состоящую в том, что время каждой итерации слишком длительное, и, таким образом, значительно сокращая задержку декодирования и улучшая скорость декодирования.
Краткое описание чертежей
Чертежи, приводимые для дальнейшего пояснения данного изобретения и составляющие часть описания, используются, чтобы объяснить данное изобретение вместе с формами его осуществления, а не ограничивать данное изобретение. На чертежах:
Фиг.1 - основная схема декодирования турбокода.
Фиг.2 - схема аппаратной структуры декодера турбокода.
Фиг.3 - блок-схема способа декодирования турбокода согласно форме осуществления данного изобретения.
Фиг.4 - схема многопутевого параллельного декодирования согласно форме осуществления данного изобретения.
Фиг.5 - схема потока обработки второго пути в многочисленных параллельных путях согласно форме осуществления данного изобретения.
Фиг.6 - структурная схема модуля декодирования в декодере турбокода согласно форме осуществления данного изобретения.
Фиг.7 - структурная схема модуля рекуррентного вычисления согласно предпочтительной форме осуществления данного изобретения.
Фиг.8 - структурная схема модуля рекуррентного вычисления согласно другой предпочтительной форме осуществления данного изобретения.
Фиг.9 - схема аппаратной структуры модуля декодирования согласно предпочтительной форме осуществления данного изобретения.
Подробное описание форм осуществления изобретения
Данное изобретение подробно описывается ниже со ссылкой на прилагаемые чертежи и формы осуществления изобретения. Обратим внимание на то, что формы осуществления данного изобретения и признаки форм осуществления изобретения могут комбинироваться друг с другом, если при этом не возникает противоречия.
Фиг.1 - основная принципиальная схема декодирования турбокода, и, как показано на фиг.1, априорная информация (xk) и контрольные биты 1 (y1k) вводятся в модуль декодирования 1 (DEC1). Для способа декодирования, использующего алгоритм log-MAP или MAX-log-MAP, вычисление МАР1 выполняется над входными кодовыми блоками, которые будут декодированы в DEC1, и затем результат вводится в модуль перемежения для перемежения, и далее вводится в модуль декодирования 2 (DEC2), вычисление МАР2 выполняется над результатом перемежения и входными контрольными битами 2 (y2k), и результат выводится модулем деперемежения или вводится в модуль декодирования 1 в качестве априорной информации.
Фиг.2 - принципиальная схема аппаратной структуры декодера турбокода, и, как показано на фиг.2, это устройство в основном содержит: входной модуль управления, модуль системных битов/контрольных битов/априорной информации, модуль перемежения, модуль декодирования (DEC), модуль управления декодированием и выходной модуль управления.
Входной модуль управления отвечает в основном за различение данных, вводимых в декодер турбокода, согласно данным системных битов, контрольных битов 1, контрольных битов 2, системным хвостовым битам, перемеженным системным хвостовым битам, контрольным хвостовым битам 1 и контрольным хвостовым битам 2 и в то же самое время за генерацию сигнала управления выбором соответствующей интегральной схемы и управления операцией записи в оперативное запоминающее устройство (random-access memory, RAM) системных битов и RAM контрольных битов.
Модуль системных битов/контрольных битов/априорной информации выполняет операцию чтения/записи системных битов, контрольных битов и априорной информации, соответственно. Декодируемые данные из входного модуля управления записываются в соответствующие устройства RAM согласно степени параллельного декодирования. После того как декодирование активизировано, данные считываются из соответствующих устройств RAM согласно адресу последовательности/перемежения и передаются в модуль декодирования для декодирования.
Модуль перемежения обеспечивает адреса перемежения в реальном времени так, чтобы декодер турбокода мог получать перемежаемые системные биты и априорную информацию при вычислении МАР2, и таким образом вычислять текущую априорную информацию, и записывать априорную информацию в устройство RAM хранения априорной информации.
Модуль декодирования в основном выполняет декодирование согласно данным, выводимым модулем системных битов/контрольных битов/априорной информации, записывает данные априорной информации, полученные при вычислении, обратно в устройство RAM хранения априорной информации и посылает результат декодирования выходному модулю управления.
Модуль управления декодированием управляет работой всего ядра декодирования турбокода и отвечает за генерирование сигналов запуска декодирования, параметров, связанных с кодовыми блоками, сигналов разрешения чтения/записи данных, адресов, сигналов управления попеременным переключением и сигналов разрешения вычисления и так далее.
Выходной модуль управления отвечает за деперемежение результата декодирования кодовых блоков, управление чтением/ записью и вывод соответствующих параметров.
Если взять в качестве примера кодовый блок длиной K, то процесс декодирования турбокода будет включать следующие основные шаги.
Шаг 1, входные данные декодирования (всего 3K+12) после обработки входным модулем управления разделяются на K системных битов, K контрольных битов 1, К контрольных битов 2, 3 системных хвостовых бита, 3 перемежаемых системных хвостовых бита, 3 хвостовых бита проверки 1 и 3 хвостовых бита проверки 2 и сохраняются в соответствующих устройствах RAM согласно числу блоков обработки (processing unit, PU).
Шаг 2, после того как данные записаны полностью, подается сигнал пуска (start) и начинается многопутевое параллельное декодирование.
Шаг 3, обработка МАР1: системные биты и контрольные биты 1 считываются из соответствующих устройств RAM согласно первоначальным адресам и передаются в блок параллельной обработки MAP для вычисления МАР1 (априорная информация МАР1 равна нулю при вычислении первой итерации), и внешняя информация, полученная при вычислении, записывается в устройство RAM априорной информации. Одновременно с началом выполнения декодирования перемежитель также начинает вычислять адрес перемежения и сохраняет его для того, чтобы заранее подготовить адреса перемежения для последующей обработки МАР2.
Шаг 4, обработка МАР2: контрольные биты 2, считываемые согласно первоначальным адресам, системные биты и априорная информация, считываемые согласно адресам перемежения (во время первой итерации априорная информация хвостовых битов, используемая МАР2, является нулевой, и чтение/запись данных, соответствующих хвостовым битам, не участвуют в перемежении), посылаются в блоки параллельной обработки MAP для вычисления МАР2, и априорная информация, полученная при вычислении, и результат жесткого решения записываются в устройство RAM априорной информации и устройство RAM результата декодирования соответственно. К этому времени одно итерационное декодирование турбокода заканчивается.
Шаг 5, согласно определенным условиям может оцениваться, выполнено ли условие завершения итерации, если да, то итерационное декодирование немедленно останавливается, а иначе возвращается к шагу 3, пока оно не достигает заранее заданного максимального числа итераций.
Фиг.3 - блок-схема способа декодирования согласно форме осуществления данного изобретения, и, как показано на фиг.3, во время многопутевого параллельного декодирования декодируемых кодовых блоков, во время каждой итерации, когда модуль декодирования каждого пути выполняет декодирование (включая вычисление МАР1 и вычисление МАР2), способ включает следующие основные шаги (от шага S302 до шага S306).
Шаг S302, для кодовых блоков, декодируемых в текущем пути, модуль декодирования получает все первые промежуточные переменные (то есть alpha) текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получает все вторые промежуточные переменные (то есть beta) текущего пути посредством рекуррентного вычисления от конца к началу.
Первая промежуточная переменная может быть переменной alpha, а вторая промежуточная переменная - переменной beta, или наоборот, то есть первая промежуточная переменная - переменной beta, а вторая промежуточная переменная - переменной alpha. Предпочтительно в формах осуществления данного изобретения первая промежуточная переменная является переменной alpha, а вторая промежуточная переменная - переменной beta.
В предпочтительных формах осуществления данного изобретения, чтобы уменьшить пространство хранения, метрики ветвей (то есть gamma), необходимые при рекуррентном вычислении, могут вычисляться для первых промежуточных переменных и вторых промежуточных переменных соответственно. Для первых промежуточных переменных модуль декодирования получает все метрики ветвей текущего пути посредством рекуррентного вычисления от начала к концу и получает все первые промежуточные переменные (alpha) текущего пути посредством рекуррентного вычисления от начала к концу согласно всем полученным метрикам ветвей; и в то же самое время для вторых промежуточных переменных модуль декодирования получает все метрики ветвей текущего пути посредством рекуррентного вычисления от конца к началу и получает все вторые промежуточные переменные (beta) текущего пути посредством рекуррентного вычисления от конца к началу согласно всем метрикам ветвей, полученным в этот раз.
Первые промежуточные переменные и вторые промежуточные переменные вычисляют непосредственно, используя рекуррентные формулы вместо конвейерной аппаратной обработки. Кроме того, каждое рекуррентное вычисление первой промежуточной переменной и второй промежуточной переменной включает две части, то есть операцию суммирования для добавления gamma к первой промежуточной переменной или второй промежуточной переменной и операцию нормализации, и задержка логики комбинированной схемы также является большой. Поэтому при предпочтительной реализации данного изобретения каждое рекуррентное вычисление первой промежуточной переменной или второй промежуточной переменной выполняется за 2 цикла, сначала выполняется операция суммирования, затем выполняется обработка нормализации, то есть каждое рекуррентное вычисление первой промежуточной переменной или второй промежуточной переменной завершается в течение 2 тактов (clock, clk).
В предпочтительных формах осуществления данного изобретения вычисление с временным разделением выполняется для первых промежуточных переменных и вторых промежуточных переменных передней и задней половин декодируемых кодовых блоков одного и того же пути. Например, при рекуррентном вычислении первой, считая от начала к концу, из первых промежуточных переменных (таких как alpha) передней половины декодируемых кодовых блоков текущего пути, после выполнения операции суммирования, во время выполнения операции нормализации модуль декодирования выполняет операцию суммирования для рекуррентного вычисления первой, считая от начала к концу, из первых промежуточных переменных (alpha) задней половины декодируемых кодовых блоков текущего пути; модуль декодирования выполняет операцию суммирования для рекуррентного вычисления второй, считая от начала к концу, из первых промежуточных переменных (таких как alpha) передней половины и в то же самое время выполняет операцию нормализации для первой, считая от начала к концу, из первых промежуточных переменных (таких как alpha) задней половины, затем выполняет операцию суммирования для второй, считая от начала к концу, из первых промежуточных переменных (alpha) задней половины, и в то же время выполняет операцию нормализации для второй, считая от начала к концу, из первых промежуточных переменных (alpha) передней половины, и так далее, чтобы получить все первые промежуточные переменные (alpha) текущего пути посредством рекуррентного вычисления.
Точно так же, при рекуррентном вычислении первой, считая от конца к началу, из вторых промежуточных переменных (таких как beta) задней половины декодируемых кодовых блоков текущего пути, после выполнения операции суммирования, во время выполнения операции нормализации модуль декодирования выполняет операцию суммирования для рекуррентного вычисления первой, считая от конца к началу, из вторых промежуточных переменных (beta) передней половины декодируемых кодовых блоков текущего пути; модуль декодирования выполняет операцию суммирования для рекуррентного вычисления второй, считая от конца к началу, из вторых промежуточных переменных (beta) задней половины и в то же самое время выполняет операцию нормализации первой, считая от конца к началу, из вторых промежуточных переменных (beta) передней половины, затем выполняет операцию суммирования для второй, считая от конца к началу, из вторых промежуточных переменных (beta) передней половины, и в то же время выполняет операцию нормализации второй, считая от конца к началу, из вторых промежуточных переменных (beta) задней половины, и так далее, для получения всех вторых промежуточных переменных (beta) текущего пути посредством рекуррентного вычисления.
Первые промежуточные переменные и вторые промежуточные переменные вычисляют с использованием двух вышеописанных способов. После вычисления первой промежуточной переменной, соответствующей промежуточному биту передней половины, при вычислении первых промежуточных переменных, соответствующих задней половине передней половины, посредством рекуррентного вычисления, вторые промежуточные переменные, соответствующие этой части, уже вычислены, поэтому первые промежуточные переменные, вычисляемые для этой части, не должны сохраняться, после получения первой промежуточной переменной логарифмическое отношение правдоподобия (LLR), соответствующее этой позиции, вычисляется непосредственно согласно хранящейся второй промежуточной переменной, соответствующей этой позиции, и метрике ветви, соответствующей этой позиции. Аналогично, после вычисления второй промежуточной переменной, соответствующей промежуточному биту задней половины, при вычислении посредством рекуррентного вычисления вторых промежуточных переменных, соответствующих передней половине задней половины, первые промежуточные переменные, соответствующие этой части, вычислены, поэтому вторые промежуточные переменные, вычисленные для этой части, не должны сохраняться, после получения второй промежуточной переменной логарифмическое отношение правдоподобия (LLR), соответствующее этой позиции, вычисляется непосредственно согласно хранящейся первой промежуточной переменной, соответствующей этой позиции, и метрике ветви, соответствующей этой позиции. Поэтому, чтобы экономить пространство памяти, в предпочтительной реализации данного изобретения при выполнении вышеупомянутых операций модуль декодирования сохраняет в памяти первые промежуточные переменные (alpha), соответствующие передней половине кодовых блоков передней половины, и первые промежуточные переменные (alpha), соответствующие передней половине кодовых блоков задней половины; модуль декодирования сохраняет в памяти вторые промежуточные переменные (beta), соответствующие задней половине кодовых блоков задней половины, и вторые промежуточные переменные (beta), соответствующие задней половине кодовых блоков передней половины.
Шаг S304, модуль декодирования получает все логарифмические отношения правдоподобия (LLR) текущего пути согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным, а также всем метрикам ветвей декодируемых кодовых блоков.
Например, в этой форме осуществления при рекуррентном вычислении первых промежуточных переменных (alpha), соответствующих задней половине кодовых блоков передней половины, и первых промежуточных переменных (alpha), соответствующих задней половине кодовых блоков задней половины, каждый раз при получении одной из первых промежуточных переменных (alpha) посредством рекуррентного вычисления модуль декодирования считывает вторую промежуточную переменную (beta), соответствующую этой позиции, и получает логарифмическое отношение правдоподобия, соответствующее этой позиции, согласно первой промежуточной переменной (alpha), второй промежуточной переменной (beta) и метрике ветви (gamma), соответствующий этой позиции; и при рекуррентном вычислении вторых промежуточных переменных (beta), соответствующих передней половине кодовых блоков задней половины, и вторых промежуточных переменных (beta), соответствующих передней половине кодовых блоков передней половины, каждый раз при получении одной второй промежуточной переменной (beta) посредством рекуррентного вычисления модуль декодирования считывает хранящуюся первую промежуточную переменную (alpha), соответствующую этой позиции, и получает логарифмическое отношение правдоподобия, соответствующее этой позиции, согласно второй промежуточной переменной (beta), первой промежуточной переменной (alpha) и метрике ветви (gamma), соответствующей этой позиции.
Например, логарифмическое отношение правдоподобия может быть вычислено согласно следующему способу:
для k=1: N
LLR(k)=max([alpha(k, 0+1)+gamma_1(k, 0+1)+beta(k+1, 4+1),
alpha(k, 1+1)+gamma_1(k, 1+1)+beta(k+1, 0+1), …
alpha(k, 2+1)+gamma_1(k, 2+1)+beta(k+1, 1+1), …
alpha(k, 3+1)+gamma_1(k, 3+1)+beta(k+1, 5+1), …
alpha(k, 4+1)+gamma_1(k, 4+1)+beta(k+1, 6+1), …
alpha(k, 5+1)+gamma_1(k, 5+1)+beta(k+1, 2+1), …
alpha(k, 6+1)+gamma_1(k, 6+1)+beta(k+1, 3+1), …
alpha(k, 7+1)+gamma_1(k, 7+1)+beta(k+1, 7+1), …])
max([alpha(k, 0+1)+gamma_1(k, 0+1)+beta(k+1, 00+1), …
alpha(k, 1+1)+gamma_1(k, 1+1)+beta(k+1, 4+1), …
alpha(k, 2+1)+gamma_1(k, 2+1)+beta(k+1, 5+1), …
alpha(k, 3+1)+gamma_1(k, 3+1)+beta(k+1,1+1), …
alpha(k, 4+1)+gamma_1(k, 4+1)+beta(k+1, 2+1), …
alpha(k, 5+1)+gamma_1(k, 5+1)+beta(k+1, 6+1), …
alpha(k, 6+1)+gamma_1(k, 6+1)+beta(k+1, 7+1), …
alpha(k, 7+1)+gamma_1(k, 7+1)+beta(k+1, 3+1), …]);
конец
Шаг S306, модуль декодирования получает априорную информацию, и результат декодирования выводится текущим путем согласно всем логарифмическим отношениям правдоподобия.
Например, после получения логарифмических отношений правдоподобия априорная информация, выводимая в это время, может быть получена согласно текущим отношениям LLR, полученным путем вычисления, и текущим входным системным битам и априорной информации.
В этой форме осуществления после получения результата декодирования каждого пути выполняется проверка при помощи циклического кода (CRC) согласно результату декодирования каждого пути и коду CRC декодируемых кодовых блоков, если проверка проходит успешно, то итерация будет остановлена и процесс декодирования завершится, а иначе выполняют следующий итерационный процесс, используя априорную информацию, выводимую каждым путем.
В соответствующей области техники одновременное итерационное вычисление первых промежуточных переменных (alpha) и вторых промежуточных переменных (beta) не выполняется, и поэтому проблема слишком длительной системной задержки не решается, кроме того, когда итерация выполняется корректно, итеративная операция не может быть остановлена в реальном времени, что еще более увеличивает время обработки системы. В то же время данная форма осуществления изобретения использует способ выполнения одновременного итерационного вычисления первых промежуточных переменных (alpha) и вторых промежуточных переменных (beta), что сокращает системную задержку до половины от исходной, и в то же самое время результат декодирования проверяется с использованием CRC, и если проверка проходит успешно, то последующий повторный итерационный процесс будет остановлен вовремя, что уменьшает затраты времени.
Если взять в качестве примера, что первая промежуточная переменная - alpha, а вторая промежуточная переменная - beta, то параллельный процесс декодирования турбокода в форме осуществления данного изобретения будет включать следующие основные шаги.
Шаг 1: несколько PU (блоков обработки, также называемых рядом параллельных путей, здесь один PU - это также одно скользящее окно) получают путем разделения согласно длине кодового блока, чтобы подготовиться к многопутевому параллельному декодированию. Каждый блок PU разделяется на две равные части, переднюю часть и заднюю часть, которые соответственно обозначаются как PU-f (передняя половина PU) и PU-b (задняя половина PU).
Шаг 2: устанавливают начальные значения alpha и beta для половин PU-f и PU-b (которые обозначаются как alpha0 и beta0, и далее alphal и betal получают посредством рекуррентного вычисления на основании alpha0 и beta0, затем alpha2 и beta2 получают посредством рекуррентного вычисления на основании alphal и betal, и так далее), и также задают соответствующее перекрытие (overlap) (длина окна перекрытия). Когда alpha итерируется от начала к концу, половина PU-f первого блока PU не имеет перекрытия; и когда beta итерируется от конца к началу, половина PU-b последнего блока PU не имеет перекрытия.
Шаг 3: переменные gamma половин PU-f и PU-b каждого блока PU вычисляют с использованием способа сегментации шага 1 и шага 2 соответственно согласно соответствующим системным битам, контрольным битам и априорной информации.
Шаг 4: alpha вычисляется с использованием gamma. Это реализуется за 2 цикла, то есть сначала вычисляется alpha+gamma, а затем выполняется обработка нормализации, чтобы получить следующую переменную alpha. Здесь при выполнении обработки нормализации n-й alpha PU-f выполняется операция alpha+gamma n-й цифры PU-b, что гарантирует, что выходная скорость декодирования не будет ухудшена, и в то же самое время сохраняют значения alpha передних половин PU-f и PU-b. Поток обработки beta подобен обработке для alpha, но при этом сохраняют значения beta задних половин PU-f и PU-b.
Шаг 5: когда вычисляется половина PU-f или PU-b, вычисление выполняется с использованием переменных alpha, вычисленных для задней половины PU-f или PU-b, и переменных beta, хранящихся для задней половины, и соответствующих метрик ветвей (gamma), чтобы получить LLR (логарифмические отношения правдоподобия), затем выходная априорная информация вычисляется согласно текущим отношениям LLR, полученным вычислением, и текущим входным системным битам и априорной информации; и в то же самое время выполняется вычисление с использованием переменных beta, вычисленных для передней половины PU-f или PU-b, переменных alpha, хранящихся для передней половины, и соответствующих метрик ветвей (gamma), чтобы получить отношения LLR и затем получить выходную априорную информацию.
Шаг 6: после того как одна итерация закончена, с использованием отношений LLR получают результат в виде жесткого решения, и вслед за тем выполняется проверка кодом CRC, если результат проверки неудовлетворительный, то выполняется следующая итерация, пока не достигается заранее заданное максимальное число итераций. Если результат проверки удовлетворительный, итерация немедленно останавливается, чтобы подготовиться к декодированию следующего кодового блока (code block, СВ).
По сравнению с существующим способом параллельного декодирования в способе, предусмотренном в формах осуществления данного изобретения, в случае, когда общее количество циклов (число тактов) не изменяется в течение каждой итерации, длина критического пути суммирования, сравнения и выбора (add-compare-select, ACS) при выполнении итераций alpha и beta декодирования турбокода значительно сокращается (она изменяется из-за выполнения операции суммирования за 1 - 2 такта, что более выгодно для реализации программируемых пользователем вентильных матриц (field-programmed gate array, FPGA) и специализированных интегральных схем (application specific integrated circuit, ASIC), частота и пропускная способность аппаратной схемы будут выше); вычисление выполняется для alpha спереди назад и для beta сзади вперед одновременно, так что задержка декодирования во время каждой итерации сокращается до 1/2 от исходной. Когда качество канала хорошее, итерация останавливается согласно проверке кодом CRC, так что число итераций во время декодирования сокращается многократно (например, максимальное число итераций 8, а фактически результат правилен только с 1 итерацией, и после того, как принимается итерация, остановленная согласно проверке кодом CRC, время декодирования составляет 1/8 исходной величины).
Аналогично, принимая, что длина кодового блока К и имеется 4 параллельных пути, полный процесс выполнения обработки является таким, как показано на фиг.4; каждый путь выполняет декодирование параллельно. Для каждого пути, в частности, сначала выполняется вычисление перекрывающейся части (штриховые стрелки) и затем выполняется вычисление действительных данных (сплошные стрелки), как показано на фиг.4. Во время обработки МАР1 переменные alpha и beta вычисляют одновременно от двух головных частей каждого пути соответственно. Если взять в качестве примера второй путь, который является относительно типичным, то третий путь является таким же, как второй путь; когда alpha вычисляется для передней половины первого пути, перекрытия нет, а когда beta вычисляется для задней половины четвертого пути, перекрытием является хвостовой бит всего кодового блока.
Принимая во внимание перекрывающуюся часть (overlap) каждого пути, это эквивалентно началу с (K/4 - overlap)-го и (3K/8 - overlap)-го кодового блока K соответственно во времени; соответствующие системные биты, контрольные биты и априорная информация считываются согласно правилу последовательного добавления единицы согласно адресу, и gamma вычисляется согласно формуле (1). Также согласно следующей последовательности получаются gamma (K/4 - overlap), gamma (3K/8 - overlap), gamma (K/4 - overlap+1), gamma (3K/8 - overlap+1) …, gamma (3K/8 - 1) и gamma (K/2 - 1), и после того, как метрики gamma получены, переменные alpha, соответствующие K/4, получают с помощью метрик gamma согласно формуле (2), как показано на фиг.5.
Так как при вычислении alpha используется рекуррентная формула, это невыгодно для конвейерного способа обработки аппаратными средствами. Вычисление alpha каждый раз включает две части, gamma+alpha и нормализацию, и задержка логики комбинированной схемы является относительно большой, что является также невыгодным для аппаратной реализации матрицы FPGA или интегральной схемы ASIC. Поэтому в этой форме осуществления изобретения вычисление alpha выполняется за 2 цикла, причем сначала выполняется операция суммирования, а затем выполняется обработка нормализации. Поэтому в этой форме осуществления изобретения вычисление с временным разделением выполняется при вычислении alpha (которое завершается за 2 цикла) передней и задней половин того же самого пути. В частности, операция суммирования alpha(K/4 - overlap) выполняется в течение 1-го elk; операция нормализации alpha (K/4 - overlap) выполняется в течение 2-го elk (получение alpha(K/4 - overlap)), и в то же самое время выполняется операция суммирования alpha (3K/8 - overlap); операция нормализации alpha(3K/8 - overlap) выполняется в течение 3-го elk (получение alpha(3K/8 - overlap)), и в то же самое время выполняется операция суммирования alpha(K/4 - overlap+1) и так далее, после (K/4+overlap) тактов elk получают все значения alpha текущего пути (их имеется всего K/4+overlap, включая alpha перекрывающейся части).
Процесс вычисления beta подобен вычислению alpha, только их направления являются противоположными. Вычисление начинается соответственно с (3K/8 - 1+overlap)-го и (K/2 - 1+overlap)-го кодового блока по времени, соответствующие системные биты, контрольные биты и априорная информация считываются согласно правилу уменьшения значения адреса на 1, gamma вычисляется согласно формуле (1). Также согласно следующей последовательности получаются gamma(3K/8-1+overlap), gamma(K/2-1+overlap), gamma(3K/8-2+overlap), gamma(K/2-2+overlap), gamma(K/4) и gamma(3K/8), и затем полученные метрики gamma используются согласно способу обработки, который является подобным вычислению alpha; вычисление beta каждый раз разделяется на два цикла, чтобы получать все значения beta текущего пути, как показано на фиг.5.
В этой форме осуществления вычисление alpha и beta выполняется в противоположных направлениях, и нет никакой необходимости сохранять все значения alpha и beta текущего пути, вместо этого сохраняются только K/8 значений alpha и K/8 значений beta (alpha и beta могут храниться в одном устройстве RAM с глубиной K/4). Необходимо сохранять значения alpha от K/4 до 5K/16-1 и от 3K/8 до 7K/16-1; и необходимо сохранять значения beta от 3K/8-1 до 5K/16 и от K/2-1 до 7K/16. Когда alpha вычисляется для к позиций от 5K/16 и 7K/16 соответственно с приращением, beta вычисляется для позиции 5K/16-1 и 7K/16-1 соответственно с уменьшением. В этот момент, когда одно значение alpha и одно значение beta вычисляются одновременно, вычисление может выполняться с использованием соответствующих значений, считываемых из устройства RAM хранения alpha и beta, в комбинации с метрикой ветви (gamma), соответствующей этой позиции, чтобы получить 2 отношения LLR одновременно, таким образом время декодирования может быть сокращено приблизительно до 1/2.
После того как вычисление отношений LLR закончено, получается априорная информация, соответствующая каждому вычислению отношения LLR. После обработки MAP1, перемежение априорной информации реализуется последовательной записью и перемежающимся считыванием из устройства RAM хранения априорной информации. После обработки MAP2 деперемежение априорной информации реализуется перемежаемой записью и последовательным считыванием из устройства RAM хранения априорной информации.
После того как одна итерация закончена (включая MAP1 и MAP2), выполняют проверку кодом CRC данных жесткого решения после каждой итерации, используя сегментацию кодового блока и дополнительный код проверки CRC системы LTE, и если результат проверки удовлетворительный, то итерация будет остановлена. В противном случае будет выполнена следующая итерация с использованием новой априорной информации, сгенерированной после итерации, вместе с принимаемыми системными битами и контрольными битами.
Согласно одной из форм осуществления данного изобретения предлагается также декодер турбокода; это устройство используется для осуществления вышеупомянутого способа, предлагаемого в формах осуществления данного изобретения.
Декодер турбокода согласно формам осуществления данного изобретения улучшает декодер турбокода, показанный на фиг.2, где модуль декодирования использует множество путей параллельных модулей декодирования. Фиг.6 - структурная схема каждого модуля декодирования в декодере турбокода согласно форме осуществления данного изобретения, и, как показано на фиг.6, модуль декодирования каждого пути может содержать модуль 10 рекуррентного вычисления, модуль 20 вычисления LLR и модуль 30 жесткого решения.
Модуль 10 рекуррентного вычисления сконфигурирован так, чтобы для декодируемых кодовых блоков в текущем пути получать все первые промежуточные переменные (такие как alpha) текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получать все вторые промежуточные переменные (такие как beta) текущего пути посредством рекуррентного вычисления от конца к началу; модуль 20 вычисления LLR связан с модулем 10 рекуррентного вычисления и сконфигурирован так, чтобы получать все логарифмические отношения правдоподобия (LLR) текущего пути согласно всем полученным первым промежуточным переменным (alpha) и вторым промежуточным переменным (beta) и всем метрикам ветвей (gamma) декодируемых кодовых блоков; и модуль 30 жесткого решения связан с модулем 20 вычисления LLR и сконфигурирован так, чтобы принимать жесткое решение относительно всех отношений LLR, полученных модулем вычисления LLR, и выводить результат жесткого решения в качестве результата декодирования.
В предпочтительных формах осуществления данного изобретения, как показано на фиг.7, модуль 10 рекуррентного вычисления может содержать: первый модуль 100 вычисления метрик ветвей, сконфигурированный, чтобы получать все метрики ветвей текущего пути посредством рекуррентного вычисления от начала к концу; первый модуль 102 вычисления промежуточной переменной, сконфигурированный, чтобы получать все первые промежуточные переменные (alpha) текущего пути посредством рекуррентного вычисления от начала к концу согласно всем метрикам ветвей, полученным первым модулем 100 вычисления метрик ветвей; второй модуль 104 вычисления метрик ветвей, сконфигурированный, чтобы получать все метрики ветвей текущего пути посредством рекуррентного вычисления от конца к началу; и второй модуль 106 вычисления промежуточной переменной, сконфигурированный, чтобы получать все вторые промежуточные переменные (beta) текущего пути посредством рекуррентного вычисления от начала к концу согласно всем метрикам ветвей, полученным вторым модулем 104 вычисления метрик ветвей.
Первый модуль 102 вычисления промежуточной переменной может содержать: первый блок суммирования и первый блок нормализации, причем первый блок суммирования сконфигурирован, чтобы выполнять операцию суммирования в процессе рекуррентного вычисления каждой из первых промежуточных переменных; и первый блок нормализации сконфигурирован, чтобы выполнять операцию нормализации в процессе рекуррентного вычисления каждой из первых промежуточных переменных.
После того как первый блок суммирования выполняет операцию суммирования в процессе рекуррентного вычисления первой, считая от начала к концу, из первых промежуточных переменных (таких как alpha) передней половины декодируемых кодовых блоков текущего пути, в то время как первый блок нормализации выполняет операцию нормализации, первый блок суммирования выполняет операцию суммирования для рекуррентного вычисления первой, считая от начала к концу, из первых промежуточных переменных (alpha) задней половины кодовых блоков текущего пути; затем первый блок суммирования выполняет операцию суммирования для рекуррентного вычисления второй, считая от начала к концу, из первых промежуточных переменных (таких как alpha) передней половины, и в то же время первый блок нормализации выполняет операцию нормализации первой, считая от начала к концу, из первых промежуточных переменных (таких как alpha) задней половины, затем, в то время как первый блок нормализации выполняет нормализацию второй, считая от начала к концу, из первых промежуточных переменных (alpha) передней половины, первый блок суммирования выполняет операцию суммирования второй, считая от начала к концу, из первых промежуточных переменных (alpha) задней половины, и так далее, чтобы получить все первые промежуточные переменные (alpha) текущего пути посредством рекуррентного вычисления.
Второй модуль 106 вычисления промежуточной переменной может содержать: второй блок суммирования и второй блок нормализации, причем второй блок суммирования сконфигурирован для выполнения операции суммирования в процессе рекуррентного вычисления каждой из вторых промежуточных переменных; и второй блок нормализации сконфигурирован для выполнения операции нормализации в процессе рекуррентного вычисления каждой из вторых промежуточных переменных.
Например, после того как второй блок суммирования выполняет операцию суммирования для рекуррентного вычисления первой, считая от конца к началу, из вторых промежуточных переменных (таких как beta) задней половины декодируемых кодовых блоков текущего пути, в то время как второй блок нормализации выполняет операцию нормализации, второй блок суммирования выполняет операцию суммирования для рекуррентного вычисления первой, считая от конца к началу, из вторых промежуточных переменных (beta) передней половины кодовых блоков текущего пути; затем второй блок суммирования выполняет операцию суммирования для рекуррентного вычисления второй, считая от конца к началу, из вторых промежуточных переменных (beta) задней половины, и в то же самое время второй блок нормализации выполняет операцию нормализации первой, считая от конца к началу, из вторых промежуточных переменных (beta) передней половины, затем, в то время как второй блок нормализации выполняет нормализацию второй, считая от конца к началу, из вторых промежуточных переменных (beta) задней половины, второй блок суммирования выполняет операцию суммирования для второй, считая от конца к началу, из вторых промежуточных переменных (beta) передней половины, и так далее, чтобы получить все вторые промежуточные переменные (beta) текущего пути посредством рекуррентного вычисления.
В предпочтительных формах осуществления данного изобретения, как показано на фиг.8, модуль декодирования каждого пути может дополнительно содержать: модуль 40 памяти, сконфигурированный для хранения первых промежуточных переменных, полученных модулем 10 рекуррентного вычисления и соответствующих передней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих передней половине кодовых блоков задней половины, а также вторых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины.
В предпочтительных формах осуществления данного изобретения в устройстве также может быть улучшен выходной модуль управления, показанный на фиг.2, при этом выходной модуль управления сконфигурирован так, чтобы выполнять проверку CRC согласно результату декодирования, выводимому модулем декодирования, и коду проверки при помощи циклического кода декодируемого кодового блока, и если результат проверки удовлетворительный, то итерация будет остановлена и итерационный процесс завершается, а иначе выполняется следующий итерационный процесс с использованием априорной информации, выводимой каждым путем модуля декодирования.
В предпочтительных формах осуществления данного изобретения могут быть установлены два модуля 20 вычисления LLR, соответствующие первой промежуточной переменной и второй промежуточной переменной соответственно, и также могут быть установлены два соответствующих модуля жесткого решения. Фиг.9 - структурная схема модуля 30 декодирования согласно предпочтительной форме осуществления данного изобретения, и, как показано на фиг.9, системная (sys) информация, контрольная информация (это контрольная информация 1 для вычисления МАР1 и контрольная информация 2 для вычисления МАР2) и априорная информация (apri) вводятся в модуль вычисления gamma для alpha (эквивалент первого модуля вычисления метрик ветвей) и модуль вычисления gamma для beta (эквивалент второго модуля вычисления метрик ветвей). Первый модуль вычисления метрик ветвей выполняет рекуррентное вычисление LLR от начала к концу и вводит его в модуль вычисления alpha (эквивалент первого модуля вычисления промежуточной переменной), и модуль вычисления alpha вычисляет переменные alpha этого пути, часть которых сохраняется в устройстве RAM данных, а часть вводится в модуль вычисления LLR, модуль вычисления LLR вычисляет LLR согласно входным alpha и beta, хранящимся в RAM данных, выводит априорную информацию (ext_apri) и выводит отношение LLR, полученное при вычислении, в модуль жесткого решения, и модуль жесткого решения выполняет операцию согласно вводимому отношению LLR, системной информации и априорной информации (apri). Аналогично, соответствующая обработка выполняется для переменной beta.
Из вышеприведенного описания можно видеть, что посредством технического решения, предлагаемого в формах осуществления данного изобретения, задержка декодирования сокращается приблизительно вдвое путем одновременного вычисления alpha и beta. Кроме того, в отношении вычисления критического пути для alpha и beta каждого пути, с улучшением в управлении итеративное вычисление alpha/beta критического пути декодирования может быть выполнено двумя стадиями конвейерной обработки, по сравнению с первоначальной одной стадией конвейерной обработки, без уменьшения пропускной способности декодера, что значительно улучшает аппаратную реализуемость и стабильность декодера турбокода, а также улучшает его пропускную способность. Кроме того, с точки зрения аппаратных ресурсов, способ вычисления alpha и beta в противоположных направлениях просто увеличивает занятие некоторых ресурсов регистров, но не увеличивает занятие ресурсов устройств RAM, что оказывает небольшое воздействие на масштаб всей схемы конструкции.
Как должно быть очевидно для специалистов в данной области техники, каждый из упомянутых модулей или шагов данного изобретения может быть реализован универсальными вычислительными устройствами; модули или шаги могут быть сосредоточены в одном вычислительном устройстве или распределены в сети, сформированной многочисленными вычислительными устройствами; выборочно они могут быть реализованы кодами программы, которые могут выполняться вычислительным устройством; таким образом, модули или шаги могут храниться в запоминающем устройстве и выполняться вычислительным устройством; и при некоторых обстоятельствах показанные или описанные шаги могут выполняться в различном порядке или могут быть независимо изготовлены как отдельные модули интегральной схемы, или многочисленные модули или шаги могут быть реализованы так, чтобы быть единственным модулем интегральной схемы. Таким образом, данное изобретение не ограничено никакой конфетной комбинацией аппаратных и программных средств.
Вышеприведенное описание представляет только предпочтительные формы осуществления данного изобретения, которые не ограничивают данное изобретение; для специалистов в данной области техники будет очевидно, что данное изобретение может иметь различные модификации и разновидности. Все любые изменения, эквивалентные замены, улучшения и т.д. в пределах принципов данного изобретения включены в объем данного изобретения.

Claims (13)

1. Способ декодирования турбокода, характеризующийся тем, что в каждой процедуре итерации при выполнении многопутевого параллельного декодирования декодируемых кодовых блоков, когда модуль декодирования каждого пути выполняет декодирование, способ включает:
получение модулем декодирования для декодируемых кодовых блоков в текущем пути всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу;
получение модулем декодирования всех логарифмических отношений правдоподобия текущего пути согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным, а также всем метрикам ветвей декодируемых кодовых блоков; и
получение модулем декодирования априорной информации и вывод результата декодирования текущего пути согласно всем логарифмическим отношениям правдоподобия.
2. Способ по п.1, отличающийся тем, что получение модулем декодирования всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу включает:
получение модулем декодирования всех метрик ветвей текущего пути посредством рекуррентного вычисления от начала к концу и получение всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу согласно всем полученным метрикам ветвей; и в то же самое время
получение модулем декодирования всех метрик ветвей текущего пути посредством рекуррентного вычисления от конца к началу и получение всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу согласно всем метрикам ветвей, полученным в этот раз.
3. Способ по п.2, отличающийся тем, что получение модулем декодирования всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу согласно всем полученным метрикам ветвей включает:
при рекуррентном вычислении первой, считая от начала к концу, из первых промежуточных переменных передней половины декодируемых кодовых блоков текущего пути после выполнения операции суммирования во время выполнения операции нормализации, выполнение модулем декодирования операции суммирования для рекуррентного вычисления первой, считая от начала к концу, из первых промежуточных переменных задней половины декодируемых кодовых блоков; и
выполнение модулем декодирования операции суммирования для рекуррентного вычисления второй, считая от начала к концу, из первых промежуточных переменных передней половины и в то же самое время выполнение операции нормализации первой, считая от начала к концу, из первых промежуточных переменных задней половины, затем выполнение операции суммирования для второй, считая от начала к концу, из первых промежуточных переменных задней половины во время выполнения операции нормализации второй, считая от начала к концу, из первых промежуточных переменных передней половины и так далее, чтобы получить все первые промежуточные переменные текущего пути посредством рекуррентного вычисления.
4. Способ по п.3, отличающийся тем, что получение модулем декодирования всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу согласно всем полученным метрикам ветвей включает:
при рекуррентном вычислении первой, считая от конца к началу, из вторых промежуточных переменных задней половины декодируемых кодовых блоков текущего пути после выполнения операции суммирования во время выполнения операции нормализации выполнение модулем декодирования операции суммирования для рекуррентного вычисления первой, считая от конца к началу, из вторых промежуточных переменных передней половины текущего пути декодируемых кодовых блоков; и
выполнение модулем декодирования операции суммирования для рекуррентного вычисления второй, считая от конца к началу, из вторых промежуточных переменных задней половины, и в то же самое время выполнение операции нормализации первой, считая от конца к началу, из вторых промежуточных переменных передней половины, и выполнение операции суммирования для второй, считая от конца к началу, из вторых промежуточных переменных передней половины во время выполнения операции нормализации второй, считая от конца к началу, из вторых промежуточных переменных задней половины и так далее, чтобы получить все вторые промежуточные переменные текущего пути посредством рекуррентного вычисления.
5. Способ по п.4, отличающийся тем, что он дополнительно включает: сохранение в памяти модулем декодирования первых промежуточных переменных, соответствующих передней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих передней половине кодовых блоков задней половины; а также сохранение в памяти модулем декодирования вторых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины.
6. Способ по п.5, отличающийся тем, что получение модулем декодирования всех логарифмические отношений правдоподобия текущего пути согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным, а также всем метрикам ветвей декодируемых кодовых блоков включает:
при рекуррентном вычислении первых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, каждый раз получение одной из первых промежуточных переменных посредством рекуррентного вычисления, считывание модулем декодирования хранящейся в памяти второй промежуточной переменной, соответствующей этой позиции, и получение одного логарифмического отношения правдоподобия, соответствующего этой позиции, согласно первой промежуточной переменной, второй промежуточной переменной и метрике ветви, соответствующих этой позиции; и
при рекуррентном вычислении вторых промежуточных переменных, соответствующих передней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих передней половине кодовых блоков передней половины, получение каждый раз одной из вторых промежуточных переменных посредством рекуррентного вычисления, считывание модулем декодирования хранящейся в памяти первой промежуточной переменной, соответствующей этой позиции, и получение одного логарифмического отношения правдоподобия, соответствующего этой позиции, согласно второй промежуточной переменной, первой промежуточной переменной и метрике ветви, соответствующих этой позиции.
7. Способ по любому из пп.1-6, отличающийся тем, что после получения результата декодирования каждого пути способ дополнительно включает:
выполнение проверки циклическим избыточным кодом (CRC) согласно результату декодирования каждого пути и коду CRC декодируемого кодового блока, и если результат проверки удовлетворительный, то остановку итерации и завершение процесса декодирования, а в противном случае - выполнение следующего итерационного процесса с использованием априорной информации, выводимой каждым путем.
8. Устройство для турбокода, характеризующееся тем, что оно содержит модули декодирования множества путей, причем модуль декодирования каждого пути содержит:
модуль рекуррентного вычисления, сконфигурированный так, чтобы для декодируемых кодовых блоков в текущем пути получать все первые промежуточные переменные текущего пути посредством рекуррентного вычисления от начала к концу и в то же самое время получать все вторые промежуточные переменные текущего пути посредством рекуррентного вычисления от конца к началу;
модуль вычисления логарифмического отношения правдоподобия (LLR), сконфигурированный так, чтобы получать все отношения LLR текущего пути согласно всем полученным первым промежуточным переменным и вторым промежуточным переменным, а также всем метрикам ветвей декодируемых кодовых блоков; и
модуль жесткого решения, сконфигурированный так, чтобы принимать жесткое решение на основании всех отношений LLR, полученных модулем вычисления LLR, и выводить результат жесткого решения в качестве результата декодирования.
9. Устройство по п.8, отличающееся тем, что модуль рекуррентного вычисления содержит:
первый модуль вычисления метрик ветвей, сконфигурированный для получения всех метрик ветвей текущего пути посредством рекуррентного вычисления от начала к концу;
первый модуль вычисления промежуточной переменной, сконфигурированный для получения всех первых промежуточных переменных текущего пути посредством рекуррентного вычисления от начала к концу согласно всем метрикам ветвей, полученным первым модулем вычисления метрик ветвей;
второй модуль вычисления метрик ветвей, сконфигурированный для получения всех метрик ветвей текущего пути посредством рекуррентного вычисления от конца к началу; и
второй модуль вычисления промежуточной переменной, сконфигурированный для получения всех вторых промежуточных переменных текущего пути посредством рекуррентного вычисления от конца к началу согласно всем метрикам ветвей, полученным вторым модулем вычисления метрик ветвей.
10. Устройство по п.9, отличающееся тем, что первый модуль вычисления промежуточной переменной содержит первый блок суммирования и первый блок нормализации, причем
первый блок суммирования сконфигурирован для выполнения операции суммирования в процессе рекуррентного вычисления каждой из первых промежуточных переменных; и
первый блок нормализации сконфигурирован для выполнения операции нормализации в процессе рекуррентного вычисления каждой из первых промежуточных переменных.
11. Устройство по п.9, отличающееся тем, что второй модуль вычисления промежуточной переменной содержит второй блок суммирования и второй блок нормализации, причем
второй блок суммирования сконфигурирован для выполнения операции суммирования в процессе рекуррентного вычисления каждой из вторых промежуточных переменных; и
второй блок нормализации сконфигурирован для выполнения операции нормализации в процессе рекуррентного вычисления каждой из вторых промежуточных переменных.
12. Устройство по любому из пп.8-10, отличающееся тем, что модуль декодирования дополнительно содержит:
модуль памяти, сконфигурированный для хранения первых промежуточных переменных, соответствующих передней половине кодовых блоков передней половины, и первых промежуточных переменных, соответствующих первой половине кодовых блоков задней половины, а также вторых промежуточных переменных, соответствующих задней половине кодовых блоков задней половины, и вторых промежуточных переменных, соответствующих задней половине кодовых блоков передней половины.
13. Устройство по любому из пп.8-10, отличающееся тем, что модуль декодирования дополнительно содержит:
выходной модуль управления, сконфигурированный для выполнения проверки при помощи циклического кода (CRC) согласно результату декодирования каждого пути и коду CRC декодируемых кодовых блоков, и если результат проверки удовлетворительный, то остановки итерации и завершения процесса декодирования, а в противном случае - выполнения следующего итерационного процесса с использованием априорной информации, выводимой каждым путем.
RU2013152333/08A 2011-04-26 2012-04-06 Способ и устройство для декодирования турбокода RU2571597C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201110105086.0A CN102158235B (zh) 2011-04-26 2011-04-26 turbo译码的方法及装置
CN201110105086.0 2011-04-26
PCT/CN2012/073593 WO2012146124A1 (zh) 2011-04-26 2012-04-06 Turbo译码的方法及装置

Publications (2)

Publication Number Publication Date
RU2013152333A RU2013152333A (ru) 2015-06-10
RU2571597C2 true RU2571597C2 (ru) 2015-12-20

Family

ID=44439457

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2013152333/08A RU2571597C2 (ru) 2011-04-26 2012-04-06 Способ и устройство для декодирования турбокода

Country Status (4)

Country Link
EP (1) EP2704330A4 (ru)
CN (1) CN102158235B (ru)
RU (1) RU2571597C2 (ru)
WO (1) WO2012146124A1 (ru)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103812510A (zh) * 2012-11-15 2014-05-21 中兴通讯股份有限公司 译码方法及装置
CN103475380A (zh) * 2013-09-06 2013-12-25 清华大学 用于图像处理器的并行Turbo 译码方法
CN103986557B (zh) * 2014-05-23 2017-06-13 西安电子科技大学 低路径延迟的LTE Turbo码并行分块译码方法
CN107733446B (zh) * 2016-08-12 2019-06-07 华为技术有限公司 译码方法及设备、译码器
CN109379088B (zh) * 2018-12-13 2022-03-08 浙江天则通信技术有限公司 一种并行Turbo码迭代译码的方法及系统
CN113691263B (zh) * 2021-08-19 2024-02-27 Oppo广东移动通信有限公司 多比特并行校验方法及装置、存储介质及Turbo译码器
CN113992213B (zh) * 2021-10-28 2024-06-04 成都星联芯通科技有限公司 一种双路并行译码存储设备及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957376B2 (en) * 2000-03-16 2005-10-18 Infineon Technologies Ag Turbo decoder and turbo decoding method
RU2273093C2 (ru) * 2002-08-06 2006-03-27 Самсунг Электроникс Ко., Лтд. Устройство и способ турбодекодирования
US7269777B2 (en) * 2003-03-12 2007-09-11 Infineon Technologies Ag Decoding apparatus, trellis processor, and method for operating the decoder
CN101964665A (zh) * 2010-10-22 2011-02-02 上海交通大学 turbo解码中基于Log-MAP的译码方法及其译码装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6980605B2 (en) * 2000-01-31 2005-12-27 Alan Gatherer MAP decoding with parallelized sliding window processing
JP4185314B2 (ja) * 2002-06-07 2008-11-26 富士通株式会社 情報記録再生装置、光ディスク装置及び、データ再生方法
JP4554366B2 (ja) * 2002-09-18 2010-09-29 エヌエックスピー ビー ヴィ データウィンドウを使用してデータを復号化するための方法
KR100606023B1 (ko) * 2004-05-24 2006-07-26 삼성전자주식회사 고속 터보 복호화 장치
US7925964B2 (en) * 2006-12-22 2011-04-12 Intel Corporation High-throughput memory-efficient BI-SOVA decoder architecture
CN101026439B (zh) * 2007-02-07 2012-08-29 重庆重邮信科通信技术有限公司 一种提高Turbo码译码速率的译码方法
US8171384B2 (en) * 2008-06-27 2012-05-01 Freescale Semiconductor, Inc. Device having turbo decoding capabilities and a method for turbo decoding
CN101651458A (zh) * 2008-08-13 2010-02-17 华为技术有限公司 Turbo并行译码方法、装置及系统
CN102340320B (zh) * 2011-07-08 2013-09-25 电子科技大学 卷积Turbo码双向并行译码方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957376B2 (en) * 2000-03-16 2005-10-18 Infineon Technologies Ag Turbo decoder and turbo decoding method
RU2273093C2 (ru) * 2002-08-06 2006-03-27 Самсунг Электроникс Ко., Лтд. Устройство и способ турбодекодирования
US7269777B2 (en) * 2003-03-12 2007-09-11 Infineon Technologies Ag Decoding apparatus, trellis processor, and method for operating the decoder
CN101964665A (zh) * 2010-10-22 2011-02-02 上海交通大学 turbo解码中基于Log-MAP的译码方法及其译码装置

Also Published As

Publication number Publication date
EP2704330A1 (en) 2014-03-05
CN102158235A (zh) 2011-08-17
CN102158235B (zh) 2016-11-23
EP2704330A4 (en) 2014-12-17
WO2012146124A1 (zh) 2012-11-01
RU2013152333A (ru) 2015-06-10

Similar Documents

Publication Publication Date Title
RU2571597C2 (ru) Способ и устройство для декодирования турбокода
KR101323444B1 (ko) 반복적 디코더 및 반복적 디코딩 방법
JP5479580B2 (ja) Lteにおける並列turboデコーディングの方法及び装置
JP4038519B2 (ja) 統合ノード処理を用いる低密度パリティ検査符号の復号方法及び装置
JP4227481B2 (ja) 復号装置および復号方法
CN104092470B (zh) 一种Turbo码译码装置及方法
CN104767537A (zh) 一种用于OFDM电力线通信系统的Turbo译码方法
JP2004343716A (ja) 畳み込み符号化信号の伝送形式をブラインド検出する方法および復号器
US10084486B1 (en) High speed turbo decoder
US7925964B2 (en) High-throughput memory-efficient BI-SOVA decoder architecture
EP1128560B1 (en) Apparatus and method for performing SISO decoding
CN103595424B (zh) 分量译码方法、译码器及Turbo译码方法、装置
CN103856218B (zh) 译码处理方法及译码器
US20050149836A1 (en) Maximum a posteriori probability decoding method and apparatus
CN103916141B (zh) Turbo码译码方法及装置
CN113872615A (zh) 一种可变长度的Turbo码译码器装置
JP2010130271A (ja) 復号器および復号方法
CN103475380A (zh) 用于图像处理器的并行Turbo 译码方法
US7917834B2 (en) Apparatus and method for computing LLR
JP3892471B2 (ja) 復号方法
TWI565246B (zh) 迴旋編碼的解碼方法
CN103701475A (zh) 移动通信系统中8比特运算字长Turbo码的译码方法
US9866240B2 (en) Map algorithm-based turbo decoding method and apparatus, and computer storage medium
CN113824452B (zh) 基于网格图的译码方法、分量译码器和信道译码器
CN113765622B (zh) 分支度量初始化方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20160530

PD4A Correction of name of patent owner