Смекни!
smekni.com

Расчет оценок показателей достоверности приема дискретной информации. Проектирование кодера и декодера бчх-кода (стр. 3 из 4)

(x+1)*( x5+x2+1)=

Число информационных символов k=25, а число проверочных символов n=6. И емкость кода С=2к=3.355*107

Итак, мы получили генераторный полином g(x)= x6+x5+x3+x2+x+1, который полностью определяет БЧХ-код, его кодер и декодер (в режиме обнаружения ошибок).

6. Алгоритм работы кодера БЧХ-кода

Выбранный БЧХ-код задается своей разрядностью n и генераторным полиномом g(x), степень которого равна n-k, где k-число информационных символов. Емкость БЧХ-кода C=2k.

Пусть a(X)=a0+a1X+...+ak-1Xk-1 – k-разрядный вектор информационных символов, V(X)=b0+b1X+b2X2+...+bn-1Xn-1 - n-разрядный вектор кода. Кодер преобразует вектор a(X) в вектор V(X), реализует процедуру получения систематического кода т.е.:

V(X)=ak-1Xn-k+ak-2Xn-2+...+a0Xn-k+bn-k-1Xn-k-1+b1X+b0;

Таким образом, в векторе V(X) коэффициенты при старших степенях X-информационные символы, при младших степенях проверочные.

Вектор V(X) для выбранного циклического кода при заданном a(X) получаем следующим образом:

1 шаг: - a(X)*Xn-k

2 шаг: a(X)*Xn-k/ g(x) – получим остаток от деления R(X) (результат деления нас не интересует). Отметим, что степень многочлена R(X) меньше степени многочлена g(x).

3 шаг: - получаем вектор систематического кода как сумму a(X)*Xn-k и R(X), т.е.

V(X)= a(X)*Xn-k + R(X); отметим, что степень многочлена a(X)*Xn-k не меньше n-k, поэтому их сложение это по существу «приписывание» R(X) за a(X)*Xn-k.

x30+x29+x28+ x27+x26+x25+ x24+x23+x22+ x21+x20+x19+ x18+x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6 x6+x5+x3+ x2+x+1
x30+x29+x27+ x26+x25+x24 x24+x22+x21+x19+x18+x14+x7+x5+x4+x3
x28+x26+x23+x22+ x21+x20+x19+ x18+x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6 x28+x27+x25+ x24+x23+x22
x27+x26+x25+x24+ x21+x20+x19+ x18+x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6 x27+x26+x24+ x23+x22+x21
x25+ x23+x22+x20+x19+ x18+x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6 x25+x24+x22+x21+x20+x19
x24+x23+x21+x18+x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6
x24+x23+x21+x20+x19+x18
x20+x19+ x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6 x20+x19+ x17+x16+x15+x14
x13+x12+x11+ x10+x9+x8+ x7+x6 x13+x12+ x10+x9+x8+ x7
x11+x6 x11+x10+x8+ x7+x6+x5
x10+x8+ x7+x5 x10+x9+ x7+x6+x5+x4
x9+x8+x6+x4 x9+x8+x6+x5+x4+x3
x5+x3

Получаем остаток от деления равный R(X)= x5+x3 .Таким образом

V(X)=a(X)Xn-k+R(X)= x30+x29+x28+ x27+x26+x25+ x24+x23+x22+ x21+x20+x19+ x18+x17+x16+x15+x14+ x13+x12+x11+ x10+x9+x8+ x7+x6+ x5+x3

При n равном 31 получим n-разрядный вектор кода.

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0

xn................................................................................................................................................x0

7 .Кодер систематического циклического кода

Кодер систематического циклического кода реализует следующий алгоритм:

  1. шаг: a(X)Xn-k
  2. шаг: a(X)Xn-k/g(x)
  3. шаг: V(X)= a(X)Xn-k+R(X), где V(X)-вектор кодового слова, R(X)-остаток от деления a(X)Xn-k/g(x).

И строится на линейной переключательной схеме одновременного умножения (на Xn-k) и деления (на g(X)) многочленов.

Построим схему кодера для кода, у которого:

n=31, g(x)=x6+x5+x3+x2+x+1

