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

00 Проектирование цифровых устройств

.pdf
Скачиваний:
282
Добавлен:
12.04.2015
Размер:
1.44 Mб
Скачать

21

 

а)

 

x0

 

 

 

 

 

б)

 

y0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

2

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

 

3

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

6

 

5

 

4

 

 

 

 

 

 

 

 

 

 

x2

 

 

 

 

y

4

 

5

 

7

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

9

 

10

 

11

 

2

12

 

13

 

15

 

14

 

 

 

 

 

x3

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

14

 

13

 

12

 

 

8

 

9

 

11

 

10

3

 

 

 

 

 

 

 

 

 

 

 

16

 

17

 

18

 

19

 

 

24

 

25

 

27

 

 

 

 

 

 

 

 

 

 

 

 

26

 

x2

23

 

22

 

21

 

20

x4

y2

28

 

29

 

31

 

30

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

24

 

25

 

26

 

27

 

 

20

 

21

 

23

 

22

4

 

 

 

 

 

 

 

 

 

 

 

31

 

30

 

29

 

28

 

 

16

 

17

 

19

 

18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Рис.1.10. Карты десятичных эквивалентов кода Грея (а) и двоичного кода (б)

Таблица перевода пятиразрядного кода Грея в двоичный код и обратно

Десятичное

 

Код Грея

 

 

Двоичный код

 

число

x4

x3

x2

x1

x0

y4

y3

y2

y1

y0

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

1

0

0

0

0

1

2

0

0

0

1

1

0

0

0

1

0

3

0

0

0

1

0

0

0

0

1

1

4

0

0

1

1

0

0

0

1

0

0

5

0

0

1

1

1

0

0

1

0

1

6

0

0

1

0

1

0

0

1

1

0

7

0

0

1

0

0

0

0

1

1

1

8

0

1

1

0

0

0

1

0

0

0

9

0

1

1

0

1

0

1

0

0

1

10

0

1

1

1

1

0

1

0

1

0

11

0

1

1

1

0

0

1

0

1

1

12

0

1

0

1

0

0

1

1

0

0

22

Десятичное

 

Код Грея

 

 

Двоичный код

 

число

x4

x3

x2

x1

x0

y4

y3

y2

y1

y0

13

0

1

0

1

1

0

1

1

0

1

14

0

1

0

0

1

0

1

1

1

0

15

0

1

0

0

0

0

1

1

1

1

16

1

1

0

0

0

1

0

0

0

0

17

1

1

0

0

1

1

0

0

0

1

18

1

1

0

1

1

1

0

0

1

0

19

1

1

0

1

0

1

0

0

1

1

20

1

1

1

1

0

1

0

1

0

0

21

1

1

1

1

1

1

0

1

0

1

22

1

1

1

0

1

1

0

1

1

0

23

1

1

1

0

0

1

0

1

1

1

24

1

0

1

0

0

1

1

0

0

0

25

1

0

1

0

1

1

1

0

0

1

26

1

0

1

1

1

1

1

0

1

0

27

1

0

1

1

0

1

1

0

1

1

28

1

0

0

1

0

1

1

1

0

0

29

1

0

0

1

1

1

1

1

0

1

30

1

0

0

0

1

1

1

1

1

0

31

1

0

0

0

0

1

1

1

1

1

Преобразователь кода Грея в двоичный код (или обратно) представляет собой «черный ящик» с пятью входами и пятью выходами. Сигналы на входах – аргументы, а на выходах – функции. Синтез функций и их минимизация выполняется с помощью диаграмм Вейча. На рисунке 1.11 представлены диаграммы Вейча для трех выходов преобразователя.

23

 

y0

 

 

 

 

y1

 

 

 

 

y2

 

 

 

 

 

 

 

 

x0

 

 

 

 

x0

 

 

 

 

x0

 

 

 

0

 

1

0

1

 

0

0

1

1

 

0

0

0

0

 

x2

1

 

0

1

0

x2

1

1

0

0

x2

1

1

1

1

 

0

 

1

0

1

0

0

1

1

0

0

0

0

 

 

 

 

 

 

 

1

0 1

0

x3

1

1

0

0

x3

1 1 1 1 x3

 

0

 

1

0

1

 

0

0

1

1

 

0

0

0

0

 

x2

1

 

0

1

0

x4 x2

1

1

0

0

x4 x2

1

1

1

1

x4

0

1

0

1

0

0

1

1

0

0

0

0

 

 

 

 

 

1

0

1

0

 

1

1

0

0

 

1

1

1

1

 

 

 

 

 

 

x1

 

 

 

 

x1

 

 

 

 

x1

 

Рис.1.11. Диаграммы Вейча для трех выходных переменных преобразователя пятиразрядного кода Грея в двоичный код

