RU2246751C2 - Высокоскоростной модуль сложения (сравнения) выбора для декодера витерби - Google Patents

Высокоскоростной модуль сложения (сравнения) выбора для декодера витерби Download PDF

Info

Publication number
RU2246751C2
RU2246751C2 RU2002113295/09A RU2002113295A RU2246751C2 RU 2246751 C2 RU2246751 C2 RU 2246751C2 RU 2002113295/09 A RU2002113295/09 A RU 2002113295/09A RU 2002113295 A RU2002113295 A RU 2002113295A RU 2246751 C2 RU2246751 C2 RU 2246751C2
Authority
RU
Russia
Prior art keywords
metrics
states
metric
state
final
Prior art date
Application number
RU2002113295/09A
Other languages
English (en)
Other versions
RU2002113295A (ru
Inventor
Дэвид ХАНСКВИН (US)
Дэвид ХАНСКВИН
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 RU2002113295A publication Critical patent/RU2002113295A/ru
Application granted granted Critical
Publication of RU2246751C2 publication Critical patent/RU2246751C2/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/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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • 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/6566Implementations concerning memory access contentions
    • 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/395Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using a collapsed trellis, e.g. M-step algorithm, radix-n architectures with n>2
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
    • 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/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback

Landscapes

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

Abstract

Изобретение относится к приложениям алгоритма Витерби и, в частности, к усовершенствованным системе и способу осуществления высокоскоростной операции сложения/сравнения/выбора (ССВ) по схеме “бабочка” в реализации алгоритма Витерби. Его использование позволяет получить технический результат в виде повышения эффективности при осуществлении высокоскоростных операций ССВ по схеме “бабочка” в реализации алгоритма Витерби. Технический результат достигается за счет того, что система содержит первый элемент памяти для хранения совокупности метрик исходных состояний, мультиплексор, способный выбирать между первым и вторым действующими путями на основании четных и нечетных тактов, механизм ССВ, который вычисляет метрики конечных состояний для каждой из метрик состояний. Второй элемент памяти, подключенный к механизму ССВ и мультиплексору, используется для временного хранения метрик конечных состояний. Мультиплексор выбирает первый действующий путь в течение четных тактов и подает метрики исходных состояний, извлеченные из первого элемента памяти, на механизм ССВ для порождения метрик конечных состояний. В течение нечетных циклов мультиплексор выбирает второй действующий путь для доступа ко второму элементу памяти и использования ранее вычисленных метрик конечных состояний в качестве метрик промежуточных исходных состояний. 2 с. и 19 з.п. ф-лы, 6 ил.

Description

Настоящее изобретение относится, в целом, к приложениям алгоритма Витерби. В частности, настоящее изобретение относится к усовершенствованным системе и способу осуществления высокоскоростной операции сложения/сравнения/выбора (ССВ) по схеме “бабочка” в реализации алгоритма Витерби.
Алгоритм Витерби был впервые представлен в 1967 г. как способ декодирования сигналов, подвергнутых сверточному кодированию. После этого алгоритм получил широкое распространение в области передачи данных, записи данных и обработки цифровых сигналов. Применение алгоритма способствовало решению разнообразных вопросов, касающихся цифровой оценки, в том числе снижения ошибок записи на носитель информации, удаления межсимвольных помех и усовершенствования распознавания символов и текста.
По этой причине алгоритм Витерби стал основным способом декодирования с исправлением ошибок данных, подвергнутых сверточному кодированию. Для таких приложений алгоритм Витерби определяет, на основании ряда измерений, путь с минимальной метрикой ошибок, пересекающий решетку, характеризующую все возможные состояния кодера. Этот кратчайший путь иллюстрирует наиболее правдоподобную последовательность, порождаемую сверточным кодером.
На фиг.1А изображен типичный сверточный кодер. Сверточный кодер 100 содержит 8-разрядный секционированный сдвиговый регистр 110 и пару сумматоров 120 типа “исключающее ИЛИ”, которые преобразуют последовательность входных информационных битов U(D) 105 в последовательность выходных кодовых символов 125 C0(D), C1(D). В частности, фиг.1А демонстрирует пример кодирования со скоростью 1/2, которое порождает два выходных кодовых символа 125 C0(D), C1(D) для каждого входного информационного бита U(D) 105. Заметим, что конкретные кодовая скорость и конфигурация сверточного кодера 100 показаны лишь в иллюстративных целях и никоим образом не ограничивают действие или объем различных вариантов осуществления изобретения. Поэтому, применительно к вариантам осуществления изобретения, можно использовать разные кодовые скорости, например 1/3 или 3/4.
Кодер 100 генерирует каждый выходной кодовый символ 125 C0(D), C1(D), подвергая входной битовый поток U(D) 105 операциям сдвига и исключительного ИЛИ, согласно конкретной конфигурации сдвигового регистра, заданной порождающими многочленами кодирования G0(D), G1(D). В данном случае на фиг.1А показана схема соединений сдвигового регистра, которая обеспечивает порождающий многочлен кодирования со скоростью
Figure 00000002
. Коэффициенты многочлена G0(D) подвергают свертке со входной последовательностью данных U(D) 105, чтобы генерировать выходной символ 125 сверточного кода C0(D). Аналогично, на фиг.1А показан порождающий многочлен кодирования со скоростью
Figure 00000003
, коэффициенты которого подвергают свертке со входной информационной последовательностью U(D) 105, чтобы генерировать выходной символ 125 сверточного кода C1(D). Ограничительная длина К кодера 100 на единицу превышает количество элементов задержки в сдвиговом регистре 110; для кодера 100 ограничительная длина К равна 9. Для каждого информационного бита 105, введенного в кодер 100, выходные кодовые символы 125 C0(D), C1(D) зависят от введенного бита равно, как и от предыдущих К-1 входных битов. Поэтому кодер 100 порождает выходные кодовые символы 125 C0(D), C1(D), которые способны пробегать 2K-l возможных состояний кодера.
В типичной системе связи выходные кодовые символы 125 C0(D), C1(D) затем модулируют и передают по зашумленному каналу (не показан). В итоге декодер принимает зашумленный поток данных, подвергнутых сверточному кодированию, и применяет алгоритм Витерби, который использует свойства сверточных кодов окончательно определять входную информационную последовательность U(D) 105.
Достоинство сверточных кодов состоит в повторяемости их структуры с высокой степенью, которая обеспечивает симметричное кодовое дерево. Теоретически сверточный код способен порождать бесконечную последовательность кодовых символов. Однако, ввиду его симметрии, количество состояний, подлежащих оцениванию при построении наиболее вероятного пути, ведущего к введенной последовательности данных U(D) 105, снижается до 2K-1 (в данном случае, 256) состояний. Кроме того, при декодировании такого симметричного кода интерес представляет только наиболее вероятный (т.е. выбранный) локальный путь - все остальные пути можно отбросить и более не рассматривать. Дело в том, что наиболее вероятный глобальный путь через состояние обязательно должен следовать выбранному локальному пути через это состояние.
Декодер Витерби опирается на эти свойства кода, функционируя как конечный автомат, имеющий ограниченное множество переходов между состояниями. Декодер строит гипотезу по каждому из 2к-1 возможных состояний кодера и определяет вероятность перехода кодера из каждого из этих состояний в следующее множество 2к-l возможных состояний кодера на основании результатов измерений, полученных из принятого зашумленного потока данных, подвергнутых сверточному кодированию.
Вероятность перехода выражают величиной, которую называют метрикой и которая пропорциональна логарифму значения вероятности, взятому с отрицательным знаком. Очевидно, что чем меньше метрика, тем выше вероятность наступления события. Существуют два типа метрики: метрика состояния и метрика ветви. Метрика состояния, именуемая также метрикой пути, выражает относительную вероятность того, что переданный набор кодовых символов прошел через конкретное состояние. Метрика ветви выражает условную вероятность того, что был передан переход из конкретного исходного состояния в конкретное конечное состояние (полагая, что исходное состояние было правильным).
Алгоритм Витерби можно кратко охарактеризовать следующим образом: когда время разделено на d выборок и для каждой временной выборки k существует n возможных состояний S k i (где i - целое число из 1•n, и k - целое число из 1•d). Для k>l каждого состояния можно достичь путем из любого из р предшествующих состояний S k-1 j (где j - целое число из 1•d). Для каждого состояния идентифицируют и сохраняют тот путь из этих р возможных путей, который имеет минимальную метрику, а также сохраняют значение этой метрики:
Инициализация: для начальной временной выборки (k=1) инициализируют метрику, сохраненную для каждого состоянии S 1 i . Если исходное состояние известно, то метрику этого состояния можно положить равной нулю, а метрики других состояний S 1 i полагают равными большому числу. Эта схема стимулирует алгоритм при последующих итерациях к выбору лишь тех путей, которые исходят из нужного исходного состояния.
Итерация: для каждой временной выборки (k=2•d) посещают все эти состояния S k i . Для каждого состояния S k i вычисляют метрику каждого пути j, ведущего к этому состоянию, как сумму (а) метрики предшествующего состояния S k-1 j и (b) метрики bm k j ветви, ведущей из состояния S k-1 j к состоянию S k i Среди р путей, ведущих к каждому состоянию S k i , выбирают путь с наименьшей метрикой (т.е. выбранный путь) и сохраняют его для этого состояния, и метрику этого пути также сохраняют как метрику sm k i этого состояния.
Обратная цепь: после посещения всех состояний, отвечающих последней временной выборке, идентифицируют состояние S d i , имеющее наименьшую метрику состояния. Из памяти считывают выбранный путь к этому состоянию и, таким образом, идентифицируют соответствующее состояние для временной выборки d-1. Затем, из памяти считывают выбранный путь к этому последнему состоянию, и повторяют процесс обратной цепи до тех пор, пока не идентифицируют все состояния, содержащие путь, ведущий к состоянию S d i (т.е. наиболее вероятный путь через матрицу состояние-время).
Таким образом, для любой временной выборки k алгоритм Витерби вычисляет метрику путей, ведущих к состояниям S k n , определяет выбранные пути (по одному для каждого из n состояний S k n ) и сохраняет n выбранных путей, а также их соответствующие метрики. Это все равно, что сохранять, для каждого рассматриваемого конечного состояния, исходное состояние, из которого к нему можно придти. Поэтому любая реализация алгоритма Витерби предусматривает использование модуля 150 сложения/сравнения/выбора (ССВ), показанного на фиг.1В, для выполнения этих операций. Модуль 150 ССВ предназначен для вычисления значений метрики состояния, а также для определения взаимосвязи между исходным и конечным состояниями посредством операций ССВ по схеме “бабочка”. Одна операция 155 ССВ по схеме “бабочка” представлена на фиг.2.
Операция 155 “бабочка” содержит только те из возможных переходов между состояниями, которые могли бы произойти для двух конкретных исходных состояний кодера 100. Это отчасти объясняется тем фактом, что в любое данное время состояние кодера 100 получено из предыдущего состояния кодера сдвигом вправо на 1 разряд. Следующий (после сдвига вправо) информационный бит определяет, какой переход произошел из исходного состояния, и становится старшим разрядом (СР) конечного состояния. Поэтому существует только два возможных конечных состояния, в которые возможен переход из исходного состояния. Таким образом, о чем свидетельствует фиг.2, кодер 100 может переходить только из исходного состояния “х0” в конечное состояние “0х” или “1х” и из исходного состояния “х1” в конечное состояние “0х” или “1х”, в зависимости от значения введенного информационного бита U(D). Заметим, что обозначение “х0” и “х1” указывает, что младший разряд (МР) исходного состояния равен “0” и “1” соответственно, а более высокие разряды представлены как “х”; и обозначение “0х” или “1х” указывает, что СР конечных состояний равен 0 или 1 соответственно, а более низкие разряды представлены как “х”. Величина “х” имеет одно и то же значение (например, 7-разрядное значение) независимо от того, входит она в состав представления исходного состояния или конечного состояния.
На фиг.2 также отражен тот факт, что каждый переход из исходного состояния в конечное состояние порождает гипотетический набор кодовых символов H0(D), H1(D) или
Figure 00000004
Figure 00000005
В действительности, когда кодер 100 действует по параллельным ветвям схемы “бабочка” 155 ССВ (например, осуществляет переходы из “х0” в “0х” или из “х1” в “1х”), для обоих параллельных ветвей генерируются кодовые символы Н0(D), H1(D). Эта особенность отчасти объясняется, в целом, повторяющимся характером сверточных кодов, а также использованием порождающих многочленов кодирования, в которых СБ и МБ заданы равными единице (т.е. в обоих многочленах G0(D) и G1(D) коэффициенты g0 и g8 равны 1). Аналогично, кодовые символы
Figure 00000006
Figure 00000007
генерируются, когда кодер 100 действует по любой из диагональных ветвей схемы “бабочка” 155 (например, осуществляет переходы из “х0” в “1х” или из “х1” в “0x”).
Согласно вышесказанному, модуль 150 ССВ вычисляет метрики tm0x, tm1x конечных состояний. Логическая схема 150 ССВ сохраняет метрики smx0, smx1 исходных состояний, которые связаны с вероятностью того, что принятый набор кодовых символов ведет к исходным состояниям “х0” и “х1”. Согласно фиг.1В, приняв набор кодовых символов, модуль 140 метрики ветви вычисляет значения метрики bmij,
Figure 00000008
ветви. Модуль 150 ССВ “суммирует” метрику bmij,
Figure 00000009
ветви, соответствующую каждому из двух переходов, ведущих к конкретному конечному состоянию, с соответствующей метрикой smx0, smx1 состояния. Метрики bmij,
Figure 00000010
ветви выражают условную вероятность перехода из конкретного исходного состояния в конкретное конечное состояние. Метрика bmij ветви указывает, насколько близко принятые кодовые символы совпадают с гипотетическими кодовыми символами H0(D), H1(D) 125, сформированными модулем 150 ССВ, а метрика
Figure 00000011
ветви указывает, насколько точно принятые кодовые символы совпадают с
Figure 00000012
Figure 00000013
Значение метрик bmij,
Figure 00000014
ветви зависит только от расстояния между принятой парой символов и гипотетической парой символов H0(D), H1(D).
Для каждого из двух конечных состояний модуль ССВ 150 сравнивает суммы пар метрика исходного состояния/метрика ветви, для исходных состояний из которых можно придти в конечное состояние. Затем, модуль 150 ССВ “выбирает” наиболее правдоподобный из переходов в каждое конечное состояние, представленный наименьшей суммой метрик, и присваивает конечному состоянию полученную величину в качестве метрики tm0x, tm1x конечного состояния.
Согласно вышесказанному, логическая схема модуля 150 ССВ суммирует метрику bmij,
Figure 00000015
ветви с метрикой smx0, smx1 исходного состояния для каждого из двух переходов, ведущих в конечное состояние, и принимает решение, что наиболее правдоподобный путь в это конечное состояние пришел от перехода, который дает меньшую сумму метрик. Затем, выбирают меньшую сумму метрик и назначают ее новой метрикой tm0x, tm1x конечного состояния. Модуль 150 ССВ также сохраняет метрики состояний (т.е. стоимость, связанная с наиболее вероятным путем, ведущим в каждое конечное состояние) в ОЗУ 145 состояний. Согласно фиг.1В, выбор наименьшей суммы метрик приводит к сохранению одноразрядной величины, именуемой битом решения, в памяти путей в модуле 160 памяти обратной цепи. Бит решения, который представляет собой МР метрики выигрышного исходного состояния, указывает, какой из двух переходов был выбран.
Модуль 160 памяти обратной цепи сохраняет бит решения, соответствующий наиболее вероятному переходу в каждое конечное состояние. Для кодера 100, имеющего ограничительную длину К=9, генерируется 2к-l или 256 битов решений, каждый из которых соответствует одному из 256 возможных состояний кодера 100. После генерации и сохранения матрицы всей этой информации для заданного количества состояний модуль 160 обратной цепи начинает с состояния, которое с наибольшим правдоподобием возглавляет правильный путь (т.е. состояния, которое из всех, соответствующих самому последнему интервалу времени, имеет наименьшую стоимость). После этого модуль 160 обратной цепи осуществляет обратный проход по цепи, считывая последние Р×256 (т.е. P×2к-l) битов решения, чтобы выбрать Р битов, где Р - эффективная глубина обратной цепи памяти путей. Поскольку биты решения выражают наиболее правдоподобную гипотезу о множестве битов, прошедших через кодер 100, они являются наилучшими данными, которые может выдать декодер. В результате, чем глубже в историю решений погружается цепь, тем с большим правдоподобием полученный путь сливается с правильным путем. Таким образом, чем больше глубина Р обратной цепи, тем выше качество работы декодера, но тем больше задержки на конвейере и памяти. Поэтому глубина Р обратной цепи, в общем случае, должна превосходить ограничительную длину К кодера 100 в 3-10 раз. Для кодера с К=9 глубину Р обратной цепи обычно задают равной 64.
Цикл обработки ССВ задает период, в течение которого модуль 150 ССВ вычисляет новые метрики tm0x, tm1x конечного состояния для заданного количества принятых кодовых символов. Для сверточного кода со скоростью 1/2 каждая пара принятых кодовых символов требует 1 цикл обработки для вычислений метрики. Длина цикла обработки равна количеству тактов, необходимых для осуществления операций ССВ по схеме “бабочка” над всеми состояниями кодера для двух наборов принятых символов. Например, декодеру Витерби, имеющему одну схему “бабочка” ССВ, что отражено на фиг.2, в общем случае, требуется 128 тактов на каждый принятый кодовый символ для осуществления операций над всеми 256 состояниями кодера 100. Для повышения скорости обработки можно использовать массив схем “бабочка” ССВ той или иной архитектуры, что позволяет осуществлять один цикл обработки за меньшее количество тактов за счет применения множественных схем “бабочка” ССВ.
Примером такой архитектуры является массив 300 схем “бабочка” ССВ размерности 8×1, изображенный на фиг.3. Массив 300 обеспечивает 8-кратное увеличение скорости обработки за счет параллельного использования 8 модулей 155 схем “бабочка” ССВ. Для набора принятых кодовых символов массив 300 схем “бабочка” размерности 8×1 задействует все 8 модулей 155 схем “бабочка” для считывания 16 исходных состояний и вычисления 16 соответствующих метрик tm0x и tm1x конечных состояний за один такт. Согласно вышесказанному, модуль 155 ССВ принимает метрику состояния для каждого из исходных состояний и метрики bmij,
Figure 00000016
ветви для каждого из четырех возможных переходов. Метрика bmij,
Figure 00000017
ветви зависит только от значения принятой пары кодовых символов и гипотетической пары символов H0(D), H1(D) или
Figure 00000018
Figure 00000019
и является мерой расстояния между ними. Величина “X”, будучи составной частью двоичного представления исходного и конечного состояний, изображенных на фиг.3, представляет четырехразрядный групповой символ (т.е. Х=[Х0,Х1,Х2,Х3]), который регистрирует все 16 тактов, пробегая значения от 0 до 15. Таким образом, для двух наборов принятых кодовых символов, массив 300 схем “бабочка” размерности 8×1 вычисляет метрики tm0x, tm1x конечных состояний для всех 256 возможных состояний кодера 100 за 32 такта (т.е. по 16 тактов на каждый принятый кодовый символ).
Недостатком архитектуры массива 300 размерности 8×1 является то, что для каждого набора принятых кодовых символов необходимо считывать 16 метрик исходного состояния и одновременно генерировать необходимые метрики ветви в каждом из 16 тактов. Таким образом, для осуществления операций на массиве 300 бабочек размерности 8×1 требуется очень большой объем памяти.
Другим вариантом архитектуры массива является массив 400 схем “бабочка” ССВ размерности 4×2, изображенный на фиг.4. Массив 400 схем “бабочка” ССВ размерности 4×2 обеспечивает такое же увеличение скорости, что и массив 300 размерности 8×1, но за счет 2 наборов из 4 параллельно действующих модулей 155 схем “бабочка” ССВ. Массив 400 решает проблему объема памяти за счет временного сохранения метрик tm0x, tm1x промежуточных конечных состояний. Например, за один такт первый каскад массива 400 считывает 8 исходных состояний и вычисляет 8 соответствующих метрик tm0x, tm1x конечных состояний. Однако массив 400 не сразу сохраняет метрики tm0x, tm1x промежуточных конечных состояний. Напротив, в том же такте массив 400 осуществляет перестановку промежуточных конечных состояний для подачи их в качестве исходных состояний на второй каскад, а затем вычисляет 8 соответствующих метрик tm0x, tm1x конечных состояний для следующего набора принятых кодовых символов. Таким образом, подобно массиву 300 8×1, массив 400 способен вычислять метрики tm0x, tm1x конечных состояний для двух наборов принятых кодовых символов в течение 32 тактов.
Массив 400 схем “бабочка” ССВ 4×2 обладает тем преимуществом, что позволяет уменьшить объем памяти состояний модуля 150 ССВ, поскольку метрики промежуточных конечных состояний (т.е. метрики tm0x, tm1x конечных состояний первого каскада) не требуется считывать из памяти состояний модуля 150 ССВ или записывать в нее. Напротив, значения промежуточных конечных состояний комбинаторно переходят на следующий каскад, что позволяет избегать задержек и минимизировать необходимый объем памяти.
Однако массив 400 схем “бабочка” ССВ 4×2 также имеет свои ограничения. Например, преимущество снижения объема памяти состояний непосредственно обусловлено тем, что массив 400 осуществляет 2 каскада вычислений ССВ 150 за один такт. Этот критический путь может быть значительным ограничением в отношении более высоких тактовых частот.
Кроме того, как для массива 300 схем “бабочка” ССВ размерности 8×1, так и для массива 400 схем “бабочка” ССВ размерности 4×2 существует проблема производительности в отношении операции обратной цепи. Согласно вышесказанному, модуль 160 обратной цепи предназначен для сохранения битов решения, порожденных массивом ССВ, и для восстановления обратной цепи сохраненных битов решения для порождения декодированных битов решения. Для кодера с ограничительной длиной К=9 (например, кодера 100) массив ССВ в декодере генерирует 2K-1 или 256 битов решения для каждого набора принятых кодовых символов (т.е. по 1 биту решения для каждого из 256 возможных состояний кодера), и модуль 160 памяти обратной цепи обычно имеет глубину обратной цепи в памяти путей, составляющую Р=64 блока.
После 32 циклов обработки, в каждом из которых осуществляется вычисление метрик конечных состояний для двух наборов принятых символов, модуль 160 обратной цепи начинает с самого последнего цикла обработки (например, самого правого блока памяти В0 из 64 блоков памяти), согласно фиг.5А. Модуль 160 обратной цепи выявляет среди 256 битов решения, содержащихся в блоке В0 памяти обратной цепи, бит решения R0, соответствующий состоянию с наименьшим значением метрики. Это состояние определяется как наилучшее состояние и имеет 8-разрядный адрес BS0, что показано на фиг.5В. Модуль 160 обратной цепи считывает значение бита решения наилучшего состояния, после чего вводит это значение в адрес, сдвигая влево в BS0 младший разряд (т.е. bs0), согласно фиг.5В. На фиг.5В также показано, что значения других разрядов в адресе BS0 (т.е. bs6, bs5, bs4, bs3, bs2, bs1) также смещаются влево, что приводит к потере в BS0 старшего разряда (т.е. bs7) и формированию нового адреса BS1. Согласно фиг.5А, BS1 представляет собой адрес значения R1 наилучшего состояния в блоке B1 памяти обратной цепи. Затем, модуль 160 обратной цепи считывает значение бита решения, соответствующего адресу BS1, и вставляет со сдвигом влево это значение в адрес BS1, порождая новый адрес BS2, соответствующий наилучшему состоянию в блоке В2 памяти обратной цепи.
Эта операция считывания и вставки со сдвигом влево повторяется до тех пор, пока не будут обработаны все блоки памяти обратной цепи (т.е. Р=64 блока). В целом, операция обратной цепи предусматривает операции считывания в количестве, равном длине Р обратной цепи, поэтому, в данном случае, для обратного прохождения нужного пути и порождения декодированных битов решения требуется 64 операции считывания. Однако столь большое количество операций считывания может снижать эффективность и производительность процесса декодирования.
Вышеперечисленные проблемы обуславливают необходимость в системе и способе, которые обеспечивали бы эффективное осуществление высокоскоростных операций ССВ по схеме “бабочка” в реализации алгоритма Витерби.
Системы и способы, отвечающие принципам настоящего изобретения, позволяют решить вышеозначенную задачу обеспечения системы и способа осуществления высокоскоростных операций ССВ по схеме “бабочка” в реализации алгоритма Витерби.
Система и способ, отвечающие принципам настоящего изобретения, описанные здесь в общем виде и применительно к вариантам осуществления, предусматривают использование первого элемента памяти для хранения совокупности метрик исходных состояний. Первый элемент памяти подключен к мультиплексору, способному выбирать между первым и вторым действующими путями на основании четных и нечетных тактов. Мультиплексор подключен к механизму сложения/сравнения/выбора, который вычисляет метрики конечных состояний для каждой из метрик исходных состояний. Второй элемент памяти, подключенный к механизму сложения/сравнения/выбора и мультиплексору, используется для временного хранения метрик конечных состояний, в а третьем элементе памяти хранится заданный логический бит, соответствующий исходному состоянию, обеспечивающему наименьшее значение метрики конечного состояния. Итак, мультиплексор выбирает первый действующий путь в течение четных тактов и подает метрики исходных состояний, извлеченные из первого элемента памяти, на механизм сложения/сравнения/выбора для порождения метрик конечных состояний. В течение нечетных циклов мультиплексор выбирает второй действующий путь для доступа ко второму элементу памяти и использования ранее вычисленных метрик конечных состояний в качестве метрик промежуточных исходных состояний, что позволяет механизму сложения/сравнения/выбора порождать метрики конечных состояний на основании метрик промежуточных исходных состояний.
Прилагаемые чертежи, являющиеся неотъемлемой частью описания изобретения, иллюстрируют вариант осуществления изобретения и, совместно с описанием, поясняют задачи, преимущества и принципы изобретения. На чертежах:
фиг.1А - схема действия сверточного кодера с К=9 и скоростью 1/2;
фиг.1B - блок-схема системы, на которой изображены модули ССВ и обратной цепи;
фиг.2 - диаграмма переходов, иллюстрирующая операцию ССВ по схеме “бабочка”;
фиг.3 - диаграмма переходов, изображающая массив 8×1 схем “бабочка” ССВ;
фиг.4 - диаграмма переходов, изображающая массив 4×2 схем “бабочка” ССВ;
фиг.5А, 5В - функциональные диаграммы операции обратной цепи;
фиг.6А, 6В - схемы, изображающие вариант осуществления настоящего изобретения.
Нижеследующее подробное описание настоящего изобретения приведено со ссылкой на прилагаемые чертежи, иллюстрирующие предпочтительные варианты осуществления настоящего изобретения. Не выходя за рамки сущности и объема изобретения, можно предложить и другие варианты осуществления и их разновидности. Поэтому нижеследующее подробное описание не следует рассматривать как ограничение изобретения. Объем изобретения определен прилагаемой формулой изобретения.
Среднему специалисту в данной области очевидно, что описанное ниже настоящее изобретение можно реализовать в многочисленных различных вариантах осуществления программного, аппаратно-программного и аппаратного обеспечения в объектах, проиллюстрированных на фигурах. Реальная программа или специализированная управляющая схема, используемая для реализации настоящего изобретения, не ограничивает настоящее изобретение. Таким образом, настоящее изобретение будет описано без конкретной ссылки на реальную программу или специализированные аппаратные компоненты, и специалисты в данной области смогут, опираясь на приведенное здесь описание, разработать программное обеспечение и управляющую аппаратуру для реализации предпочтительного варианта осуществления настоящего изобретения.
Вариант осуществления настоящего изобретения изображен на фиг.6А, 6В. Вариант осуществления предусматривает использование массива 600 схем “бабочка” ССВ размерности 8×1, содержащего 8 параллельных модулей 155 схем “бабочка” ССВ для обеспечения 8-кратного увеличения скорости обработки. В отличие от других попыток добиться такого увеличения, массив 600 функционирует в течение разных тактов, что позволяет снизить необходимый объем памяти и, одновременно, ограничить количество вычислений, выполняемых за один такт.
Согласно фиг.6А, массив 600 использует 8 модулей 155 схем “бабочка” на протяжении четного такта для считывания очередной совокупности из 16 исходных состояний, идентифицируемой 4-разрядным счетчиком X. Затем, массив 600 вычисляет 16 соответствующих метрик tm0x, tm1x для текущего уровня решетки. После четного такта (т.е. в течение нечетного такта) массив 600 использует конечные состояния четного такта в качестве исходных состояний нечетного такта для следующего уровня решетки. Поэтому массив 600 использует значения tm0x, tm1x метрик конечных состояний четного такта в качестве значений smx0, smx1 метрик исходных состояний нечетного такта. Затем, массив 600 вычисляет метрики конечных состояний нечетного такта tm0x, tm1x в соответствии со значениями smx0, smx1 метрики для соответствующего уровня решетки.
Таким образом, для полной обработки двух наборов принятых символов, генерированных кодером с К=9 с помощью модифицированного массива 600 схем “бабочка” ССВ размерности 8×1, изображенного на фиг.6А, требуется 32 такта. В течение четных тактов массив 600 считывает очередную совокупность из 16 состояний, идентифицируемую 4-разрядным счетчиком Х с приращением, и вычисляет 16 соответствующих метрик tm0x, tm1x конечных состояний для первого набора принятых символов. В течение нечетных тактов массив 600 использует конечные состояния четного такта в качестве новых исходных состояний и вычисляет метрики tm0x, tm1x конечных состояний нечетного такта для второго набора принятых символов. Поэтому массив 600 в течение одного такта осуществляет только один уровень ССВ, тем самым преодолевая проблемы вычисления многоуровневого ССВ за один такт, присущие массиву 400 размерности 4×2.
На фиг.6В показана схема 650 декодера Витерби, поддерживающая модифицированный массив 600 схем “бабочка” ССВ размерности 8×1, изображенный на фиг.6А. Метрики smx0, smx1 исходных состояний для всех состояний сохраняются в ОЗУ 145 состояний. В иллюстративных целях начнем описание работы схемы 650 декодера Витерби с операции считывания из ОЗУ 145 состояний в течение четных тактов. Специалистам в данной области очевидно, что описание этого варианта осуществления также можно начать со считывания из ОЗУ 145 состояний в течение нечетных тактов. Аналогично, все операции считывания могут осуществляться в ходе нечетных тактов, а все операции записи могут осуществляться в ходе четных тактов или наоборот.
Поэтому в ходе четных тактов мультиплексор МУКС 670 настроен на выбор информации метрики исходного состояния для 16 последовательных состояний из ОЗУ 145, соответствующей первому набору принятых кодовых символов. Информация исходного состояния поступает непосредственно на модуль 150 ССВ, который содержит массив 600 размерности 8×1. Затем, массив 600 вычисляет соответствующие 16 метрик tm0x, tm1x конечных состояний, которые вновь поступают на ОЗУ 145 состояний и МУКС 670. Вычисленная информация конечного состояния затем поступает на регистр 680 для временного хранения информации конечного состояния. Временное хранение информации конечного состояния в регистре 680 позволяет массиву 600 обходиться без повторного сохранения информации состояния в памяти, тем самым снимая проблему объема памяти, характерную для массива 300 размерности 8×1.
В течение нечетных тактов мультиплексор МУКС 670 выбирает информацию метрики конечного состояния, вычисленную в течение предыдущего такта, содержащуюся в регистре 680. Затем, эта информация метрики конечного состояния используется в массиве 600 размерности 8×1 в качестве новых метрик smx0, smx1 исходных состояний. Затем, массив 600 обрабатывает информацию метрики исходного состояния, чтобы генерировать информацию метрики конечного состояния, соответствующую второму набору принятых кодовых символов. Информация метрики конечного состояния затем сохраняется в ОЗУ 145 состояний, чтобы использоваться в качестве метрик исходных состояний в течение следующей итерации. Для первого и второго наборов принятых кодовых символов этот процесс повторяется в течение 32 тактов для генерации 256 битов решения для каждого из двух наборов принятых символов. По завершении 32 тактов схема 650 декодера Витерби начинает процесс сначала, для следующих двух наборов принятых кодовых символов.
Схема 650 декодера Витерби также повышает производительность операции обратной цепи за счет уменьшения количества операций считывания, необходимого для генерации декодированных битов решения. Согласно вышесказанному, модуль 160 обратной цепи предназначен для сохранения битов решения, генерированных массивом ССВ. Кроме того, за два такта (т.е. в течение четного и нечетного тактов) модифицированный массив 600 размерности 8×1 генерирует 32 бита решения. Схема 650 декодера Витерби предусматривает сохранение этих 32 битов решения в виде одного 32-разрядного слова памяти, и, таким образом, биты решения, генерированные в течение четного и нечетного тактов, сохраняются в одном и том же слове памяти.
Итак, как было указано выше в связи с операциями обратной цепи, сначала, для задания начальной точки обратного прохождения цепи во времени, используется наилучшее состояние, идентифицирующее состояние с наименьшей метрикой, из последнего цикла обработки (т.е. значение бита решения наилучшего состояния). Поскольку слово памяти содержит 32 бита, существует 16 слов на цикл обработки (в силу 2 наборов принятых кодовых символов), и каждое из 32-разрядных слов памяти имеет уникальный 8-разрядный адрес. Один вариант осуществления предусматривает использование 4 битов адреса наилучшего состояния для выбора слова памяти, подлежащего считыванию, а 4 других битов адреса наилучшего состояния - для определения 16 битов из 32-разрядного слова памяти, подлежащих считыванию. В частности, если наилучшее состояние ВS0 имеет 8-разрядный адрес (bs7, bs6, bs5, bs4, bs3, bs2, bs1, bs0), то, согласно этому варианту осуществления, биты (bs5, bs4, bs3, bs2) предназначены для выбора конкретного слова памяти в блоке памяти В0, а биты (bs7, bs6, bs1, bs0) - для выбора бита решения R0 наилучшего состояния. Адрес BS1 нового наилучшего состояния формируется путем ввода бита решения R0 наилучшего состояния в ВS0 в качестве младшего бита со сдвигом влево (bs6, bs5, bs4, bs3, bs2, bs1, bs0, R0).
Поскольку вычисления ССВ производятся над двумя наборами принятых символов, исходные состояния, из которых можно придти в конечное состояние в соответствии с только что считанным битом решения, имеют свои собственные биты решения, которые хранятся в том же самом 32-разрядном слове памяти. Таким образом, вариант осуществления предусматривает выбор битов (bs6, bs1, bs0, R0) для выбора бита решения R1 следующего наилучшего состояния из второй половины 32-разрядного слова памяти. Итак, бит решения наилучшего состояния выбирают из половины битов 32-разрядного слова памяти, причем эти выбранные биты позволяют определить, какой бит решения из другой половины 32-разрядного слова памяти является следующим битом решения наилучшего состояния. Благодаря этому, количество операций считывания, необходимое для правильного прохождения нужного пути в обратном направлении цепи и генерации декодированных битов решения, снижается с коэффициентом 2. Таким образом, для модуля 160 обратной цепи, имеющего глубину памяти путей Р=64 блока памяти, требуется только 32 операции считывания.
Вышеприведенное описание предпочтительных вариантов осуществления настоящего изобретения носит иллюстративный характер, но не предназначено для исчерпывающего охвата или ограничения изобретения конкретной изложенной формой. Вышеописанные идеи изобретения предусматривают возможность модификаций и вариаций, которые также могут быть предложены в ходе практического применения изобретения. Например, архитектуру раскрытых здесь вариантов осуществления можно легко расширить до массива размерности 16×1 или массива размерности 32×1, где за один такт можно генерировать 32 или 64 состояния. Дополнительно, вместо работы на двух наборах принятых символов можно предложить варианты осуществления, предусматривающие работу на нескольких наборах принятых символов. Таким образом, следует подчеркнуть, что объем изобретения определяется прилагаемой формулой изобретения.

Claims (21)

1. Способ осуществления операции сложения(сравнения)выбора по схеме “бабочка” для реализации алгоритма Витерби, способ содержит этапы, на которых считывают в течение четных тактов совокупность метрик исходных состояний из первого элемента памяти, соответствующую первому набору принятых символов, вычисляют метрику конечного состояния для каждой из метрик исходных состояний, временно сохраняют метрики конечных состояний во втором элементе памяти, определяют, какая из метрик конечных состояний имеет наименьшее значение, сохраняют заданный логический бит, соответствующий наименьшему значению метрики конечного состояния, в третьем элементе памяти считывают в течение нечетных тактов метрики конечных состояний из второго элемента памяти и используют считанные метрики конечных состояний в качестве совокупности метрик промежуточных исходных состояний, соответствующих второму набору принятых символов, вычисляют метрику промежуточного конечного состояния для каждой из метрик промежуточных исходных состояний, определяют, какая из метрик промежуточных конечных состояний имеет наименьшее значение, сохраняют заданный логический бит, соответствующий наименьшему значению метрики промежуточного конечного состояния, в третьем элементе памяти.
2. Способ по п.1, по которому первый и второй наборы принятых символов закодированы с использованием ограничительной длины К.
3. Способ по п.2, по которому операцию сложения (сравнения)выбора по схеме “бабочка” осуществляют до тех пор, пока не достигнут каждого из 2K-1 конечных состояний для каждого из первого и второго наборов принятых символов.
4. Способ по п.3, по которому операцию сложения(сравнения)выбора по схеме “бабочка” осуществляют посредством структуры 8×1 схем “бабочка” сложения(сравнения)выбора.
5. Способ по п.4, по которому совокупность метрик исходных состояний состоит из метрик для набора из 16 последовательных исходных состояний, причем набор из 16 последовательных исходных состояний последовательно выбирают в течение возрастающих четных тактов.
6. Способ по п.5, по которому на этапе вычисления метрик конечных состояний суммируют метрики исходных состояний с метрикой ветви, соответствующей каждому из двух возможных переходов, сравнивают каждую из сумм метрик исходных состояний и метрик ветвей и выбирают и назначают наименьшую сумму метрикой конечного состояния.
7. Способ по п.6, по которому на этапе вычисления метрик промежуточных конечных состояний суммируют метрики промежуточных исходных состояний с метрикой ветви, соответствующей каждому из двух возможных переходов, сравнивают каждую из сумм метрик промежуточных исходных состояний и метрик ветвей и выбирают наименьшую сумму и назначают ее метрикой промежуточного конечного состояния.
8. Способ по п.7, по которому операцию сложения(сравнения)выбора по схеме “бабочка” используют для декодирования данных, подвергнутых сверточному кодированию.
9. Способ по п.8, по которому в модуле памяти обратной цепи предусмотрен третий элемент памяти, содержащий совокупность блоков памяти, в каждом из которых хранится заданный логический бит для каждого четного и нечетного такта.
10. Способ по п.8, по которому дополнительно осуществляют операцию обратной цепи для создания совокупности значений декодированных битов.
11. Способ по п.10, по которому при осуществлении операции обратной цепи идентифицируют для самого последнего из блоков памяти в модуле памяти обратной цепи заданный логический бит имеющий наименьшее значение, связывают логический бит наименьшего значения с конкретным адресом, считывают заданный логический бит и переносят значение логического бита наименьшего значения в младший разряд конкретного адреса, сдвигая все значения в конкретном адресе на один разряд влево, для нахождения следующего конкретного адреса, соответствующего следующему блоку памяти в модуле памяти обратной цепи.
12. Система для осуществления операции сложения(сравнения)выбора по схеме “бабочка” для реализации алгоритма Витерби, система содержит первый элемент памяти для хранения совокупности метрик исходных состояний, мультиплексор, подключенный к первому элементу памяти для выбора первого действующего пути в течение четных тактов и для выбора второго действующего пути в течение нечетных тактов, второй элемент памяти, подключенный к мультиплексору для временного хранения метрик конечных состояний, механизм сложения(сравнения)выбора, подключенный ко второму элементу памяти и мультиплексору для вычисления метрики конечного состояния для каждой из метрик исходных состояний и третий элемент памяти для хранения заданного логического бита, соответствующего вычисленной метрике конечного состояния, имеющей наименьшее значение, при этом мультиплексор выбирает упомянутый первый действующий путь в течение четных тактов и выдает метрики исходных состояний из первого элемента памяти на механизм сложения(сравнения)выбора, чтобы генерировать метрики конечных состояний, соответствующие первому набору принятых символов, и мультиплексор выбирает второй действующий путь в течение нечетных тактов, чтобы считывать метрики конечных состояний из второго элемента памяти и использовать считанные метрики конечных состояний в качестве метрик промежуточных исходных состояний, чтобы механизм сложения(сравнения)выбора генерировал на основании метрик промежуточных исходных состояний метрики промежуточных конечных состояний, соответствующие второму набору принятых символов.
13. Система по п.12, в которой первый и второй наборы принятых символов закодированы с использованием ограничительной длины К.
14. Система по п.13, в которой операция сложения(сравнения)выбора по схеме “бабочка” осуществляется до тех пор, пока не будет посещено каждое из 2K-1 конечных состояний для каждого из первого и второго наборов принятых символов.
15. Система по п.14, в которой операция сложения(сравнения)выбора по схеме “бабочка” осуществляется посредством структуры 8×1 схем “бабочка” сложения(сравнения)выбора.
16. Система по п.15, в которой совокупность метрик исходных состояний состоит из метрик для набора из 16 последовательных исходных состояний, причем выбор набора из 16 последовательных исходных состояний осуществляется последовательно в течение возрастающих четных тактов.
17. Система по п.12, в которой механизм сложения (сравнения)выбора осуществляет операцию сложения (сравнения)выбора, суммируя метрики исходных состояний с метрикой ветви, соответствующей каждому из двух возможных переходов, сравнивая каждую из сумм метрик исходных состояний и метрик ветвей и выбирая наименьшую сумму и назначая ее метрикой конечного состояния.
18. Система по п.17, в которой операция сложения (сравнения)выбора по схеме “бабочка” используется для декодирования данных, подвергнутых сверточному кодированию.
19. Система по п.18, в которой в модуле памяти обратной цепи предусмотрен третий элемент памяти, содержащий совокупность блоков памяти, в каждом из которых хранится заданный логический бит для каждого четного и нечетного такта.
20. Система по п.19, в которой модуль памяти обратной цепи генерирует совокупность значений декодированных битов.
21. Система по п.20, в которой модуль памяти обратной цепи идентифицирует для самого последнего из блоков памяти заданный логический бит, имеющий наименьшее значение, связывает логический бит наименьшего значения с конкретным адресом, считывает заданный логический бит и переносит значение логического бита наименьшего значения в младший разряд конкретного адреса, сдвигая все значения в конкретном адресе на один разряд влево для нахождения следующего конкретного адреса, соответствующего следующему блоку памяти в модуле памяти обратной цепи.
RU2002113295/09A 1999-10-21 2000-10-23 Высокоскоростной модуль сложения (сравнения) выбора для декодера витерби RU2246751C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/422,920 US6333954B1 (en) 1999-10-21 1999-10-21 High-speed ACS for Viterbi decoder implementations
US09/422,920 1999-10-21

Publications (2)

Publication Number Publication Date
RU2002113295A RU2002113295A (ru) 2003-11-10
RU2246751C2 true RU2246751C2 (ru) 2005-02-20

Family

ID=23676955

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2002113295/09A RU2246751C2 (ru) 1999-10-21 2000-10-23 Высокоскоростной модуль сложения (сравнения) выбора для декодера витерби

Country Status (13)

Country Link
US (1) US6333954B1 (ru)
EP (1) EP1230737A1 (ru)
JP (1) JP2003512756A (ru)
KR (1) KR100779782B1 (ru)
CN (1) CN1168224C (ru)
AU (1) AU1228501A (ru)
BR (1) BR0014899A (ru)
CA (1) CA2387766A1 (ru)
HK (1) HK1048204A1 (ru)
IL (2) IL149248A0 (ru)
MX (1) MXPA02003937A (ru)
RU (1) RU2246751C2 (ru)
WO (1) WO2001029974A1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2608872C1 (ru) * 2015-09-24 2017-01-25 Валерий Владимирович Золотарев Способ кодирования и декодирования блокового кода с использованием алгоритма Витерби

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3501725B2 (ja) 2000-05-12 2004-03-02 日本電気株式会社 ビタビ復号器
EP1158683A1 (de) * 2000-05-24 2001-11-28 Infineon Technologies AG Vorrichtung und Verfahren zum Durchführen eines Viterbi-Algorithmus
US7006634B1 (en) * 2000-09-28 2006-02-28 Cisco Technology, Inc. Hardware-based encryption/decryption employing dual ported key storage
US6873707B1 (en) * 2000-09-28 2005-03-29 Cisco Technology, Inc. Hardware-based encryption/decryption employing cycle stealing
US20020198681A1 (en) * 2001-06-13 2002-12-26 Kouritzin Michael A. Flexible efficient branching particle tracking algorithms
KR100437697B1 (ko) * 2001-07-19 2004-06-26 스프레드텔레콤(주) 다수준 격자부호변조방식의 복호 방법 및 장치
US6910177B2 (en) * 2001-12-21 2005-06-21 Texas Instruments Incorporated Viterbi decoder using restructured trellis
FI20021656A0 (fi) * 2002-09-16 2002-09-16 Nokia Corp Menetelmä ja järjestely dekoodauksen suorittamiseksi
JP2005045727A (ja) * 2003-07-25 2005-02-17 Matsushita Electric Ind Co Ltd ビタビ復号器
US20050138535A1 (en) * 2003-12-02 2005-06-23 Sivagnanam Parthasarathy Method and system for branch metric calculation in a viterbi decoder
US8290095B2 (en) * 2006-03-23 2012-10-16 Qualcomm Incorporated Viterbi pack instruction
US20070266303A1 (en) * 2006-04-27 2007-11-15 Qualcomm Incorporated Viterbi decoding apparatus and techniques
US7861147B2 (en) * 2006-12-08 2010-12-28 Via Technologies, Inc. ACS unit and method thereof
US8185810B1 (en) * 2007-04-13 2012-05-22 Link—A—Media Devices Corporation Low power viterbi trace back architecture
US8943392B2 (en) * 2012-11-06 2015-01-27 Texas Instruments Incorporated Viterbi butterfly operations
CN103905068B (zh) * 2012-12-26 2018-06-26 中国移动通信集团公司 一种维特比译码方法及系统
CN114924615B (zh) * 2022-04-22 2024-02-20 龙芯中科技术股份有限公司 内存时钟调节方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619514A (en) 1994-12-29 1997-04-08 Lucent Technologies Inc. In-place present state/next state registers
JP3344221B2 (ja) 1996-06-28 2002-11-11 株式会社日立製作所 デジタル信号復号装置及びそれに用いる復号方法
KR100195745B1 (ko) * 1996-08-23 1999-06-15 전주범 비터비 복호화기의 가산 비교 선택 장치
US5987638A (en) 1997-04-22 1999-11-16 Lsi Logic Corporation Apparatus and method for computing the result of a viterbi equation in a single cycle
US6097769A (en) * 1998-02-10 2000-08-01 Lucent Technologies Inc. Viterbi detector using path memory controlled by best state information
US6148431A (en) * 1998-03-26 2000-11-14 Lucent Technologies Inc. Add compare select circuit and method implementing a viterbi algorithm

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
(56)US 5940416 A, 17.08.1999. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2608872C1 (ru) * 2015-09-24 2017-01-25 Валерий Владимирович Золотарев Способ кодирования и декодирования блокового кода с использованием алгоритма Витерби

Also Published As

Publication number Publication date
IL149248A (en) 2006-04-10
CN1168224C (zh) 2004-09-22
KR20020048975A (ko) 2002-06-24
WO2001029974A1 (en) 2001-04-26
MXPA02003937A (es) 2002-12-13
KR100779782B1 (ko) 2007-11-27
AU1228501A (en) 2001-04-30
JP2003512756A (ja) 2003-04-02
US6333954B1 (en) 2001-12-25
CN1379931A (zh) 2002-11-13
CA2387766A1 (en) 2001-04-26
EP1230737A1 (en) 2002-08-14
IL149248A0 (en) 2002-11-10
HK1048204A1 (zh) 2003-03-21
BR0014899A (pt) 2002-10-01

Similar Documents

Publication Publication Date Title
RU2246751C2 (ru) Высокоскоростной модуль сложения (сравнения) выбора для декодера витерби
US4606027A (en) Error correction apparatus using a Viterbi decoder
US7702991B2 (en) Method and apparatus for reduced-state viterbi detection in a read channel of a magnetic recording system
US7653868B2 (en) Method and apparatus for precomputation and pipelined selection of branch metrics in a reduced state Viterbi detector
US5802116A (en) Soft decision Viterbi decoding with large constraint lengths
EP0647036A1 (en) Method and means for detecting partial response waveforms using a modified dynamic programming Heuristic
JPH10107651A (ja) ビタビ復号装置
KR20060068168A (ko) 저 복잡도 ldpc복호 장치 및 그 방법
JP2000068861A (ja) ビタビデコ―ダおよびビタビデコ―ディング方法
KR100346529B1 (ko) 디지탈신호프로세서
JP3266182B2 (ja) ビタビ復号器
US20050268210A1 (en) Method and apparatus for multiple step viterbi detection with local feedback
US7404139B2 (en) Decoder with M-AT-A-Time Traceback
KR100785671B1 (ko) 고속 acs 비터비 디코더 구현을 위하여 메모리내의상태 메트릭들을 효과적으로 판독하고 저장하는 방법 및장치
US5878060A (en) Viterbi decoding apparatus and viterbe decoding method
US7653154B2 (en) Method and apparatus for precomputation and pipelined selection of intersymbol interference estimates in a reduced-state Viterbi detector
EP1322041A1 (en) Viterbi decoder using restructured trellis
EP1024603A2 (en) Method and apparatus to increase the speed of Viterbi decoding
EP1463207A1 (en) Viterbi decoding for convolutional encoded signals with scattering of known bits
US7260154B1 (en) Method and apparatus for implementing a multiple constraint length Viterbi decoder
JP3235333B2 (ja) ビタビ復号方法およびビタビ復号化装置
JP3343217B2 (ja) 2ビットトレースバック符号化に対するビタビ比較・選択動作
US20040117721A1 (en) Pipelined add-compare-select circuits and methods, and applications thereof

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20111024