Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа _6 .doc
Скачиваний:
110
Добавлен:
23.05.2015
Размер:
9.87 Mб
Скачать

6.4.8 Построение преобразователя двоичного кода в код Грея

Преобразование А(х) = (n ,..., р ,..., 1) , где  = xp  xp , если р = 1, 2, ..., n-1, и р = xn , если р = n, определяет алгоритм построения кода Грея.

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

Важно: код Грея относится к таким, в которых при переходе от любой кодовой комбинации к следующей изменяется только один разраяд. Код Грея можно получить по соотношению , где- значение разряда кода грея,- значение разряда двоичного кода, преобразуемого в код грея. Ряд левее старшего для двоичного кода считается нулевым.

Пример: Записать число в коде Грея. Перепишем это число в двоичном коде: 1010, тогда преобразование будет выглядеть следующим образом:

1

0

1

0

Х

*

1

0

1

0

1

1

1

1

Х

(*-всегда ноль). Сложив столбцы в таблице по модулю 2 и отбросив последний (где есть «Х»), получили число или двоичное 1010 в коде Грея. Оно имет значение 1111. Это можно увидеть и на временных диаграммах (рис. 6.38)

Рис. 6.38 Работа преобразователя двоичного кода в код Грея

Рис. 6.39 Структура преобразователя двоичного кода в код Грея (блок Bin_to_Gray)

Рис. 6.40 Преобразователь двоичного кода в код Грея в пакете

MAX+Plus II

Рис. 6.41 Временные диаграммы

Рис. 6.42 Матрица временных задержек

Программа:

CONSTANT t=3

SUBDESIGN preobraz_dvoich_v_kod_greay

( X[3..0] : INPUT;

Y[3..0] : OUTPUT;

)

VARIABLE q[3..0] : NODE;

BEGIN

FOR i IN 0 TO t GENERATE

X[i+1] = q[i];

END GENERATE;

q[3] = GND;

Y[3..0] = X[3..0] $ q [3..0];

END;

Преобразование кода Грея в двоичный код описывается выражением xp = p  xp+1, если р = 1, 2, ..., n-1, и x = n , если р = n. Схема преобразователя А(х) для четырехразрядных двоичных чисел Х = (x4, х3, x2, x1) показано на рис. 6.43.

Пример: Получить из числа 1011, записанного в коде Грея, его двоичное значение.

1

0

1

1

1

1

0

1

Тут нужно пояснить. Бинарное число в старшем разряде всегда будет иметь то значение, которое было в старшем разряде кода Грея. Остальные значения получаются после сложения по модулю 2 соответствующих разрядов (если записаны как в таблице, тогда по диагонали).

Рис. 6.43 Работа преобразователя кода Грея в двоичный код (*)

Рис. 6.44 Внутренняя структура элемента Gray_to_Bin

(преобразователя кода Грея в двоичный код)

(*) Примечание. Для получения кода Грея, из которого нужно получить двоичный код, можно воспользоваться рассмотренным в предыдущем примере преобразователем двоичного кода в код Грея (модуль Bin_to_Gray).

Рис. 6.44 Преобразователь кода Грея в двоичный код в

пакете MAX+Plus II

Рис. 6.45 Временные диаграммы

Рис. 6.46 Матрица временных задержек

Программа:

CONSTANT t=3;

SUBDESIGN

( X[3..0] : INPUT;

Y[3..0] : OUTPUT;

)

BEGIN

Y[3] = X[3];

FOR i IN 0 TO t GENERATE

y[t-1] = X[t-1] $ Y[t+1-i];

END GENERATE;

END;