Приведем в качестве примера результаты синтеза этих функций. Заметим, что выражение функций в дизъюнктивной форме в данной задаче имеет громоздкий вид, а применение операции «Исключающее ИЛИ» позволяет получить компактные формулы.

y0 x0 x1 x0 x1 x4 x2 x3 x4 x2 x3x0 x1 x0 x1 x4 x2 x3 x4 x2 x3

x0 x1 x2 x3 x4 x0 x1 x2 x3 x4

x0 x1 x2 x3 x4.

y1 x1 x4 x2 x3 x4 x2 x3x1 x4 x2 x3 x4 x2 x3

x1 x2 x3 x4 x1 x2 x3 x4

x1 x2 x3 x4.

y2 x4 x2 x3 x4 x2 x3 x2 x3 x4.

24

В полученных формулах видна закономерность: выходной сигнал в i-м разряде равен сумме по модулю 2 входных переменных, начиная от i-го и до самого старшего. На рисунке 1.12 приведена схема восьмиразрядного преобразователя.

x7

x6

x5

x4

 

x3

x2

x1

x0

 

 

=1

=1

=1

=1

=1

=1

=1

 

y

y6

y

y

y

y

y

y

 

7

 

5

4

3

2

1

0

 

 

Рис.1.12.

Схема преобразователя кода Грея в двоичный код

 

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

На рисунке 1.13 представлены диаграммы Вейча для трех выходов преобразователя.

 

y1

 

 

 

 

y2

 

 

 

 

y3

 

 

 

 

 

 

 

 

x

 

 

 

 

x0

 

 

 

 

x0

 

 

 

0

 

0

1

1

 

0

0

0

0

 

0

0

0

0

 

x2

1

 

1

0

0

x2

1

1

1

1

x2

0

0

0

0

 

1

 

1

0

0

0

0

0

0

1

1

1

1

 

 

 

 

 

 

 

0

0 1

1

x3

1

1

1

1

x3

1 1 1 1 x3

 

0

 

0

1

1

 

0

0

0

0

 

0

0

0

0

 

x2

1

 

1

0

0

x4 x2

1

1

1

1

x4 x2

0

0

0

0

x4

1

1

0

0

0

0

0

0

1

1

1

1

 

 

 

 

 

0

0

1

1

 

1

1

1

1

 

1

1

1

1

 

 

 

 

 

 

x1

 

 

 

 

x1

 

 

 

 

x1

 

Рис.1.13. Диаграммы Вейча для трех выходных переменных преобразователя пятиразрядного двоичного кода в код Грея

25

Результаты синтеза показывют, что для всех выходов

выражения идентичны:

 

 

y0 x0 x1;

y1 x1 x2 ;

y2 x2 x3;

y3 x3 x4 ;....

На рисунке 1.14 приведена схема восьмиразрядного преобразователя.

x7

x6

x5

 

x4

 

x3

 

x2

x1

x0

 

=1

=1

 

=1

 

=1

 

=1

=1

=1

y

y6

y

5

y

4

y

3

y

y

y

7

 

 

 

 

2

1

0

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

1.3. Арифметические сумматоры и вычитатели

1.3.1. Суммирование двоично-десятичных чисел

Суммирование двоично-десятичных чисел можно производить по правилам обычной двоичной арифметики, а затем производить двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в проверке каждой тетрады на допустимые коды. Если в какой либо тетраде обнаруживается запрещенная комбинация, то это говорит о переполнении. В этом случае необходимо произвести двоично-десятичную коррекцию. Двоично-десятичная коррекция заключается в дополнительном суммировании числа шесть (число запрещенных комбинаций) с тетрадой, в которой произошло переполнение или произошёл перенос в старшую тетраду. Приведём два примера:

+

0001

1000

+

0010

1011

 

0001

0011

0000

0110

 

 

 

 

0010

1011

 

 

 

 

0011

0001

 

+

0001

1001

+

0011

0010

 

0001

1001

0000

0110

 

 

 

 

0011

0010

 

 

 

 

0011

1000

 

26

На рисунке 1.15 изображена схема одной декады сумматора двоично-десятичных чисел, выполненного на интегральных четырехразрядных двоичных сумматорах DD1 и DD3 и компараторе

DD2.

 

 

DD1

 

DD3

 

 

A0

SM

S0

A0

SM

S0

 

A

A1

 

S1

A1

 

S1

(A+B)10

A2

 

S2

A2

 

S2

 

 

 

 

 

A3

 

S3

A3

 

S3

 

 

B0

 

 

B0

 

 

 

B

B1

 

 

B1

 

 

 

B2

 

 

B2

 

 

 

 

 

 

 

 

 

 

