Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Теория электрической связи. Помехоустойчивое кодирование в телекоммуникационных системах

.pdf
Скачиваний:
3
Добавлен:
12.11.2023
Размер:
2.38 Mб
Скачать

50

нома h(x) = 1 x2 x3 x4. Промоделировать работу схемы для информационного полинома u(x) = 1.

С учетом параметров кода, вида проверочного полинома h(x) и способа кодирования схема будет выглядеть следующим образом (рис. 3.4).

a4+j

 

 

 

 

 

 

h3

 

 

h2

 

 

h0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D3

 

 

 

 

D2

 

 

 

D1

 

D0

 

V(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a3

 

 

 

 

a2

 

 

 

a1

a0

 

 

Рис. 3.4. Структурная схема кодирующего устройства БЧХ-кода (7, 4, 3) с использованием проверочного полинома h(x) = 1 x2 x3 x4

Функции возбуждения для элементов памяти:

D0t = D1t1 , D1t = D2t1 , D2t = D3t1, D3t = D0t1 D2t1 D3t1.

Промоделируем работу кодера и занесем результаты в таблицу переходов и выходов (табл. 3.2).

Таблица 3.2

№ такта

D3

D2

D1

D0

V

1

0

0

0

 

 

1

1

1

0

0

0

2

0

1

1

0

0

3

1

0

1

1

0

4

0

1

0

1

1

5

0

0

1

0

1

6

0

0

0

1

0

7

0

0

0

0

1

Моделирование показало, что на такте с номером 1 в элементе памяти D3 регистра сформировался избыточный символ a4, на такте 2 – a5, на такте 3 – a6, а к такту с номером n = 7 в канал связи передан вектор

V (0001101) (полином V(x) = 1 x2 x3).

Способы построения кодирующих устройств для кодов с четным минимальным кодовым расстоянием не имеют принципиальных отличий от рассмотренных, за исключением того, что для расчета проверочного полинома h(x) применяется порождающий полином g(x) (1 x).

51

Способы построения кодирующих устройств для укороченных кодов имеют определенные особенности. Они связаны с тем, что для укороченных кодов уменьшается длина информационной части m, а проверочный полином h(x) и, соответственно, схема кодирующего устройства при этом не изменяются. Информационный полином u(x) заполняет регистр, начиная с младших разрядов, а оставшиеся элементы заполняются нулями. Выходом схемы является уже не элемент D0, а выход элемента, на который подается символ a0.

Пример 3.7. Для укороченного БЧХ-кода (5, 2, 3), информационного полинома u(x) = 1 и проверочного полинома h(x) = 1 x2 x3 x4 построить кодер.

Выполним перенумерацию символов кода, в результате младший разряд будет иметь индекс 4, а старший разряд – 0. Вычисления произведем по рекуррентной формуле

 

21+2

a2+ j =

ai+ j2 hi ,

 

i=0

где m = 2; t = 2. Коэффициенты ai с отрицательными значениями индексов считаются равными 0.

С учетом параметров кода, вида проверочного полинома h(x) и способа кодирования схема будет выглядеть следующим образом (рис. 3.5).

a2+j

 

 

 

 

 

h3

 

 

h2

 

 

h0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D3

 

 

 

D2

 

 

D1

 

D0

 

V(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1

a0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.5. Структурная схема кодирующего устройства БЧХ-кода (5,2,3) с использованием проверочного полинома h(x) = 1 x2 x3 x4

Функции возбуждения для элементов памяти:

D0t = D1t1, D1t = D2t1, D2t = D3t1, D3t = D0t1 D2t1 D3t1.

Промоделируем работу кодера и занесем результаты в таблицу переходов и выходов (табл. 3.3).

52

Таблица 3.3

№ такта

D3

D2

D1

D0

V

1

0

0

0

 

 

1

1

1

0

0

0

2

0

1

1

0

1

3

1

0

1

1

1

4

0

1

0

1

0

5

0

0

1

0

1

Моделирование показало, что на такте с номером 1 в элементе памяти D3 регистра сформировался избыточный символ a2, на такте 2 – a3, на такте 3 – a4, а к такту с номером n = 5 в канал связи передан вектор

V(01101) (полином V(x) = 1 x2 x3).

3.2.Порядок выполнения лабораторной работы

3.2.1.Выполнение расчетной части лабораторной работы

1.Выбрать вариант задания на лабораторную работу. Для этого сначала для своего номера в списке группы необходимо определить параметры кода, который будет использован в работе, а также порождающий полином g(x) и способ кодирования (табл. 3.4).

 

 

 

Таблица 3.4

 

 

 

 

БЧХ-код

Задающий полином

Способ кодирования

1

(7, 4, 3)

g(x) = 1 x x3

g(x)

2

(7, 4, 3)

g(x) = 1 x x3

h(x)

3

(7, 3, 4)

g(x) = 1 x x3

g(x)

4

(7, 3, 4)

g(x) = 1 x x3

h(x)

5

(7, 4, 3)

g(x) = 1 x2 x3

g(x)

6

(7, 4, 3)

g(x) = 1 x2 x3

h(x)

7

(7, 3, 4)

g(x) = 1 x2 x3

g(x)

8

(7, 3, 4)

g(x) = 1 x2 x3

h(x)

9

(9, 5, 3)

g(x) = 1 x x4

g(x)

10

(9, 5, 3)

g(x) = 1 x x4

h(x)

11

(9, 4, 4)

g(x) = 1 x x4

g(x)

12

(9, 4, 4)

g(x) = 1 x x4

h(x)

2. Заданным ранее способом кодирования для выбранных параметров кода рассчитать две кодовые комбинации для следующих значений информационной части:

53

u(x) = x,

u(x) = 1 x2.

3.Построить структурную схему кодирующего устройства для индивидуального варианта задания, выписать функции возбуждения для эле-

ментов памяти. Для кодирующего устройства на базе полинома g(x) использовать схему с предварительным умножением на xk.

4.Промоделировать работу кодирующего устройства для заданных ранее значений информационной части. Результаты моделирования представить в виде таблицы переходов и выходов элементов схемы. Сравнить результаты аналитического и схемотехнического моделирования.

После выполнения расчетной части результаты расчетов и моделирования необходимо показать преподавателю.

3.2.2. Выполнение практической части лабораторной работы

Для выполнения данной части лабораторной работы предлагается использовать программный продукт MatLab Simulink. Это пакет программ, позволяющий выполнить математическое и схемотехническое моделирование процессов преобразования, передачи и обработки информации. Порядок выполнения практической части лабораторной работы приведен ниже.

Этап 1. Создать проект в среде MatLab Simulink. Этап 2. Сохранить проект в рабочем каталоге.

Этап 3. Спроектировать функциональные схемы кодирующих устройств согласно индивидуальному варианту задания и промоделировать их работу.

Для выполнения схемотехнического проектирования необходимо воспользоваться подготовленным шаблоном template_BCH_coder.mdl, на котором размещены практически все необходимые функциональные элементы:

D-триггер DD, синхронизируемый по заднему фронту синхроим-

пульса;

логический элемент Log, который можно настроить на выполнение любой логической функции;

источник синхроимпульсов Clock;

осциллограф Scope;

цифровой регистратор Display;

источник информационной части U;

54

преобразователь вектора из параллельной формы представления в последовательную форму Converter для разных значений длины информационной части m;

устройство управления ключами Y для разных значений длины информационной части m;

буфер для преобразования Buffer (его параметр устанавливается равным 2n + 1) для отображения вектора V.

Из перечисленных элементов можно создать любую из заданных функциональных схем. Для заимствования элементов шаблона необходимо воспользоваться технологией Copy and Paste.

Для соединения элементов необходимо с нажатой левой клавишей манипулятора типа «мышь» провести указателем от одного элемента к другому и отпустить клавишу.

Для объединения группы элементов в устройство необходимо выделить элементы мышью с нажатой левой кнопкой, затем нажать на правую кнопку, вызвать контекстное меню и выбрать пункт «Create subsystem». Для обратного процесса необходимо скопировать элементы подсистемы в буфер (меню «Edit», пункт «Copy»), затем вставить в рабочую область (меню «Edit», пункт «Paste»), а затем – удалить подсистему.

Необходимо установить значение времени симуляции проекта равное n + 0.5, где n – длина БЧХ-кода.

На осциллограф Scope необходимо вывести следующие сигналы: CLK, U, Y, выходы триггеров РСЛЛОС D0 ... Dk–1, V.

Примеры реализации схем приведены на рис. 3.6, 3.7.

Рис. 3.6. Пример реализации кодирующего устройства, построенного с использованием порождающего полинома g(x)

55

Рис. 3.7. Пример реализации кодирующего устройства, построенного с использованием проверочного полинома h(x)

Необходимо обратить внимание на то, что значение вектора V, выведенное на элемент отображения «Display V», соответствует каждому такту работы схемы. Поскольку схема работает по заднему фронту синхроимпульса CLK, все значения, кроме самого 1-го такта, нужно рассматривать за два такта (на примере рис. 3.6, 3.7 вектор V = (1 0 1 0 0 1 1)).

После проектирования схемы необходимо промоделировать работу кодирующих устройств на примере кодовых комбинаций информационной части, вычисленных в расчетной части лабораторной работы.

Результат моделирования должен быть продемонстрирован преподавателю. При демонстрации студент должен показать на примере, взятом из расчетной части работы, все этапы преобразований выбранной кодовой комбинации. Студент должен быть готов ответить на вопросы преподавателя по теоретическим вопросам построения БЧХ-кодов, а также непосредственно по реализации функциональных схем устройств.

Для выполнения отчета и защиты необходимо воспользоваться тре-

бованиями пункта «Содержание отчета и защита лабораторных работ».

56

4. Применение БЧХ-кодов в телекоммуникационных системах. Исследование алгоритмов декодирования и проектирование декодирующих устройств

В данной главе исследуются избыточные циклические систематические коды, в частности, БЧХ-коды. Также проводится анализ алгоритмов декодирования и реализация декодирующих устройств для неукороченных

иукороченных БЧХ-кодов.

4.1.Общие сведения из теории

4.1.1.Принцип синдромного декодирования БЧХ-кодов

Воснову рассматриваемой процедуры декодирования циклических кодов положен алгоритм синдромного декодирования. Это означает, что при приеме кодовой комбинации циклического кода рассчитывается синдром – вектор, который показывает величину (вид) и место ошибки.

Согласно рассматриваемой модели двоичного дискретного канала связи, в котором возможны только ошибки перехода, искажение приводит

кинверсии символа кодовой комбинации. Поэтому возникновение ошибок при передаче кодовой комбинации циклического кода можно представить следующей аддитивной моделью:

V (x) =V (x) e(x),

где e(x) – полином ошибки; V(x) – передаваемый полином;

тый полином.

Разделим обе части представленного уравнения на полином g(x):

V (x)

=

V (x) e(x)

=

V (x)

 

e(x)

.

g(x)

g(x)

g(x)

 

 

 

 

g(x)

(4.1)

V (x) – приня-

порождающий

Из представления полинома V(x) известно, что он делится на порождающий полином g(x) без остатка. Назовем синдромом остаток (вычет), который образуется в результате деления полинома V (x) на порождающий

полином g(x). Согласно правилам операций над вычетами можно оставить только их в обеих частях уравнения. Поэтому выражение можно представить в следующем виде:

S(x) e(x) mod(g(x)) = re (x),

(4.2)

57

где re(x) – остаток от деления полинома ошибки e(x) на полином g(x).

Из приведенного выражения очевидно, что синдром, рассчитываемый по принятому полиному V (x) (кодовому вектору V'), однозначно оп-

ределяет полином ошибки e(x) (вектор ошибки e), который воздействовал на полином V(x) во время передачи по каналу связи. Поэтому, заранее определив возможные значения синдрома для разных вариантов ошибок и сравнив их с рассчитанным по конкретному полиному V (x) (кодовому

вектору V') значением синдрома, можно определить полином ошибки e(x) (вектор ошибки e). Зная полином (вектор) ошибки, можно реализовать корректирующие свойства кода, направив их на исправление и/или обнаружение ошибки (стирание сообщения). Очевидно, что при безошибочной передаче (e(x) = 0) синдром тоже равен 0.

Определим, какое количество вариантов полинома ошибки необходимо рассчитать для наиболее сложной корректирующей операции – исправления ошибок. Указанное значение N определяется как

S

n

(4.3)

N = ,

i=1

i

 

где s – кратность исправляемых ошибок; n – общая длина кодовой комбинации циклического кода.

Как известно из верхней границы Хемминга, количество разных вариантов синдромов (2k) достаточно для однозначного соответствия каждому виду s-кратной ошибки,

N 2k.

(4.4)

Оценим сложность устройства, которое реализует сравнение рассчитанного значения синдрома и заранее определенных значений ri(x). Количество элементов должно быть равно N. Поскольку указанное устройство осуществляет функции сравнения и выбора, оно получило название декомбинатор синдрома (ДКМС). Поэтому число N в ДКМС определяет количество k-входовых конъюнкторов. Таким образом, можно сделать вывод, что декомбинаторсиндроманастраиваетсянаполиномошибки.

Принцип синдромного декодирования применим и к обнаружению ошибок. В данном случае необходимо установить только факт возникновения ошибки. Очевидно следующее условие наличия ошибок: S(x) 0 .

Поэтому ДКМС в данном случае состоит из одного логического дизъюнктора, который проверяет на равенство 0 полином S(x).

58

Для синдромного декодирования кода, исправляющего и обнаруживающего ошибки, можно выделить два способа декодирования: общий и частный. Частный способ может быть применен для декодирования ко-

дов Хемминга с dmin = 4.

В общем случае обнаружение ошибок, приводящее к стиранию кодовой комбинации, должно произойти в случае, когда синдром S(x) 0 , и ни

один из элементов (конъюнкторов) ДКМС, настроенных для исправления соответствующей ошибки, не сработал.

В рассматриваемом частном случае для построения циклического кода с четным dmin используется переход от ближайшего кода с нечетным dmin. При этом порождающий полином определяется путем домножения полинома g(x) на полином (1 x). В данном конкретном случае при декодировании применяется способ раздельного деления. Это означает, что отдельно рассчитывается синдром S(x) от деления полинома V (x) на порож-

дающий полином g(x), а отдельно – на полином (1 x). Остаток от деления полинома V (x) на полином (1 x) имеет нулевую степень, то есть он мо-

жет быть равен либо 0, либо 1. Это означает, что он указывает четность веса полинома V (x) . Синдром S(x) рассчитывается для обнаружения места

ошибки. Рассмотрим варианты соотношения векторов синдрома на примере БЧХ-кода с dmin = 4 (табл. 4.1).

 

 

 

Таблица 4.1

 

 

 

 

 

 

V (x) mod g(x)

 

e(x)

 

V (x) mod (1 x)

0

 

0

Ошибок нет

 

 

 

 

0

 

1

1-кратная ошибка

0

 

0

2-кратная ошибка

Примечание. Ситуация «0» означает, что хотя бы один из разрядов полинома синдрома S(x) отличен от 0.

При безошибочной передаче все координаты полинома синдрома равны 0. При однократной ошибке нарушается четность кодового полинома, поэтому такую ошибку можно обнаружить и исправить. При двукратной ошибке четность кодового полинома не нарушается, поэтому такую ошибку можно обнаружить, а все сообщение – стереть.

В общем случае синдромного декодирования для исправления и/или обнаружения ошибок произвольной кратности в зависимости от реализации корректирующей способности применяется один из следующих алгоритмов:

59

1. Для кодов, исправляющих ошибки кратности не более s, рассчитываются настройки ДКМС для каждого вида полинома ошибки кратности не более s. Если после вычисления синдрома по принятому полиному V (x) его значение совпадает с одной из настроек ДКМС, то происходит

исправление ошибок путем инвертирования соответствующих разрядов. 2. Для кодов, обнаруживающих ошибки кратности не более r, ДКМС

представляет собой устройство проверки равенства 0 значения синдрома. Если после вычисления синдрома по принятому полиному V (x) ДКМС не

обнулился, то происходит ситуация обнаружения ошибок, поэтому все сообщение стирается.

3. Для кодов, исправляющих ошибки кратности не более s и обнаруживающих ошибки кратности не более r, рассчитываются настройки ДКМС для каждого вида полинома ошибки кратности не более s. Если после вычисления синдрома по принятому полиному V (x) его значение

совпадает с одной из настроек ДКМС, то происходит исправление ошибок путем инвертирования соответствующих разрядов. Если значение синдрома не совпало ни с одной настройкой, то происходит ситуация обнаружения ошибок, поэтому все сообщение стирается.

Корректирующая способность кода реализуется на такте, следующем после расчета синдрома, т.е. на такте с номером (n + 1).

4.1.2. Принципы декодирования БЧХ-кодов по алгоритму Меггита (декодер Меггита)

Синдромное декодирование для БЧХ-кодов наиболее эффективно реализуется при помощи алгоритма, предложенного американским ученым Меггитом. Поясним декодирование по алгоритму Меггита на самом простом примере – исправлении однократной ошибки (s = 1), а затем распространим приведенные соображения на произвольное значение s.

Предположим, что однократная ошибка исказила разряд ai(полином

ошибки e(x) = xi). При циклическом сдвиге вектора V' в сторону старших разрядов, что эквивалентно умножению полинома V (x) на x, ошибочный

разряд aiбудет также смещаться. При этом за счет замкнутости векторно-

го пространства БЧХ-кодов относительно операции циклического сдвига (Т) старший разряд всегда будет присутствовать у слагаемого xn–1. До позиции старшего разряда an1 ошибочный разряд aiдойдет в результате

умножения полинома на величину xn–1–i. При попадании ошибочного разряда в старший разряд полином ошибки может быть представлен как e(x) = xn–1. На этот единственный вариант полинома ошибки и настраивается декомбинатор синдрома. Для декодера Меггита декомбинатор синдрома принято называть селектор. Количество элементов в селекторе, настроен-

Соседние файлы в папке книги