Моделирование и исследование блоков корректирующего кода в среде MicroCap 9
Блочные корректирующие коды широко применяются в различных радиоэлектронных устройствах [1, 2]. При этом отсутствует описание синтеза этих устройств в известной программе моделирования MicroCap 9 [3]. Почти все блочные коды относятся к разделимым, или систематическим, то есть их комбинации состоят из двух частей: информационной и проверочной. Информационные и проверочные разряды занимают одни и те же определенные позиции.
Разделимые коды обозначают в виде (n,k)-кодов (n — «значность» кода; k — число информационных разрядов), r = n–k — число проверочных разрядов.
Наиболее часто применяются линейные систематические коды. Для систематического (n,k)-кода любая кодовая комбинация записывается в виде:
X = (x1, …, xi, …, xk; z1, …, zj, …, zr),
где x1, …, xi, …, xk — информационная комбинация; z1, …, zj, …, zr — проверочные символы.
Линейные коды полностью определяются k линейно-независимыми кодовыми комбинациями. Совокупность этих k‑комбинаций, называемых базисными, образует порождающую матрицу кода. Часто используется каноническая форма порождающей матрицы:
Порождающая матрица полностью задает код, так как все кодовые комбинации (за исключением нулевой) могут быть получены путем посимвольного сложения по модулю двух входящих в порождающую матрицу первой, второй, …, k‑ой базисных комбинаций. Образование кодовых комбинаций происходит при линейном сложении различного числа базисных комбинаций, что и определяет название линейных кодов. Для того чтобы каноническая порождающая матрица определяла код с кодовым расстоянием dmin, необходимо и достаточно, чтобы сумма любых l строк избыточной матрицы образовывала r‑символьную комбинацию, вес которой (количество отличных от нуля символов):
w ≥ dmin–l.
Это неравенство позволяет определить значение избыточных символов порождающей матрицы.
Рассмотрим линейный (7,4)-код с кодовым расстоянием dmin = 3. Порождающая матрица для этого кода может быть записана в виде:
Легко убедиться, что сумма любых l‑строк (l = 1, 2, …, k) избыточной подматрицы дает комбинацию, вес которой не менее 3–l, то есть порождает код с dmin = 3. Матрица содержит четыре из 15 ненулевых комбинаций кода. Остальные 11 комбинаций могут быть получены сложением базисных комбинаций. Например, кодовая комбинация, соответствующая информационной (1011), получается посимвольным сложением 1‑й, 3‑й и 4‑й строк и имеет вид (1011100).
Достоинством систематических кодов является их сравнительно простая техническая реализация. На структурной схеме (рис. 1) представлено кодирующее устройство (7,4)-кода, состоящее из 7‑разрядного регистра сдвига и трех сумматоров по модулю 2.
Регистр содержит две части: информационную (четыре ячейки) и проверочную (три ячейки). Каждый сумматор служит для формирования проверочного символа, находящегося на определенной позиции. Подключение информационных ячеек регистра к соответствующим сумматорам выполнено по правилам построения корректирующего (7,4)-кода:
R1 = i1⊕i2⊕i3,
R2 = i2⊕i3⊕i4,
R3 = i1⊕i2⊕i4.
Рассмотрим принцип работы кодера. Первичная кодовая комбинация записывается параллельно в четыре информационные ячейки регистра. Одновременно с этим в трех сумматорах по модулю 2 формируются три проверочных символа, которые записываются в три проверочные ячейки регистра. Полученная кодовая комбинация выводится из регистра с помощью подачи тактовых импульсов от генератора тактовых импульсов. После семи тактовых импульсов кодовая комбинация будет выведена из регистра. Далее регистр подготавливается к записи и формированию следующей кодовой комбинации. Сформированные комбинации поступают к модулятору передатчика.
На рис. 2 приведена схема кодера, синтезированная в среде MicroCap 9. С целью упрощенного получения в схеме информационных символов регистр, содержащий четыре информационные ячейки, заменен на четыре цифровых переключателя i1–i4. Проверочные ячейки R1–R3 выполнены на двухвходовых сумматорах по модулю 2. На схеме индикаторы красного цвета показывают логическую единицу информационных и проверочных символов. Индикаторы черного цвета соответствуют логическому нулю.
Генератор тактовых импульсов ввиду отсутствия сдвигающего регистра заменен на семь импульсных генераторов V1–V7, формирующих импульсы длительностью 10 мкс и задержанных друг относительно друга на 10 мкс.
Буферные блоки B1–B7 предназначены для согласования аналоговой части схемы с цифровой схемой, которая содержит двухвходовые элементы И, а также элемент ИЛИ с девятью входами. В нем используются семь входов по числу символов корректирующего (7,4)-кода.
На рис. 3 приведены осциллограммы на выходах импульсных генераторов V1–V7, выходе элемента ИЛИ и выходе фазового манипулятора PSK.
Рассмотрим работу декодера (7,4)-кода (рис. 4). Декодер (7,4)-кода состоит из семи триггерных ячеек, трех сумматоров по модулю 2, анализатора ошибок и корректора ошибок. По фронту стробирующего импульса последовательность символов принятой от демодулятора кодовой комбинации записывается в семь ячеек регистра, и с помощью сумматоров проводится проверка на четность для информационных и проверочных символов по следующим правилам:
S1 = R1⊕i1⊕i3⊕i4,
S2 = R2⊕i1⊕i2⊕i3,
S3 = R3⊕i1⊕i2⊕i4.
Если в принятой кодовой комбинации ошибок нет, то на выходах трех сумматоров формируется синдром последовательности вида (0,0,0). В этом можно убедиться, рассмотрев все 15 кодовых комбинаций (7,4)-кода, полученных из порождающей матрицы. Если в принятой комбинации имеются ошибочные символы, то на выходе некоторых сумматоров формируется синдром последовательности, содержащий в некоторых позициях логическую единицу, поскольку условия проверки на четность в этих сумматорах оказались невыполненными. В этом случае на выходе анализатора ошибок формируется флаг ошибки. Код (7,4) позволяет скорректировать одиночную ошибку.
На рис. 5а приведены схема блока ввода ошибок в информационные и проверочные символы и схема анализатора ошибок в среде MicroCap 9.
На рис. 5а показана безошибочная передача символов (7,4)-кода: 1010 001. Безошибочная передача символов подтверждается отсутствием ввода ошибок в блоке (нулевое положение цифровых ключей i1–i4, R1–R3), индикацией принятых символов, совпадающих с переданными, нулевым синдромом «000», индикатором «ошибки нет».
На рис. 5б представлена передача символов (7,4)-кода с введенной ошибкой в символе i1. В блоке ввода ошибок пунктиром показан цифровой ключ i1 в единичном положении. Это означает ввод ошибки в символ i1, что и характеризует принятый символ i1 (выделен пунктиром). В результате формируется синдром вида (1,1,1) и формируется логическая единица на выходе i1 анализатора ошибок.
Для коррекции ошибки бит с выхода i1 анализатора ошибок передается на соответствующий вход корректора ошибок, представляющий собой блок из семи сумматоров по модулю 2. Алгоритм коррекции основан на том, что каждому ненулевому синдрому соответствует определенная конфигурация ошибок, приведенная в таблице.
Синдром |
001 |
010 |
011 |
100 |
Конфигурация ошибок |
01000000 |
00100000 |
00010000 |
00001000 |
Ошибочный символ |
R3 |
R2 |
i2 |
R1 |
Синдром |
101 |
110 |
111 |
000 |
Конфигурация ошибок |
00000100 |
00000010 |
00000001 |
10000000 |
Ошибочный символ |
i4 |
i3 |
i1 |
Нет ошибок |
На рис. 6 приведен другой пример одиночной ошибки в проверочном символе R2.
В переданном коде 0011 011 цифровым ключом R2 в блоке ввода ошибок введена ошибка в символ R2: 0011 001. Она зафиксирована в принятых символах, в синдроме вида (0,1,0) и при формировании логической единицы на выходе R2 анализатора ошибок. В результате корректирующий (7,4)-код на выходе корректора исправляет ошибку в символе R2.
Таким образом, в соответствии с текущей конфигурацией ошибок блок коррекции формирует управляющий сигнал, задающий инверсию для бита в позиции, соответствующей ошибочному символу. Выполнен блок коррекции ошибок по числу символов блочного корректирующего (7,4)-кода на семи сумматорах по модулю 2.
В случае одиночной ошибки на выходе корректора декодера формируется верная кодовая последовательность, а на выходе анализатора ошибок формируется логическая единица, которая обозначает в данном случае ошибочный символ. На рис. 7 представлена схема кодера и декодера блочного корректирующего (7,4)-кода в среде MicroCap 9.
На рис. 7 в блоке ввода ошибок цифровой ключ i3 показан в единичном положении. Это означает в данном случае ввод ошибки в символ i3, что и характеризует ошибочный принятый символ i3. В результате формируется синдром вида (1,1,0) и формируется логическая единица на выходе i3 анализатора ошибок. Корректор исправляет эту ошибку.
В правом верхнем углу на рис. 7 пунктиром выделен и в увеличенном виде показан блок PSK — фазовый манипулятор несущей частоты 400 кГц по закону блочного корректирующего (7,4)-кода для данной кодовой комбинации 0110 101. Осциллограммы кодовой комбинации 0110 101 и соответствующая ей фазовая манипуляция несущего колебания приведены на рис. 8.
Представленный в работе метод реализации (7,4)-кода можно использовать для синтеза других типов корректирующих (n,k)-кодов. Разработанная модель дает возможность проводить широкий круг исследований кодера и декодера корректирующего (7,4)-кода, устройств блочных корректирующих (n,k)-кодов. Синтезированная модель корректирующего (7,4)-кода в среде MicroCap 9 актуальна для разработчиков соответствующей аппаратуры и может быть использована при обучении студентов радиотехнических специальностей.
- Соколов О. Л., Войцеховский А. Б. Радио-технические системы передачи информации: письменные лекции. СПб.: Изд-во СЗТУ, 2005.
- Васин В. А., Калмыков В. В., Себекин Ю. Н. и др. Радиосистемы передачи информации: учебное пособие для вузов. М.: Горячая линия – Телеком, 2005.
- Амелина М. А. Компьютерный анализ и синтез электронных устройств: конспект лекций. Ч. 1. Смоленск: МЭИ (ТУ), 2005.