СОДЕРЖАНИЕ
Введение…………………………………………………………………………...4 1. Разработка
микропрограммы
выполнения
операции…………...……………5
Представление
чисел с фиксированной
запятой…………………………………………5
1.2 Обзор дополнительного
кода числа……………………………………………………….5 1.3 Рассмотрение
процесса выполнения
операции деления
без восстановления
(8421)…..6 1.4 Структурная
схема ОА………………………………………………………………..…..12 1.5 Разработка
граф-схемы
алгоритма………………………………………………………12 1.6 Описание
моделирующей
программы……………………………………...……………15 1.7 Оценка времени
выполнения
операции и
оценка аппаратных
затрат ОА…………….15 1.8 Контроль
выполнения
операции деления
по модулю…………………………………..16 2. Синтез
управляющего
автомата……………………………………………...17
Кодирование
микропрограммы
………………………………………………………….17
2.2 Переход от
начального
языка задания
автомата к
стандартному
заданию…………...18 2.3 Составление
структурной
таблицы
МПА……………………………………………….18 2.4 Построение
функциональной
схемы…………………………………………………….21 2.5 Расчет такта
работы управляющего
автомата
………………………………………….22 Заключение………………………………………………………………………23 Список
литературы……………………………………………………………..
24 Приложение
А (графический
материал)……………………………………….25 Приложение
В (моделирующая
программа)…………………………………..26
ЗАДАНИЕ
Деление
без восстановления
остатка со
сдвигом остатка
В форме
с фиксированной
запятой: формат
(1, 8)
Дополнительный
код
Двоично-десятичная
система счисления
(код 8421, 8421+6)
Контроль
по модулю
Синхронный
автомат Мили
Логический
элемент “ИЛИ-НЕ”
Триггер
JK
-типа
Задание
выдал І
___ І
_______ 2003г. Преподаватель:
Шерстобитова
Т.М.
Задание
принял І
___ І
_______ 2003г. Студент:
Родионов С.В.
.Специальность:
3704
Группа:
ЭВМ 00-2 .
ВВЕДЕНИЕ
Как известно
цифровые электронные
вычислительные
машины, т.е.
компьютеры,
предназначены
для обработки
цифровой информации
и являются
частным, но
наиболее
распространенным
видом цифровых
автоматов. Для
успешного
изучения общих
принципов
обработки
цифровой информации
рационально,
по возможности
максимально,
отвлечься от
реального
аппаратного
обеспечения
компьютера
и рассматривать
компьютер как
некоторый
абстрактный
цифровой автомат,
предназначенный
для обработки
информации,
представленной
в цифровой
форме. Знания
по прикладной
теории таких
автоматов
необходимы
для успешного
поиска новых
принципов
построения
компьютеров,
совершенствования
уже известных
алгоритмов
обработки
цифровой информации,
грамотной
эксплуатации
вычислительной
техники и разработки
различного
программного
обеспечения.
Для всего
этого необходимы
четкие знания
арифметических
и логических
основ цифровых
автоматов,
принципов
анализа и синтеза
этих автоматов.
В данном курсовом
проекте описан
процесс проектирования
управляющего
автомата (УА),
осуществляющий
управление
выполнения
операции деления
без восстановления
в коде 8421, 8421+6. Курсовая
работа состоит
из двух разделов:
разработка
алгоритма
выполнения
операции и
непосредственно
синтеза УА,
реализующего
этот алгоритм,
а также программы
на языке программирования
Ассемблера,
выполняющей
операцию деления
в коде 8421, 8421+6.
Основной
целью курсовой
работы является
закрепление
основных
теоретических
положений курса
ПТЦА, приобретение
практических
навыков по
обработке
алгоритмов
выполнения
арифметических
операции в ЦВМ,
построению
управляющих
цифровых автоматов,
средств их
контроля и
диагностики.
1. Разработка
микропрограммы
выполнения
операции
Представление
чисел с фиксированной
запятой
Необходимость
в указании
положения
запятой отпадает,
если место
запятой в разрядной
сетки машины
заранее фиксировано
раз и навсегда.
Такая форма
представления
чисел называется
представлением
с фиксированной
запятой (точкой).
Так как
числа бывают
положительные
и отрицательные,
то формат (разрядная
сетка) машинного
изображения
разбивается
на знаковую
часть и поле
числа. В поле
числа размещается
само изображение
числа, которое
мы условно
называем мантиссой
числа. Для
кодирования
знака числа
используется
самый старший
разряд разрядной
сетки, отведенной
для изображения
двоичного
числа, а остальные
разряды отводятся
под мантиссу
числа. Положение
запятой в разрядной
сетке строго
фиксируется,
обычно или
правее самого
младшего разряда
мантиссы, или
левее самого
старшего. В
первом случае
число представляется
как целое, во
втором - как
правильная
дробь.
В настоящее
время, в подавляющем
большинстве,
в компьютерах
в формате с
фиксированной
точкой представляются
целые числа.
В знаковую
часть записывается
информация
о знаке числа.
Принято, что
знак положительного
числа "+" изображается
символом 0, а
знак отрицательного
числа " – "
изображается
символом 1.
1.2 Обзор
дополнительного
кода числа
Известно,
что одним из
способов выполнения
операции вычитания
является замена
знака вычитаемого
на противоположный
и прибавление
его к уменьшаемому:
А - В = А + ( - В)
Этим операцию
арифметического
вычитания
заменяют операцией
алгебраического
сложения, которую
можно выполнить
при помощи
двоичных сумматоров.
Для машинного
представления
отрицательных
чисел используют
его дополнительный
код. Определение
этого кода
может быть дано
следующим
образом. Если
число А в обычном
двоичном коде
- прямом
двоичном коде,
изобразить
как
[A]пр
= 0.an an-1 an-2.....a1 a0,
тогда
число – А в этом
же коде представляется
как
[-A]пр
= 1.an an-1 an-2.....a1 a0,
тогда
число -A
в дополнительном
коде изображается
в виде
[-A]доп
= [-A]об + 1
где
[-A]об =
1.an an-1 an-2.....a1 a0,
где
ai
= 1, если ai
= 0,
ai
= 0, если ai
= 1,
ai
– цифра i
- того разряда
двоичного
числа. Следовательно,
при переходе
от прямого кода
к обратному
все цифры разрядов
мантиссы числа
инвертируются.
Таким образом,
для получения
дополнительного
кода отрицательных
чисел нужно
сначала инвертировать
цифровую часть
исходного
числа, в результате
чего получается
его обратный
код, а затем
добавить единицу
в младший разряд
цифровой части
числа.
Дополнительный
код некоторого
числа получается
его заменой
на новое число,
дополняющее
его до числа,
равного весу
разряда, следующего
за самым старшим
разрядом разрядной
сетки, используемой
для представления
мантиссы числа
в формате с
фиксированной
запятой. Поэтому
такой код числа
называется
дополнительным.
Подчеркну,
что дополнительный
код используются
только для
представления
отрицательных
двоичных чисел.
Положительные
числа в этом
коде не меняют
своего изображения,
и представляются
как в прямом
коде.
Таким образом,
цифровые разряды
отрицательного
числа в прямом
коде остаются
неизменными,
а в знаковой
части записывается
единица.
1.3 Рассмотрение
процесса выполнения
операции деления
без восстановления
в коде 8421,8421+6
a)
Двоично-десятичная
система счисления:
Двоично-десятичный
код (Д-код) десятичного
числа, это такое
его представление,
в котором каждая
десятичная
цифра изображается
четырьмя двоичными
разрядами
(тетрадой из
двоичных символов):
A = {a4,n a3,n a2,n
a1,n}n {a4,n-1 a3,n-1 a2,n-1 a1,n-1}n-1 ... {a4,0 a3,0 a2,0 a1,0}0 ,
где
-
двоичные разряды
тетрады, i
- номер разряда
внутри тетрады,
j -
номер самой
тетрады.
Для однозначности
перевода чисел
в Д-код и обратно
желательно,
чтобы разряды
тетрад имели
определенный
вес. Максимальное
допустимое
число в тетраде
- 9. Если возникает
число 10 и больше,
то единица
переходит в
следующую
старшую тетраду.
Существуют
различные
Д-коды, мы рассматрим
Д-код, вес разрядов,
тетрады которого
следующий: 8,
4, 2, 1.
Десятичные
цифры
|
8421 |
8421(+6) |
0 |
0000 |
0110 |
1 |
0001 |
0111 |
2 |
0010 |
1000 |
3 |
0011 |
1001 |
4 |
0100 |
1010 |
5 |
0101 |
1011 |
6 |
0110 |
1100 |
7 |
0111 |
1101 |
8 |
1000 |
1110 |
9 |
1001 |
1111 |
б) Свойства
кода 8421
1) Коды 8421 и 8421(+6)
взаимно дополняющие
друг друга, и
это свойство
используется
при выполнение
алгебраического
сложения.
-3 = 1.0011 пк
1.1100 ок
1
1.1101 дк = | 7 |
1.1101 №
7 (8421)
1.1101 = 7 (8421(+6))
Для рассматриваемого
кода 8421нельзя
получить обратный
или дополнительный
код простым
инвертированием,
т.к. инвертирование
набора тетрад
означает получение
дополнения
до
.
Следовательно,
необходимо
убрать разницу.
Один из используемых
при этом приемов
состоит в том,
что во все цифровые
тетрады числа
в коде 8421 добавляется
0110 и после этого
производится
инвертирование
набора.
Полученное
изображение
представляет
собой обратный
код числа. А
дополнительный
код получается,
как обычно,
добавлением
1 к младшему
разряду младшей
тетрады.
2) Аддитивность
системы:
Сi
= I1I2I3...In
Cj
= J1J2J3...Jn
Eij
= E1E2E3...En
Система
счисления 8421
аддитивна
3= 0.0011
4= 0.0100
7= 0.0111
в) Алгебраическое
сложение в коде
8421,8421+6
Первый случай
– если слагаемые
тетрады имеют
одинаковые
знаки
А>0,
В>0, е
– ?
A<0,
B<0,
е
– ?
-
Если при
этом был перенос
p =
1, то выполняется
К = 0
Если при
этом не было
переноса p
= 0, то выполняется
К = – 6
Второй случай
– если слагаемые
тетрады имеют
различные знаки
А>0,
В<0
A<0,
B>0
-
Если е
> 0 и при этом был
перенос p
= 1, то выполняется
К = 0,
Если е
> 0 и при этом не
было переноса
p =
0, то выполняется
К = – 6
Если е
< 0 сумма получается
в коде 8421(+6), если
при этом был
перенос p
= 1, то выполняется
К = +6,
Если е
< 0 сумма получается
в коде 8421(+6), если
при этом не
было переноса
p =
0, то выполняется
К = 0
г) Деление
в коде 8421, 8421+6
1) Тетрада
рассматривается
как единое
целое, и сдвиг
осуществляется
на одну тетраду
после формирования
очередной
тетрады частного.
2) Для формирования
тетрады частного
из делимого
вычитают делитель
до тех пор, пока
знак остатка
не изменится
на противоположный.
Если после
положительного
остатка получили
отрицательный,
то он не восстанавливается,
в следующую
тетраду частного
записывается
9 и после сдвига
начинается
прибавление
делителя, на
каждый отрицательный
остаток из
текущей тетрады
частного отнимается
1. При смене знака
на положительный
в следующую
тетраду частного
записывается
0 и на каждый
положительный
остаток в текущую
тетраду частного
прибавляется
1.
3) Появление
остатка с
противоположным
знаком является
признаком конца
формирования
очередной
тетрады частного,
осуществляется
сдвиг остатка
сразу на одну
тетраду. И переходят
к формированию
следующей
тетрады частного.
4) Каждое
алгебраическое
сложение требует
соответствующей
коррекции.
5) Пункты 2,3,4
повторяют
столько раз,
сколько нужно
получить тетрад
в частном.
Реализация
примера в десятичном
виде:
д.к.=9.4267
+ |
0.13570011
|
0.5733
|
9.4267
|
0 . 9 0 9 0 |
¬
+
|
9.56240011
5.62400110
|
-1
+1
-1 +1
-1
+1
-1 +1
|
0.5733 |
-1
+1
-1 +1
|
+ |
6.19730110 |
-1
-1 +1 |
0.5733 |
-1
-1 +1 |
+ |
6.77060110 |
-1
-1 +1 |
0.5733 |
-1
+1 |
+ |
7.34390110 |
0 . 2
3 6 7 |
0.5733 |
|
+ |
7.91720110 |
|
0.5733 |
|
+ |
8.49050110 |
|
0.5733 |
|
+ |
9.06380110 |
|
0.5733 |
|
+ |
9.63710110 |
|
0.5733 |
|
¬
+
|
0.21040110
2.10401100
|
|
9.4267 |
|
+ |
1.53071100 |
|
9.4267 |
|
+ |
0.95741100 |
|
9.4267 |
|
+
|
0.38411100 |
|
9.4267 |
|
¬
+
|
9.81081100
8.10811000
|
|
0.5733 |
|
+ |
8.68141000 |
|
0.5733 |
|
+ |
9.25471000 |
|
0.5733 |
|
+ |
9.82801000 |
|
0.5733 |
|
¬
+
|
0.40131000
4.01310000
|
|
9.4267 |
|
+ |
3.43980000 |
|
9.4267 |
|
+ |
2.86690000 |
|
9.4267 |
|
+ |
2.29320000 |
|
9.4267 |
|
+ |
1.71990000 |
|
9.4267 |
|
+ |
1.14660000 |
|
9.4267 |
|
+ |
0.57330000 |
|
9.4267 |
|
|
0.00000000 |
|
Реализация
примера в
двоично-десятичном
коде 8421, 8421+6
д.к.1111
1010
1000
1100 1101
+ |
0000 0001 0011 0101 0111 0000 0000 0001 0001 |
0110 1011 1101 1001 1001 |
1111 1010 1000 1100 1101 |
0000
1001 0000 1001 0000 |
+ |
1111 1011 1100 0010 0100 |
-0001+0001-0001+0001
|
1010 1010 1010 коррекция |
-0001+0001-0001+0001 |
¬
+
|
1001 0101 0110 0010 0100 0000 0000 0001 0001 |
-0001+0001-0001+0001 |
0101 0110 0010 0100 0000 0000 0001 0001 0000 |
-0001
-0001+0001
|
0110 1011 1101 1001 1001 |
-0001
-0001+0001 |
+ |
1100 0001 1111 1101 1001 |
-0001
-0001+0001 |
1010 1010 1010 1010 коррекция |
-0001
+0001 |
+ |
0110 0001 1001 0111 0011 |
0010
0011 0110 0111
|
0110 1011 1101 1001 1001 |
|
+ |
1100 1101 0111 0000 1100 |
|
1010 1010 1010 коррекция |
|
+ |
0110 0111 0111 0000 0110 |
|
0110 1011 1101 1001 1001 |
|
+ |
1101 0011 0100 1001 1111 |
|
1010 1010 1010 коррекция |
|
+ |
0111 0011 0100 0011 1001 |
|
0110 1011 1101 1001 1001 |
|
+ |
1101 1111 0001 1101 0010 |
|
1010 1010 1010 коррекция |
|
+ |
0111 1001 0001 0111 0010 |
|
0110 1011 1101 1001 1001 |
|
+ |
1110 0100 1111 0000 1011 |
|
1010 1010 1010 коррекция |
|
+ |
1000 0100 1001 0000 0101 |
|
0110 1011 1101 1001 1001 |
|
+ |
1111 0000 0110 1001 1110 |
|
1010 1010 1010 коррекция |
|
+ |
1001 0000 0110 0011 1000 |
|
0110 1011 1101 1001 1001 |
|
+ |
1111 1100 0011 1101 0001 |
|
1010 1010 1010 коррекция |
|
+ |
1001 0110 0011 0111 0001 |
|
0110 1011 1101 1001 1001 |
|
+ |
0000 0010 0001 0000 1010 |
|
1010 коррекция |
|
¬
+
|
0000 0010 0001 0000 0100 0000 0001 0001 0000
0010 0001 0000 0100 0000 0001 0001 0000 0000
|
|
1111 1010 1000 1100 1101 |
|
+ |
0001 1011 1001 0000 1101 |
|
1010 1010 1010 коррекция |
|
+ |
0001 0101 0011 0000 0111 |
|
1111 1010 1000 1100 1101 |
|
+ |
0000 1111 1011 1101 0100 |
|
1010 1010 1010 коррекция |
|
+ |
0000 1001 0101 0111 0100
|
|
1111 1010 1000 1100 1101 |
|
+ |
0000 0011 1110 0100 0001 |
|
1010 коррекция |
|
+ |
0000 0011 1000 0100 0001 |
|
1111 1010 1000 1100 1101 |
|
+ |
1111 1110 0001 0000 1110 |
|
1010 1010 1010 коррекция |
|
¬
+
|
1001 1000 0001 0000 1000 0001 0001 0000 0000
1000 0001 0000 1000 0001 0001 0000 0000 0000
|
|
0110 1011 1101 1001 1001 |
|
+ |
1110 1100 1110 0001 1010 |
|
1010 1010 1010 1010 коррекция |
|
+ |
1000 0110 1000 0001 0100 |
|
0110 1011 1101 1001 1001 |
|
+ |
1111 0010 0101 0101 1101 |
|
1010 1010 1010 коррекция |
|
+ |
1001 0010 0101 0100 0111 |
|
0110 1011 1101 1001 1001 |
|
+ |
1111 1110 0010 1110 0000 |
|
1010 1010 1010 коррекция |
|
+ |
1001 1000 0010 1000 0000 |
|
0110 1011 1101 1001 1001
|
|
+ |
0000 0100 0000 0001 1001 |
|
1010 коррекция |
|
¬
+
|
0000 0100 0000 0001 0011 0001 0000 0000 0000
0100 0000 0001 0011 0001 0000 0000 0000 0000
|
|
1111 1010 1000 1100 1101 |
|
+ |
0011 1010 1001 1111 1110 |
|
1010 1010 1010 1010 коррекция |
|
+ |
0011 0100 0011 1001 1000 |
|
1111 1010 1000 1100 1101 |
|
+ |
0010 1110 1100 0110 0101 |
|
1010 1010 коррекция |
|
+ |
0010 1000 0110 0110 0101 |
|
1111 1010 1000 1100 1101 |
|
+ |
0010 0010 1111 0011 0010 |
|
1010 коррекция |
|
+ |
0010 0010 1001 0011 0010 |
|
1111 1010 1000 1100 1101 |
|
+ |
0001 1101 0001 1111 1111 |
|
1010 1010 1010 коррекция |
|
+ |
0001 0111 0001 1001 1001 |
|
1111 1010 1000 1100 1101 |
|
+ |
0001 0001 1010 0110 0110
|
|
1010 коррекция |
|
+ |
0001 0001 0100 0110 0110 |
|
1111 1010 1000 1100 1101 |
|
+ |
0000 1011 1101 0011 0011 |
|
1010 1010 коррекция |
|
+ |
0000 0101 0111 0011 0011 |
|
1111 1010 1000 1100 1101
|
|
|
0000 0000 0000 0000 0000 |
|
Структурная
схема ОА
(Приложение
А, лист № 1 )
Для
реализации
предложенного
алгоритма
выполнения
операции деления
необходимы
следующие
операционные
элементы:
Рг.А(0-19) –
регистр делителя:
4р.- знак, 16р.- мантисса
делителя.
СМ (0-43) – сумматор:
4р.- знак, 32р.- мантисса
делимого,
4р.- переносы.
3)
Рг.В(0-19) – регистр
частного: 4р.-
знак, 16р.- мантисса
частного.
4)
регистр Рг.К(0-3)
– регистр коррекции.
5) счетчик
Сч.1 - этот счетчик
необходим для
формирования
тетрады частного.
6) счетчик
Сч.2 - этот счетчик
необходим для
выхода из цикла
деления, выход
будет осуществлен
после того, как
будут пройдены
все тетрады.
7) счетчик
Сч.3 - этот счетчик
необходим для
выхода из коррекции.
1.5Разработка
граф-схемы
алгоритма (ГСА)
(Приложение
А, лист № 2,3)
Для
реализации
любой арифметической
операции необходимо
знать алгоритм
ее выполнения,
ниже приводится
алгоритм операции
деления чисел
с фиксированной
запятой в коде
8421, 8421+6. Если блоки
выполняются
последовательно,
то ссылки на
следующий блок
не приводятся.
Таблица 1 -
Определение
блоков
Номер блока
|
Назначение
|
A00(Л2)
|
Начало. |
B00(Л2)
|
Начальная
установка:
СМ:=X,
Рг.А:=Y, Сч1:=0, Сч2:=0,
Сч3:=0, Рг.K:="1010".
|
C00(Л2)
|
Определяем
знак частного
путем сложения
знаковых разрядов
делимого и
делителя по
модулю два и
заносим его
в Рг.B[16-19].
|
D00(Л2)
|
Первое
пробное сложение
делимого и
делителя, делитель
в дополнительном
коде. |
F00(Л2)
|
Проверяем
СМ[40-43]=0000, если Да
то на G00(Л2),
иначе на B00(Л3).
|
G00(Л2)
|
Программа
обработки
прерываний
(АВОСТ).
Выдача
сообщения о
переполнение.
|
B00(Л3)
|
Проверяем
СМ[22,23]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
D00(Л3),
иначе на C01(Л3).
|
C01(Л3)
|
Проверяем
СМ[21,23]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
D00(Л3),
иначе на E00(Л3).
|
D00(Л3)
|
Коррекция:
СМ[20-23]:=СМ[20-23] + Рг.К[0-3].
|
E00(Л3)
|
Проверяем
СМ[27,28]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
G00(Л3),
иначе на F01(Л3).
|
F01(Л3)
|
Проверяем
СМ[26,28]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
G00(Л3),
иначе на B02(Л3).
|
G00(Л3)
|
Коррекция:
СМ[25-28]:=СМ[25-28] + Рг.К[0-3]. |
B02(Л3)
|
Проверяем
СМ[32,33]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
D02(Л3),
иначе на C03(Л3).
|
C03(Л3)
|
Проверяем
СМ[31,33]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
D02(Л3),
иначе на E02(Л3).
|
D02(Л3)
|
Коррекция:
СМ[30-33]:=СМ[30-33] + Рг.К[0-3]. |
E02(Л3)
|
Проверяем
СМ[37,38]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
G02(Л3),
иначе на F03(Л3).
|
F03(Л3)
|
Проверяем
СМ[36,38]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
G02(Л3),
иначе на B04(Л3).
|
G02(Л3)
|
Коррекция:
СМ[35-38]:=СМ[35-38] + Рг.К[0-3]. |
B04(Л3)
|
Проверяем
СМ[42,43]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
D04(Л3),
иначе на C05(Л3).
|
C05(Л3)
|
Проверяем
СМ[41,43]=11, т.е. на наличие
запрещенных
комбинаций,
если Да то на
D04(Л3),
иначе на E04(Л3).
|
D04(Л3)
|
Коррекция:
СМ[40-43]:=СМ[40-43] + Рг.К[0-3]. |
E04(Л3)
|
Проверяем
Сч.3=0, если Да,
то переходим
на B04(Л2),
иначе на F05(Л3).
|
F05(Л3)
|
Проверяем
Сч.3=1, если Да,
то переходим
на B02(Л2),
иначе на B06(Л2).
|
B04(Л2)
|
Сдвигаем
регистр СМ
влево на 5 разрядов.
В
Сч.1 заносим
9.
|
C04(Л2)
|
Сч.1:=9. |
D04(Л2)
|
Сложение
делимого и
делителя, делитель
в прямом коде. |
F04(Л2)
|
Сч.3:=1. |
|
Переход
на коррекцию. |
B02(Л2)
|
Проверяем
СМ[40-43]=0000, если Да
то на C02(Л2),
иначе на C03(Л2).
|
C03(Л2)
|
Декремент
Сч1 (отнимаем
от текущей
тетрады частного
1). |
C02(Л2)
|
Инкремент
Сч.2 (переход
к следущей
тетраде частного).
Присваиваем
Рг.В[0-3] значение
Сч1.
Сдвигаем
регистр Рг.В
влево на 4 разряда.
|
D02(Л2)
|
Сдвигаем
регистр СМ
влево на 5 разрядов.
В
Сч.1 заносим
1.
|
E02(Л2)
|
Сложение
делимого и
делителя, делитель
в дополнительном
коде. |
G02(Л2)
|
Сч.3:=2. |
|
Переход
на коррекцию. |
B06(Л2)
|
Проверяем
СМ[40-43]=0000, если Да
то на C06(Л2),
иначе на C07(Л2).
|
C06(Л2)
|
Инкремент
Сч1 (прибавляем
к текущей тетраде
частного 1). |
C07(Л2)
|
Инкремент
Сч.2 (переход
к следущей
тетраде частного).
Присваиваем
Рг.В[0-3] значение
Сч1.
Сдвигаем
регистр Рг.В
влево на 4 разряда.
|
D07(Л2)
|
Проверяем
Сч.2=0, если Да то
на E07(Л2),
иначе на C04(Л2).
|
E07(Л2)
|
Выводим
частное, т.е.
Z:=Рг.В. |
F07(Л2)
|
Конец. |
1.6 Описание
моделирующей
программы
(Приложение
В)
Программа
операции деления
без восстановления
остатка со
сдвигом остатка
с фиксированной
точкой в коде
8421, 8421+6 выполнена
на языке программирования
ассемблера.
В моделирующей
программе
регистрами
Рг.А, Рг.В, Рг.К,
а так же счетчиками
СЧ.1 и СЧ.2 СЧ.3 являются
регистры самой
ЭВМ и оперативная
память.
Описание
программы
построчно:
1
– 22 – Связывание
данных с сегментом
данных DS,
очистка экрана,
приглашение
к вводу двух
чисел, запись
введенных чисел
по адресам в
сегменте данных.
23 –
28 – Вычисление
знака частного.
29
– 72 – Вычисление
количества
тетрад, подготовка
под знак целой
тетрады, вызов
процедур
преобразования
из ASCII
в байты делимого
и делителя,
пробное сложение,
проверка на
переполнение.
73 –
79 – Вывод сообщения
о переполнении
и переход на
выход из программы.
80
– 103 – Вызов процедуры
преобразования
конечного
результата
из байта в ASCII,
вывод знакового
разряда и вывод
результата,
стандартный
выход из программы.
104 – 131 – Процедура
перевода делимого
из ASCII в BIN.
132 – 159 – Процедура
перевода делимого
из ASCII в BIN.
160 –
176 – Процедура
перевода делителя
в дополнительный
код.
177 –
243 – Процедура
сложения тетрад
делимого и
делителя с
учетом возникающих
межтетрадных
переносов,
процедура
проверки на
коррекцию.
244
– 267 – Процедура
перевода конечного
результата
из байта в ASCII.
268 –
277 – Описание
сегмента данных,
закрытие кодового
сегмента.
Оценка
времени выполнения
операции и
оценка аппаратных
затрат ОА
Время
выполнения
операции определяется
формулой:
Топ. дел.
= к*Т’
Т’
= Lср.*Топ.
сл.+ 4tсдв.
Топ.
сл.= tсл.+tсл.*pкор.
Lср.=
5,5 – среднее
количество
шагов, т.к. самое
минимальное
значение = l,
а максимальное
значение = 10.
pкор=
вероятность
коррекции, для
8421 равна 0,5
tсл.=4*tсдв.
Т=к(L*Tсл.
+ 4tсдв.)=к(5,5Тсл.
+ 4tсдв.)
= 8(5,5*1,5*4*tсдв.
+ 4*tсдв.)=
=8(37tсдв.)=296
tсдв.
к=8, т.к. нужно
вычислить 8
тетрад.
Оценка
аппаратных
затрат осуществляется
путем подсчета
разрядов в
элементах,
участвующих
в операции
деления:
Q=Q(Рг.А(0-19))+Q(Рг.В(0-19))+Q(Рг.К(0-3))+Q(СМ(0-43))+Q(Сч.1(0-3))+Q(Сч.2(0-1))+Q(Сч.3(0-1))=20+20+4+44+4+2+2=96
1.8
Контроль выполнения
операции деления
по модулю
Контроль
выполнения
арифметических
и логических
операций можно
осуществлять
с помощью контрольных
кодов, представляющих
собой остатки
от деления
чисел на некоторый
модуль. Такой
контроль называется
контролем по
модулю. Для
двоичных чисел
этот модуль
обычно равен
или больше 3.
Различают
числовой и
цифровой контроль
по модулю.
При числовом
методе код
заданного числа
определяется
как наименьший
положительный
остаток от
деления числа
на выбранный
модуль.
При цифровом
методе контроля
контрольный
код числа образуется
делением суммы
цифр числа на
выбранный
модуль. В данном
варианте возможны
два пути получения
контрольного
кода:
непосредственное
деление суммы
цифр на модуль;
2) просто
суммирование
цифр по выбранному
модулю.
Самым распространенным
методом контроля
и диагностики
является контроль
по модулю, принцип
которого основан
на том, что остаток
от деления на
заданное число
суммы чисел
должен равняться
сумме остатков
от деления на
это же число
исходных чисел.
При
этом к модулю
представляют
следующие общие
требования:
Модуль
должен обеспечивать
обнаружение,
как можно большего
числа ошибок,
при обязательном
обнаружении
одиночных
ошибок .
Модуль
должен быть
таким, чтобы
остаток от
деления на
него числа
определялся
простым и быстрым
методом без
непосредственного
деления.
Модуль
должен быть
небольшим,
чтобы остатки
получались
мало разрядными,
в противном
случае потребуются
большие дополнительные
затраты оборудования.
2. СИНТЕЗ
УПРАВЛЯЮЩЕГО
АВТОМАТА
Кодирование
микропрограммы
В этом пункте
осуществляется
переход непосредственно
к синтезу
микропрограммного
автомата по
граф схеме
алгоритма
(ГСА).
Начать
следует с синтеза
абстрактного
автомата, который
осуществляется
по кодированной
ГСА. Кодированная
ГСА получается
путём пометки
каждой вершины
в содержательной
ГСА.
Чтобы получить
отмеченную
ГСА для абстрактного
автомата Мили,
необходимо
воспользоваться
следующими
правилами:
1) Начальная
и конечная
вершины обозначаются
символами а0;
2) Вход каждой
вершины следуя
за оператором
отмечается
а1, а2, и т.д.;
3) Каждая операторная
вершина отмечается
не более одного
раза.
В
результате
получаем алфавит
состояний А
= { а1,
а2,
... , аm}.
Используя
эти правила,
создаем таблицу
для кодированной
ГСА(см. Таблицу
2).
Таблица 2 - Кодирование
блоков
ОБ и ЛУ
|
Условные
обозначения
|
СМ:=X, Рг.А:=Y,
Сч1:=0, Сч2:=0, Сч3:=0,
Рг.K:="1010"
|
Y1 |
СМ[40-43]:=СМ[40-43]
+ Рг.А[16-19]
Рг.B[16-19]:=СМ[40-43]
|
Y2
|
СМ[20-23]:=СМ[20-23]
+ Рг.А[0-3] + ''1" [20]
СМ[25-28]:=СМ[25-28
]+ Рг.А[4-7] + ''1" [25]
СМ[30-33]:=СМ[30-33]
+ Рг.А[8-11] + ''1" [30]
СМ[35-38]:=СМ[35-38]
+ Рг.А[12-15] + ''1" [35]
СМ[40-43]:=СМ[40-43]
+ Рг.А[16-19] + ''1" [40]
|
Y3
|
Программа
Обработки
Прерываний |
Y4 |
СМ[20-23]:=СМ[20-23]
+ Рг.К[0-3] |
Y5
|
СМ[25-28]:=СМ[25-28]
+ Рг.К[0-3] |
Y6
|
СМ[30-33]:=СМ[30-33]
+ Рг.К[0-3] |
Y7
|
СМ[35-38]:=СМ[35-38]
+ Рг.К[0-3] |
Y8
|
СМ[40-43]:=СМ[40-43]
+ Рг.К[0-3] |
Y9
|
СМ:=L(5)СМ |
Y10 |
Сч.1:="9" |
Y11 |
СМ[20-23]:=СМ[20-23]
+ Рг.А[0-3]
СМ[25-28]:=СМ[25-28
]+ Рг.А[4-7]
СМ[30-33]:=СМ[30-33]
+ Рг.А[8-11]
СМ[35-38]:=СМ[35-38]
+ Рг.А[12-15]
СМ[40-43]:=СМ[40-43]
+ Рг.А[16-19]
|
Y12
|
Сч.3:= 1
|
Y13 |
Сч.2:=Сч.2+1
Рг.В[0-3]:=Сч1
Рг.В:=L(4)Рг.В
|
Y14
|
Сч.1:=Сч.1-1 |
Y15
|
СМ:=L(5)СМ
Сч1:=0
|
Y16
|
Сч.3:=2
|
Y17
|
Сч.1:=Сч.1+1 |
Y18
|
Z:=Рг.В
|
Y19
|
СМ[40-43]=0000 |
X1
|
СМ[22,23]=11 |
X2
|
СМ[21,23]=11 |
X3
|
СМ[27,28]=11 |
X4
|
СМ[26,28]=11 |
X5
|
СМ[32,33]=11 |
X6
|
СМ[31,23]=11 |
X7
|
СМ[37,38]=11 |
X8
|
СМ[36,38]=11 |
X9
|
СМ[42,43]=11 |
X10
|
СМ[41,43]=11 |
X11
|
СЧ.3
=0 |
X12
|
СЧ.3
=1 |
X13
|
СЧ.2
=0 |
X14
|
2.2
Переход от
начального
языка задания
автомата
к стандартному
заданию
В отмеченной
ГСА путем перехода
между состояниями
аm и
аs, называется
последовательность
следующего
вида:
- обозначение
вершины, из
которой осуществляется
переход;
- вершина,
в которую
осуществляется
переход;
- обозначение
условия вершины,
через которые
проходит путь
от
и
,
причем
(в
зависимости
от логического
условия Xmk).
Иногда
возможно и
такое что, когда
K = 0 (нет ни одной
условной вершины),
в этом случае
путь имеет вид
.
Любой граф
микропрограммного
автомата Мили
обычно задается
в виде прямой
или обратной
таблицы переходов.
Выписывая
пути перехода
для нашей ГСА,
составляем
таблицу переходов
для микропрограммного
автомата Мили.
2.3 Составление
структурной
таблицы МПА
Нам
задан автомат
Мили. Для этого
автомата необходимо
построить
прямую таблицу
переходов, в
которую вписываются
пути перехода
между соседними
отметками. В
прямую таблицу
переходов, в
отличае от
обратной таблицы
добавляется
три столбца.
В итоге мы имеем:
аM
– исходное
состояние
K(аM)
– двоичный код
исходного
состояния
аS
– входной сигнал,
под воздействием
которого происходит
переход из
состояния AM
в состояние
AS
K(аS)
– двоичный код
состояния
перехода
X(аM,
аS)
– входной сигнал,
соответствующий
данному переходу
Y(аM,
аS)
– выходной
сигнал, соответствующий
данному переходу
F(аM,
аS)
– обязательные
сигналы возбуждения
памяти, необходимые
для переключения
МПА из состояния
AM
в состояние
AS
Коды состояний
K
(am)
и K
(as)
будем кодировать
двоичной системой
счисления.
Всего у нас 20
состояний, а
это значит, что
для кодирования
нам необходимо
и достаточно
5-х разрядного
числа, т.е. используем
5 JK-триггеров.
Таблица
3 - Структурная
таблица МПА
аM
|
K(аM)
|
аS
|
K(аS)
|
X(аM,
аS)
|
Y(аM,
аS)
|
F(аM,
аS)
|
a0 |
00000 |
a1 |
00001 |
1 |
— |
J5 |
a1 |
00001 |
a2 |
00011 |
1 |
y1 |
J4 |
a2 |
00011 |
a3 |
00010 |
1 |
y2 |
K5 |
a3 |
00010 |
a4 |
00100 |
1 |
y3 |
J3,K4 |
a4 |
00100 |
a0 |
00000 |
x1 |
y3 |
K3 |
a4 |
00100 |
a5 |
00110 |
1
|
— |
J4 |
a5 |
00110 |
a6 |
00111 |
x2 |
y5 |
J5 |
a5 |
00110 |
a6 |
00111 |
2,
x3
|
y5 |
J5 |
a5 |
00110 |
a6 |
00111 |
2,
3
|
— |
J5 |
a6 |
00111 |
a7 |
00101 |
x4 |
y6 |
K4 |
a6 |
00111 |
a7 |
00101 |
4,x5
|
y6 |
K4 |
a6 |
00111 |
a7 |
00101 |
4,5
|
— |
K4 |
a7 |
00101 |
a8 |
01101 |
x6 |
y7 |
J2 |
a7 |
00101 |
a8 |
01101 |
6,
x7
|
y7 |
J2 |
a7 |
00101 |
a8 |
01101 |
6,
7
|
— |
J2 |
a8 |
01101 |
a9 |
01100 |
x8 |
y8 |
K5 |
a8 |
01101 |
a9 |
01100 |
8,
x9
|
y8 |
K5 |
a8 |
01101 |
a9 |
01100 |
8,9
|
— |
K5 |
a9 |
01100 |
a10 |
01000 |
x10 |
y9 |
K3 |
a9 |
01100 |
a10 |
01000 |
10,
x11
|
y9 |
K3 |
a9 |
01100 |
a10 |
01000 |
10,11
|
— |
K3 |
a10 |
01000 |
a11 |
01010 |
x12 |
y10 |
J2 |
a10 |
01000 |
a14 |
11010 |
12,x13,x1
|
y14 |
J1,J4 |
a10 |
01000 |
a12 |
01011 |
12,x13,1
|
y15 |
J2,J1 |
a10 |
01000 |
a15 |
11100 |
12,
13,x1
|
y18 |
J1,J3 |
a10 |
01000 |
a17 |
11000 |
12,13,1
|
y14 |
J1 |
a11 |
01010 |
a12 |
01011 |
1 |
y17 |
J5 |
a12 |
01011 |
a13 |
01111 |
1 |
y12 |
J3 |
a13 |
01111 |
a5 |
00110 |
1 |
y16 |
K2,K5 |
a14 |
11010 |
a15 |
11100 |
1 |
y16 |
J3,K4 |
a15 |
11100 |
a16 |
11110 |
1 |
y3 |
J4 |
a16 |
11110 |
a5 |
00110 |
1 |
y17 |
K1,K2 |
a17 |
11000 |
a0 |
00000 |
x14 |
y19 |
K1,K2 |
a17 |
11000 |
a11 |
01010 |
14
|
— |
K1, J4 |
Составление
выражений
функций возбуждения
автомата:
J5
=
J4
=
J3
=
J2
=
J1
=
K5
=
K4
=
K3
=
K2
=
K1
=
Переведем
функции возбуждения
в свой базис
“ИЛИ-НЕ”:
J5
=
J4
=
J3
=
J2
=
J1
=
K5
=
K4
=
K3
=
K2
=
K1
=
2.4 Построение
функциональной
схемы
(Приложение
А, лист № 5 )
Функциональную
схему управляющего
автомата согласно
заданию надо
построить в
базисе "ИЛИ
- НЕ", т.е. используя
логические
элементы "ИЛИ
- НЕ".
Используя
выражения
функций возбуждения,
спроектируем
функциональную
схему Управляющего
автомата Мили
с элементами
памяти на JK
– триггерах.
Для получения
сигналов J1-J5
и K1-K5,
мы используем
прямые и инверсные
состояния x,
которые подаются
на шину X,
и, используя
логические
элементы "ИЛИ
- НЕ" на шину
соответственно.
Согласно
расчетам и
вычислениям,
проведенным
выше, наш автомат
имеет 20 состояний,
это значит, что
для получения
требуемых
сигналов в
нашей схеме
понадобится
дешифратор
состояний (a0
– a19).
Затем для удобства
и читаемости
схемы, полученные
сигналы подаются
на шину А. С шины
А, используя
логические
элементы "ИЛИ
- НЕ", получаем
инверсные
состояния
(а0-а19),
которые выводим
на шину
.
Приступаем
непосредственно
к формированию
сигналов возбуждения
для этого полученные
нами сигналы
с шин А и
,
Х и
подаются
на элементы
"ИЛИ - НЕ", после
чего они проходят
стадию обработки,
на которой
получаются
нужные нам
сигналы J1-J5
и K1-K5.
Далее эти сигналы
поступают на
входы пяти JK
триггеров, в
результате
чего мы имеем
сформированные
сигналы Q1-Q5
и их инверсные
состояния,
которые в свою
очередь образуют
шину Q
и подаются на
начало функциональной
схемы, где будут
заново участвовать
в формировании
сигналов.
Для получения
выходных сигналов,
мы используем
полученную
нами шину А, в
результате
чего получаем
выходную шину
У.
JK-триггер
и его характеристики:
2.5 Расчет такта
работы управляющего
автомата
Такт
работы УА зависит
от закона
функционирования
и структуры
автомата. В
автомате Мили
переключение
состояния УА
происходит
в конце такта
после выдачи
выходных сигналов
в соответствии
со значениями
поступивших
выходных сигналов
из ОА. В связи
с этим такт
работы управляющего
автомата,
функционирующего
как автомат
Мили, определяется
по формуле:
Т=Ту+Тп+Tв
где
Тв=40
нс - максимальное
время формирования
выходных сигналов,
Тп=80
нс - время переключения
памяти состояний.
Ту=20
нс - время на
дешифрирование
состояний,
Таким
образом:
Т=40+80+20=140
нс
Частота
ЗАКЛЮЧЕНИЕ
В основных
направлениях
экономического
и социального
развития в
последнее время
поставлены
задачи: развивать
теоретическую
и прикладную
математику,
информатику
и кибернетику,
широко внедрять
машины и оборудование
со встроенными
средствами
микропроцессорной
техники, ускоренно
развить выпуск
средств автоматизации
управленческого
и инженерного
труда, малых
электронных
вычислительных
машин.
Сегодня трудно
себе представить
деятельность
человека без
электронных
вычислительных
машин (ЭВМ).
Появившись
около 50 лет назад,
ЭВМ открыли
новую страницу
в истории
человеческих
знаний и возможностей,
высвободили
тысячи вычислителей,
значительно
облегчили труд
ученых, дали
возможность
изучать сложнейшие
процессы. Сейчас
нет ни одной
отрасли народного
хозяйства, где
нельзя было
бы применить
ЭВМ более того,
целые разделы
науки и техники
не могут существовать
без них. Прикладная
теория цифровых
автоматов это
тот раздел
науки, без которого
не может существовать
любая ЭВМ, и
чем она сложнее,
тем сильнее
она основана
на последних
достижениях
в области ПТЦА.
В
данном курсовом
проекте был
синтезирован
управляющий
автомат, осуществляющий
управление
выполнением
операции деления
без восстановления
остатка со
сдвигом остатка.
Построен алгоритм
обработки
чисел. Расписаны
управляющие
сигналы и другие
функции. По
имеющемся
данным построена
функциональная
схема устройства.
Сравнивая
все изученные
мною методы
деления, я сделал
для себя вывод,
что на сегодняшний
день наиболее
распространенными
методами являются:
деление с
восстановлением
со сдвигом
остатка, деление
без восстановления
со сдвигом
делителя. Но
в то же время
самый оптимальный
вариант - деление
без восстановления
со сдвигом
остатка. А самое
быстродействующее
деление без
восстановления
со сдвигом
делителя, так
как сдвиг делителя
можно совместить
во времени со
сложением.
Список литературы
1.
Савельев А.Я.
Арифметические
и логические
основы цифровых
автоматов.
- М.:
Высшая школа
, 1980.
Савельев
А.Я. Прикладная
теория цифровых
автоматов. -
М.: Высшая школа,
1987.
Айтхожаева
Е.Ш. Проектирование
Управляющего
автомата. - А.:
КазПТИ,
1987.
4. Айтхожаева
Е.Ж. Прикладная
теория цифровых
автоматов.
Алматы: 1993.
ПРИЛОЖЕНИЕ
A
ПРИЛОЖЕНИЕ
В
|