B3

 

 

B3

 

 

 

 

C0

 

C4

C0

 

C4

 

 

 

DD2

 

A0

==

 

A1

 

 

A2

 

Логич. 1

A3

 

B0

 

 

 

 

B1

 

 

B2

 

 

B3

P10

 

>

>

==

< <

Рис. 1.15. Сумматор двоично-десятичных чисел

Операцию сложения выполняет сумматор DD1. При сумме большей или равной десяти на выходе микросхемы DD2, которая является схемой сравнения двоичных чисел, формируется сигнал переноса Р10. На второй вход (B0…B3) микросхемы DD2 подается двоичный эквивалент числа 9 (1001). Сумматор DD3 осуществляет десятичную коррекцию результата суммирования. При отсутствии сигнала переноса на выходе микросхемы DD3 повторяется код числа, который был на выходе DD1, поскольку на входы В поданы лог. 0. При наличии сигнала переноса Р10 = 1 на входах В1 и В2 устанавливается логическая 1, что соответствует коду числа 6. Допустим, складываются числа А = 8 и В = 4. На выходе сумматора DD1 появляется код числа 12 (8 + 4 = 12). На выходе DD2 формируется сигнал переноса, сумматор DD3 выполняет операцию

27

12 + 6 = 18. Числу 18 соответствует код 10010. На выходах S сумматора DD3 устанавливается код 0010 (собственный перенос микросхемы DD3 не учитывается). Поскольку выход Р10 соответствует числу 10, на выходах сумматора DD3 число 2 (0010), то в результате получается число 12.

1.3.2. Устройство вычитания в двоично-десятичном коде

Рассмотрим специализированное устройство, предназначенное для вычитания в двоично-десятичном коде. Операция вычитания реализуется достаточно своеобразно в зависимости от того, какие знаки имеют операнды. Если и уменьшаемое и вычитаемое одного знака, то к тетрадам числа с большим модулем прибавляются дополнительные до девяти коды тетрад другого числа. Дополнительный код тетрады получают так: к обратному коду тетрады прибавляют число 1010 = 10102. Тем самым вычитают лишнюю шестерку 610 = 01102, которая содержится в инверсном коде тетрады. При этом переносы между тетрадами блокируются. После операции суммирования осуществляется корректировка суммы. В качестве знака результата берется знак операндов.

Покажем этот алгоритм на примерах.

Первый пример. Нужно из 245 вычесть 187. Код уменьшаемого 0010 0100 0101, прямой код вычитаемого 0001 1000 0111. Так как модуль вычитаемого меньше, чем модуль уменьшаемого, каждую тетраду вычитаемого заменяем дополнительным кодом:

Прямой код 187

0 0 0 1

1 0 0 0

0 1 1 1

 

 

 

 

Обратный код 187

1 1 1 0

0 1 1 1

1 0 0 0

 

 

 

 

Десятичная коррекция (плюс 10)

1 0 1 0

1 0 1 0

1 0 1 0

 

 

 

 

Дополнительный до 9 код

1 0 0 0

0 0 0 1

0 0 1 0

 

 

 

 

и выполняем сложение:

28

Прямой код числа 245

0 0 1 0

0 1 0 0

0 1 0 1

 

 

 

 

Дополнительный код числа 187

1 0 0 0

0 0 0 1

0 0 1 0

 

 

 

 

Промежуточный результат

1 0 1 0

0 1 0 1

0 1 1 1

 

 

 

 

Десятичная коррекция плюс 1

0 1 1 0

0 0 0 0

0 0 0 1

 

 

 

 

Окончательный результат

0 0 0 0

0 1 0 1

1 0 0 0

 

 

 

 

Модуль суммы равен 58, знак суммы положительный.

Второй пример. Необходимо из минус 145 вычесть минус 192. В результате должно получиться отрицательное число минус 47. Преобразуем модуль уменьшаемого 145 в дополнение к 999, получим

854:

Прямой код модуля числа 145

0 0 0 1

0 1 0 0

0 1 0 1

 

 

 

 

Обратный код модуля числа 145

1 1 1 0

1 0 1 1

1 0 1 0

 

 

 

 

Десятичная коррекция

1 0 1 0

1 0 1 0

1 0 1 0

 

 

 

 

Дополнительный код числа 145

1 0 0 0

0 1 0 1

0 1 0 0

 

 

 

 

Прямой код модуля числа 192

0 0 0 1

1 0 0 1

0 0 1 0

 

 

 

 

Промежуточный результат

1 0 0 1

1 1 1 0

0 1 1 0

 

 

 

 

Десятичная коррекция плюс 1

0 0 0 0

0 1 1 0

0 0 0 1

 

 

 

 

Окончательный результат

0 0 0 0

