СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ДАННЫХ
METHOD AND DEVICE FOR ENCODING AND DECODING DATA

Область техники, к которой относится изобретение
Настоящее изобретение в целом относится к кодированию и декодированию данных, а в частности к способу и устройству для кодирования данных, использующему коды с контролем четности низкой плотности (LDPC).
Уровень техники изобретения
q
q≥2.
q
k
1×k
k×n
Как описано в патентной заявке США с порядковым номером № 10/839995, которая включена в материалы настоящего документа посредством ссылки, код с контролем четности низкой плотности является кодом линейных блоков, заданным проверочной матрицей H. В общем случае, LDPС-код определен на поле Галуа GF(), Если =2, код является бинарным кодом. Все коды линейных блоков могут быть описаны как произведение -битного информационного вектора sна кодогенерирующую матрицу G для порождения n-битовой кодовой комбинации
1×n
1xk
r=k/n.
x, где кодовая скорость равна  Кодовая комбинация x передается через канал с помехами, и принятый вектор y сигнала передается на декодер для оценки вектора sсигнала.
k-
C
m=n-k.
С
T
m×n
⊥
T
T
При заданном n-мерном пространстве строки G охватывают мерное подпространство  кодовых комбинаций, а строки проверочной матрицы H охватывают m-мерное дуальное пространство C, где Поскольку x=sG и GH=0, следует, что xH=0 для всех кодовых комбинаций в подпространстве , где “T” (или "") обозначает транспонирование матрицы. При обсуждении LDPС-кодов, в общем, написано, что
Hx
=0
,(1)
т
т
где 0 - вектор-строка из нулей, и кодовая комбинация
=
s
,
s
,...,s
,p
,p
,...,p
,
p
,...,p
s
,…,s
0
1
k-1
0
1
m-1
0
m-1
0
k-1
x[s р]=[]где  являются контрольными битами; а  являются систематическими битами, равными информационным битам в информационном векторе.
n
m
v
с
i
j, i
n-
, j =
,
m
i
Для LDPС-кода плотность ненулевых позиций в H низкая, т.е. существует только маленькая доля 1 в H, позволяющая лучшую эффективность корректировки ошибок и более простое декодирование, чем использование плотного H. Проверочная матрица может быть также описана двудольным графом. Двудольный граф является не только графическим описанием кода, но также моделью декодера. В двудольном графе бит кодовой комбинации (следовательно, каждой колонки H) представлен переменной вершиной слева, и каждое проверочное уравнение (следовательно, каждая строка H) представлено проверочной вершиной справа. Каждая переменная вершина соответствует колонке H, и каждая проверочная вершина соответствует строке H, здесь “переменная вершина” и “колонка” H упоминаются взаимозаменяемо, как и “проверочная вершина” и “строка” H. Переменные вершины являются присоединенными только к проверочным вершинам, и проверочные вершины являются присоединенными только к переменным вершинам. Для кода с битами кодовой комбинации и битами четности переменная вершина  присоединена к проверочной вершине посредством ребра, если бит кодовой комбинации участвует в проверочном уравнении  = 0,1...,101,...,-l.
i
j,
h
ji
Другими словами, переменная вершина присоединена к проверочной вершине если позиция проверочной матрицы H равна 1. Отображающее уравнение (1), переменная вершина представляет допустимую кодовую комбинацию, если все проверочные вершины имеют равную четность.
n
Ниже показан пример для иллюстрирования отношения между проверочной матрицей, проверочными уравнениями и двудольным графом. Пусть =12, код Ѕ скорости будет определен посредством
k
,
m
с левой частью, соответствующей (=6) информационным битам sи с правой частью, соответствующей (=6) битам p четности. Применяя (1), H в (2) определяет 6 проверочных уравнений следующим образом:
H также имеет соответствующий двудольный граф, показанный на фиг.1.
Как обсуждалось выше, получатель получает загрязненную версию y переданной кодовой комбинации x. Для декодирования у и определения исходной информационной последовательности s применяется итеративный декодирующий алгоритм на основе двудольного графа, такой как распространение доверия. Гибкая информация в формате логарифмического отношения правдоподобия (LLRs) битов кодовой комбинации передается между набором переменных вершин и набором проверочных вершин. Итерация останавливается, когда все проверочные уравнения удовлетворены или достигается максимально допущенный предел итераций.
m
×n
z
z
m×n
m
m
×z, n = n
×z
z×z
z×z
z
z
z
b
b
b
b
b
b
b
b
b
b
b
b
b
Структурированная модель LDPС-кода начинается с маленькой  базовой матрицы H, создает копий H, и соединяет копий для построения большой матрицы H, где = . Используя матричное представление, для построения H из H каждая 1 в H заменена  подматрицей перестановок, и каждый 0 в H заменен  подматрицей, состоящей из нулей. Эта процедура по существу отображает каждое ребро H в ребро вектора длины  в H, каждую переменную вершину H в переменную вершину вектора длины  в H, и каждую проверочную вершину H в проверочную вершину вектора длины  в H. Преимуществами векторизации маленькой матрицы H для построения большой матрицы H являются:
z
k
/n
,
k
=n
-m
,
k
z×k
b
b
b
b
b
b
b
1. Посредством использования различных значений  коды скорости где  могут быть разработаны для многих различных информационных последовательностей размеров =  из одной базовой матрицы H.
b
b
2. Требования к памяти значительно уменьшены. Со структурированной моделью LDPС только базовая матрица H и перестановка для ее 1 нуждается в сохранении, что требует существенно меньше памяти, поскольку H типично много меньше, чем H, и перестановка может быть очень простой.
3. Кодирование и декодирование могут выполняться на группе битов, а не над одиночными битами. Например, группа из z сообщений может быть извлечена из памяти, подвергнута перестановке и передана между векторной переменной вершиной и векторной проверочной вершиной.
Хотя философия структурированной модели LDPC значительно уменьшает сложность осуществления, не существует методики для конструирования базовой матрицы и определения матриц перестановок для заданной целевой H размера, которая имеет результатом LDPC-код, который имеет хорошую эффективность корректировки ошибок и может быть эффективно кодирован и декодирован. Поэтому существует потребность в способе и устройстве для конструирования структурированной H и способе и устройстве для кодирования и декодирования данных, использующих структурированную матрицу H.
Краткое описание чертежей
Фиг.1 иллюстрирует двудольный граф матрицы H (12, 6).
b
Фиг.2 иллюстрирует отношения между базовой матрицей Н, модельной матрицей
bm
Н и конечной расширенной матрицей H.
Фиг.3 - блок-схема кодировщика.
Фиг.4 - блок-схема декодировщика.
Фиг.5 - схема последовательности операций кодировщика на фиг.3.
Фиг.6 - схема последовательности операций декодировщика на фиг.4.
Описание чертежей
b
b
b1
b2
b2
b
b
b2
b
i,
j
i=j,
i=j+
Чтобы направить усилия на вышеупомянутые потребности, предлагается структурированная проверочная матрица H, где H является расширением базовой матрицы Н и где Н содержит секцию Н и секцию Н, и где Н содержит первую часть, содержащую колонку h, имеющую нечетный вес больше 2, и вторую часть, содержащую матричные элементы для строки столбца , равные 1 для 1 для 1 и 0 в других местах. Расширение базовой матрицы Н использует идентичные подматрицы для 1 в каждой колонке второй части Н', и расширение использует парные подматрицы для четного количества единиц в h.
p
..,p
s
,...,s
s
,...,s
i,
j,
i=j,
i=j+
0
m-1
0
k-1
0
k-1
b
b
b1
b2
b2
b
b2,
b
b2
b
Настоящее изобретение осуществляет способ для управления передатчиком, который генерирует биты p=(,.) контроля четности на основе текущего набора s=() символов. Способ содержит шаги приема текущего набора s=() символов и использования матрицы H для определения битов контроля четности. Биты контроля четности передаются наряду с текущим набором символов. Матрица Н является расширением базовой матрицы Н, где Н содержит секцию Ни секцию Н и где Н содержит первую часть, содержащую колонку h, имеющую нечетный вес больше 2, и вторую часть Н' содержащую матричные элементы для строки столбца равные 1 для 1 для 1 и 0 в других местах. Расширение базовой матрицы Н использует идентичные подматрицы для единиц в каждой колонке второй части Н', и в котором расширение использует парные подматрицы для четного количества единиц в h.
s
,..., s
=(у
.
у
)
i,
j,
i=j,
i=j+
0
k-1
0
n-1
0
k-1
b
b
b1
b2
b2,
b
b2
b
b2
b
Настоящее изобретение дополнительно осуществляет способ для управления приемником, который оценивает текущий набор s=() символов. Способ содержит шаги приема принятого вектора у.. сигнала и использования матрицы H для оценки текущего набора s=(s,..., s) символов. Матрица Н является расширением базовой матрицы Н, где Н содержит секцию Ни секцию Н, с Н содержащей первую часть, содержащую колонку h, имеющую нечетный вес больше 2, и вторую часть Н', содержащую матричные элементы для строки столбца равные 1 для 1 для 1 и 0 в других местах. Расширение базовой матрицы Н использует идентичные подматрицы для единиц в каждой колонке второй части Н', и где расширение использует парные подматрицы для четного количества единиц в h.
b
b
b1
b2
b2,
b
b2
b
b2
b
i,
j
i=j,
i=j+
Настоящее изобретение дополнительно осуществляет устройство, содержащее средства хранения для хранения матрицы H, микропроцессор, использующий матрицу H для определения битов контроля четности, где H является расширением базовой матрицы Н и Н содержит секцию Н и секцию Н, с Н содержащей первую часть, содержащую колонку h, имеющую нечетный вес больше 2, и вторую часть Н', содержащую матричные элементы для строки столбца , равные 1 для 1 для 1 и 0 в других местах. Расширение базовой матрицы Н использует идентичные подматрицы для единиц в каждой колонке второй части Н', и где расширение использует парные подматрицы для четного количества единиц в h.
=(у
у
)
s
,...,
0
n-1
0
Настоящее изобретение осуществляет устройство, содержащее средства хранения для хранения матрицы H, приемник для приема вектора y... сигнала и микропроцессор, использующий матрицу H для определения текущего набора s=(
s
i,
j,
i=j,
i=j+
k-1
b
b,
b1
b2
b2
b
b2
b2,
b2
b
) символов. Матрица Н является расширением базовой матрицы Н, с Н содержащей секцию Ни секцию Н, и где Н содержит первую часть, содержащую колонку h, имеющую нечетный вес больше 2. Нсодержит вторую часть Н' имеющую матричные элементы для строки столбца равные 1 для 1 для 1 и 0 в других местах. Две идентичные подматрицы используются для расширения единиц в каждой колонке Н', и парные подматрицы используются для расширения четного количества единиц в h.
Обращаясь к чертежам, на которых аналогичные числа обозначают аналогичные компоненты, фиг.3 - блок-схема кодировщика 300 в соответствии с первым вариантом осуществления настоящего изобретения. Как показано, кодировщик 300 содержит микропроцессор 301 и таблицу 303 поиска. В первом варианте осуществления настоящего изобретения микропроцессор 301 содержит цифровой процессор сигналов (DSP), таких как, но не ограниченных, DSP MSC8300 и DSP56300. Дополнительно, таблица 303 поиска служит в качестве средства хранения для хранения матрицы и содержит постоянную память; тем не менее, рядовой специалист в данной области техники будет отдавать себе отчет, что другие виды памяти (например, память с произвольной выборкой, магнитная запоминающая память и т.д.) могут быть также использованы. Во втором варианте осуществления функциональность микропроцессора 301 и таблицы 303 поиска может быть включена в специализированную интегральную схему (ASIC) или программируемую вентильную матрицу (FPGA). В частности, таблица 303 поиска может быть реализована в виде памяти, соответствующей наличию или отсутствию путей сигнала в схеме.
p
,..., p
s
,..., s
0
m-1
0
k-1
Как обсуждалось выше, закодированные данные обычно выводятся как множество битов контроля четности в дополнение к систематическим битам, где вместе биты контроля четности и систематические биты формируют кодовую комбинацию x. В первом варианте осуществления настоящего изобретения проверочная матрица H хранится в таблице 303 поиска и выбирается микропроцессором 301 для решения уравнения (1). В частности, микропроцессор 301 определяет соответствующие значения для битов p=() контроля четности на основе текущего набора символов и s=() проверочной матрицы H.
Биты контроля четности и набор символов затем переправляются передатчику и передаются на приемник.
Фиг.4 - блок-схема декодера 400 согласно одному варианту осуществления настоящего изобретения. Как показано, кодировщик 400 содержит микропроцессор 401 и таблицу 403 поиска. В первом варианте осуществления настоящего изобретения микропроцессор 401 представляет собой цифровой процессор сигналов (DSP), например, DSP MSC8300 и DSP56300, но не ограничиваясь ими. Дополнительно, таблица 403 поиска действует как средство хранения для хранения матрицы H и содержит постоянную память. Тем не менее, рядовой специалист в данной области техники будет отдавать себе отчет, что другие виды памяти (например, память с произвольной выборкой, магнитная запоминающая память и т.д.) могут быть также использованы. Во втором варианте осуществления функциональность микропроцессора 401 и таблицы 403 поиска может быть включена в специализированную интегральную схему (ASIC) или программируемую вентильную матрицу (FPGA). В частности, таблица 403 поиска может быть реализована в виде памяти, соответствующей наличию или отсутствию путей сигнала в схеме.
=
y
,..., y
(s
,..., s
s
,..., s
=(y
,..., y
0
n-1
0
k-1
0
k-1
0
n-1
Принятый вектор y() сигнала (принятый посредством приемника) соответствует кодовой комбинации x, переданной через канал с шумом, где закодированные данные x, как обсуждалось выше, являются вектором кодовой комбинации. В первом варианте осуществления настоящего изобретения проверочная матрица H хранится в таблице 403 поиска и выбирается микропроцессором 401 для декодирования y и оценки текущего набора s символов (т.е. текущего набора ) символов). В частности, микропроцессор 401 оценивает текущий набор () символов, основанный на принятом векторе y) сигнала и проверочной матрице H.
Как хорошо известно в данной области техники, существует много способов того, как декодер 400 может использовать матрицу H контроля четности в микропроцессоре 401 для декодирования. Одним таким способом является выполнение векторно-матричного перемножения с H для определения вероятной карты ошибок. Другим подобным способом является использование H для построения двудольного графа, где вершины графа соответствуют 1 в H, и итеративно обработать y на двудольном графе.
z×z
b
Для структурированного LDPС подматрица может быть матрицей перестановок, суммой матриц перестановок или любым типом бинарных матриц. Так как матрица перестановок P имеет единственную 1 в каждой строке и единственную 1 в каждой колонке, распределение веса расширенной матрицы H будет таким же, как у базовой матрицы Н, если используется подматрица перестановок.
b
b
z×z
(p(i), i),
i
p(i)
i
i
Поэтому распределение веса Н выбрано настолько близко к требуемому конечному распределению веса, насколько возможно. Последующее описание иллюстрирует случай, где позиции Н заменены матрицами перестановок, хотя и другие матрицы могут быть использованы. Если подматрица перестановок Р векторного ребра имеет 1 в позиции (строка, колонка) то -е ребро в векторном ребре переставлено в позицию до того, как векторное ребро присоединено к векторной проверочной вершине. Другими словами, эта перестановка делает -ю переменную вершину в связанной переменной векторной вершине соединенной с p()-й проверочной вершиной в связанной проверочной векторной вершине.
m
×n
b
b
bm
Перестановки, включающие H, могут быть очень простыми, без риска ухудшения производительности, такими как простые циклические сдвиги и/или инверсии битов. Например, может быть использован простой циклический сдвиг вправо. С этим ограничивающим условием каждая матрица H может быть представлена  модельной матрицей Н, которая может быть получена посредством
b
z×z
- замены каждого 0 в H -1 для обозначения нулевой подматрицы и
h
p(i,j),
p(i,j)
ij
b
- замены каждой =1 в Н циклическим сдвигом размера где неотрицательно.
x
z
z-х
z
z
m×n
bm
bm
bm
Так как циклический сдвиг влево (mod ) раз эквивалентен циклическому правому сдвигу (() mod ) раз, достаточно обсудить циклический сдвиг вправо и упоминать его как циклический сдвиг для краткости. Как предварительно обсуждалось, существует отображение один к одному между H и Н. Следовательно, Н является кратким представлением H, если  задано. Относительно обозначений, модельная матрица выделена от базовой матрицы нижним индексом 'bm', а расширенная матрица выделена посредством удаления нижнего индекса 'bm'. Отношения между тремя матрицами продемонстрированы на фиг.2. Используя структуру, код имеет эффективность корректировки ошибок, сходную эффективности случайной H размера , в то время как кодирование и декодирование выполняются на основе, намного меньшей H.
b
bm
Например, матрица уравнения (2) может быть использована в качестве базовой матрицы Н для построения модельной матрицы Н следующим образом:
z
(m
×z)×(n
×z)
i
i
bm
b
b
i
Когда =3, H преобразуется в матрицу H посредством замены каждой -1 подматрицей 3×3 из нулей и каждой  подматрицей P, =0,1,2, где
0
i
,
i
Отметим, что P является единичной матрицей, и строки Р>0 являются колонками
0,
i
Pциклически сдвинутыми вправо раз.
q
q
,q
,q
, q
q
,q
,q
], q
q
,q
,q
, qP
=
q
,q
,q
q
q.
q
q
q.
z×z
0
1
2
0
0
1
2
1
2
0
1
2
1
2
0
i
i
i
i
T
T
Пусть задан вектор =[]P=[P=[][]. Другими словами, P имеет результатом циклический сдвиг вправо вектора С другой стороны, P имеет результатом циклический сдвиг вверх  или эквивалентно циклический левый сдвиг Сходные правила применяются, когда используется  матрица Q:QP, имеет результатом циклический сдвиг вправо колонок Q, PQ имеет результатом циклический верхний сдвиг строк Q.
Базовая матрица H
Для LDPС-кода без векторизации матрица H с модифицированной ступенчатой структурой для части четности H приводит к эффективному кодированию без риска ухудшения производительности. Вообще, при условии, что
s
,
s
,...,s
,p
,p
,...p
m
n,
0
1
k-1
0
1
m-1
x=[s p]=[] наматрица H может быть разделена на две подматрицы,
2
1
b
b
b1
b2
m
k.
где H имеет модифицированную ступенчатую структуру и H может быть любой бинарной матрицей размера  на Эта одинаковая структура может быть использована для построения базовой матрицы H в структурированной модели LDPC. Сходным образом, используя модифицированную структуру, H может быть разделена на две секции, где Н соответствует систематическим битам s, H соответствует битам контроля четности p:
b2
b
h
b2
w
,
Секция H может быть дополнительно разделена на две секции, где вектор h имеет нечетный вес а H' имеет ступенчатую структуру:
b1
b
Секция Н может быть построена случайным образом. Предпочтительно, вся матрица H имеет распределение веса, настолько близкое к требуемому распределению веса, насколько возможно.
Величины сдвигов
b
b
b
bm
b
2
2
1
1
1
bm1
m
×n
p(i,j)
Для преобразования базовой матрицы Н в модельную  матрицу Н (которая расширяется до H), требуется определить циклический сдвиг величины  для каждой 1 в Н. Величины сдвигов могут быть сперва заданы для H. После того как величины сдвигов для H определены, размеры сдвигов секции Hмогут быть определены для достижения суммарной хорошей эффективности H. Часть Hбазовой матрицы и величины сдвигов части H базовой матрицы (секции H) могут быть определены многими различными способами. Например, могут быть выбраны и приняты случайные значения для величин сдвигов, если величины сдвигов не вызывают существенного ухудшения производительности. Ухудшение производительности может иметь результатом включение избыточных количеств коротких циклов комбинаций с низким весом. Также могут быть использованы другие методики, имеющиеся в области техники LDPC.
p
i,j
z×z
b
b2
b
b2
b
bm
b2
b2
b2
T
T
Величины () циклических сдвигов для заданного целевого H размера могут быть заданы для предоставления возможности эффективной кодировки без риска для эффективности декодирования. Для облегчения кодировки сдвиги могут быть определены такие, что все, кроме одной матрицы сдвига, соответствующей 1 в h, сокращаются, когда складываются вместе, и все векторные строки H' сокращаются, когда суммируются. Это транслируется в определение величин сдвигов h в пары, кроме одной позиции, и определение одинаковых величин сдвигов обоим 1 в каждой колонке H'. Например, если h = [1 0 0 1 0 0 1], допустимо иметь h = [3 -1 -1 3 -1 -1 4] как соответствующую колонку в модельной матрице, так как величина сдвига 3 определена в парах. Поскольку всем из ненулевых позиций (обе 1) в каждой колонке H' определены одинаковые величины сдвигов, любой выбор величины сдвига эквивалентен величине сдвига 0 (т.е. единичные подматрицы) плюс перестановка битов внутри векторной колонки. Таким образом, все величины сдвигов H' могут быть определены как 0 для удобства, т.е. каждая 1 в H' заменяется единичной подматрицей во время расширения до H.
bm
Вследствие существования циклов величины сдвигов h могут быть тщательно назначены. Могут быть применены правила, чтобы избежать коротких циклов кодовых последовательностей с низким весом. Одним свойством, которое может быть использовано для того, чтобы избежать циклов, является:
b
если в базовой матрице H2c ребер из цикла длиной 2c, тогда в расширенной матрице H соответствующие 2c векторных ребер из z циклов длины 2c тогда и только тогда, если
bm
b
где z является коэффициентом расширения, p(i) величиной циклического сдвига ребра i в модельной матрице H, и ребра 0, 1, 2,..., 2c-1 (в этом порядке) формируют цикл в H.
b2
b
b2
bm
b
bm
b
bm
2
bm
2
2
b
b2
b2
T
T
.
Вследствие структуры H существуют циклы между h и H'. Соответственно, любые две идентичные величины сдвига в h будут иметь результатом замену цикла z раз в расширенной матрице H согласно вышеописанному свойству. Тем не менее, если два сдвига расположены на большом расстоянии друг от друга, то циклы имеют большую длину и имеют небольшой результат при итеративном декодировании. Следовательно, в предпочтительном варианте осуществления, когда h базовой матрицы имеет три 1, для максимизации длины цикла, две 1, которым заданы равные величины сдвига, могут быть расположены вверху и внизу h (настолько далеко друг от друга, насколько возможно), в то же время оставляя одну 1 в центре hс непарной величиной сдвига. Например, h = [3 -1 3 -1 -1 -1 4] будет иметь результатом z циклов длины 6 между h и H', в то время как h = [3 -1 4 -1 -1 -1 3] будут иметь результатом z циклов длины 14 между h и H', где h и H' расширены из h и H'Таким образом, секция H отображена на модельную матрицу
k
=
n
- m
w
w
>
p(i,k
)
w
w
(i,j)
= p(i+1,j), j=k
+1,k
+2, …,
i=j-k
-1
b
b
b
h
h
bm
bm2
b
bm,
h
h
bm2
b
b
b
b
где , существует  (нечетный, =3) неотрицательных позиций в h, и позиции -1 в H' оставлены пустыми для краткости. Все значения появляются четное количество раз в hкроме одного, которое может быть отображено в любую ненулевую подматрицу. Поэтому все сдвиги  могут быть заданы одинаковыми значениями (например, 0), так как  нечетное. Для Н'p n-1, .
h
bm
h
h
b
b
b
b
bm2
т
В предпочтительном варианте осуществления, при условии, что w=3, один пример имеет h = [0 -1...-1 p -1... -1...0], p mod z≠0 и p(i,j) = p(i+l,j) = 0, j=k+1,k+2,..., n-1, i=j-k-1 в части H'.
Хотя вышеприведенное обсуждение сфокусировано на использование подматриц, которые являются циклическими сдвигами единичной матрицы, вообще, могут быть использованы другие подматрицы (и быть представлены эквивалентом к базовой модельной матрице). Для облегчения кодировки ограничивающие условия в таком случае:
bm2
1. В каждой колонке H' две ненулевые подматрицы идентичны;
w
w
h
h
bm
2.  (нечетное, >=3) ненулевых подматриц h парны (т.е. одна подматрица идентична другой подматрице), кроме одной подматрицы, которая может быть любой ненулевой матрицей.
Кодирование
z
k
=n
-m
b
b
b
Кодирование является процессом определения последовательности четности p заданной информационной последовательности s. Для кодирования структурированного LDPС-кода, вместо одного бита, каждая операция выполняется над группой  битов. В качестве альтернативы векторные операции не должны быть использованы, и уравнения ниже реализованы в эквивалентной скалярной форме. Для кодировки s разделяется на  групп из z битов. Пусть это сгруппированное s будет обозначено u,
где каждый элемент u является вектором колонки, как показано ниже
bm
,
Используя модельную матрицу H, равноценная последовательность p определена в группах z. Пусть сгруппированное p будет обозначено v
где каждый элемент v является вектором колонки, как показано ниже
v
v
i+l
i
i
m
-2.
b
Кодировка продолжается за два шага: (a) инициализации, которая определяет (0), и (b) рекурсии, которая определяет () из v(), 0≤≤
v
Выражение для (0) может быть выведено суммированием строк уравнения (1) для получения
x
≤x≤m
-2.
bm
bm
b
где  является индексом строки h, где позиция неотрицательна и используется нечетное количество раз. В предпочтительном варианте осуществления верхняя и нижняя позиции h парны, соответственно 1
v
.
р(х,k
)
-1
p(x,kb)
b
Уравнение (14) решается для (0) умножением обеих сторон на P Для особого случая, рассматриваемого здесь, где представляет циклический сдвиг,
-1
p(x,kb)
z-p(x,kb)
v
P =P. Другими словами, (0) получается посредством
bm
Вообще, рекурсии, выраженные в уравнениях (16) и (17), могут быть выведены, принимая во внимание H',
и
где
v
i
m
-
b
Соответственно, все биты четности, не в (0), определяются посредством итеративного вычисления уравнений (16) и (17) для 0≤≤ 2.
b2
В предпочтительном варианте осуществления, где величины сдвигов 1 в Н' все являются нулевыми, уравнения (16) и (17) могут быть упрощены до уравнений (19) и (20),
и
v
i
m
-
b
Соответственно, как в общем случае, все биты четности, не в (0), определяются посредством итеративного вычисления уравнений (19) и (20) для 0≤≤2.
p(i,j)
j
p(i,j)= -
bm
р(i,j)
bm
Уравнения (14), (19) и (20) описывают алгоритм кодировки. Эти уравнения также имеют непосредственную интерпретацию в терминах стандартных цифровых логических архитектур. Первое, поскольку неотрицательные элементы  H представляют циклические сдвиги величин вектора, все произведения вида Рu() могут быть реализованы посредством многорегистровой циклической схемы сдвига размера z. Нулевая величина циклического сдвига может не требовать быть циклически сдвигаемой. Так как многорегистровая схема циклического сдвига, которая реализует все возможные циклические сдвиги, должна предоставлять связи от каждого входного бита ко всем выходным битам, скорость, с которой она может функционировать, зависит от z. Для заданного z сложность может быть уменьшена, а скорость увеличена посредством разрешения только правильного поднабора из всех возможных циклических сдвигов. Например, H может быть сконструирована только с четными величинами циклических сдвигов. Суммирования в уравнениях (14), (19) и (20) представляют векторные XOR (исключающее ИЛИ) операции, которые закрываются (т.е. не обновляются), когда 1.
p(i,j)
bm
Для реализации суммирований в уравнениях (14), (19) и (20) позиции H,
i
k
,
j
m
j
z-р(х,k
).
b
b
2
bm
b
0≤≤0≤≤-l могут храниться в постоянной памяти (ROM) длины logz+1 битов. Сгруппированная информационная последовательность может храниться в памяти размера z, которая может быть считана в последовательном порядке. Когда каждый вектор информации u() считывается, соответствующая позиция из Н ROM может быть считана, и она инструктирует многорегистровую схему циклического сдвига о необходимом циклическом сдвиге. После циклического сдвига регистр, содержащий частичное суммирование, обновляется. Для выражения (14), после завершения каждого внутреннего суммирования, результат может быть использован для обновления другого регистра, содержащего внешнее суммирование. Когда внешнее суммирование завершено, оно может быть циклически сдвинуто на
(k
+1)m
m
-
b
b
b
При условии, что циклическое смещение может быть реализовано в одном периоде тактовых импульсов, кодирование может быть завершено за приблизительно  тактовых импульсов. Это число может быть уменьшено ценой 1 экстра z-широких регистров вычислением и хранением сумм уравнений (19) и (20), используя результаты, которые становятся доступны, когда уравнение (14) вычислено.
Расширение матрицы
Процедура расширения кода может быть применена к структурированному коду для достижения кода с более низкой кодовой скоростью. Постепенно код с более низкой кодовой скоростью может быть использован в последующих передачах процедуры (IR) инкрементальной избыточности. Конкретно, если модельная матрица первой передачи
тогда модельная матрица второй передачи может использовать
i
m
×m
.
n
k
m
u
u
u
k
v
v
u
u
u
k
v
v
v
v
v
m
bm2
b
b
b
b
b
b
b
b
b
b
b
(i)
(i)
(i)
(1)
(1)
(1)
(l)
(1)
(l)
(1)
(1)
(l)
(1)
(2)
(2)
(2)
(2)
(2)
и т.д., где для каждой передачи  подматрица H  имеет формат в (9) и имеет размер   Первая передача может отправлять  =+  групп битов, [(0),(1),...,(-1),(0),(1),...,v(m -1)], каждая группа имеет размер z. Декодирование после первой передачи выполняется с использованием сигналов [(0),(1),...,(-1),(0),(1),...,v(m -1)] и (21). Вторая передача может отправлять другие m  групп битов размера z, [(0),(1),...,( -1)],
m
m
z,
u(
), u(
),...,u(k
-
),v
(m
-
),v
(
),v
(
),...,v
(m
-
)
2
b
b
b
b
(2)
(1)
(1)
(2)
(2)
(2)
(2)
где  =  и биты первой передачи и второй передачи вместе [011 101 1] являются кодовой комбинацией, соответствующей (22).
k
/n
k
/(n
+ m
)
b
b
b
b
b
(2)
(1)
(2)
Поэтому декодирование после второй передачи выполняется на основе (22) и комбинированного принятого сигнала от первой передачи и второй передачи. Эта процедура может быть повторена для дальнейших передач. Декодирование после второй передачи основано на коде скорости   =   , которая ниже, чем у первой передачи. Эта процедура может быть повторена для дальнейших передач с каждой дополнительной передачей, способствующей более сильному, низкоскоростному коду.
s
,...,s
p
,.
p
i,
j,
i=j,
i=j+
0
k-1
0
m-1
b
b
b1
b2
b2
b
b
b2
b
Фиг.5 - схема последовательности операций кодировщика 300 и, в частности, микропроцессорa 301. Поток начинается на шаге 501, где текущий набор символов () принимается микропроцессором 301. На шаге 503 значения битов контроля четности определяются на основе текущего набора символов и H. В частности, биты контроля четности (.., ) определяются, как описано выше, с H, являющейся расширением базовой матрицы Н. Как обсуждалось, Н содержит секцию Ни секцию Н, и где Н содержит первую часть, содержащую колонку h, имеющую нечетный вес больше 2, и вторую часть, содержащую матричные элементы для строки столбца равные 1 для 1 для 1 и 0 в других местах. В дополнение, расширение базовой матрицы Н (для создания Н) использует единичные подматрицы для единиц в каждой колонке второй части Н', и где расширение использует парные подматрицы для четного количества 1 в h. На шаге 505 текущий набор символов и биты контроля четности передаются через передачу в эфир.
y
, y
(s0,..., s
)
i,
j,
i=j,
i=j+1
0
n-1
k-1
b
b
b1
b2
b2
b
Фиг.6 - схема последовательности операций кодировщика 400 и, в частности, микропроцессора 401. Поток логики начинается на шаге 601, где принятый вектор сигнала y=(,...) принимается. На шаге 603 оценки текущего набора символов s (т.е. текущего набора символов ) определяются на основе H. Как обсуждалось, H является расширением базовой матрицы Н, и где Н содержит секцию Н и секцию Н, и где Н содержит первую часть, содержащую столбец h, имеющий нечетный вес больше 2, и вторую часть, содержащую матричные элементы для строки столбца  равные 1 для 1 для и 0 в других местах.
s
p
i
i
Несмотря на то что изобретение было подробно показано и описано со ссылкой на определенный предпочтительный вариант осуществления, специалистами в данной области техники будет понятно, что в нем могут быть сделаны различные изменения по форме и содержанию, не выходя из сущности и объема изобретения. Например, в то время как изобретение было показано с упорядочиванием по и  в рамках определенного x, рядовой специалист в данной области техники будет отдавать себе отчет, что может возникать другое упорядочивание битов в рамках x, так как биты кодовой комбинации могут быть собраны в любом порядке при условии, что колонки H переупорядочены соответствующим способом. Дополнительно, в то время как приведенное выше описание было показано и описано со ссылкой на двоичные коды (т.е. коды, определенные на поле Галуа GF(2)), рядовой специалист в данной области техники будет отдавать себе отчет, что точно так же может быть использовано произвольное GF. Хотя примеры, данные выше, показаны в одном формате, возможны другие форматы, которые позволяют сходные процедуры кодировки и модификации кода. Например, строки H могут быть переставлены без затрагивания значений битов контроля четности. В другом примере может быть использована модифицированная ступенчатая структура для поднабора битов контроля четности. В еще одном примере могут быть выполнены дополнительные шаги во время расширения базовой матрицы до расширенной матрицы. Матрица H может быть также использована в любом типе декодировщика, который основан на проверочной матрице. Подразумевается, что такие изменения учитываются в объеме последующей формулы изобретения.