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

35738-2 Основы трансляции

...doc
Скачиваний:
21
Добавлен:
14.03.2016
Размер:
114.18 Кб
Скачать

Содержание

Задача 1

  1. Сложить два двоичных числа в обратном коде в формате с плавающей запятой в нормализованном виде. При необходимости произвести нормализацию: 0100110111*2-2 + 01000100 * 2-3

  2. Сложить два числа в ДДК (8421) в дополнительном коде: -618510 + 291610

  3. Умножить два числа в двоичном обратном коде: (-10/16)10 * (-5/16)10

  4. Поделить два двоичных числа в двоичном дополнительном коде: (3/16)]10 : (-10/16)10 по алгоритму без восстановления остатка с результатом в дополнительном коде.

Решение

1. Сложить два двоичных числа в обратном коде в формате с плавающей запятой в нормализованном виде. При необходимости произвести нормализацию: 0100110111*2-2 + 01000100 * 2-3

Представим числа 0100110111*2-22 и 01000100 * 2-32 в обратном коде.

Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.

Двоичное число 00100110111*2-2 имеет обратный код 0,00100110111*2-2

Двоичное число 001000100 * 2-3 имеет обратный код 0,001000100 * 2-3

Сложим числа 000100110111*2-2 и 0001000100 * 2-3

В 8-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 9-й разряд.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

1

0

0

0

1

0

0

1

1

0

1

1

1

0

2

0

2

0

0

0

1

0

0

0

1

0

0

0

0

0

2

0

3

0

0

1

1

1

0

0

0

0

В 9-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 10-й разряд.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

1

1

0

0

0

1

0

0

1

1

0

1

1

1

0

2

0

2

0

0

0

1

0

0

0

1

0

0

0

0

0

2

0

3

0

0

0

1

1

1

0

0

0

0

В 12-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 13-й разряд.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

1

1

1

0

0

0

1

0

0

1

1

0

1

1

1

0

2

0

2

0

0

0

1

0

0

0

1

0

0

0

0

0

2

0

3

0

0

1

0

0

0

1

1

1

0

0

0

0

В итоге получаем:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

1

1

1

0

0

0

1

0

0

1

1

0

1

1

1

0

2

0

2

0

0

0

1

0

0

0

1

0

0

0

0

0

2

0

3

0

0

1

0

0

1

0

0

0

1

1

1

0

0

0

0

Результат сложения: 0010010001110000

Получили число 0010010001110000. В десятичном представлении это число имеет вид:

Для перевода необходимо умножить разряд числа на соответствующую ему степень разряда.

0010010001110000 = 215*0 + 214*0 + 213*1 + 212*0 + 211*0 + 210*1 + 29*0 + 28*0 + 27*0 + 26*1 + 25*1 + 24*1 + 23*0 + 22*0 + 21*0 + 20*0 = 0 + 0 + 8192 + 0 + 0 + 1024 + 0 + 0 + 0 + 64 + 32 + 16 + 0 + 0 + 0 + 0 = 9328

Результат сложения (в десятичном представлении): 9328

Ответ: 001001000111000 или 9328.

2. Сложить два числа в ДДК (8421) в дополнительном коде: -618510 + 291610

6185 =0. 0110 0001 1000 1001 – прямой код (ПК) ~ обратный код (ОК).

-2916 = 1. 0010 1001 0001 0110 – ПК.

Перевод в обратный код: 0010 1001 0001 0110 + 0110 0110 0110 0110 =1000 1111 0111 1100 инверсия, 0111 0000 1000 0011 – ОК.

Сложение: 

0. 0110 0001 1000 1001 + 0111 0000 1000 0011 = 1101 0010 0000 1100 был перенос и запрещена комбинация значит корректируем 0110 0110 0110.

10. 0011 0010 0111 0010 потом циклический перенос 0. 0011 0010 0111 0011 - результат в ОК.

Перевод в прямой код – 3273.

Ответ: 3273.

3. Умножить два числа в двоичном обратном коде: (-10/16)10 * (-5/16)10

C=A*B

Переведем в дополнительный код:

A=10/16 = 0.1010 п.к. = 0,1010 д.к множимое;

В= -5/16 = 1,0101 п.к = 1,1011 д.к. множитель.

0.1010.

1011.

b4=1 0 0000 1010

b3=1 0 0001 0100

b2=0 0 0000 0000

b1=1 0 0101 0000

0.0110 1110 Псевдопроизведение

1,0110 0000 Коррекция [-[A]дк]ДК

1.11001110 Результат в [C]ДК

Ответ: [C]п.к.=1.00110010 = -50/256

4. Поделить два двоичных числа в двоичном дополнительном коде: (3/16)10 : (-10/16)10 по алгоритму без восстановления остатка с результатом в дополнительном коде.

Представим число 3/16 в двоичном коде = 3 = 112

Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица. Двоичное число 0000011 имеет обратный код 0,0000011

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

