КОДИРОВАНИЕ И ДЕКОДИРОВАНИЕ LDPC ПАКЕТОВ ПЕРЕМЕННЫХ РАЗМЕРОВ
CODING AND DECODING OF LDPC PACKAGES OF VARIABLE SIZES

Для настоящей заявки испрашивается приоритет на основании предварительной патентной заявки США № 60/886496 под названием “LDPC HARMONIZATION”, поданной 24 января 2007 г., принадлежащей правообладателю настоящей заявки и включенной в настоящий документ путем ссылки.
Область техники, к которой относится изобретение
Изобретение относится в общем к области связи и, в частности, к методам кодирования и декодирования данных.
Уровень техники
В системе связи передатчик может кодировать пакет данных для получения битов кода, перемежения битов кода и отображения перемеженных битов в символы модуляции. Затем передатчик может обрабатывать и передавать символы модуляции по каналу связи. Канал связи может искажать передачу данных при конкретном отклике канала и дополнительно ухудшать передачу данных шумом и помехой. Приемник может получать принятые символы, которые могут быть искаженными и ухудшенными версиями переданных символов модуляции. Приемник может обрабатывать принятые символы для восстановления переданного пакета.
Кодирование, выполняемое передатчиком, может позволять приемнику надежно восстанавливать переданный пакет с ухудшенными принятыми символами. Передатчик может осуществлять кодирование на основании кода прямой коррекции ошибок (FEC), который генерирует избыточность в битах кода. Приемник может использовать избыточность для повышения вероятности восстановления переданного пакета.
Для кодирования можно использовать различные типы кода FEC. Некоторые общие типы кода FEC включают в себя сверточный код, турбокод и код контроля четности низкой плотности (LDPC). Сверточный код или турбокод может кодировать пакет из k информационных битов и генерировать кодированный пакет из приблизительно r умноженное на k битов кода, где 1/r - кодовая скорость сверточного или турбокода. Сверточный код может легко кодировать пакет любого размера, пропуская каждый информационный бит через кодер, который может каждый раз оперировать на одном информационном бите. Турбокод также может поддерживать разные размеры пакета с использованием двух составных кодеров, которые могут каждый раз оперировать на одном информационном бите, и перемежителя кода, который может поддерживать разные размеры пакета. Код LDPC может в определенных условиях работы иметь более высокую производительность, чем сверточный и турбокоды. Однако код LDPC обычно предназначен для конкретного размера пакета и может не иметь возможности быстро реагировать на пакеты изменяющихся размеров.
Поэтому в технике существует необходимость в методах поддержки эффективного кодирования и декодирования LDPC пакетов изменяющихся размеров.
Раскрытие изобретения
G
G
H
H
B
B
B
B
B
B
B
B
B
B
В настоящем документе описаны методы поддержки кодирования и декодирования LDPC. Согласно одному аспекту кодирование и декодирование LDPC пакетов изменяющихся размеров можно эффективно поддерживать с помощью множества базовых матриц контроля четности разных размеров и множества значений поднятия, равных разным степеням 2. Базовую матрицу  контроля четности размером m×n можно использовать для кодирования пакета до k = n - m информационных битов для получения кодированного пакета или кодового слова из n битов кода. Эту базовую матрицу  контроля четности можно «поднимать» на значение поднятия L для получения поднятой матрицы  контроля четности размером L·m×L·n. Поднятую матрицу  контроля четности можно использовать для кодирования пакета до L·k информационных битов для получения кодового слова из L·n битов кода. Широкий диапазон размеров пакета может поддерживаться с помощью сравнительно малого множества базовых матриц контроля четности и сравнительно малого множества значений поднятия. Поднятие также может обеспечивать эффективное параллельное кодирование и декодирование, что может повышать производительность. Кроме того, поднятие может снижать сложность описания для больших кодов LDPC.
В другом аспекте одно множество значений циклического сдвига для ненулевых элементов базовой матрицы контроля четности для одного значения поднятия (например, максимального значения поднятия) можно использовать для генерации значений циклического сдвига для всех остальных значений поднятия, равных разным степеням двойки. Согласно еще одному аспекту значения циклического сдвига s и s + L/m можно выбирать для двух ненулевых элементов в столбце базовой матрицы контроля четности, имеющем по меньшей мере три ненулевых элемента, где s - произвольное значение, и m равно степени 2. В одном варианте осуществления m равно 4, и значения циклического сдвига для двух ненулевых элементов равны s и s + L/4. Эти значения циклического сдвига могут упрощать кодирование и декодирование.
Различные аспекты и признаки раскрытия более подробно описаны ниже.
Краткое описание чертежей
Фиг.1 - система беспроводной связи.
Фиг.2 - блок-схема базовой станции и терминала.
Фиг.3 - граф Таннера для иллюстративного кода LDPC.
Фиг.4 - поднятие базовой матрицы контроля четности.
Фиг.5 - множество из четырех матриц циклической перестановки.
Фиг.6 - поднятая матрица контроля четности.
Фиг.7 - другое представление поднятой матрицы контроля четности.
Фиг.8 - граф для поднятой матрицы контроля четности.
Фиг.9 - процесс для обработки данных.
Фиг.10 - устройство для обработки данных.
Фиг.11 - процесс обработки пакета.
Фиг.12 - другой процесс обработки пакета.
Фиг.13 - устройство для обработки пакета.
Фиг.14 - еще один процесс обработки пакета.
Фиг.15 - еще одно устройство для обработки пакета.
Осуществление изобретения
Описанные в настоящем документе методы можно использовать для различных областей применения, например связь, вычисления, построение сетей и т.д. Методы также можно использовать для различных систем связи, в том числе беспроводных систем, проводных систем и т.д. Для ясности некоторые аспекты методов описаны ниже для системы беспроводной связи.
На фиг.1 показана система беспроводной связи 100, которую также можно именовать сетью доступа (AN). Для простоты на фиг.1 показаны только одна базовая станция 110 и два терминала 120 и 130. Базовая станция - это станция, которая осуществляет связь с терминалами, а также может именоваться точкой доступа, Узлом B, усовершенствованным Узлом B и т.д. Терминал может быть стационарным или мобильным, а также может именоваться терминалом доступа (AT), мобильной станцией, пользовательским оборудованием, абонентским блоком, станцией и т.д. Терминал может представлять собой сотовый телефон, карманный персональный компьютер (КПК), беспроводное устройство связи, беспроводной модем, карманное устройство, портативный компьютер, беспроводной телефон и т.д. Терминал может осуществлять связь с базовой станцией по прямой и/или обратной линиям связи в любой данный момент времени. Прямая линия связи (или нисходящая линия связи)- это линия связи от базовых станций к терминалам, и обратная линия связи (или восходящая линия связи) - это линия связи от терминалов к базовым станциям. Согласно фиг.1 терминал 120 может принимать данные от базовой станции 110 по прямой линии связи 122 и может передавать данные по обратной линии связи 124. Терминал 130 может принимать данные от базовой станции 110 по прямой линии связи 132 и может передавать данные по обратной линии связи 134. Описанные в настоящем документе методы можно использовать для передачи по прямой линии связи, а также по обратной линии связи.
На фиг.2 показана блок-схема варианта осуществления базовой станции 110 и терминала 120, показанных на фиг.1. В этом варианте осуществления базовая станция 110 снабжена S антеннами 224a - 224s, и терминал 120 снабжен T антеннами 252a - 252t, где в общем случае S ≥ 1 и T ≥ 1.
На прямой линии связи, на базовой станции 110, процессор 210 данных передачи (TX) может принимать пакет данных из источника данных 208, обрабатывать пакет (например, кодировать, перемежать и отображать в символы), на основании формата пакета выдавать символы данных, которые являются символами модуляции для данных. Процессор MIMO TX 220 может мультиплексировать символы данных с контрольными символами, осуществлять пространственную обработку (например, предварительное кодирование), если применимо, и выдавать S выходных символьных потоков на S передатчиков (перед.) 222a - 222s. Каждый передатчик 222 может обрабатывать свой выходной символьный поток (например, для OFDM) для получения выходного чипового потока. Каждый передатчик 222 может дополнительно преобразовывать (например, преобразовывать в аналоговый вид, фильтровать, усиливать и повышать частоту) свой выходной чиповый поток и генерировать сигнал прямой линии связи. S сигналов прямой линии связи от передатчиков 222a - 222s могут передаваться через S антенн 224a - 224s, соответственно.
На терминале 120 T антенн 252a - 252t могут принимать сигналы прямой линии связи от базовой станции 110, и каждая антенна 252 может выдавать принятый сигнал на соответствующий приемник (прием.) 254. Каждый приемник 254 может обрабатывать (например, фильтровать, усиливать, понижать частоту и цифровать) свой принятый сигнал для получения выборок, дополнительно обрабатывать выборки (например, для OFDM) для получения принятых символов и выдавать принятые символы на детектор MIMO 256. Детектор MIMO 256 может осуществлять детектирование MIMO на принятых символах, если применимо, и выдавать детектированные символы. Процессор 260 данных приема (RX) может обрабатывать (например, снимать отображение в символы, отменять перемежение и декодировать) детектированные символы и выдавать декодированные данные на приемник данных 262. В общем случае обработка посредством детектора MIMO 256 и процессора 260 данных RX комплементарна обработке посредством процессора 220 MIMO TX и процессора 210 данных TX на базовой станции 110.
На обратной линии связи, на терминале 120, пакет данных может обеспечиваться источником данных 278 и обрабатываться (например, кодироваться, перемежаться и отображаться в символы) процессором 280 данных TX. Символы данных от процессора 280 данных TX могут мультиплексироваться с контрольными символами и подвергаться пространственной обработке процессором 282 MIMO TX и дополнительно обрабатываться передатчиками 254a - 254t, которые генерируют T сигналов обратной линии связи, которые могут передаваться через антенны 252a - 252t. На базовой станции 110 сигналы обратной линии связи от терминала 120 могут приниматься антеннами 224a - 224s, обрабатываться приемниками 222a - 222s, детектироваться детектором MIMO 238 и дополнительно обрабатываться процессором 240 данных RX для восстановления пакета, переданного терминалом 120.
Контроллеры/процессоры 230 и 270 могут управлять работой базовой станции 110 и терминала 120, соответственно. Контроллеры/процессоры 230 и 270 могут определять размеры пакетов, подлежащих передаче и/или приему. Контроллеры/процессоры 230 и 270 могут затем управлять кодированием посредством процессоров 210 и 280 данных TX, соответственно, и/или управлять декодированием посредством процессоров 240 и 260 данных RX, соответственно. В блоках памяти 232 и 272 могут храниться данные и программные коды для базовой станции 110 и терминала 120, соответственно.
B
B
B
B
Согласно одному аспекту кодирование и декодирование LDPC пакетов изменяющихся размеров можно эффективно поддерживать с помощью множества базовых матриц контроля четности разных размеров и множества значений поднятия, равных разным степеням 2. Базовые матрицы контроля четности могут предназначаться для базовых кодов LDPC разных скоростей (k, n), где k - количество информационных битов и n - количество битов кода. Каждый базовый код LDPC можно поднимать, как описано ниже, для получения множества поднятых кодов LDPC, которые можно использовать для кодирования или декодирования пакетов разных размеров. Диапазон размеров пакета может поддерживаться путем удлинения или сокращения кодов LDPC за счет добавления или удаления битов четности в базовом графе.
Код LDPC можно задать разреженной матрицей контроля четности, имеющей сравнительно немного ненулевых/непустых элементов и много нулевых/пустых элементов. Матрица контроля четности задает множество линейных ограничений на битах кода и может быть представлена в виде графа Таннера.
1
7
1
4
1
7
1
4
1
2
3
7
a
p
На фиг.3 показан граф Таннера 300 для иллюстративного базового кода LDPC. В этом примере граф Таннера 300 включает в себя семь вершин-переменных V - V, представленные семью кружками, и четыре контрольные вершины C - C, представленные четырьмя квадратиками. Каждая вершина-переменная представляет собой бит кода, который может либо передаваться, либо перфорироваться (т.е. не передаваться). Семь битов кода для вершин-переменных V - V образуют кодовое слово. Каждая контрольная вершина представляет ограничение, и четыре контрольные вершины C - C представляют четыре ограничения, которые задают базовый код LDPC. Вершины-переменные соединены с контрольными вершинами ребрами. В этом примере 16 ребер  -  соединяют семь вершин-переменных с четырьмя контрольными вершинами. Степень вершины равна количеству ребер, соединенных с этой вершиной. В этом примере вершины-переменные V и V являются вершинами 3 степени, и вершины-переменные V - V являются вершинами 2 степени. Для каждой контрольной вершины все биты кода в вершинах-переменных, соединенных с этой контрольной вершиной, подчиняются ограничению, состоящему в том, что их сумма должна быть равна 0 (по модулю 2).
H
H
H
H
b
b
1
7
1
4
b
1
1
2
3
b
a
b
c
На фиг.3 также показана базовая матрица  контроля четности, соответствующая графу Таннера 300.  включают в себя семь столбцов для семи вершин-переменных V - V и четыре строки для четырех контрольных вершин C - C. Каждый столбец  включает в себя 1 элемент для каждого ребра, соединенного с вершиной-переменной, соответствующей этому столбцу. Например, столбец 1 включает в себя три 1 в строках 1, 2 и 3 для трех ребер ,  и , соединяющих соответствующую вершину-переменную V с контрольными вершинами C, C и C в графе Таннера 300. Каждый из остальных столбцов  включает в себя две или три 1 для двух или трех ребер, соединяющих соответствующую вершину-переменную с двумя или тремя контрольными вершинами.
Ограничения для кода LDPC можно выразить в матричной форме как:
, Уравнение (1)
H
B
B
где  - матрица контроля четности m×n для кода LDPC,
x
B
B
- вектор-столбец n×1 из n битов кода для кодового слова, и
0
- вектор-столбец из одних нулей.
0
H
x
Для простоты  может обозначать вектор или матрицу из одних нулей в нижеследующем описании. Матричное умножение в уравнении (1) осуществляется согласно арифметике по модулю 2. Кодовое слово считается верным, если ограничения в уравнении (1) выполняются. Кодирование пакета на основании матрицы  контроля четности для получения кодового слова  описано ниже.
Малый базовый код LDPC можно поднять для получения более крупного поднятого кода LDPC. Поднятия можно добиться путем замены каждого ненулевого элемента в базовой матрице контроля четности для базового кода LDPC матрицей перестановки L×L для получения поднятой матрицы контроля четности для поднятого кода LDPC. Это дает L копий базового графа для генерируемого базового кода LDPC. Матрицы перестановки определяют, как вершины-переменные в каждой копии графа соединяются с контрольными вершинами в L копиях графа.
H
H
σ
H
H
σ
σ
σ
b
b
l
b
a
p
a
a
На фиг.4 показан пример поднятия для базовой матрицы  контроля четности, показанной на фиг.3. Каждый ненулевой элемент  (который соответствует ребру в графе Таннера) заменяется матрицей перестановки  L×L для получения поднятой матрицы  контроля четности 16 матриц перестановки для 16 ненулевых элементов  обозначаются  - , где  - матрица перестановки для ребра  на фиг.3.
Матрицы перестановки можно задавать по-разному. В одном варианте осуществления множество матриц перестановки может быть заранее задано, и матрицу перестановки для каждого ненулевого элемента базовой матрицы контроля четности можно выбирать из этого заранее заданного множества матриц перестановки. В другом варианте осуществления для ненулевых элементов базовой матрицы контроля четности используются матрицы циклической перестановки.
σ
I,
σ
σ
σ
σ
0
1
2
3
s
s,
s
На фиг.5 показано множество из четырех матриц циклической перестановки для L = 4. В этом примере каждая матрица перестановки имеет размер 4×4. Матрица перестановки  для значения циклического сдвига, равного нулю, равна единичной матрице  имеющей единицы вдоль диагонали и нули во всех остальных местах. Матрица перестановки  для значения циклического сдвига, равного единице, получается из единичной матрицы путем перемещения или сдвига самой нижней строки в верхнюю позицию. Матрица перестановки  для значения циклического сдвига, равного 2, получается из единичной матрицы путем перемещения двух самых нижних строк в верхнюю позицию. Матрица перестановки  для значения циклического сдвига, равного трем, получается из единичной матрицы путем перемещения трех самых нижних строк в верхнюю позицию. В общем случае матрица перестановки  L×L для значения циклического сдвига, равного  получается из единичной матрицы путем перемещения  самых нижних строк в верхнюю позицию, где 0 ≤ s ≤ L-1.
H
σ
σ
σ
σ
H
l
a
p
0
3
l
На фиг.6 показан пример поднятой матрицы  контроля четности, показанной на фиг.4, в которой каждая из 16 матриц перестановки  -  заменена одной из четырех матриц циклической перестановки  - , показанных на фиг.5. В нижней части фиг.6 показана поднятая матрица  контроля четности, в которой каждая матрица циклической перестановки заменена соответствующей матрицей 4×4 из единиц и нулей.
H
σ
H
σ
b
u
v
u
v
u
v
u
u
1
1
1
l
1
1
1
x
y
x
y
Замена каждого ненулевого элемента базовой матрицы  контроля четности матрицей перестановки 4×4 дает четыре копии базового графа для генерируемого базового кода LDPC. Для матрицы перестановки 4×4, соответствующей данной вершине-переменной V и данной контрольной вершине C, четыре столбца этой матрицы перестановки соответствуют вершине-переменной V в четырех копиях графа, и четыре строки этой матрицы перестановки соответствуют контрольной вершине C в четырех копиях графа. Единицы в матрице перестановки соответствуют ребрам, соединяющим вершину-переменную V в четырех копиях графа с контрольной вершиной C в четырех копиях графа. В частности, 1 в столбце  строки  означает, что вершина-переменная V в копии графа  соединена с контрольной вершиной C в копии графа . Например, матрица циклической перестановки  используется для ненулевого элемента для вершины-переменной V и контрольной вершины C в . Матрица  включает в себя 1 в столбце 1 строки 2, что означает, что вершина-переменная V в копии графа 1 соединена с контрольной вершиной C в копии графа 2.
H
H
l
b
a
p
a
p
На фиг.7 показано представление поднятой матрицы  контроля четности, сгенерированной на основании базовой матрицы  контроля четности, показанной на фиг.3, при L = 8. В этом представлении сетка 710 8×16 хранит ребра для семи вершин-переменных во всех восьми копиях графа. Каждая строка сетки 710 соответствует одной копии графа. 16 блоков в каждой строке соответствуют 16 ребрам  -  для семи вершин-переменных в одной копии графа. Сетка 720 8×16 хранит ребра для четырех контрольных вершин во всех восьми копиях графа. Каждая строка сетки 720 соответствует одной копии графа. 16 блоков в каждой строке соответствуют 16 ребрам  -  для четырех контрольных вершин в одной копии графа.
2
2
3
3
d
d
σ
σ
На фиг.7 также показаны соединения между восемью копиями вершины-переменной V и восемью копиями контрольной вершины C для ребра , которое имеет матрицу циклической перестановки  в этом примере. Таким образом, восемь копий ребра  подвергаются циклическому сдвигу вниз на три позиции согласно матрице , каждое из оставшихся ребер может циклически сдвигаться на значение в пределах от 0 до 7 для L = 8.
В общем случае сетка может включать в себя по одному столбцу для каждого ребра в базовой матрице контроля четности и по одной строке для каждой из L копий графа. L копий каждого ребра могут циклически сдвигаться на величину, определяемую матрицей циклической перестановки для этого ребра.
H
H
H
b
l
b
На фиг.3-6 показан иллюстративный базовый код LDPC с базовой матрицей  контроля четности, показанной на фиг.3, и поднятие этого базового кода LDPC для получения более крупного кода LDPC с поднятой матрицей  контроля четности, показанной на фиг.6. Поднятия разных размеров можно добиться, используя матрицы циклической перестановки разных размеров. Ребра базовой матрицы  контроля четности могут циклически сдвигаться на значение в пределах от 0 до L-1. Значения циклического сдвига для ребер базовой матрицы контроля четности можно выбирать на основании производительности кодирования.
B
В одном варианте осуществления можно задать множество из шести базовых кодов LDPC для разных значений k в пределах от 6 до 11. В Таблице 1 приведены различные параметры шести базовых кодов LDPC согласно одному варианту осуществления. В одном варианте осуществления шесть базовых кодов LDPC можно реализовать, как описано в опубликованном документе 3GPP2 C.S0084-001 под названием “Physical Layer for Ultra Mobile Broadband (UMB) Air Interface Specification”, август 2007. Базовые коды LDPC также можно реализовать согласно другим вариантам осуществления.
Таблица 1
Индекс кода<i> i</i>
Количество информа-ционных битов k<sub>B</sub>
Количество битов четности m<sub>B</sub>
Количество битов кода n<sub>B</sub>
Количество переменных состояния s<sub>B</sub>
Базовая матрица контроля четности
0
6
27
33
3
<b>G</b><sub>0</sub>
1
7
31
38
3
<b>G</b><sub>1</sub>
2
8
35
43
3
<b>G</b><sub>2</sub>
3
9
39
48
3
<b>G</b><sub>3</sub>
4
10
43
53
3
<b>G</b><sub>4</sub>
5
11
47
58
3
<b>G</b><sub>5</sub>
min
max
B
min
max
В одном варианте осуществления может поддерживаться множество из девяти значений поднятия 4, 8, 16, 32, 64, 128, 256, 512 и 1024. В этом варианте осуществления наименьшее значение поднятия L = 4 и наибольшее значение поднятия L = 1024. Эти значения поднятия являются разными степенями 2, что может обеспечивать определенные преимущества. Всего 54 разных размеров пакета в пределах от 24 до 11,264 битов может поддерживаться с помощью шести базовых кодов LDPC с k в пределах от 6 до 11 и девяти значений поднятия в пределах от 4 до 1024. В общем случае может поддерживаться любой диапазон значений поднятия, и L и L могут принимать любые подходящие значения.
G
G
G
G
0
0
max
1
5
В Таблице 2 приведены параметры базовой матрицы контроля четности согласно одному варианту осуществления. Согласно Таблице 1  имеет размер 27×33 и включает в себя 27 строк с индексами от 0 до 26 и 33 столбца с индексами от 0 до 32. Для каждой строки во втором столбце Таблицы 2 указана степень строки, которая соответствует количеству ненулевых элементов в строке. В третьем столбце Таблицы 2 указаны позиции столбцов для ненулевых элементов в каждой строке. В четвертом столбце указано значение циклического сдвига для каждого ненулевого элемента в каждой строке. Для L = 1024 значения циклического сдвига составляют в пределах от 0 до 1023. Иллюстративные варианты осуществления базовых матриц  -  контроля четности описаны в вышеупомянутом 3GPP2 C.S0084-001.
Таблица 2
Базовая матрица <b>G</b><sub>0 </sub>контроля четности
Индекс строки
Степень строки
Позиция столбца для ненулевых элементов в строке
Значения циклического сдвига ненулевых элементов в строке
0
6
1, 2, 3, 4, 8, 9
110, 680, 424, 180, 0, 0
1
6
0, 2, 3, 6, 9, 10
702, 768, 863, 0, 0, 0
2
6
0, 1, 3, 4, 7, 10
360, 259, 652, 753, 0, 0
3
4
1, 4, 8, 20
402, 948, 0, 0
4
4
0, 5, 6, 20
318, 0, 767, 0
5
4
2, 5, 6, 7
154, 1023, 768, 0
6
3
0, 1, 11
885, 323, 0
7
3
0, 2, 12
617, 220, 0
8
4
1, 2, 3, 13
799, 519, 669, 0
9
4
0, 1, 4, 14
900, 72, 669, 0
10
4
0, 2, 6, 15
574, 253, 352,0
11
4
1, 2, 7, 16
848, 280, 920, 0
12
4
0, 1, 5, 17
548, 928, 355, 0
13
4
0, 2, 3, 18
17, 376, 147, 0
14
4
0, 1, 4, 19
795, 823, 473, 0
15
4
0, 2, 8, 21
519, 424, 712, 0
16
3
1, 6, 22
952, 449, 0
17
3
2, 7, 23
887, 798, 0
18
4
0, 1, 9, 24
256, 93, 348, 0
19
3
2, 3, 25
492, 856, 0
20
4
1, 2, 10, 26
589, 1016, 705, 0
21
3
0, 4, 27
26, 166, 0
22
4
1, 2, 5, 28
525, 584, 845, 0
23
3
0, 8, 29
10, 331, 0
24
3
1, 9, 30
125, 310, 0
25
3
2, 10, 31
239, 641, 0
26
4
0, 1, 6, 32
557, 609, 448, 0
В одном варианте осуществления базовую матрицу контроля четности и значение поднятия можно выбирать для пакета размером k следующим образом. Прежде всего значение поднятия L можно выбирать на основании размера пакета k следующим образом:
, Уравнение (2)
B,max
где k - максимальное количество информационных битов для всех базовых кодов LDPC, и
“   ” обозначает оператор верхнего целочисленного приближения.
B,max
k = 11 для множества базовых кодов LDPC, показанного в Таблице 1, может быть равно другим значениям для других множеств базовых кодов LDPC.
Затем базовую матрицу контроля четности можно выбрать на основании размера пакета k и выбранного значения поднятия L следующим образом:
. Уравнение (3)
B
G
Индекс выбранной базовой матрицы контроля четности можно задать как i = k - 6. Выбранная базовая матрица контроля четности обозначается  в нижеследующем описании.
G
B
B
B
P
B
B
p
B
P
Выбранная базовая матрица  контроля четности и выбранное значение поднятия L могут кодировать до k·L информационных битов и обеспечивать n·L битов кода. Пакет можно заполнить нулями до длины k·L путем присоединения z = k·L - k нулей к концу пакета. Заполненный нулями пакет можно кодировать с поднятой матрицей контроля четности для получения n·L битов кода. Для кода (n, k), z нулей заполнения, а также n·L - n - z битов четности можно перфорировать для получения кодового слова из n битов кода.
H
G
H
Чтобы кодировать пакет, можно сначала генерировать поднятую матрицу  контроля четности на основании выбранной базовой матрицы  контроля четности и выбранного значения поднятия L. Затем можно кодировать пакет на основании поднятой матрицы  контроля четности.
H
G
Чтобы генерировать поднятую матрицу  контроля четности, значение циклического сдвига для каждого ненулевого элемента выбранной базовой матрицы  контроля четности можно определить следующим образом:
, Уравнение (4)
G
max
где g - значение циклического сдвига для ненулевого элемента  при условии поднятия на L, и
G
g′ - значение циклического сдвига для ненулевого элемента  при условии поднятия на L.
G
G
G
0
max
max
min
max
max
В четвертом столбце 2 указаны значения циклического сдвига для ненулевых элементов  для L = 1024. Значения циклического сдвига для ненулевых элементов других базовых матриц контроля четности можно генерировать и сохранять в аналогичных таблицах. В общем случае значения циклического сдвига для ненулевых элементов  можно генерировать для L и можно использовать для всех значений поднятия от L до L. Это может упростить вариант осуществления, поскольку только одно множество значений циклического сдвига можно сохранять для  и использовать для всех значений поднятия. Уравнение (4), в сущности, удаляет нуль или более младших битов (LSB) из g для получения g′ для выбранного значения поднятия L. Для варианта осуществления с L = 1024 можно удалить один LSB, если L = 512, можно удалить два LSB, если L = 256, и т.д. Удаление LSB может сохранять соотношение между разными параметрами сдвига, например, s′ = s + L/4, описанное ниже, что может упрощать кодирование. В другом варианте осуществления нуль или более старших битов (MSB) из g можно удалить путем осуществления операции по модулю L для получения g′. g′ также можно получить другими средствами.
G
H
I
G
G′
G′
H
H
G
g′
g′
В одном варианте осуществления каждый ненулевой элемент  можно заменить матрицей циклической перестановки σ для получения поднятой матрицы  контроля четности. σ можно получить путем циклического сдвига единичной матрицы  на g′. В другом варианте осуществления каждый ненулевой элемент  можно заменить матрицей 2×2 для получения матрицы . Эта матрица 2×2 может иметь вид , если g′ имеет четное значение, или , если g′ имеет нечетное значение. Каждый ненулевой элемент  затем можно заменить матрицей циклической перестановки, полученной циклическим сдвигом на g′/2, (g′-1)/2 или (g′+1)/2, для получения поднятой матрицы  контроля четности.  также можно генерировать на основании  другими средствами.
H
Столбцы и строки поднятой матрицы  контроля четности можно менять местами или переставлять так, чтобы результирующая матрица имела вид:
, Уравнение (5)
M
1
B
где  - матрица M×N, где N = M + k·L,
M
2
B
- матрица (m·L-M)×N, и
0
B
- матрица M×(n·L-N) из одних нулей.
H
Единичную матрицу в нижнем правом углу  можно заменить нижней треугольной матрицей, которая может иметь ненулевые элементы под диагональю.
M
M
1
1
i
Размер  может зависеть от выбранной базовой матрицы контроля четности и может быть функцией индекса кода .  может иметь следующий вид:
, где  обратима, Уравнение (6)
A
B
где  - матрица (M-L/2)×(k·L),
B
- матрица (M-L/2)×(L/2),
C
B
- матрица (L/2)×(k·L),
D
- матрица (L/2)×(L/2),
E
B
- матрица (L/2)×(N-k·L), и
T
- нижняя треугольная матрица (M-L/2)×(M-L/2), имеющая единицы вдоль диагонали и нули над диагональю.
Ограничения для поднятого кода LDPC можно выразить в виде:
, где , Уравнение (7)
x
1
где  - вектор-столбец N×1 информационных битов и битов четности, и
p
3
B
- (n·L-N)×1 вектор-столбец битов четности.
0
H
Ввиду наличия нулевой матрицы  в верхнем правом углу  в уравнении (5) часть уравнения (7) можно выразить как:
, где ,Уравнение (8)
s
B
где  - вектор-столбец (k·L)×1 информационных битов в пакете,
p
1
- (L/2)×1 вектор-столбец битов четности, и
p
2
- (M-L/2)×1 вектор-столбец битов четности.
M
1
Для решения уравнения (8)  можно предварительно перемножить с  следующим образом:
, Уравнение (9)
ϕ
ET
B
D
-1
где  = -  + .
Уравнения (8) и (9) можно объединить для получения:
, и Уравнение (10)
.Уравнение (11)
p
p
p
1
2
3
Тогда биты четности ,  и  можно вычислить следующим образом:
, Уравнение (12)
, и Уравнение (13)
,Уравнение (14)
x
s
p
p
H
1
1
2
где  включают в себя ,  и , как показано в уравнении (8). Если единичную матрицу в нижнем правом углу  заменить нижней треугольной матрицей, то уравнение (14) можно решить с использованием обратной подстановки (сверху вниз).
p
p
p
1
2
3
Вычисление ,  и  можно упростить, выполняя матричное умножение в уравнениях (12) и (13) поэтапно, сохраняя промежуточные результаты и используя промежуточные результаты на дальнейших этапах.
H
H
p
p
p
B
B
1
2
3
Поднятая матрица  контроля четности предназначена для самой низкой кодовой скорости, которую можно задать как r = k/n.  можно перфорировать для получения более высоких скоростей. Коды LDPC структурированы как внутренний “сердцевинный” код LDPC высокой скорости с внешними битами четности. Кодирование можно осуществлять последовательно для получения нужного количества битов кода. Например, сначала можно вычислять биты четности , как показано в уравнении (12), затем (при необходимости) можно вычислять биты четности , как показано в уравнении (13), и, наконец, (при необходимости) можно вычислять биты четности , как показано в уравнении (14).
P
P
3
2
Система может поддерживать режим смешанного автоматического запроса повторной передачи (HARQ). Для HARQ передатчик может посылать первую передачу пакета на приемник и затем может, при необходимости, посылать одну или несколько дополнительных передач (или повторных передач), пока пакет не будет правильно декодирован приемником, или не будет отправлено максимальное количество передач, или не будет выполнено какое-либо другое условие окончания передачи. HARQ может повысить надежность передачи данных. Для каждого базового кода LDPC можно генерировать последовательность расширений HARQ для охвата всех кодовых скоростей, поддерживаемых системой. Расширения HARQ можно задать путем перфорации битов четности. Перфорации можно, в основном, подвергать третьи биты четности , но и вторые биты четности  также можно подвергать некоторой перфорации.
G
На фиг.8 показан базовый граф 800 базовой матрицы  контроля четности, которая может иметь вид, показанный в уравнениях (5) и (6). Граф 800 используется только в целях иллюстрации и не соответствует никаким базовым матрицам контроля четности, описанным выше. Базовый граф 800 включают в себя несколько квадратных блоков, причем каждый квадратный блок представляет элемент в базовой матрице контроля четности. Каждый ненулевой элемент базовой матрицы контроля четности представлен помеченным блоком. Каждый помеченный блок связан со значением циклического сдвига, которое определяет величину циклического сдвига для L копий ребра, полученных за счет поднятия базовой матрицы контроля четности на значение поднятия L.
Кодовое слово состоит из информационных битов и битов четности вдоль верхней части графа 800. Биты в кодовом слове могут передаваться слева направо, за исключением некоторого переупорядочивания столбцов четности.
s
p
p
p
1
2
3
Базовый граф 800 содержит информационные биты , первые биты четности , вторые биты четности  и третьи биты четности  вдоль верхней части базового графа. Первые биты четности связаны с первым множеством ограничений, вторые биты четности связаны со вторым множеством ограничений, и третьи биты четности связаны с третьим множеством ограничений. Сердцевинная часть базового графа 800 состоит из вершин-переменных, представляющих информационные биты и первые, и вторые биты четности, и вершин-ограничений, представляющих первое и второе множества ограничений. Сердцевинная часть обычно не содержит вершины-переменные 1 степени. Третьи биты четности и ограничения третьего множества ограничений (или третьи ограничения по четности) находятся друг с другом во взаимно однозначном соответствии, что демонстрирует единичная матрица в нижнем правом углу базового графа 800. Третьи биты четности и третьи ограничения по четности можно линейно упорядочить так, чтобы каждый из третьих битов четности можно было определить как четность информационных битов, первых битов четности, вторых битов четности и предыдущих третьих битов четности. Вершина третьего ограничения по четности, связанная с третьим битом четности взаимно однозначным соответствием, соединена ребрами с вершиной-переменной третьего бита четности, а также с вершинами-переменными, представляющими биты, из которых третий бит четности является битом четности.
B
D
T,
H
T
Вариант осуществления, показанный на фиг.8, включают в себя несколько признаков, которые могут упрощать кодирование. Вершины-переменные первых и вторых битов четности имеют 2 степень или 3 степень. Для упрощения кодирования один первый бит четности может быть связан с одной вершиной-переменной 3 степени, и вторые биты четности могут быть связаны с вершинами-переменными 2 степени. Вершина-переменная 3 степени представлена столбцом 810 для матриц  и , которые включают в себя три заштрихованных квадратных блока для трех ненулевых элементов. Вершины-переменные 2 степени могут иметь конфигурацию структуры накопительной цепи, которая также известна под названием двухдиагональной структуры. Эта двухдиагональная структура представлена треугольной матрицей  в каждом столбце которой имеются два находящихся один на другом помеченных блока. Двухдиагональная структура может благотворно влиять на производительность кода и кодирование. Большое количество вершин-переменных 2 степени может повышать производительность, и наличие вершин-переменных 2 степени в двухдиагональной форме доводит эту возможность почти до максимума. Двухдиагональная структура также облегчает рекурсивное кодирование вершин-переменных 2 степени, наподобие сверточного кода. Будучи правильно упорядочена, структура матрицы  может включать в себя подматрицу , в которой только диагональ (1,1), (2,2) и т.д., а также поддиагональ (2,1), (3,2) и т.д. содержат ненулевые элементы. Часто ребра, соответствующие двухдиагональной структуре, имеют значение поднятия 0, означающее отсутствие перестановки, образуя L отдельных цепей в поднятом графе.
ϕ
ET
B
D
-1
Два из трех ребер вершины-переменной 3 степени могут соединяться в базовом графе, образуя замкнутый контур в графе, связанном с двухдиагональной структурой. Для упрощения кодирования в этом случае значения поднятия для трех ребер вершины-переменной 3 степени могут иметь вид x, s, s′ = (s+L/m) mod L, где m равно степени 2, и x и s могут иметь произвольные значения. После обращения всех циклических сдвигов код остается неизменным, поскольку это эквивалентно обращению порядка вершин-ограничений в поднятии. Таким образом, значения поднятия в виде x, s, s′ = (s+L/m) mod L также можно использовать. Кодирование можно упростить, поскольку матрицу  = - +  можно разложить на множители низкой степени, и она сама имеет низкий вес.
ϕ
ϕ
ϕ
ϕ
ϕ
-1
-1
-1
-1
-1
-1
Значения циклического сдвига для двух ненулевых элементов вершины-переменной 3 степени могут быть s и s′, где s может иметь произвольно выбранное значение, и s′ можно выбирать несколькими способами. В первом варианте осуществления s′ = s и  является матрицей перестановки. Для этого варианта осуществления поднятый код LDPC имеет контур, проходящий вдоль накопительной цепи базового графа (через вершины 2 степени) и одну вершину 3 степени. Контур имеет кратность L, что может обеспечивать близкую к оптимальной характеристику минимального уровня ошибки (error floor), в особенности, из-за того, что базовый граф имеет короткую накопительную цепь. В другом варианте осуществления s′ = s + L/2 и  равна сумме трех матриц перестановки. Для этого варианта осуществления соответствующий контур в поднятом коде LDPC проходит вдоль накопительной цепи базового графа (через вершины 2 степени) и две вершины 3 степени. Сложность умножения на ϕ все же может быть низкой. Однако этот вариант осуществления все же может быть подвержен некоторым минимальным уровням ошибки. В третьем варианте осуществления s′ = s + L/4 и  равна сумме девяти матриц перестановки. Соответствующий контур в поднятом коде LDPC проходит вдоль накопительной цепи базового графа (через вершины 2 степени) и четыре вершины 3 степени. Сложность умножения на  все же может быть низкой, поскольку  по-прежнему может быть разреженной матрицей. Этот вариант осуществления может упрощать кодирование, одновременно избегая проблем, связанных с минимальными уровнями ошибки. Значение циклического сдвига для третьего ненулевого элемента может быть x, которое может быть другим, произвольно выбранным значением.
Описанные в настоящем документе методы можно использовать для поддержки широкого диапазона размеров пакета. Подходящий размер пакета можно выбирать на основании различных факторов, например канальных условий (которые могут определяться спектральной эффективностью или форматом пакета), объемом выделяемых ресурсов, служебной нагрузкой пилот-канала, рангом MIMO и т.д. Методы позволяют генерировать хорошие совместимые по скорости коды для любых значений k и n с использованием малого количества базовых кодов LDPC.
Описанные в настоящем документе поднятые коды LDPC могут обеспечивать реализацию параллельного кодера и декодера в различных формах. Для реализации реберно-параллельного декодера ребра в базовом графе можно обрабатывать в последовательном режиме, и параллелизма можно добиться за счет одновременной обработки L копий одного и того же ребра. Для реализации вершинно-параллельного декодера разные копии базового графа можно обрабатывать в последовательном режиме, и параллелизма можно добиться за счет одновременной обработки разных вершин в базовом графе. Благодаря использованию матриц циклической перестановки, размеры которых ограничены степенями 2, поднятие можно легко реализовать с использованием операции отсчета, в особенности, для вершинно-параллельной реализации. Операция отсчета означает обход L-контура путем отсчета от x до x+1 mod L. Это ограничение по размеру поднятия позволяет гарантировать, что все различные размеры поднятия имеют большой общий множитель, что может быть важным свойством для реализации реберно-параллельного декодера. Описанная в настоящем документе структура кода LDPC может поддерживать эффективные реализации вершинно-параллельного и реберно-параллельного декодера. Кроме того, описания графа компактны и обеспечивают значительное снижение сложности.
B
B
B
B
max
max
На фиг.9 показан вариант осуществления процесса 900 для обработки данных. Процесс 900 можно осуществлять на базовой станции, терминале или какой-нибудь другой сущности. Пакеты переменных размеров можно кодировать или декодировать на основании множества базовых матриц контроля четности разных размеров и множества значений поднятия, равных разным степеням 2 (блок 912). Множество базовых матриц контроля четности может содержать базовые матрицы контроля четности для 6, 7, 8, 9, 10 и 11 информационных битов, как описано выше, для от k до 2k-1 информационных битов, для от k+1 до 2k информационных битов, или для некоторого другого диапазона информационных битов. Множество базовых матриц контроля четности также может включать в себя некоторую другую комбинацию базовых матриц контроля четности. Множество значений поднятия может содержать значения поднятия для 4, 8, 16, 32, 64, 128, 256, 512 и 1024, как описано выше, или некоторый другой диапазон или комбинацию значений поднятия. Параметры (например, значения циклического сдвига) для множества базовых матриц контроля четности можно хранить для использования при кодировании или декодировании пакетов переменных размеров (блок 914). Каждая базовая матрица контроля четности может содержать совокупность ненулевых элементов в совокупности положений. Каждый ненулевой элемент может быть связан со значением циклического сдвига в пределах от 0 до L-1, где L - максимальное значение поднятия. Совокупность значений циклического сдвига можно хранить для совокупности ненулевых элементов каждой базовой матрицы контроля четности. Значения циклического сдвига для всех значений поднятия для каждой базовой матрицы контроля четности можно определить на основании значений циклического сдвига, сохраненных для базовой матрицы контроля четности.
На фиг.10 показан вариант осуществления устройства 1000 для обработки данных. Устройство 1000 включает в себя средство для кодирования или декодирования пакетов переменных размеров на основании множества базовых матриц контроля четности разных размеров и множества значений поднятия, равных разным степеням 2 (модуль 1012), и средство для хранения параметров (например, значений циклического сдвига) для множества базовых матриц контроля четности (блок 1014).
На фиг.11 показан вариант осуществления процесса 1100 для обработки пакета, который можно использовать для блока 912 на фиг.9. Можно определить размер пакета для пакета, подлежащего кодированию или декодированию (блок 1112). Значение поднятия можно выбирать из множества значений поднятия на основании размера пакета, например, как показано в уравнении (2) (блок 1114). Базовую матрицу контроля четности можно выбирать из множества базовых матриц контроля четности на основании размера пакета и выбранного значения поднятия, например, как показано в уравнении (3) (блок 1116). Поднятую матрицу контроля четности можно генерировать на основании выбранной базовой матрицы контроля четности и выбранного значения поднятия (блок 1118). Пакет можно кодировать или декодировать на основании поднятой матрицы контроля четности (блок 1120).
Для блока 1118 поднятую матрицу контроля четности можно генерировать на основании дополнительно значений циклического сдвига для ненулевых элементов выбранной базовой матрицы контроля четности. Значения циклического сдвига для поднятой матрицы контроля четности можно вычислять на основании значений циклического сдвига для ненулевых элементов выбранной базовой матрицы контроля четности и выбранного значения поднятия, например, как показано в уравнении (4). Затем поднятую матрицу контроля четности можно генерировать путем замены каждого ненулевого элемента выбранной базовой матрицы контроля четности матрицей циклической перестановки со значением циклического сдвига, вычисленным для ненулевого элемента.
Для кодирования на блоке 1120 информационные биты в пакете можно кодировать на основании поднятой матрицы контроля четности для получения первых битов четности, например, как показано в уравнении (12). Информационные биты и первые биты четности можно кодировать на основании поднятой матрицы контроля четности для получения вторых битов четности, например, как показано в уравнении (13). Информационные биты, первые биты четности и вторые биты четности можно кодировать на основании поднятой матрицы контроля четности для получения третьих битов четности, например, как показано в уравнении (14).
Для декодирования на блоке 1120 большой граф для поднятой матрицы контроля четности можно генерировать на основании L копий базового графа для выбранной базовой матрицы контроля четности, где L - выбранное значение поднятия. Вершины L копий базового графа можно соединять между собой на основании матриц перестановки для ненулевых элементов выбранной базовой матрицы контроля четности. Базовый граф может содержать совокупность ребер для ненулевых элементов выбранной базовой матрицы контроля четности. Для реберно-параллельного декодирования декодирование можно осуществлять параллельно для L копий одного и того же ребра в L копиях базового графа и можно осуществлять последовательно для разных ребер в L копиях базового графа. Для вершинно-параллельного декодирования декодирование можно осуществлять параллельно для вершин каждой копии базового графа и можно осуществлять последовательно для L копий базового графа.
На фиг.12 показан вариант осуществления процесса 1200 для обработки пакета. Первое множество значений циклического сдвига для первой матрицы контроля четности с первым размером поднятия можно определить на основании второго множества значений циклического сдвига для второй матрицы контроля четности со вторым размером поднятия (блок 1212). Первый и второй размеры поднятия могут быть разными степенями 2. В одном варианте осуществления блока 1212 коэффициент K можно определить на основании отношения второго размера поднятия к первому размеру поднятия, и K LSB каждого значения циклического сдвига во втором множестве можно удалить для получения соответствующего значения циклического сдвига в первом множестве. Этого можно добиться делением каждого значения циклического сдвига во втором множестве на отношение и округления в меньшую сторону до целочисленного значения для получения соответствующего значения циклического сдвига в первом множестве, как показано в уравнении (4). В другом варианте осуществления блока 1212 K MSB каждого значения циклического сдвига во втором множестве можно удалить для получения соответствующего значения циклического сдвига в первом множестве.
Первую матрицу контроля четности можно генерировать на основании первого множества значений циклического сдвига (блок 1214). Этого можно добиться путем замены каждого ненулевого элемента базовой матрицы контроля четности матрицей циклической перестановки со значением циклического сдвига в первом множестве, соответствующего ненулевому элементу. Пакет можно кодировать или декодировать на основании первой матрицы контроля четности (блок 1216).
На фиг.13 показан вариант осуществления устройства 1300 для обработки пакета. Устройство 1300 включает в себя средство для определения первого множества значений циклического сдвига для первой матрицы контроля четности с первым размером поднятия на основании второго множества значений циклического сдвига для второй матрицы контроля четности со вторым размером поднятия (модуль 1312), средство для генерации первой матрицы контроля четности на основании первого множества значений циклического сдвига (модуль 1314) и средство для кодирования или декодирования пакета на основании первой матрицы контроля четности (модуль 1316).
T
B
D
D
E
B
D
На фиг.14 показан вариант осуществления процесса 1400 для обработки пакета. Поднятую матрицу контроля четности можно получить путем замены каждого ненулевого элемента базовой матрицы контроля четности матрицей перестановки L×L с конкретным значением циклического сдвига, где L равно степени 2 (блок 1412). Значения циклического сдвига s и s + L/m можно использовать для двух ненулевых элементов в столбце базовой матрицы контроля четности, имеющем по меньшей мере три ненулевых элемента, где s - произвольное значение, и m равно степени 2 (блок 1414). В одном варианте осуществления m равно 2, и значения циклического сдвига для двух ненулевых элементов равны s и s+ L/2. В другом варианте осуществления m равно 4, и значения циклического сдвига для двух ненулевых элементов равны s и s + L/4. В еще одном варианте осуществления m равно восьми, и значения циклического сдвига для двух ненулевых элементов равны s и s + L/8. m также может быть равно другим значениям. Значение циклического сдвига x можно выбирать для третьего ненулевого элемента в столбце, имеющем по меньшей мере три ненулевых элемента. Базовая матрица контроля четности может содержать подматрицу , где  - нижняя треугольная матрица, матрицы  и  имеют ширину 1, матрицы  и  имеют высоту 1, и по меньшей мере три ненулевых элемента находятся в столбце, соответствующем матрицам  и . Пакет можно кодировать или декодировать на основании поднятой матрицы контроля четности (блок 1416).
На фиг.15 показан вариант осуществления устройства 1500 для обработки пакета. Устройство 1500 включает в себя средство для получения поднятой матрицы контроля четности путем замены каждого ненулевого элемента базовой матрицы контроля четности матрицей перестановки L×L с конкретным значением циклического сдвига, где L равно степени 2 (модуль 1512), средство для использования значений циклического сдвига s и s + L/m - для двух ненулевых элементов в столбце базовой матрицы контроля четности, имеющем по меньшей мере три ненулевых элемента, где s - произвольное значение, и m равно степени 2 (модуль 1514), и средство для кодирования или декодирования пакета на основании поднятой матрицы контроля четности (модуль 1516).
Модули, показанные на фиг.10, 13 и 15, могут содержать процессоры, электронные устройства, аппаратные устройства, электронные компоненты, логические схемы, блоки памяти и т.д. или любую их комбинацию.
Описанные в настоящем документе методы можно реализовать различными средствами. Например, эти методы можно реализовать в виде оборудования, программно-аппаратного обеспечения, программного обеспечения или их комбинации. Для аппаратной реализации блоки обработки, используемые для осуществления методов на сущности (например, Узле B или терминале), можно реализовать в одной или нескольких специализированных интегральных схемах (ASIC), цифровых сигнальных процессорах (ЦСП), устройствах обработки цифровых сигналов (DSPD), программируемых логических устройствах (ПЛУ), вентильных матрицах, программируемых пользователем (FPGA), процессорах, контроллерах, микроконтроллерах, микропроцессорах, электронных устройствах, других электронных блоках, предназначенных для осуществления описанных в настоящем документе функций, или их комбинациях.
Для программно-аппаратной и/или программной реализации методы можно реализовать посредством кода (например, процедур, функций, модулей, инструкций и т.д.), которые осуществляют описанные в настоящем документе функции. В общем случае любой машиночитаемый / доступный для обращения процессора носитель, материально воплощающий программно-аппаратный и/или программный код можно использовать в реализации описанных в настоящем документе методов. Например, программно-аппаратный и/или программный код может храниться в памяти (например, памяти 232 или 272 на фиг.2) и выполняться процессором (например, процессором 230 или 270). Память можно реализовать внутри процессора или вне процессора. Программно-аппаратный и/или программный код также может храниться на машиночитаемом / доступном для обращения процессора носителе, например в оперативной памяти (ОЗУ), постоянной памяти (ПЗУ), энергонезависимой оперативной памяти (NVRAM), программируемой постоянной памяти (ППЗУ), электрически стираемой ППЗУ (ЭСППЗУ), флэш-памяти, на флоппи-диске, компакт-диске (CD), цифровом универсальном диске (DVD), магнитном или оптическом устройстве хранения данных и т.д. Код может выполняться одним или несколькими компьютерами/процессорами и может побуждать компьютер(ы)/процессор(ы) осуществлять определенные аспекты описанных в настоящем документе функций.
Вышеприведенное описание обеспечено, чтобы специалист в данной области техники мог использовать и применять настоящее описание. Специалист в данной области техники может предложить различные модификации описанного изобретения, но очевидно, что установленные в настоящем документе общие принципы можно применять к другим вариациям, не выходящим за рамки сущности или объема описания. Таким образом, описание не ограничено описанными в настоящем документе примерами и вариантами осуществления, но должно быть истолковано в наиболее широком объеме в соответствии с раскрытыми в настоящем документе принципами и новыми признаками.