0 1 0 0

0 1 1 1

 

 

 

 

Модуль разности равен 47, разность операндов имеет отрицательный знак, т. е. минус 47.

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

На рисунке 1.16 приведен фрамент схемы вычитателя двоичнодесятичные чисел для одного десятичного разряда. Для реализации устройства необходимы компараторы, коммутаторы, сумматоры и логическая схема для управления процессами передачи и преобразования операндов.

a0 a1 a2 a3

b0 b1 b2 b3

1DI0

2DI1

3DI2

4DI3

 

 

OE

 

5

DI0

 

6

1

DI1

2

7

DI2

3

8

DI3

4

 

OE

 

 

5

1

A0

2

A1

6

3

A2

7

4

A3

8

5

B0

 

6

 

 

7

B1

B2

8

B3

 

“0” > “1” = “0” <

BD

DO0

DO1

DO2

DO3

DD1

11

22

33

44

DD3

A0

SM S0

A1

S1

A2

S2

A3

S3

 

 

“0”

B0

 

 

 

DO0

1

“1”

B1

 

 

 

2

“0”

B2

 

 

 

DO1

 

 

 

3

“1”

B3

 

 

 

DO2

C0

 

C4

 

4

 

 

 

DO3

 

 

 

 

 

 

 

 

 

 

DD2

 

 

 

DD4

= =

1

DI0

BD

 

1

 

2

DO0

 

 

DI1

 

 

 

 

2

 

 

3

DI2

 

DO1

 

 

 

3

 

 

4

DI3

 

DO2

 

 

 

4

 

 

 

 

 

DO3

 

 

 

OE

 

 

 

 

 

 

 

 

 

 

5

DI0

 

 

1

 

 

6

 

 

 

 

DI1

 

DO0

 

 

 

2

 

 

7

 

 

 

 

 

 

>

 

DI2

 

DO1 3

 

8

 

=

 

DI3

 

DO2

4

 

 

 

 

 

 

 

DO3

<

 

 

OE

 

 

 

 

 

 

 

1

2

3

4

 

 

 

DD5

 

DD6

A0

SM

S0

1

1

A0

SM S0

2

2

A1

 

S1

A1

S1

 

3

3

A2

 

S2

A2

S2

 

4

4

A3

 

S3

A3

S3

 

 

 

B0

 

 

 

“0”

B0

 

B1

 

 

 

 

B1

 

B2

 

 

 

“0”

B2

 

B3

 

 

 

B3

 

C0

 

C4

 

 

C0

C4

1

 

DD7

A0

= =

2

 

A1

 

3

A2

4

A3

 

“1” B0 “0” B1

“0” B2 “1” B3

“0”

>

<

“1”

=

=

“0”

<

>

 

 

Рис.1.16. Схема одной декады вычитателя двоично-десятичных чисел

29

30

Интегральная схема DD4 типа 555АП4 содержит два четырехразрядных шинных драйвера. В первом драйвере режим

передачи сигналов на выход устанавливается при OE = 0. В случае

OE = 1 выходные каскады переходят в состояние высокого импеданса (Roff). Во втором драйвере передача данных на выход происходит при OE = 1. При OE = 0 выход переходит в состояние высокого импеданса.

 

 

555АП4

 

 

 

555АП3

 

2

DI

BD

 

2

DI

BD

 

0

DO

 

0

DO

 

4

18

4

18

1

0

1

0

6

6

2

1

16

2

1

16

8

8

3

2

14

3

2

14

1

1

OE

3

12

OE

3

12

17

DI

BD

 

17

DI

BD

 

0

DO

 

0

DO

 

15

1

3

15

1

3

13

2

0

5

13

2

0

5

1

1

11

3

7

11

3

7

2

2

19

 

9

19

 

9

OE

3

OE

3

 

 

 

 

Рис. 1.17. Интегральные схемы шинных драйверов

Компаратор DD2 определяет, какой из операндов – уменьшаемое число a3a2a1a0 или вычитаемое b3b2b1b0 – меньше. Меньшее из этих чисел поступает через инвертирующий шинный драйвер DD1 на сумматор DD3, который прибавляет к обратному коду декады число 1010(2) = 10(10), формируя дополнительный до девяти код десятичной цифры. Большее число проходит через неинвертирующий драйвер DD4 на сумматор DD5 для сложения с дополнительным кодом меньшего числа. Если полученная на выходе DD5 сумма превышает число девять, по сигналу из компаратора DD7 осуществляется ее десятичная коррекция путем сложения в сумматоре DD6 с числом 0110(2) = 6(10). Сигнал переноса из сумматора DD6 старшей декады приходит на вход переноса младшей декады, прибавляя единицу, и тем самым формируется окончательное