Число 3/16 представляется в двоичном дополнительном коде как 0,0000011.

Представим число -10/16 в двоичном коде.

10 = 10102

Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.

Двоичное число 0001010 имеет обратный код 1,1110101

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

В 0-ом разряде возникло переполнение (1 + 1 = 10). Поэтому записываем 0, а 1 переносим на 1-й разряд.

7

6

5

4

3

2

1

0

1

1

1

1

1

0

1

0

1

0

0

0

0

0

0

0

1

0

В итоге получаем:

7

6

5

4

3

2

1

0

1

1

1

1

1

0

1

0

1

0

0

0

0

0

0

0

1

1

1

1

1

0

1

1

0

Число -10/16 представляется в двоичном дополнительном коде как 1,1110110

Поделить два двоичных числа в двоичном дополнительном коде: 0,0000011: 1,1110110 = 1,0011011.

Задача 2

Синтезировать функциональную схему управляющего автомата Мили с жесткой логикой на RS -триггерах.

Таблица переходов

a1

a2

a3

a4

z1

a3

a1

a2

a3

z2

a4

a1

a4

a2

Таблица выходов

a1

a2

a3

a4

z1

W1

W1

W3

W2

z2

W2

W2

W3

W3

Решение

Кодирование состояний для модели Мили на RS-триггерах

Для кодировки состояний автомата на RS-триггерах воспользуемся эвристическим алгоритмом кодирования, который минимизирует суммарное число изменений элементов памяти на всех переходах автомата.

0 0 1). Кодируем первые два состояния : К(0) = 0000

0 1 К(1) = 0001

1 9 2) Выбираем следующее незакодированное состояние u = 9

1 2 1 9

2 3 3 9

3 4 M’= 8 9

3 9 9 0

4 5 9 9

M= 5 0 Составляем список уже закодированных соседних состояний

5 6 B = {1,0}

6 7 Список соседних кодов для них

7 6 C(0) = {1000,0100,0010}

7 8 C(1) = {1001,0101,0011}

8 9 D= {1001,0101,0011}

9 0 Выбираем код с минимальной функцией W

9 9 W(1000) = W(0100) = W(0010) =W(1001) = W(0101) = W(0011) = 3; K(9) = 0010

3) u = 2

M’= 1 2

2 3

B = {1}, D = {1001, 0101, 0011} K (2) = 0011

4) u = 3

2 3

M’= 3 4

3 9

B = {2; 9} C(2) = {0111, 1011}

C(9) = {0110,1010}

D = {0111,0110,1011,1010} K(3) = 0110

5) u = 4

M’= 3 4

4 5

B = {3} D = {0100,0111,1110} K(4) = 0100

6) u =5

4 5

M’= 5 0

5 6

B = {4,0}

C(0) = {1000}

C(4) = {1100, 0101}

D = {1000, 1100, 0101} K (5) = 1000

7) u=6

5 6

M’= 6 7

7 6

B={5} D={1100,1010,1001} K(6)=1100

8) u=7

6 7

M’= 7 6

7 8

B = {6} D = {1101,1110} K(7) = 1101

9) u = 8

M’= 7 8

8 9

B= {7,9}

C(7) = {1001,0101,1111}

C(9) = {1010}

D = {1001,0101,1111,1010} K(8) = 1010

Таблица 1

Прямая структурная таблица переходов и выходов автомата Мили при кодировке на RS-триггерах

Исходное состояние am

Код am

Состояние перехода as

Код as

Входной сигнал

Выходной сигнал

Функции возбуждения

a0

0000

a0

a1

0000

0001

~x1

x1

-

у0, y1

-

S4

a1

0001

a2

a2

a9

0011

0011

0010

~x2x1x3

~x2x1~x3

x2

y2, y3

-

-

S3

S3

S3, R4

a2

0011

a3

a3

0110

0110

x4

~x4

y1, y4, y5, y6

y1, y6

R4,S2

R4,S2

a3

0110

a4

a4

a9

0100

0100

0010

~x2x5

~x2~x5

x2

y2, y3

-

-

R3

R3

R2

a4

0100

a5

a5

1000

1000

x4

~x4

y4, y5, y6, y7

y6, y7

R2,S1

R2,S1

a5

1000

a0

a6

a6

0000

1100

1100

x6

~x6x7

~x6~x7

y10

y3

-

R1

S2

S2

a6

1100

a7

1101

1

y8

S4

a7

1101

a6

a6

a8

a8

1100

1100

1010

1010

~x8x7

~x8~x7

x8x9

x8~x9

y3

-

-

y9

R4

R4

R2,S3,R4

R2,S3,R4

a8

1010

a9

a9

0010

0010

x10

~x10

y5, y6,y11

-

R1

R1

a9

0010

a0

a9

0000

0010

x11

~x11

y12

-

R3

-