Линейная переключательная схема одновременного умножения a(X) на многочлен b(X)=b6X6+ b5X5+ b4X4+ b3X3+ b2X2+ b1X+b0

и деления на многочлен g(X)= g6X6+ g5X5+ g4X4+ g3X3+ g2X2+ g1 X+g0 приведена ниже. Прямоугольниками на схеме обозначены элементы памяти, кружочками – устройства умножения на константу, записанную в кружочке, кружочками со знаком «+» обозначены сумматоры. Число элементов памяти равно степени равно степени многочленов b(X) и g(X). Цепи сдвига на схеме не показаны.

Все математические операции выполняются в поле GF(2), где –gi=gi,

. А gi=0 или bi=0 соответствует разрыву в схеме, gi=1 или bi=1 соответствует наличию соединения.

На вход схемы поступают последовательно во времени все коэффициенты (включая и нулевые) многочлена a(X), начиная со старшей степени.

Общая схема одновременного умножения и деления

Рис. 3

Схема одновременного умножения на b(X)=Xn-k=X31-25=X6 и деления на многочлен g(x)= x6+x5+x3+x2+x+1 имеет вид:

Рис. 3

В этой схеме –g0=-g1=-g2=-g3=1; -g4=0; -g5=1; -g6=1.

Суммирование осуществляется по модулю два.

Блок-схема кодера

Рис. 5

В начале ключ К1 замкнут, а К2 разомкнут.На вход схемы поступают коэффициенты многочлена a(X), начиная со старше степени. Эти символы поступают на выход схемы и в цепь обратной связи (деление). После поступления символа a0 ключ К1 размыкается(обрывается обратная связь схемы деления), ключ К2 замыкается и содержимое регистра(проверочные символы) последовательно во времени передаются на выход. Таким образом на выходе получаем вектор кода V(X).

Функциональная схема, соответствующая блок-схеме (рис. 5), приведена на рис. 6.

На вход схемы подаются сигналы: с прямого (ГИ) и инверсного (

) выхода генератора импульсов, управления (У), информационные символы a(x) последовательно во времени, начиная с a24. Информационные символы синхронизированы с ГИ. Каждая ячейка состоит из двух Д-триггеров и сумматора по модулю 2. На «нижний» Д-триггер информация записывается по переднему фронту ГИ, на «верхний» Д-триггер информация переписывается с «нижнего» Д-триггера по переднему фронту
, то есть по заднему фронту ГИ. Схемы «И1» и «Ин1» выполняют функцию ключа К1 (смотрите блок-схему кодера 31,25 БЧХ кода на рис. 3). При поступлении информационных символов с a24 по a0 (первые 25 тактов) Y=1 и обратная связь включена. При этом на выходе инвертора «Ин2» сигнал равен 0, следовательно, на выходе схемы «&2» B=0. Сигналы a24…a0 через схему «ИЛИ» поступают на вход линейного триггера (ЛТ), выход которого – выход кодера. После поступления всех информационных символов (25 тактов), на входе a(x) сигнал, соответствующий логическому «0», на входе «Y» сигнал также соответствует логическому «0». При этом А=0, то есть обратная связь отключена. С выхода шестой ячейки коэффициенты R(x) - остатка от деления a(x)xn-k на g(x), которые к этому времени уже получены, поступают через схему &2 при Ин2=1 на вход ЛТ. С выхода ЛТ получаем проверочные символы – коэффициенты R(x), вслед за информационными. Таким образом, формируем кодовый вектор V(x).

Функциональная схема кодера 31,25

Рис. 6


8. Схема обнаружения ошибки

При передаче информации по каналу связи к вектору кода V(x) прибавляется вектор ошибки e(x). Если e(x)=0, ошибки в канале связи не было. При e(x)≠0 в канале связи была ошибка.

Кодовое слово принадлежит коду, если оно делится на g(x). Поэтому принятый кодовый вектор V1(x)=V(x)+e(x) в приемнике делим на g(x). Если V1(x) делится на g(x) без остатка, то V1(x) – вектор кода. В противном случае обнаруживается ошибка.

В нашем случае линейная переключательная схема деления многочлена V(x) на g(x)= x6+x5+x3+x2+x+1 имеет вид: