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

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Настоящее изобретение в целом относится к кодированию и декодированию данных, а в частности к способу и устройству для кодирования данных, использующему коды с контролем по четности низкой плотности (LDPC).
УРОВЕНЬ ТЕХНИКИ
H
q
q
.
q
k
Код с контролем по четности низкой плотности (LDPC) является кодом линейных блоков, заданным проверочной матрицей . В общем случае LDPС-код определен на поле Галуа GF(), ≥2Если =2, код является бинарным кодом. Все коды линейных блоков могут быть описаны как произведение -битного информационного вектора
s
x
x
y
s
1×k
k×n
1×n
1×k
r=k/n.
на кодогенерирующую матрицу G для порождения n-битовой кодовой комбинации , где кодовая скорость равна  Кодовая комбинация  передается через канал с помехами, и принятый вектор  сигнала передается на декодер для оценки вектора информации.
k
C
,
C
m=n-k.
С
T
H
x=sG
GH
=0
xH
=0
m×n
T
T
При заданном n-мерном пространстве строки G охватывают -мерное подпространство  кодовых комбинаций, а строки проверочной матрицы  охватывают m-мерное дуальное пространство ┴, где Поскольку  и , следует, что  для всех кодовых комбинаций в подпространстве , где “T” (или "") обозначает транспонирование матрицы. При обсуждении LDPС-кодов в общем написано, что
Hx
=0
T
T
(1),
0
где  - вектор-строка из нулей, и кодовая комбинация
x
s р
=
s
,
s
,...s
,p
,p
,...,p
,
p
,...,p
s
,..,s
0
1
k-1
0
1
m-1
0
m-1
0
k-1
[]=[]где  являются контрольными битами; а  являются систематическими битами, равными информационным битам в информационном векторе.
H
H
H
H
H
H,
H
H
H
H
n
m
v
d
i
j, i
n-
, j=
,
m
i
j,
h
n
i
ji
Для LDPС-кода плотность ненулевых позиций в  низкая, т.е. существует только маленькая доля 1 в , позволяющая лучшую эффективность корректировки ошибок и более простое декодирование, чем использование плотного . Проверочная матрица может быть также описана двудольным графом. Двудольный граф является не только графическим описанием кода, но также моделью декодера. В двудольном графе бит кодовой комбинации (следовательно, каждой колонки ) представлен переменной вершиной слева, и каждое проверочное уравнение (следовательно, каждая строка ) представлено проверочной вершиной справа. Каждая переменная вершина соответствует колонке  и каждая проверочная вершина соответствует строке , здесь “переменная вершина” и “колонка”  упоминаются взаимозаменяемо, как и “проверочная вершина” и “строка” . Переменные вершины являются присоединенными только к проверочным вершинам, и проверочные вершины являются присоединенными только к переменным вершинам. Для кода с битами кодовой комбинации и битами четности переменная вершина  присоединена к проверочной вершине посредством ребра, если бит кодовой комбинации участвует в проверочном уравнении =0,1...,101,...,-l. Другими словами, переменная вершина присоединена к проверочной вершине если позиция проверочной матрицы  равна 1. Отображающее уравнение (1), переменная вершина представляет допустимую кодовую комбинацию, если все проверочные вершины имеют равную четность. Ниже показан пример для иллюстрирования отношения между проверочной матрицей, проверочными уравнениями и двудольным графом. Пусть =12, код Ѕ скорости будет определен посредством
k
,
m
s
p
H
с левой частью, соответствующей (=6) информационным битам левой частью соответствующей (=6) битами  четности. Применяя (1),  в (2) определяет 6 проверочных уравнений следующим образом:
H
также имеет соответствующий двудольный граф, показанный на фиг. 1.
d
d
d
d
d
Двудольный граф LDPC кода подходящей конечной длины неизбежно имеет циклы. Цикл длины 2 (обозначенный как цикл-2) является путем 2 ребер, который проходит через  переменных вершин и  проверочных вершин и соединяет каждую вершину с собой без повторения каждого ребра. Короткие циклы, особенно циклы 4, ухудшают производительность итеративного декодера и обычно избегаются в модели кода.
m×n
m
×n
z
z
m×n
=m
×z
n=n
×z.
z×z
z×z
(x
z
z-х
z
m
×n
H
H
H
H
b
b
b
b
b
b
b
b
b
b
b
Когда размер кода становится большим, трудно закодировать и декодировать беспорядочно составленный LDPС-код. Вместо прямого построения большой псевдослучайной матрицы  структурированная модель LDPC начинается с маленькой  базовой матрицы Н, делает  копий Н и соединяет  копий для формирования большой матрицы , где m, Используя матричное представление, для построения  из Н каждая 1 в Н заменяется  подматрицей перестановок, и каждый 0 в Н заменяется  подматрицей, состоящей из нулей. Показано, что перестановка может быть очень простой без риска для производительности. Например, простой циклический сдвиг вправо, где подматрица перестановок получается сдвигом циклически вправо колонок единичной матрицы на заданную величину, может быть использован без ухудшения производительности декодирования. Так как циклический сдвиг mod ) раз эквивалентен циклическому правому сдвигу (() mod ) раз, этот текст обсуждает только циклический сдвиг вправо и упоминает его как циклический сдвиг для краткости. С этим ограничением каждая матрица  может быть уникально представлена модельной матрицей
bm
ij
b
ij
b
h
=0
p(i,j)
z×z
h
p(i,j)
H
Н, которая получается заменой каждой в  на =-1 для обозначения матрицы из нулей и заменой каждой =1 в Н на циклический сдвиг величины ≥0.
H
bm.
b
b
bm
m
×n
z.
Следовательно, вместо использования расширенной матрицы  код уникально определяется модельной матрицей Н Кодирование и декодирование может быть выполнено на основе много меньшей  Н и векторов битов, с каждым вектором, имеющим размер
H
H
H
H
H
Н
Н
H
H
H
H
bm
bm
bm
bm
bm
bm
bm
z
p(i,j)
z
z
Эта процедура по существу отображает каждое ребро  в векторное ребро размера  в  (представленное ), каждую переменную вершину  в векторную переменную вершину длины  в  (соответствующую колонке ) и каждую проверочную вершину  в векторную вершину длины  в  (соответствующую строке ). В структурированной модели произвольность встроена в  вследствие двух этапов: (a) псевдослучайной базовой матрице ; (b) псевдослучайного сдвига ребер в каждом векторном ребре. Сложность хранения и обработки структурированной модели ниже, поскольку обе стадии рандомизации очень простые.
n
k
),
R=k
/n
n
= z
×n
, k
=z
×k
, f=0,
f
f
f-
k
)
z
p(f,i,j)
i,j
f
f
z
p(f,i,j)
(f)
f
f
f
f
f
f
b
f
f
b
max
max
f
f
f
b
f
bm
f
bm
H
H
H
Часто требуются системы, такие как определенные в стандарте IEEE 802.16, для предоставления корректирующих ошибки кодов для семейства кодов размера (, где все коды в семействе имеют одинаковую кодовую скорость  и размер кода, увеличенный от базовой величины, 1,...,, где (+1) является общим количеством членов в семействе кодов, и z является коэффициентом расширения для го кода в семействе. Для этих систем возможно получить коды для всех (n, из одной базовой матрицы  и набора подходящих . Пусть будет величиной сдвига векторного ребра, расположенного в позиции () в -й модельной матрице () коэффициента  расширения. Соответственно, набор {} величин сдвигов и модельная матрица могут быть упоминаемы взаимозаменяемо.
p(f,i,j)
f
p(f,i,j), 0
i
m-1, 0
j
n-1
f.
p(f,i,j), 0
i
m-1, 0
j
n-1
f.
H
H
H
bm
b
b
Тем не менее не понятно, как определять величины  сдвигов для каждой (). Одним способом определения семейства кодов является поиск базовой матрицы  и/или ≤≤≤≤ независимо для всех заданных  Тем не менее этот подход требует, чтобы  и/или ≤≤≤≤ были заданы и сохранены для всех
H
H
H
b
b
b
Поскольку  определяет базовую структуру и взаимную связь сообщений LDPC декодера, будет предпочтительным повторно использовать  для всех кодов семейства. Когда один и тот же совместно используется всеми кодами в семействе,
p(f,i,j)
(i,j)
p(f,i,j)=
z
×z
j
f
f
(i,j)
p(f,i,j)
f
p(f,i,j)
H
H
H
H
b
f
f
bm
b
- Величина сдвига =-1, когда позиция  равна 0. Величина сдвига -1 используется для обозначения  полностью нулевой подматрицы, которая используется для замены позиции (i,) модельной матрицы (), в расширении до двоичной проверочной матрицы (). Если позиция  равна 0, одинаково для любого , т.е. ≡-1. Заметим, что "-1" является только меткой для подматрицы из нулей, и может быть равнозначно использована любая другая метка, которая не является неотрицательным целым, например "-2" или "∞".
p(f,i,j)
(i,j)
p(f,i,j)
z
×z
p(f,i,j)
(i,j)
f
f
p(f,i,j)
f
(i,j)
f
f.
H
H
H
H
b
j
f
bm
bm
- Величина сдвига ≥0, когда позиция  равна 1. Величина сдвига ≥0 используется для отметки  единичной подматрицы, циклически сдвинутой вправо на колонок. Подматрица используется для замены позиции модельной матрицы () в расширении до двоичной проверочной матрицы (). Значение может быть различным для разных , например, позиция () может быть различной для разных
p(f,i,j)
p(f,i,j)-p(i,j)
z
z
p(i,j)
z
.
p(i,j)
z
.
p(i,j)
z
z
n
k
.
f
f
f
f
f
f
f
f
В отношении значения неотрицательного предложено использовать для любого mod  для любого , где набор {} величин сдвигов является одинаковым для всех  Следовательно, только один набор {} требует определения, и это потенциально уменьшает сложность осуществления кодов различных Тем не менее вследствие действия операции взятия модуля набор {}, предназначенный для того, чтобы избежать плохих моделей циклов для определенного , может служить причиной большого количества циклов и кодовых комбинаций с низким весом для другого , имеющих следствием ухудшение эффективности корректировки ошибок для некоторых (, )
Таким образом, существует потребность в способе получения величин сдвигов
{p(f, i,j)}
p(i,j)
n
k
)
f
j
из определенного набора {}, в то же время поддерживая требуемые параметры кода для всех размеров кодов (, .
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
H
Фиг. 1 иллюстрирует двудольный граф матрицы  (12, 6).
Фиг. 2 - блок-схема кодера.
Фиг. 3 - блок-схема декодера.
Фиг. 4 - схема последовательности операций кодера на фиг. 2.
Фиг. 5 - схема последовательности операций декодера на фиг. 3.
Описание чертежей
p(i,j)
p(f,i,j)
z
p(i,j)
p(i,j),
p(f,i,j)
f
Чтобы направить усилия на вышеупомянутые потребности, базовая модельная матрица определена для наибольшей длины кода для каждой кодовой скорости. Набор сдвигов {} в базовой модельной матрице используется для определения величин сдвигов для всех остальных длин кодов той же кодовой скорости. Величины сдвигов {} для размера кода, соответствующего коэффициенту расширения  выводятся из {} пропорциональным масштабированием и модельная матрица, определенная посредством {}, используется для определения битов контроля по четности для f-го кода.
p(i,j)
p(f,i,j)
p(i,j)
f
p(f,i,j
p
i,j),z
/z
), z
z
f-
p(f,i,j).
0
f
0
f
Настоящее изобретение предлагает способ управления передатчиком, который генерирует биты контроля по четности на основе блока информации. Способ содержит этапы, на которых определяют базовую модельную матрицу, имеющую набор величин сдвигов для наибольшей длины кода, и определяют величины сдвигов для всех остальных длин кодов на основе набора величин сдвигов, где - индекс длин кодов, )=F(( - коэффициент расширения наибольшей длины кода,  - коэффициент расширения й длины кода. Блок информации принимают и модельную матрицу используют для определения битов контроля по четности. Модельную матрицу определяют посредством
p(i,j)
s=(s
s
)
p(f,i,j)
p(i,j)
f
0
kf-1
Настоящее изобретение дополнительно предлагает устройство, содержащее средства хранения для хранения базовой модельной матрицы, имеющей набор величин сдвигов для наибольшей длины кода. Устройство дополнительно содержит микропроцессор, принимающий блок информации ,...,и базовую модельную матрицу. Микропроцессор определяет величины сдвигов для всех других длин кода на основе набора величин сдвигов , где - индекс длин кодов,
p(f,i,j
p
i,j),z
/z
), z
z
f-
p(f,i,j)
0
f
0
f
)=F(( - коэффициент расширения наибольшей длины кода,  - коэффициент расширения й длины кода. Микропроцессор выводит биты контроля по четности на основе модельной матрицы, определенной посредством и блока информации
s
s
s
0
kf-1
=(,..., ).
s
s
s
,...,s
p(i,j)
p(f,i,j)
p(i,j)
f
p(f,i,j
p
i, j),z
/z
), z
z
f-
s
s
p(f,i,j)
0
k-1
0
f
0
f
0
kf-1
Настоящее изобретение дополнительно предлагает способ управления приемником, который оценивает блок информации=(). Способ содержит этапы, на которых принимают вектор сигнала, определяют базовую модельную матрицу, имеющую набор величин сдвигов для наибольшей длины кода, и определяют величины сдвигов для всех остальных длин кода на основе набора величин сдвигов, где - индекс длин кодов, ) = F(( - коэффициент расширения наибольшей длины кода,  - коэффициент расширения й длины кода. Блок информации =(,..., ) затем оценивают на основе модельной матрицы, определенной посредством и принятого вектора сигнала.
p(i,j)
p(f,i,j)
p(i,j)
f
p(f,i,j
p
i,j),z
/z
, z
z
f-
s=(s
,..., s
)
p(f,i,j)
0
f
0
f
0
kf-1
В заключение, настоящее изобретение предлагает устройство, содержащее средства хранения для хранения базовой модельной матрицы, имеющей набор величин сдвигов для наибольшей длины кода. Устройство дополнительно содержит декодер, принимающий вектор сигнала и определяющий величины сдвигов для всех других длин кода на основе набора величин сдвигов, где - индекс длин кодов, )=F(() - коэффициент расширения наибольшей длины кода,  - коэффициент расширения й длины кода. Декодер выводит оценку для блока информации на основе модельной матрицы, определенной и принятым вектором сигнала.
H
H
b
b
p(i,j)
p(i,j)
Показано, что свойства расширенной матрицы  тесно связаны со свойствами базовой матрицы Н и величинами сдвигов. Определенные нежелательные шаблоны величин сдвигов будут сохранять циклы и шаблоны Н кодовых комбинаций и повторять их многократно в расширенной матрице  вследствие квазициклической природы модели кода, приводя к неприемлемой эффективности корректировки ошибок.
b
f
j
(n
, k
)
Так как кодовые комбинации с низким весом содержат короткие циклы, если Н не имеет ни одной колонки с весом 1, достаточно убедиться, что короткие циклы разорваны для всех интересующих размеров кодов для того, чтобы получить хорошую эффективность декодирования.
b
Обнаружено, что цикл Н дублируется в расширенной матрице, если удовлетворяется следующее условие.
H
H
b
Если в базовой матрице 2c ребер из цикла длины 2c, тогда в расширенной матрице  соответствующие 2c векторных ребер из z циклов длины 2c тогда и только тогда, если
H
где z - коэффициент расширения, p(i) - величина циклического сдвига ребра i в модельной матрице
H
, и ребра 0, 1, 2,..., 2c-l (в этом порядке) формируют цикл в
.
bm
b
p(i,j)
z
z
z
p(i,j)
z
f
f
f
f
Тогда как фиксированный набор величин {} сдвигов, который не удовлетворяет уравнению (4) для одного значения  может фактически удовлетворять уравнению (4) для другого значения , линейность уравнения (4) показывает, что уравнение может не удовлетворять ему для всех , если {} масштабируется пропорционально .
p(i,f)
z
z
Z
/Z
p(i,j)
=
р(0,i,j)
b
0
1
0
1
0
Допустим, что один набор величин {} сдвигов должен использоваться для расширения данной базовой матрицы Н для двух коэффициентов расширения  и , α=>1. Допустим, что набор величин сдвигов {} {} освобожден от циклов длины 2c для коэффициента Zрасширения,
тогда
i
{p(i,j)/α}
z
z
p(i,j)/α
z
p(i,j)
H
H
H
bm
b
1
1
1
0
где p(i) - величина циклического сдвига ребра  в модельной матрице (0), и ребра 0, 1, 2,..., 2c-l (в этом порядке) формируют цикл в . Уравнение (6) показывает, что если набор масштабированных величин сдвигов используется для коэффициента расширения , тогда матрица , расширенная от , будет также освобождена от циклов длины 2с. Так как 2c может быть любой длиной цикла, использование отмасштабированных величин {} будет аннулировать все типы циклов для , которые аннулированы набором {} для z.
p(i,j)/α
p(i,j)
p(
,i,j)
Z
z
p(i,f)
0
1
Обсуждение выше пренебрегает ограничением, таким что величины сдвигов после масштабирования по-прежнему должны быть целыми. Например, должна быть выполнена функция пола └x┘ (которая является наибольшим целым числом, меньшим или равным x), функция потолка ┌x┐ (которая является наименьшим целым числом, большим или равным x) или функция округления [x](которая является целым числом, которое менее всего отличается от x) над всеми  для получения целого числа. В общем, при заданных величинах сдвигов =0 для  величины сдвигов для  могут быть получены как функция F(.) от и α.
z
p(i,j)
z
0
1
Например, если функция округления используется на верхнем уровне (6) и величинами сдвигов, предназначенных для , являются , тогда набором величин сдвигов, применяемых к , является
p(i,j)
p(i,j)
.
p(i,j),
b
bm
bm
H
H
Хотя обычно все положительные будут отмасштабированы, масштабирование, такое как (8), может быть применено к единственному поднабору {}Например, те, которые не затронуты никакими циклами, не должны быть отмасштабированы, например ребра колонок Н веса 1, если они существуют. В зависимости от определения функции F(.) и если масштабирование применяется только всем неотрицательным базовые матрицы (0) и (1) могут быть или не быть одинаковыми.
p(f,i,j)
p(0,i,j)
f
p(f,i,j)
f-
f=1,...,f
z
z
p(0,i,j)=p(i,f), α
=z
/z
p(f,i,j)
p(i,j)
z
p(i,j)
H
H
bm
bm
max
0
f
f
0
f
f
Вышеприведенный анализ без труда применен для нахождения , если система требует более двух коэффициентов расширения. В этом случае определяется материнская модельная матрица (также называемая базовой модельной матрицей) (0), имеющая набор величин сдвигов  для наибольшей длины кода, из которой получается модельная матрица (), имеющая величины сдвигов для го семейства кодов, . При условии =max() и  должно быть использовано в выражениях, аналогичных (8) в получении из, так что одинаковые циклы базовой матрицы исключаются для всего диапазона . В частности, при условии того, что все найдены,
p(f,i,j)
p(i,j).
в общем используется для получения из Более того, в качестве примера, функция F(.) может быть определена как
z
z
0
f
при условии  = max() и используя функцию округления, соответствующую (8). Сходным образом, может быть использована функция пола └x┘ или функция потолка ┌x┐ вместо функции округления [x].
Н
Н
b
b
Заметим, что вышеупомянутая методика расчета применяется к любой базовой матрице . Например, она может применяться к , состоящим из двух частей,
Н
H
b2
b
h
b2
w
чья детерминированная часть  может быть дополнительно разделена на две части, где h имеет нечетный вес >2 и ' имеет детерминированную ступенчатую структуру:
b2
i
j
Другими словами, Н' содержат матричные элементы для строки , столбца , равные:
Реализация кодера для семейства кодов
H
H
bm
bm
Поскольку все члены семейства, соответствующего вышеприведенному плану, получаются из материнской модельной матрицы =(0), таким образом все имеющие одинаковую структуру, процесс кодировки для каждого члена семейства является аналогичным. Часть или целая модельная матрица может быть сохранена и интерпретироваться в качестве инструкций для многорегистровой схемы циклического сдвига для выполнения циклических сдвигов сгруппированной информационной последовательности.
H
H
bm
bm
0
f
f
f
0
f
f
0
f
0
f
max
x
f
p(i,j)
p(i,j)/(z
/z
)
p(i,j)
z
f
α
(z
/z
)
α
z
/z
)
p(i,j)/(z
/z
)
, p(i,j)
p(f,i,f)}, f=0, 1
f
-1
-1
Так как все члены семейства получаются из материнской модельной матрицы =(0), реализация кодера для семейства требует только, что материнская матрица была сохранена. При условии, что используется функция [] округления, для -го члена семейства циклические сдвиги материнской модельной матрицы заменяются циклическими сдвигами [] для >0, где  обозначает коэффициент расширения -го члена семейства, которое кодируется. Непосредственной реализацией этого является хранение значений  = (или = для каждого члена семейства в постоянной памяти и вычисление значений []>0 "на лету" с использованием умножителя. В качестве альтернативы наборы {,..., величин сдвигов для каждого члена семейства могут быть заранее рассчитаны, используя (8) (или в более общем смысле, (7)), и сохранены в постоянной памяти.
z
z
f
f
Многорегистровая схема циклического сдвига может быть модифицирована для обеспечения циклических сдвигов для всех длин слов , соответствующих членам семейства. Несмотря на то, что модификация многорегистровой схемы циклического сдвига будет усложнять логику многорегистровой схемы циклического сдвига и неизбежно влечь за собой более медленные тактовые частоты, альтернативой, требующей дополнительных логических ресурсов, является осуществление различных многорегистровых схем циклического сдвига для каждого размера  слова.
z
.
f
Фиг. 2 - блок-схема кодера 200. Как показано, кодер 200 содержит микропроцессор 201, таблицу 203 поиска и логическую схему 205 для определения коэффициента  расширенияХотя и показаны существующие внешне по отношению друг к другу, рядовой специалист в данной области техники будет давать себе отчет, что функциональные возможности логической схемы 205 могут быть осуществлены в микропроцессоре 201.
Микропроцессор 201 предпочтительно содержит цифровой процессор сигналов (DSP), такой как, но не ограниченный DSP MSC8300 и DSP56300. Дополнительно таблица 203 поиска служит в качестве средств хранения для хранения матрицы и содержит постоянную память; тем не менее рядовой специалист в данной области техники будет отдавать себе отчет, что другие виды памяти (например, память с произвольной выборкой, магнитная запоминающая память и т.д.) могут быть также использованы. Во втором варианте осуществления функциональные возможности микропроцессора 201 и таблицы 203 поиска и логической схемы 205 могут быть включены в специализированную интегральную схему (ASIC) или программируемую вентильную матрицу (FPGA). В частности, таблица 203 поиска может быть реализована в виде памяти, соответствующей наличию или отсутствию путей сигнала в схеме.
x
H
s
bm
0
mf-1
0
kf-1
f
bm
f
f
f
b
f
b
f
f
0
f
p
,...,p
(s
s
)
z
z
z
=k
/k
=n
/n
,
z
α
=z
/z
Как обсуждалось выше, закодированные данные обычно принимают вид множества битов контроля по четности в дополнение к систематическим битам, где вместе биты контроля по четности и систематические биты формируют кодовую комбинацию . В первом варианте осуществления настоящего изобретения базовая модельная матрица  хранится в таблице 203 поиска и выбирается микропроцессором 201 для нахождения битов контроля по четности. В частности, микропроцессор 201 определяет соответствующие значения для битов p=() контроля по четности на основе блока информации=,...,, коэффициента расширения и базовой модельной матрицы Н. Коэффициент  расширения определяется логикой 205, использующей и использованием групповых битов в векторы длины  так же, как нахождение . После того как биты контроля по четности найдены, они и набор систематических битов затем переправляется передатчику и передается в приемник.
z
.
f
bm
H
Фиг. 3 - блок-схема декодера 300 согласно одному варианту осуществления настоящего изобретения. Как показано, декодер 300 содержит микропроцессор 301, таблицу 303 поиска и логическую схему 305 для определения коэффициента расширения  В первом варианте осуществления настоящего изобретения микропроцессор 301 содержит цифровой процессор сигналов (DSP), такой как, но не ограниченный DSP MSC8300 и DSP56300. Дополнительно таблица 303 поиска действует как средства хранения для хранения базовой модельной матрицы  и содержит постоянную память. Тем не менее рядовой специалист в данной области техники будет отдавать себе отчет, что другие виды памяти (например, память с произвольной выборкой, магнитная запоминающая память и т.д.) могут быть также использованы. Во втором варианте осуществления функциональность микропроцессора 301 и таблицы 303 поиска может быть включена в специализированную интегральную схему (ASIC) или программируемую вентильную матрицу (FPGA). В частности, таблица 303 поиска может быть реализована в виде памяти, соответствующей наличию или отсутствию путей сигнала в схеме.
y
x
x
y
S
y
=
y
,...,y
f
s
..,s
(s
,...,s
)
(у
,...,y
)
z
z
=k
/k
=n
/n
,
z
α
=z
/z
0
n-1
bm
0
kf-1
0
kf-1
0
kf-1
bm
f
f
f
b
f
b
f
f
0
f
Принятый вектор () сигнала (принятый посредством приемника) соответствует кодовой комбинации , переданной через канал с шумом, где закодированные данные , как обсуждалось выше, являются вектором -го члена семейства кодов. В первом варианте осуществления настоящего изобретения базовая модельная матрица Н хранится в таблице 303 поиска и выбирается микропроцессором 301 для декодирования и оценки блока информации=(,.). В частности, микропроцессор 301 оценивает блок информации на основе принятого вектора = сигнала и базовой модельной матрицы Н. Коэффициент  расширения определяется логикой 305, использующей и используется для группировки принятых сигналов и битов в векторы длины  так же, как нахождения .
(s
,...,s
)
f
f
p(f,i,j)
.
p(i,j)
p(i,j)
α
p(f,i,j)
.
(p
,...,p
)
0
k-1
bm
bm
bm
f
0
mf-1
H
H
H
Фиг. 4 - схема последовательности операций кодера 200 и, в частности, микропроцессора 201. Поток начинается на этапе 401, где текущий блок информации принимается микропроцессором 201. На этапе 403 значения битов контроля по четности определяются на основе блока информации и (), где () уникально определяется {}В частности, набор {} величин сдвигов базовой модельной матрицы  считывается из памяти. Микропроцессор использует {} и  для определения {}Биты контроля по четности определяются посредством решения уравнения (1). На этапе 405 информационный блок и биты контроля по четности передаются по каналу.
Фиг. 5 - схема последовательности операций кодера 300 и, в частности, микропроцессора 301. Поток логики начинается на этапе 501, где принятый вектор
y
s
H
H
H
y
,y
s
,...,s
)
f
f
p(f,i
j)
p(i,j)
p(i,j)
α
p(f,i,j)
.
p(f,i,j)
f
0
n-1
0
kf-1
bm
bm
bm
f
bm
=(,...) сигнала принимается. На этапе 503 оценки блока информации =( определяются на основе (), где () уникально определена посредством {,}. В частности, набор {} величин сдвигов базовой модельной матрицы  считывается из памяти. Микропроцессор использует {} и  для определения {} Как обсуждалось, микропроцессор обрабатывает принятый вектор сигнала в соответствии с величинами сдвигов {} (или эквивалентно, Н()) для получения оценок блока информации. В предпочтительном варианте осуществления микропроцессор выполняет обработку согласно алгоритму пересылки сообщений, используя двудольный граф кода.
Примеры
n
=
p(i,j)
f
0
В качестве примера описывается модель кода для 19 размеров кода  в диапазоне от 576 до 2304 битов. Каждая базовая модельная матрица предназначена для величины сдвига Z96. Набор величин сдвигов {} определен для базовой модельной матрицы и используется для других размеров кодов той же скорости. Для других размеров кодов величины сдвигов получаются из базовой модельной матрицы следующим образом.
z
p(f,i,j)
p(i,j)}
p(i,j)
f
Для размера кода, соответствующего коэффициенту расширения , его величины {} сдвига получаются из {пропорциональным масштабированием
α
z
/z
f
0
f
Заметим, что = и └x┘ обозначает функцию пола, которая дает ближайшее целое число в направлении -∞.
f
f
Базовые модельные матрицы сведены в таблицы внизу для трех кодовых скоростей 1/2, 2/2 и 3/4. Здесь  является индексом длин кодов для данной кодовой скорости,  = 0,1,2,... 18.
Скорость 1/2:
b
b
m
=
Базовая модельная матрица имеет размер n=24, 12 и коэффициент расширения
z
n
z
0
0
f
f
f
=96 (т.е., n=24*96=2304). Для получения других размеров кодов  коэффициент расширения  равен n/24.
Скорость 2/3:
b
b
0
0
f
f
f
m
=
z
n
z
Базовая модельная матрица имеет размер n=24, 8 и коэффициент расширения =96 (т.е. n=24*96=2304). Для получения других размеров кодов  коэффициент расширения  равен n/24.
Скорость 3/4:
b
b
0
0
m
=
z
Базовая модельная матрица имеет размер n=24, 6 и коэффициент расширения =96 (т.е. n=24*96=2304).
n
z
f
f
f
Для получения других размеров кодов  коэффициент расширения  равен n/24.
z/2
p(i,j)
p{i,f)
z
z
p(0,i,j)=p(i,j)
f
bm
0
f
bm
Несмотря на то, что изобретение было подробно показано и описано со ссылкой на определенный предпочтительный вариант осуществления, специалистами в данной области техники будет понято, что в нем могут быть сделаны различные изменения по форме и содержанию, не выходя из сущности и объема изобретения. Например, когда диапазон размеров кодов очень большой, например α приближается к , становится очень трудно найти подходящий набор {} величин сдвигов. Следовательно, если диапазон размеров кодов очень велик, т.е. α велико, могут использовать различные наборы {}, каждый из которых покрывает диапазон  для семейства кодов. В другом примере, хотя обсуждение допускало, что используются материнская модельная матрица Н(0), z=max(), и используются для 0-го члена семейства кодов, специалисты в данной области техники будут понимать, что Н(0),
z
p(i,j)
p(f,i,j)
z
z
z
z
0
0
f
0
f
и  могут быть определены для размера кода не в семействе кодов, но использоваться для получения величин сдвигов интересующего семейства кодов. В другом примере, хотя обсуждение допускало, что = max(), специалисты в данной области техники будут понимать, что значение , не равное max(), может быть использовано в выводе величины сдвига. Подразумевается, что такие изменения появляются в объеме последующей формулы изобретения.