Вы находитесь на странице: 1из 147

1

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ


РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное
учреждение высшего образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Инженерно-технологическая академия

В.Ф. Гузик, В.Н. Пуховский, Е.Р. Мунтян, О.А. Мунтян

ТЕОРИЯ ЦИФРОВЫХ АВТОМАТОВ


Учебное пособие

Таганрог
Издательство Южного федерального университета
2015
[
2
В
УДК 681.3 (075) в
е
д
Печатается по решению редакционно-издательского совета
Южного федерального и университета
(протокол №3 от 23тноября 2015 г.)
е
Рецензенты:
доктор технических наук, профессор ц кафедры информатики
Таганрогского института имени А.П. Чехова и РГЭУ (РИНХ) Витиска Н.И.;
кандидат технических наук, доцент т кафедры МОП ЭВМ ИТА ЮФУ
ХашковскийВ.В. а
т
Гузик В.Ф., Пуховский В.Н., Мунтян у Е.Р., Мунтян О.А.
Теория цифровых автоматов: учебное и пособие. – Таганрог: Изд-во ЮФУ,
2015. – 147 с. з
ISBN 978-5-9275-1856-2 д
о
Работа «Теория цифровых автоматов» к содержит учебно-методический
комплекс, подробный лекционный материал, у практические задания и
методические рекомендации для выполнения м индивидуального творческого
проекта. Выполнение всех видов заданий наглядно проиллюстрировано
е
конкретными примерами и образцами работ. Пособие содержит два учебных
н
раздела и охватывает все виды занятий, предусмотренные учебным планом
т
подготовки инженеров по специальности 09.05.01 «Применение и эксплуатация
а
автоматизированных систем специального назначения».
В качестве теоретического материала и рассмотрены темы: арифметические
и логические основы цифровых автоматов л (ЦА), абстрактный и структурный
и
синтез ЦА, структура цифровых вычислительных устройств, понятия
операционных и управляющих автоматов.к
р
Табл. 4. Ил. 35. Библиогр.: 14 назв. а
т
к
ISBN 978-5-9275-1856-2  ЮФУ,
о 2015
 В.Ф.
е Гузик, В.Н. Пуховский, 2015
 Е.Р.
о Мунтян, О.А. Мунтян, 2015
п
и
с
3

СОДЕРЖАНИЕ
ВВЕДЕНИЕ ............................................................................................... 6
1. СОДЕРЖАНИЕ И СТРУКТУРА МОДУЛЯ ............................... 9
1.1. Цели и задачи освоения модуля «Теория цифровых
автоматов» ................................................................................................... 9
1.2. Место модуля в структуре ООП ВПО ................................... 9
1.3. Требования к результатам освоения содержания модуля.. 10
1.4. Содержание разделов модуля «Теория цифровых
автоматов» ................................................................................................. 12
1.5. Структура модуля «Теория цифровых автоматов» ............ 13
1.6. Организация занятий для студентов .................................... 13
2. КОНСПЕКТ ЛЕКЦИЙ. РАЗДЕЛ 1. СИНТЕЗ ЦИФРОВЫХ
АВТОМАТОВ. УПРАВЛЯЮЩИЕ АВТОМАТЫ .................................... 16
2.1. План лекций раздела 1 ........................................................... 16
2.2. Понятие цифрового автомата ................................................ 18
2.3. Абстрактный синтез автоматов ............................................ 20
2.4. Структура цифрового автомата ............................................ 27
2.5. Структурный синтез автоматов МУРА ................................ 30
2.6. Синтез цифровых автоматов МИЛИ .................................... 37
2.7. Структура цифрового вычислителя ..................................... 43
2.8. Понятия микрооперации, микрокоманды, микропрограммы
.................................................................................................. 45
2.9. Управляющие автоматы ........................................................ 46
3. КОНСПЕКТ ЛЕКЦИЙ. РАЗДЕЛ 2. АРИФМЕТИЧЕСКИЕ
ОСНОВЫ ЦИФРОВЫХ АВТОМАТОВ .................................................... 58
3.1. План лекций раздела 2 ........................................................... 58
3.2. Представление двоичных чисел в форме с фиксированной
запятой .................................................................................................. 60
3.3. Кодирование отрицательных чисел в ЭВМ ......................... 61
4

3.4. Сложение и вычитание двоичных чисел, представленных в


форме с фиксированной запятой ............................................................. 63
3.5. Алгоритм умножения двоичных чисел в прямых кодах в
форме с фиксированной запятой ............................................................. 69
3.6. Алгоритм умножения двоичных чисел в дополнительных
кодах в форме с фиксированной запятой ............................................... 74
3.7. Алгоритм умножения двоичных чисел с фиксированной
запятой в обратных кодах ........................................................................ 76
3.8. Алгоритмы деления двоичных чисел с фиксированной
запятой .................................................................................................. 81
3.9. Выполнение арифметических операций над числами с
плавающей запятой ................................................................................. 103
4. ПРАКТИКУМ МОДУЛЯ «ТЕОРИЯ ЦИФРОВЫХ
АВТОМАТОВ» ........................................................................................... 115
4.1. План практических занятий ................................................ 115
4.2. Примеры практических заданий ......................................... 117
5. ИНДИВИДУАЛЬНЫЙ ТВОРЧЕСКИЙ ПРОЕКТ ................. 121
5.1. Цели и задачи творческого проекта ................................... 121
5.2. Техническое задание на творческий проект ...................... 122
5.3. Образец выполнения проектного задания ......................... 124
6. ТВОРЧЕСКОЕ ЗАДАНИЕ........................................................ 135
6.1. Цель и задачи выполнения творческого задания .............. 135
6.2. Техническое задание на творческое задание..................... 135
6.3. Пример выполнения творческого задания ........................ 137
7. ТЕКУЩИЙ И РУБЕЖНЫЙ КОНТРОЛЬ ЗНАНИЙ .............. 139
7.1. Организация текущего контроля знаний ........................... 139
7.2. Формы рубежного контроля ............................................... 139
7.3. Перечень контрольных вопросов по модулю «Теория
цифровых автоматов» ............................................................................. 140
5

ЗАКЛЮЧЕНИЕ ..................................................................................... 144


ПРИНЯТЫЕ СОКРАЩЕНИЯ И ОБОЗНАЧЕНИЯ ........................... 145
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ................................................. 146
6

ВВЕДЕНИЕ
Одной из составляющих современных технологий являются
высокопроизводительные технические информационно-вычислительные
средства. Теоретической основой построения таких информационно-
вычислительных средств является теория цифровых автоматов.
Модуль «Теория цифровых автоматов» (ТЦА) структурно входит в
состав дисциплины «Схемотехника ЭВМ и систем». В соответствии с
рабочим учебным планом подготовки инженеров по специальности
09.05.01 «Применение и эксплуатация автоматизированных систем
специального назначения» дисциплина «Схемотехника ЭВМ и систем»
читается студентам очной формы обучения в шестом семестре.
Модуль «Теория цифровых автоматов» является одним из базовых
разделов схемотехнического цикла подготовки студентов по
специальности 09.05.01. Особое внимание уделяется созданию
эффективного математического обеспечения проектирования автоматов
на всех этапах их разработки: алгоритмическом, абстрактном, этапе
кодирования, структурном и этапе моделирования.
По утверждению академика В. М. Глушкова, одного из основателей
теории автоматов в нашей стране, любой алгоритм, понимаемый в
интуитивном смысле, может быть реализован в виде композиции пары
автоматов: операционного и управляющего. Поэтому проектирование
сложной информационно-вычислительной системы целесообразно
рассматривать как композицию пар автоматов, каждая из которых состоит
из операционного автомата (ОА) и управляющего автомата (УА).
При проектировании ЭВМ можно выделить три основных этапа:
системный, логический и технический.
На этапе системного проектирования строится общая структурная
схема ЭВМ (ОА и УА), определяются необходимый объём памяти
автоматов, взаимодействие автоматов и т. д. Исходная информация на
системном этапе: совокупность классов задач, для решения которых
предназначена проектируемая машина, и её параметры (быстродействие,
стоимость, габаритные размеры и т. д.) [1]. В настоящее время задачи
системного этапа решаются с помощью программного моделирования,
7

позволяющего определить основные характеристики проектируемой


машины, «узкие места» её структуры.
На этапе логического проектирования ЭВМ синтезируются
непосредственно логические (функциональные) схемы всех блоков
машины. Исходной информацией для этого этапа являются алгоритмы
функционирования блоков.
Логическое проектирование заключается в синтезе операционных и
управляющих автоматов. Операционные автоматы в настоящее время
синтезируются с помощью программного моделирования. Для
формализации синтеза управляющих автоматов возможно применение
теории конечных автоматов. Согласно этой теории при проектировании
управляющих автоматов различают следующие этапы: алгоритмический,
абстрактный, включающий минимизацию памяти автомата и его
декомпозицию; кодирование символов; построение выходных функций и
функций возбуждения элементов памяти; структурное проектирование;
моделирование.
На этапе технического проектирования на основе логических схем
строятся принципиальные схемы, и готовится техническая документация
для производства ЭВМ.
Структурно учебное пособие содержит следующие разделы:
структура и содержание модуля; конспект лекций; практикум;
методические рекомендации для выполнения индивидуального
творческого проекта; оценочные средства для контроля успеваемости.
Пособие охватывает все виды занятий в рамках модуля ТЦА дисциплины
«Схемотехника ЭВМ и систем», предусмотренные учебным планом
подготовки инженеров по специальности 09.05.01 «Применение и
эксплуатация автоматизированных систем специального назначения».
Пособие содержит два учебных раздела. Первый раздел посвящен
абстрактному и структурному синтезу цифровых автоматов (ЦА) и
способам построения управляющих автоматов. Второй раздел –
«Арифметические основы цифровых автоматов».
Для успешного усвоения теоретических положений в данном
учебном пособии представлен конспект лекций по модулю ТЦА. В
качестве теоретического материала рассмотрены темы: арифметические и
8

логические основы цифровых автоматов (ЦА), абстрактный и


структурный синтез ЦА, структура цифровых вычислительных устройств,
понятия операционных и управляющих автоматов.
С целью приобретения навыков проектирования цифровых
устройств в рамках данного модуля предполагается выполнение
практических заданий, описанных в учебном пособии в разделе
«Практикум».
Для закрепления практических навыков материала раздела «Синтез
цифровых автоматов с памятью» предусмотрены индивидуальные задания
в рамках самостоятельной работы студентов. В пособии отдельно
рассмотрены вопросы посвященные работе над индивидуальными
творческими проектами, даны методические рекомендации по их
выполнению, приведены образцы выполнения проектов и результаты
моделирования в САПР Quartus.
9

1. СОДЕРЖАНИЕ И СТРУКТУРА МОДУЛЯ


1.1. Цели и задачи освоения модуля «Теория цифровых автоматов»
Целью модуля «Теория цифровых автоматов» (ТЦА) является
изучение студентом способов представления информации в цифровых
автоматах, методы выполнения арифметических и логических операций в
них, методы логического описания и основанные на них методы
логического проектирования цифровых автоматов. Уделяется внимание
абстрактной теории автоматов, понятиям: дискретное время и такты,
конечные автоматы Мили и Мура, формальные языки и графы, иерархия
языков описания вычислительных устройств, язык микроопераций.
К задачам модуля ТЦА можно отнести:
- ознакомление студентов с основными направлениями и
тенденциями развития цифровых автоматов;
- вооружить студентов знаниями методов синтеза и оптимизации
комбинационных схем и цифровых автоматов с памятью;
- научить студентов абстрактному синтезу цифрового автомата по
словесному алгоритму его работы;
- привить студентам умения и практические навыки выполнения в
цифровых автоматах арифметических операций над числами с
фиксированной и плавающей запятой и логических операций;
- научить студентов структурному синтезу комбинационных
устройств и реализации алгоритмов структурного синтеза автоматов с
памятью;
- привить студентам умения и практические навыки контроля
работы цифрового автомата.
1.2. Место модуля в структуре ООП ВПО
Учебный модуль «Теория цифровых автоматов» относится к
дисциплине «Схемотехника ЭВМ и систем».
Для освоения данного модуля учебной дисциплины необходимы
знания, умения и навыки, полученные студентами при изучении
дисциплин:
10

- «Информатика» (представление числовой информации в


цифровых автоматах, представление о выполнении арифметических
операций в ЭВМ);
- «Дискретная математика» (способы задания и минимизации
комбинационных схем);
- «Электротехника, электроника и схемотехника» (понятия узлов
ЭВМ: триггеры, регистры, дешифраторы, мультиплексоры).
Перечень последующих учебных дисциплин, для которых
необходимы знания, умения и навыки, формируемые данным модулем:
- Курсовой проект «Схемотехника ЭВМ» (алгоритмы выполнения
арифметических операций в ЭВМ с плавающей запятой);
- «Микропроцессорные и микроконтроллерные системы в
радиотехнике» (синтез алгоритмов выполнения арифметических
операций в ЭВМ, структурный синтез цифровых автоматов).
1.3. Требования к результатам освоения содержания модуля
Процесс изучения модуля направлен на формирование элементов
следующих компетенций в соответствии с ФГОС ВПО и ООП ВПО по
специальности 09.05.01:
а) общепрофессиональных (ОПК):
- использовать основные законы естественно-научных дисциплин в
профессиональной деятельности, применять методы математического
анализа и моделирования, теоретического и экспериментального
исследования (ОПК-3);
- применять современное измерительное, диагностическое и
технологическое оборудование, используемое для решения различных
научно-технических задач в области профессиональной деятельности
(ОПК-10);
б) профессиональных (ПК):
- обосновывать технические условия и задания на проектирование
аппаратного, программного и информационного обеспечения
автоматизированных систем специального назначения (ПК-16);
- разрабатывать и выбирать проектные решения, наиболее полно
отвечающие предназначению объекта и технологии производства (ПК-17).
11

В результате освоения модуля ТЦА обучающийся должен:


знать:
- методы и средства анализа и разработки математического
обеспечения цифровых автоматов;
- методы анализа и исследования вычислительных процессов,
связанных с функционированием цифровых автоматов и их компонентов;
- методы и формы организации процесса разработки цифровых
автоматов, управляющих автоматов;
уметь:
- использовать методы анализа и синтеза, цифровых автоматов и
управляющих автоматов;
владеть:
- методами и средствами разработки математического обеспечения
вычислительных систем;
- методами и средствами анализа, синтеза и оптимизации
компонентов объектов профессиональной деятельности (комбинационных
устройств и автоматов с памятью);
- современными информационными технологиями и
инструментальными средствами для решения задач проектирования и
анализа цифровых автоматов.
12

1.4. Содержание разделов модуля «Теория цифровых автоматов»


Форма
Наименование
№ Содержание раздела текущего
раздела
контроля
1 2 3 4
1 «Абстрактный и 1. Общие понятия теории Выполнение
структурный цифровых автоматов. Способы индивидуаль-
синтез задания автоматов с памятью. ного
цифровых Модели автоматов Мура и Мили. творческого
автоматов. 2. Абстрактный и структурный проекта.
Управляющие синтез автоматов. Граф-схема Рубежная
автоматы» алгоритма (ГСА). Процедура контрольная
построения ГСА по словесному работа с
описанию. последующим
3. Операционный и микро- разбором
программный автоматы. Понятия типовых
микрокоманды и микропрограммы. ошибок.
4. Понятие, назначение и виды
управляющих автоматов
2 «Арифмети- 1. Представления чисел в форме с
ческие основы фиксированной и плавающей
цифровых запятой.
автоматов» 2. Структурная схема процессора с
фиксированной запятой.
Особенности
микропрограммирования для
алгоритмов выполнения
арифметических операций с
фиксированной запятой.
3. Отличительные особенности
структурной схемы процессора с
плавающей запятой. Особенности
микропрограммирования при
выполнении алгоритмов
арифметических операций
процессора с плавающей запятой.
Условия и процедура
нормализации данных
13

1.5. Структура модуля «Теория цифровых автоматов»


Общая трудоемкость модуля составляет 2 зачетных единицы (ЗЕТ)
или 72 часа.
Трудоемкость,
Вид работы
часов
Общая трудоемкость 72/2 ЗЕТ
Аудиторная работа: 36
- лекции (Л) 18
- практические занятия (ПЗ) 18
Самостоятельная работа: 36
- индивидуальное проектное задание (И) 18
- самоподготовка (проработка и повторение 18
лекционного материала и материала учебников и
учебных пособий, подготовка к практическим
занятиям, рубежному контролю и т.д.)

1.6. Организация занятий для студентов


Действующим Федеральным Государственным образовательным
стандартом по специальности 09.05.01 предусмотрено обучение студентов
очной формы обучения. Рассмотрим распределение занятий по разделам
модуля.
1.6.1. Разделы модуля ТЦА
Количество часов
№ Аудиторная работа
Наименование раздела
раздела Всего Практические СРС
Лекции
занятия
Абстрактный и структурный
1 синтез цифровых автоматов. 42 10 14 18
Управляющие автоматы
Арифметические основы
2 30 8 4 18
цифровых автоматов
Итого: 72 18 18 36
14

1.6.2. Лекции
1 Раздел «Синтез цифровых автоматов. Управляющие автоматы»
№ Тема лекции Часы
Понятие цифрового автомата. Отличительные особенности
1 автоматов, способы их задания и модели. Абстрактный 2
синтез автоматов. Граф-схема алгоритма
Отличительные особенности абстрактного и структурного
2 автоматов. Структура и виды ЦА. Явление гонок цифровых 2
автоматов. Понятие памяти смешанного типа
3 Процедуры структурного синтеза цифрового автомата Мура 2
4 Процедуры структурного синтеза цифрового автомата Мили 2
Операционный и микропрограммный автоматы. Понятия
микрокоманды и микропрограммы. Особенности процедуры
синтеза микропрограммных автоматов. Управляющий
5 2
автомат с «жесткой логикой». Управляющий автомат с
хранимой в памяти логикой. Горизонтальное, вертикальное
и смешанное микропрограммирование
Итого по разделу 1: 10
2 Раздел «Арифметические основы цифровых автоматов»
№ Тема лекции Часы
Представление отрицательных чисел. Структура цифрового
процессора. Формат представления данных в ЭВМ в форме с
6 фиксированной запятой. Микропрограммы сложения и 2
вычитания двоичных чисел процессора с фиксированной
запятой
Выполнение операции умножения в прямом, обратном и
7 2
дополнительном кодах с фиксированной запятой
Микропрограммы деления двоичных чисел процессора с
8 фиксированной запятой в прямом, обратном и 2
дополнительном кодах
Формат представления данных в ЭВМ в форме с плавающей
запятой. Микропрограммы сложения и вычитания,
9 2
умножения и деления двоичных чисел процессора с
плавающей запятой
Итого по разделу 2: 8
Итого: 18
15

1.6.3. Практические занятия

1 Раздел «Синтез цифровых автоматов. Управляющие автоматы»


№ Тема занятия Часы
Общие понятия теории цифровых автоматов. Абстрактный
синтез автоматов Мура и Мили. Граф-схема алгоритма.
1 2
Процедура построения ГСА по словесному описанию.
Получение не полностью определенного автомата
Структурный синтез цифровых автоматов Мура.
Особенности записи функций переходов для Д- и Т-
2 триггерных устройств. Особенности записи функций 4
выходов автомата Мура. Построение КС автомата Мура.
Работа над проектным заданием
Структурный синтез цифровых автоматов Мили.
Особенности записи функций переходов для J-K-триггерных
3 устройств. Особенности записи функций выходов автомата 2
Мили. Построение логических преобразователей автомата
Мили
Моделирование цифровых автоматов в САПР Quartus.
4 4
Работа над проектным заданием
Операционный и микропрограммный автоматы. Понятия
микрокоманды и микропрограммы. Особенности процедуры
синтеза микропрограммных автоматов. Управляющий
5 2
автомат с «жесткой логикой». Управляющий автомат с
хранимой в памяти логикой. Горизонтальное, вертикальное
и смешанное микропрограммирование
Итого по разделу 1: 14
2 Раздел «Арифметические основы цифровых автоматов»
№ Тема занятия Часы
Выполнение арифметических операций над двоичными
6 2
числами с фиксированной запятой в обратных кодах
Итого по разделу 2: 2
7 Мероприятия рубежного контроля 2
Итого: 18
16

2. КОНСПЕКТ ЛЕКЦИЙ. РАЗДЕЛ 1. СИНТЕЗ ЦИФРОВЫХ


АВТОМАТОВ. УПРАВЛЯЮЩИЕ АВТОМАТЫ
Комплексная цель разд. 1 «Абстрактный и структурный синтез ЦА.
Управляющие автоматы»: приобретение практических навыков синтеза
операционных и управляющих блоков цифровых автоматов.
2.1. План лекций раздела 1
Лекция 1. Понятие цифрового автомата. Отличительные
особенности автоматов, способы их задания и модели. Абстрактный
синтез автоматов. Граф-схема алгоритма.
Цели и задачи лекции: ознакомление с понятием цифрового
автомата, моделями автоматов Мура и Мили. Научиться процедуре
построения ГСА по словесному описанию и абстрактному синтезу
автоматов.
План лекции: общие понятия теории цифровых автоматов.
Отличительные особенности автомата с памятью от комбинационной
схемы. Способы задания автоматов с памятью. Модели цифровых
автоматов Мура и Мили и их различия.
Абстрактный синтез автоматов. Граф-схема алгоритма. Процедура
построения ГСА по словесному описанию. Получение не полностью
определенного автомата.
Ключевые термины: цифровой автомат, Мура, Мили. Абстрактный
синтез, граф-схема алгоритма.
Выводы по теме: знакомство с понятием цифрового автомата,
моделями автоматов Мура и Мили. Понимание основных отличий
комбинационной схемы от цифрового автомата. Приобретение навыков
абстрактного синтеза цифровых автоматов.
Лекция 2. Отличительные особенности абстрактного и структурного
автоматов. Структура и виды ЦА. Явление гонок цифровых автоматов.
Понятие памяти смешанного типа.
Цели и задачи лекции: ознакомиться со структурой цифрового
автомата. Повторить триггерные устройства асинхронного и синхронного
типов.
17

План лекции: отличительные особенности абстрактного и


структурного автоматов. Структурная схема цифрового автомата.
Состояния элементов памяти. Явление риска логических схем. Явление
гонок цифровых автоматов. Понятие памяти смешанного типа.
Ключевые термины: триггер, синхронные и асинхронные автоматы.
Выводы по теме: студенты знакомятся со структурой цифрового
автомата и готовятся к структурному синтезу ЦА.
Лекция 3. Процедуры структурного синтеза цифрового автомата
Мура.
Цели и задачи лекции: ознакомиться со структурным синтезом
цифрового автомата Мура, особенностями записи функций переходов для
Д- и Т-триггерных устройств.
План лекции: процедуры синтеза цифрового автомата Мура.
Особенности записи функций переходов для Д- и Т-риггерных устройств.
Особенности записи функций выходов автомата Мура. Построение
комбинационной схемы автомата Мура.
Ключевые термины: структурный синтез ЦА, функции перехода,
функции выходов, автомат Мура.
Выводы по теме: студенты знакомятся со структурным синтезом ЦА
Мура.
Лекция 4. Процедуры структурного синтеза цифрового автомата
Цели и задачи лекции: ознакомиться со структурным синтезом
цифрового автомата Мили, особенностями записи функций переходов для
J-K-триггерных устройств.
План лекции: процедуры синтеза цифрового автомата Мили.
Особенности записи функций переходов для J-K-триггерных устройств.
Особенности записи функций выходов автомата Мили. Построение
логических преобразователей автомата Мили.
Ключевые термины: структурный синтез ЦА, функции перехода,
функции выходов, автомат Мили.
Выводы по теме: студенты знакомятся со структурным синтезом ЦА
Мили.
Лекция 5. Операционный и микропрограммный автоматы. Понятия
микрокоманды и микропрограммы. Особенности процедуры синтеза
18

микропрограммных автоматов. Управляющий автомат с «жесткой


логикой». Управляющий автомат с хранимой в памяти логикой.
Горизонтальное, вертикальное и смешанное микропрограммирование.
Цели и задачи лекции: ознакомиться с понятиями операционного и
управляющего автомата, микрокоманды и микропрограммы, видами
управляющих автоматов.
План лекции: операционный и микропрограммный автоматы.
Понятия микрокоманды и микропрограммы. Особенности процедуры
синтеза микропрограммных автоматов. Управляющий автомат с «жесткой
логикой». Управляющий автомат с хранимой в памяти логикой.
Горизонтальное, вертикальное и смешанное микропрограммирование.
Ключевые термины: операционный автомат, управляющий автомат,
жесткая логика, автомат с хранимой в памяти логикой.
Выводы по теме: студенты знакомятся с понятиями операционного и
управляющего автомата, видами управляющих автоматов с «жесткой» и
«гибкой» логикой, в том числе с горизонтальным, вертикальным и
смешанным микропрограммированием.
2.2. Понятие цифрового автомата
Любое цифровое устройство работает в дискретном времени.
Особенность комбинационных схем заключается в том, что независимо от
того, в какой момент времени t подан входной сигнал “X”, на выходе
всегда получают один и тот же выходной сигнал “Y”.
Однако на практике необходимо устройство, которое вырабатывает
выходной сигнал в зависимости от предыстории подачи нескольких
входных сигналов в последовательные моменты времени. То есть,
аналогично тому, как человек принимает решение в зависимости от
предыстории различных событий.
Появление теории автоматов связано с математическим описанием
принципа работы головного мозга.
Так как, предыстория сигналов имеет достаточно длинную запись, то
ее заменяют понятием состояние автомата. И уже автомат реагирует
выходным словом не только на входной сигнал в данный момент времени,
но и на состояние автомата в этот момент времени.
19

На практике нашли применение две модели цифровых автоматов,


имеющие одинаковые функции переходов, которые определяют условие
изменения состояния и различных функций выходов, которые определяют
условия выдачи выходного сигнала.
I модель – модель автомата МИЛИ.
Функция переходов a(t+1) = δ(a(t), x(t))
определяет в какое новое состояние в момент времени (t+1) прейдет
автомат, который в момент времени t находится в каком-то состоянии a(t)
и получил входную информацию x(t).
Функция выходов y(t) = λ(a(t);x(t))
определяет, какой появится выходной сигнал в момент времени t, если в
этот момент времени он находится в состоянии a и получил информацию
x.
II модель – модель автомата МУРА.
Функция переходов a(t+1) = δ(a(t), x(t)) – аналогична автомату
МИЛИ.
Функция выходов y(t+1) = λ(a(t+1))
определяет выходной сигнал y, только по новому состоянию автомата в
момент времени t+1;
Теория автоматов разбивается на две части:
1) абстрактную теорию – она позволяет от словесного описания
работы устройства, получить его описание в виде специальных языков
задания автомата. Эти языки описывают функции переходов и
выходов: специальные таблицы, формулы, графы;
2) структурная теория автоматов – позволяет перейти от
результатов, полученных на этапе абстрактного синтеза автоматов, к
схеме цифрового автомата (функция или принцип).
На этапе абстрактного синтеза автомата его закон
функционирования удобно представить в виде граф автомата.
Вершинам графа соответствует внутреннее состояние автомата. Если
автомат переходит из одного состояние в другое, то эти вершины
соединяют ориентированным ребром, над которым ставят метку входного
сигнала, по которому выполняется этот переход – таким образом задают
функцию перехода.
20

x1 x2
a1 a2
Для отображения функции выхода автомата МИЛИ над ребрами
ставится метка соответствующего выходного сигнала:

x1, y1 x2, y2
a1 a2

a2 (t+1) = δ (a1, x1),


y1 (t) = λ (a1, x1).

Для автоматов МУРА выходные сигналы помечаются рядом с


вершинами графа:

x1 x2
a1 a2
y1
a2 (t+1) = δ (a1, x1),
y1 (t+1) = λ (a2(t+1)).

Говорят, что задан абстрактный автомат, если задано:


1) множество входных сигналов – X;
2) множество выходных сигналов – Y;
3) множество внутренних состояний – a;
4) функции переходов – a = δ(a,x);
5) функции выходов – y = λ(a,x).
2.3. Абстрактный синтез автоматов
Любое цифровое устройство есть автомат, однако при
проектировании цифровых устройств, теорию автоматов применяют в
чистом виде, в основном при построении управляющих устройств, при
этом алгоритм работы должен быть задан графом автомата.
При проектировании управляющих цифровых автоматов наиболее
трудной задачей является задача абстрактного синтеза автоматов, т.е.
переход от словесного алгоритма работы устройства к графу автомата.
Решается задача в II этапа.
21

На первом этапе: словесный алгоритм представляется специальным


языком, этот этап не строгий, основан на интуиции и логических
рассуждениях проектировщика.
На втором этапе: выполняется строгий переход от алгоритма
работы, заданного на специальном языке к графу автомату МИЛИ или
МУРА.

Словесный Интуиция, логика


алгоритм

Специальный язык
алгоритма

Граф автомата Строгая процедура

Существует множество специальных языков.


Наиболее простым специальным языком записи алгоритма является
граф-схема алгоритма (ГСА).
Граф-схема алгоритма – это специальный граф, состоящий из
вершин четырех типов:
1) вершина, определяющая исходное состояние устройства;
2) вершина, определяющая окончание действия алгоритма, как
правило, она определяет, что устройство пришло опять в начальное,
исходное состояние;
3) операторная вершина – определяет действие протекающее в
один дискретный момент времени, при этом в поле прямоугольника
вписывают (например, управляющие сигналы, либо на специальном языке
описываются некоторые процессы);
4) условная вершина – обозначается в виде ромба и определяет
ветвление алгоритма (определяет условие изменения порядка действия
алгоритма).
В поле ромба записываются либо двоичные переменные, либо
логические функции, либо математические формулы, неравенства. Их
выполнение или невыполнение определяет дальнейшее действие
алгоритма. По словесному алгоритму определяется множество таких
22

вершин и соединений между ними, что приводит к граф-схеме алгоритма


или приводит к переходу от словесного алгоритма к специальному языку.
Пример. Построение граф-схемы алгоритма по словесному
алгоритму.
Построить граф-схему алгоритма управляющего устройства робота
“няньки”. Робот “нянька”, реагирующий на высокочастотный крик
младенца. При этом включается колыбель и магнитофон (песня, сказка),
если младенец умолк, робот ровно через 30 с останавливается. Пример
ГСА робота:
1
начало

2 0
K

1
3
R,M

1
K
0

4
T1, Sm

5 0
t≥30

1
6
Sr, St

7
конец
23

Пояснения к ГСА робота:


1. Вершина определяет исходное положение устройства
(включено питание).
2. K – двоичная переменная, которая определяет
высокочастотный крик младенца. Если K = 1, то необходимо включить
двигатель (сигал R) и магнитофон, (сигнал M).
3. Вершина определяет выработку сигналов R, M в один момент
времени, эти устройства работают до тех пор, пока имеется крик (см.
следующую условную вершину).
4. T1 – сигнал включения таймера Sm – сигнал выключения
магнитофона.
5. Если t<30 с, то продолжает работать таймер. Если t≥30 с, то
включает колыбель и таймер.
6. Sr, St – выключение колыбели и таймера.
7. Алгоритм работы устройства закончился, при этом робот
переходит в исходное состояние и ждет крика младенца.

Рассмотрим на примере граф схемы алгоритма общую методику


построения графа автомата по граф схеме алгоритма.
2.3.1. Построение графа-автомата МУРА
На рассмотренном выше ГСА расставим метки а1-а4, как показано на
рис.1. Метками отмечаются состояния автомата. При этом необходимо
пользоваться правилами:
1) начальная и конечная вершины граф схемы алгоритма
отмечаются одинаковым символом начального внутреннего
состояния автомата;
2) различные операторные вершины граф схемы алгоритма
отмечаются различными символами внутренних состояний
автоматов.
24

начало a1

0
K

R,M a2

1
K
0

T1, Sm a3

0
t≥30

Sr, St a4

конец a1

Рис. 1. ГСА робота с метками


Теперь от ГСА перейдем к графу автомата.

Алгоритм построения графа автомата Мура:


1) задание функции переходов. Если две отмеченные вершины граф-
схемы алгоритма соединяются между собой через условную
вершину, то в графе автомата соответствующие вершины
внутренних состояний соединяются ориентировочно ребром.
Ребро отличается прямым или инверсным значением условия,
записанного в ромбе. Если отмеченные вершины граф-схемы
алгоритма связаны просто ребром, а не условной вершиной, то в
графе автомата соответствующе ребро отмечается единицей «1»;
25

2) задание функции выходов. Каждая вершина графа автомата


отмечается символами сигналов записанных в соответствующих
операторных вершинах. Так как множество сигналов
соответствующих одной вершине графа автомата вырабатывается
в один момент времени, то порой их удобно задать только одним
символом выходного сигнала, например:
(R,M)→ y1;
(T,Sm)→ y2;
(Sr,St)→ y3.
На рис. 2 изображен граф автомата Мура для ГСА робота.

k
k k
a1 a2
(R, M)

1 k

t t
a4 a3
(Sr, St) (t, Sm)

Рис. 2. Граф автомата Мура


2.3.2. Построение графа автомата МИЛИ
В отличие от ГСА Мура расставим метки а1-а3, как показано на рис.
3. При этом необходимо пользоваться правилами:
1) начальная и конечная вершины граф-схемы алгоритма
отмечаются символом начального внутреннего состояния
автомата МИЛИ;
2) все выходы различных операторных вершин отмечаются
различными символами внутренних состояний автоматов;
26

3) исключение составляют операторные вершины


непосредственно связанные с конечной вершиной граф-схемы
алгоритма.

начало a1

К
K 0

R,M a2

1
K
0

T1, Sm a3

0
t≥30
1

Sr, St

конец a1

Рис. 3. ГСА автомата Мили


После расстановки меток на ГСА можно построить граф автомата
Мили (рис. 4).
Правила построения функции переходов автомата МИЛИ:
1) если точки граф-схемы алгоритма, отмеченные символом ai
внутреннего состояния автомата, связаны между собой через
условную и операторную вершины, то соответствующие вершины
графа автомата соединяются ребром;
27

2) при этом ребро отмечается логическим условием, а также


сигналами записанными в операторной вершине;
3) учет сигналов записанных в операторной вершине (последних)
позволяет задавать функцию выходов автомата.
Замечание: обычно, граф автомата МИЛИ имеет меньшее число
вершин, чем граф автомата МУРА, для одной и той же граф схемы
алгоритма.
Однако предпочтение отдают автоматам МУРА, так как они более
стабильно работают с объектом управления (нет явления состязаний –
эффекта гонок).

k (-)
k (R, M)
k (R, M)
a1 a2

k (T, Sm)
t (Sr, St)

t (T, Sm)
a3

Рис. 4. Граф автомата Мили


2.4. Структура цифрового автомата
На этапе структурного синтеза автоматов выполняется переход от
графа автомата к функциональной или принципиальной схеме.
Рассмотрим основные особенности структуры автомата.
Они учитывают свойства реальных элементов.
1. Цифровой автомат выполняется на цифровых элементах, для
которых характерно наличие 0 и 1 на выходах. Поэтому от
абстрактных сигналов x и выходных сигналов y переходим к
соответствующих двоичным словам:

x↔ <x1…xn>
y↔ <y1…yk>
28

a↔ < τ1….. τs>

Такой переход носит название кодирования. Эта процедура очень


важна, так как в зависимости от выбранных двоичных кодов схема
автомата получается проще или сложнее.
На рис. 5 и 6 представлены соответственно схемы абстрактного (АА)
и структурного автомата, где ТИ – тактирующие импульсы.

aiÎA АА
d(j) l(j)

Рис. 5. Схема абстрактного автомата


x1 y1
... .
xn .
<τ1 ...τs>
.
ТИ yk

Рис. 6. Схема структурного автомата


2. Схема структурного автомата связана с аппаратной реализацией
функций переходов l и функции выходов d
Основное отличие структурной схемы ЦА Мили от Мура: для
автомата МИЛИ функция выходов y=l(a,x), а для автомата МУРА y=l(a).
Рассмотрим структуру автомата, отображающие эти функции (рис.
7).

БП
τ1 КС1 j1 τ1 КС2 y1
. Tp1
. τ1
. .
τs . . .
. .
x1
. ji .
. yj .
. .
. τs
. js yk .
xn Tps τs

x– только для автомата Мили


Рис. 7. Структурная схема цифрового автомата
29

Структура ЦА состоит из трех блоков.


1. БП (блок памяти) представляет собой набор триггеров (Тр1 – Трs),
которые хранят внутренние состояния ЦА.
2. Комбинационная схема КС1 отображает функцию переходов d,
реализуя при этом функции возбуждения ji, каждая такая функция
определяет логику работы триггера в блоке триггера.
Пусть автомат в момент времени t находился в состоянии ai,
следовательно, БП хранит соответствующий код <τ1…τs>, в тот же момент
времени на вход автомата подан входной сигнал xi, а значит двоичный код
<x1…xn>.
В абстрактном автомате наличие внутреннего состояния и входного
сигнала приведет к переводу автомата в новое внутреннее состояние, в
соответствии с функцией перехода d(a,x).
В структурном автомате такой переход отражается изменением кода
внутреннего состояния в БП. Чтобы этот код изменить в структурном
автомате, комбинационная схема 1 (KС1) вырабатывает нулевые или
единичные сигналы ji в зависимости от кода входного сигнала и кода
имеющегося внутреннего состояния.
Таким образом, функция переходов абстрактного автомата
отображается в реальную схему цифрового автомата, т.е. заменяется
множеством функций возбуждения.
3. Комбинационная схема KС2 реализует функции выходов
автоматов. При этом для абстрактного автомата МУРА выходные сигналы
зависят только от внутренних состояний, поэтому в структурном автомате
код выходного сигнала будет определяться кодом внутреннего состояния
автомата.
Для автоматов МИЛИ KС2 определяет выходные сигналы не только
от кода внутреннего состояния, но и от кода входного сигнала, так как
функция выходов автомата МИЛИ это y=l(a,x).
Вывод: таким образом, построение структуры автомата сводится к
определению логических функций возбуждения и выхода для заданного
графа автомата.
Блок памяти автомата обычно реализуется на D-, T- и JK-триггерах.
30

Реализовать блок памяти можно на микросхемах триггеров или


регистров.
2.5. Структурный синтез автоматов МУРА
Структурный синтез автоматов МУРА, т.е. процедура перехода от
графа автомата к его функциональной схеме. Рассмотрим на примере
следующего автомата.
Дано: граф-автомата МУРА

x1
a1 a2
(y1) (y1)

x2
x1 x1

x1 x2
a4 a3
(y2) (y2)
I этап: кодирование абстрактных сигналов, выбор типов триггеров.
С целью минимизации числа внешних выводов устройства и
уменьшения числа триггеров, в блоке памяти автомата применяют
логарифмическое кодирование.
Суть его в следующем: пусть автомат имеет:
A = a1….an – множество внутренних состояний;
X = x1….xn – множество входных сигналов;
Y = y1….yn– множество выходных сигналов.
Закодируем:
ai ↔ <τ1….τs>i,
xi ↔ <x1….xn>i,
yi ↔ <y1….yk>i.
При этом τ, x, y  0,1.
Выполним расчеты оборудования.
31

Число триггеров: s=]log n[.


2

Число входных шин: n= ]log v[.


2

Число выходных шин: k= ]log r[.


2

Скобки ][ обозначают ближайшее целое число большее или равное


.
Существуют специальные алгоритмы кодирования, которые
позволяют выбрать такие коды абстрактных сигналов, что схема
автоматов получается простой, эти алгоритмы достаточно сложны,
поэтому на практике используются произвольные варианты кодирования.
Рассмотрим кодирование сигнала для данного примера.
Множество внутренних состояний:
A = ai, i=4. ]log 4[=2.
2

Каждый символ ai кодируется значениями двух двоичных


переменных τ1 и τ2.
Код
Состояние
1 2
1 0 0
2 0 1
3 1 0
4 1 1
Множество входных сигналов x=xi, i=2.
]log 2[=1.
2

Входной Код
сигнал 𝑥
1 1
2 0
Множество выходных сигналов: Y= yi, i=2.
]log 2[=1.
2

Выходной Код
сигнал 𝑦
1 1
2 0
Выбор типов триггеров также влияет на сложность схемы автоматов,
существуют специальные методы выбора триггеров, на практике
32

выбирают триггера произвольно типов D-, T- или JK-. Обычно выбирают


триггеры одного типа.
Проведем выбор триггеров для данного примера.
Каждое внутреннее состояние автомата кодируется двумя
переменными τ1 и τ2.
C целью пояснения записи функций возбуждения для разных
триггеров, выберем в качестве первого триггера – тип D, второго триггера
– тип Т.
II этап: построение структурного графа автомата.
Такой граф получают путем замены в данном графе автомата всех
абстрактных символов на соответствующие двоичные коды. Для данного
автомата имеем следующий структурный граф.

x
x
 1 2  1 2
(y) (y)

x
x x

x
x
1 2 1 2
(y) (y)
III этап: расстановка меток.
Переход автомата из одной кодовой операции в другую выполняется
за счет подачи определенных сигналов на вход триггеров. С целью
определения условий подачи единичных сигналов на входы триггеров для
каждого перехода автомата над ребрами структурного графа
расставляются метки. Метка соответствует подаче единичного сигнала.
Для заданного автомата необходимо расставить две метки:
1) jD – для D-триггера;
2) jT – для T-триггера.
Правило расстановки меток определяется типом триггера.
Определим эти правила для D-триггера.
33

jD TT
τ1
D

c τ1
c
1
Закон работы D-триггера зададим графом:
t t+1
(0) τ1 0 (0) τ1
1
(0) τ1 (1) τ1
(1) τ1 0 (0) τ1

(1) τ1 1 (1) τ1

Над ребрами этого графа расставлены сигналы на входе D-триггера,


для выполнения его перехода из состояния τ(t) в состояние τ(t+1). Так как
jD соответствует подаче единичного сигнала, то правило расстановки
такой метки в структурном графе задается следующим образом: переход
из 0→1 требует на входе D – «1».
Правило расстановки меток jD получают из этого графа:
t t+1
(0) τ1 (0) τ1
jD
(0) τ1 (1) τ1
(1) τ1 (0) τ1
jD
(1) τ1 (1) τ1

Определим правило расстановки меток j для второго Т-триггера.


Т

jT TT τ2
T

c τ2
c
2
Закон функционирования Т-триггера задается графом:
34

t t+1
(0) τ2 0 (0) τ2
1
(0) τ2 (1) τ2
(1) τ2 1 (0) τ2

(1) τ2 0 (1) τ2

Правило расстановки меток jT получают из этого графа:


t t+1
(0) τ2 (0) τ2
jT
(0) τ2 (1) τ2
jT
(1) τ2 (0) τ2

(1) τ2 (1) τ2

В соответствии с этими правилами выполняется расстановка меток


j1 (D-триггер) и j2 (T-триггер) в структурном графе заданного автомата.

x
x j2
 1 2  1 2
(y) (y)
j1
x
x x
j2 j1
j2
x
x j 1 j2 j1
1 2 1 2
(y) (y)

IV этап: запись функций возбуждения.


Из заданного структурного графа выделим один переход.
35

x j2
 1 2  1 2
(y) (y)

Из анализа этого перехода следует, что на вход Т-триггера подается


единичный сигнал, если автомат находился в состоянии 𝜏̅1 ∙ 𝜏̅2 и на его
вход пришел сигнал x=1. Логически это может быть записано следующим
образом:
j2 = 𝜏̅1 ∙ 𝜏̅2 ∙ 𝑥.
Аналогично можно записать логические условия для всех меток, так
как эти условия выполняются в различные моменты времени, то их можно
объединить операцией “ИЛИ”. В результате получаем запись функций
возбуждения для каждого триггера. То есть получаем условия подачи
единичного сигнала на вход триггера.
Запишем функции возбуждения j1 и j2 для данного автомата:
j1 = (𝜏̅1 𝜏2 𝑥̅ ∪ 𝜏̅1 𝜏2 𝑥) ∪ (𝜏1 𝜏̅2 𝑥̅ ∪ 𝜏1 𝜏̅2 𝑥);
j2 = (𝜏̅1 𝜏̅2 𝑥 ∪ 𝜏1 𝜏2 𝑥) ∪ (𝜏̅1 𝜏2 𝑥 ∪ 𝜏1 𝜏̅2 𝑥).
После минимизации функции возбуждения примут вид:
j1 = 𝜏̅1 ∙ 𝜏2 ∪ 𝜏1 ∙ 𝜏̅2 ;
j2 = x.
Реализация этих логических функций дает комбинационную схему 1
(KC1) в структуре автомата. Эта схема определяет условие переходов
автомата из одного состояние в другое, т.е. отражает функцию переходов
автомата.
V этап: запись функции выходов.
Заметим, что в абстрактном автомате МУРА, выходной сигнал “Y”
зависит от внутреннего состояния. В структурном автомате должна
выполняться аналогичная зависимость для соответствующих кодирующих
переменных. Для заданного автомата такая зависимость может быть
выражена таблицей истинности:
36

τ1 τ2 y

0 0 0

0 1 0

1 0 1

1 1 1
По таблице можно записать логическую функцию, определяющую
значение сигнала на выходной шине:
y = τ1 ∙ τ̅2 ∪ τ1 ∙ τ2 ∙= τ1 .
Реализация этой логической функции даст вторую комбинационную
схему автомата (KCх2), отражающую функцию выхода абстрактного
автомата.
VI этап: построение функциональной схемы.
Учитывая типы выбранных триггеров D- и T- и полученные
логические функции, можно построить схему автомата.
1 y
3 j1
& D T 1
2 1 τ1

1 &
4

τ1 2
С
1

x j2
T T τ1 3

ТИ τ2 4
С
2

KС1 БП KС2

Построенная схема является схемой синхронного цифрового


автомата, при этом подача входных сигналов и изменение состояния
автомата определяется тактовыми импульсами. Можно было выбрать
37

асинхронное триггерное устройство, получили бы асинхронный цифровой


автомат, он работает быстрее, так как реакция автомата определяется
только входной информацией, но для асинхронных автоматов характерно
явление гонок (состязаний).
Суть явления гонок в следующем.
Из за различных задержек сигналов в первой комбинационной схеме
1, для различных триггеров, возникает ситуация, когда один из триггеров
первым меняет свое состояние и реагирует на него при прежнем входном
сигнале.
В результате возникает ложный переход. Чтобы исключить явление
гонок, необходимо выполнить специальное кодирование абстрактных
символов, что усложняет задачу синтеза автоматов. Как правило,
функциональная схема сопровождается временной диаграммой работы
устройства.
2.6. Синтез цифровых автоматов МИЛИ
Графы автоматов МУРА и МИЛИ имеют одинаковые функции
переходов, но отличаются функциями выходов. Поэтому отличие
процедуры синтеза автоматов МИЛИ заключается в записи функции
выхода. Общую процедуру синтеза автомата МИЛИ рассмотрим на
примере графа автомата, функция переходов которого совпадает с
функцией переходов автомата МУРА, рассмотренного раньше.

I этап: кодирование абстрактных сигналов.


Кодирование внутренних состояний: A = ai, i=4.
]log24[=2,
Код
Состояние
1 2
1 0 0
2 0 1
3 1 0
4 1 1
Кодирование входных сигналов: x=xi, i=2.
]log 2[=1.
2
38

Входной Код
сигнал 𝑥
1 1
2 0

Кодирование выходных сигналов: Y= yi, i=3.


]log 3[=2.
2

Выходной Код
сигнал y1 y2
1 0 0
2 0 1
3 1 0

II этап: построение структурного графа.

x
(y1y2) x (y1y2)
 1 2  1 2

x
x (y1y2) x
(y1y2) (y1y2)

x
x (y1y2) (y1y2)
1 2 1 2

III этап: расстановка меток в структурном графе.


В качестве первого триггера блока памяти выбрали JK-триггер,
второго триггера – Т-триггер.
Определим правило расстановки меток для JK-триггера:
Работа триггера задается графом:
39

t JK t+1
00˅01
(0) τ1 (0) τ1
10˅11
(0) τ1 (1) τ1
01˅11
(1) τ1 (0) τ1
00˅10
(1) τ1 (1) τ1

Правило расстановки меток jjk получают из этого графа:


t JK t+1
(0) τ1
j k* (0) τ1
*
jJ jk
(0) τ1 (1) τ1
jJ* jk
(1) τ1 (0) τ1
*
jJ
(1) τ1 (1) τ1

где jj, jK – подача единичного сигнала, jJ*, jK* означает, что подача
единичного сигнала на соответствующий вход триггера возможна, но
необязательна, это следует из особенности работы JK-триггера. Так как
при синтезе автомата МУРА, в качестве второго триггера был выбран Т-
триггер, то расстановка меток для этого триггера и записи его функции
возбуждения будет совпадать с материалом п. 2.5. Графы рассмотренных
автоматов МУРА и МИЛИ имеют одинаковую функцию переходов,
поэтому сказанное для Т-триггера в п. 2.5 справедливо и в данном случае.
Напомним правило расстановки меток jT:
t t+1
(0) τ2 (0) τ2
jT
(0) τ2 (1) τ2
jT
(1) τ2 (0) τ2

(1) τ2 (1) τ2
40

IV этап: запись функции возбуждения.

j*k
x
(y1y2) j*k jT x (y1y2)
 1 2  1 2
jk jT
jj
jT j*k jj
j*j j*k
x
x (y1y2) x
(y1y2) (y1y2)

x
j*j jT x (y1y2) (y1y2)
1 2 1 2 j*j

Рассмотрим запись функции возбуждения для JK-триггера. Так как


триггер имеет два информационных входа J и К, то необходимо
записывать две функции возбуждения jj и jк. Правило записи совпадает с
материалами п. 2.5.
𝜑𝑗 = 𝜏1 𝜏2 𝑥 ∪ 𝜏1 𝜏2 𝑥 ∪ (𝜏1 𝜏2 𝑥 ∪ 𝜏1 𝜏2 𝑥 ∪ 𝜏1 𝜏2 𝑥 )* ∪ (𝜏1 𝜏2 𝑥).
Функция записана СДНФ, следовательно, на соответствующих
конъюнкциях двоичных наборов функция принимает единичное значение,
однако часть функции, записанная в скобке, соответствует подаче сигнала
jj*. Так как подача этого сигнала не обязательна, то на соответствующих
двоичных наборах значение функции не определено.
Вторая скобка определяет особенности функции переходов
автомата, а именно: из состояния 11 (𝜏1 𝜏2 ) графа автомата не выходит
ребро, отмеченное сигналом 𝑥. На самом деле если есть условный переход
по x, то должен быть и условный переход по 𝑥. Поэтому условие (𝜏1 𝜏2 𝑥)
можно рассматривать как неопределенное условие для функции jj.
С целью записи функции в МДНФ по заданному выражению
построим карту Карно.
41

x x x

1 1 1* 0* 0*
1 1 1 0 0

2 2
jj = τ2.
Запишем функцию jк:
*
𝜑𝑘 = 𝜏1 𝜏2 𝑥 ∪ ( 𝜏1 𝜏2 𝑥 ∪ 𝜏1 𝜏2 𝑥 ∪ 𝜏1 𝜏2 𝑥 ∪ 𝜏1 𝜏2 𝑥) ∪ (𝜏1 𝜏2 𝑥 ).
Для записи МДНФ этой функции построим карту Карно.
x x x

1 1 1 0 0
1 1* 1* 0* 0*

2 2
jк = τ2.
Функция возбуждения для Т-триггера получена в п. 2.5: jT = m.

V этап: запись функции выхода.


Именно этот этап отличается от процедуры синтеза автоматов
МУРА, так как функция выходов в автомате МИЛИ задается иначе.
Заметим, что выходные двоичные переменные y1 и y2 отмечают каждое
ребро графа автомата МИЛИ, поэтому логическое условие появления
единичного сигнала y1 или y2 может быть записано по аналогии с записью
функций возбуждения по соответствующим меткам. Поясним на примере
одного перехода заданного автомата.
x (y1y2)
 1 2  1 2
Так как функции выхода записываются в СДНФ, то необходимо
отыскать единичное значение кодирующей переменной l1 или l2. Для
рассматриваемого примера имеем
𝑦2 = 𝜏1 𝜏2 𝑥.
42

Данное логическое условие говорит о том, что на выходной шине


автомата y2 появится единичный сигнал, если автомат находился в
состоянии 00 и на его вход подан сигнал x = 1.
Рассмотрев аналогично логические условия для других ребер, можно
записать функции выходов автомата МИЛИ:
𝑦1 = 𝜏1 𝜏2 𝑥 ∨ 𝜏1 𝜏2 𝑥 = 𝜏2 𝑥;
𝑦2 = 𝜏1 𝜏2 𝑥 ∨ 𝜏1 𝜏2 𝑥 = 𝜏2 𝑥.

VI этап: построение функциональной схемы.

Из предыдущих этапов получили функции возбуждения для JK- и Т-


триггеров, а также функции выходов. По этим функциям можно построить
схему автомата. Выбрав JK-триггер, мы получили простую функцию
возбуждения.
Отличительной особенностью схемы автомата МИЛИ является то,
что выходные сигналы определяются не только состоянием автомата, но и
входной информацией. Из схемы следует, что работа автомата не зависит
от JK-триггера, это говорит о том, что исходный граф автомата можно
упростить до графа состоящего из двух вершин, иными словами
полученный граф автомата по словесному алгоритму содержит
избыточную информацию, так как невыполненный этап упрощения графа
автомата с помощью специальных методов, а проектировщик остановился
только на интуитивном уровне перехода от словесного алгоритма к графу.
43

jj T
J τ1 x x
1 &
y1
С

jК τ1
K
1

x jT T τ2
T
&
y2

ТИ
С τ2
2

КС1 БП KС2

2.7. Структура цифрового вычислителя


В функциональном отношении большинство цифровых
вычислительных устройств (ЦВУ) могут быть представлены в виде
композиции операционного и управляющего автоматов (ОА и УА), как
показано на рис. 8.
X

DI
Y КОП
DO ОА УА

Рис. 8. Структура вычислительного устройства


ОА может включать АЛУ, регистры, счетчики, блоки памяти,
дешифраторы, каналы передачи информации и т.д. Операционные
автоматы служат для обработки информации (DI и DO).
УА генерирует распределенную во времени последовательность
управляющих сигналов Y в соответствии с микропрограммой кода
44

операции (КОП) и логическими условиями X, т.е. определяет


последовательность переработки информации и координирует работу
всех блоков в ОА.
В ОА оказывается сосредоточенным основной объем оборудования.
На долю управляющего автомата остается сравнительно небольшая часть.
При этом аппаратура управления может быть конструктивно
рассредоточена по всему устройству. Поэтому с конструктивной точки
зрения подобное разделение устройства на две части не оправдано. Тем не
менее, на стадии логического проектирования разделение целесообразно
потому, что методика проектирования получаемых частей совершенно
различна.
Операционный автомат составляется из типовых, хорошо известных
модулей, которые не нужно проектировать заново. Что же касается схемы
управления, то ее устройство может сильно отличаться даже в изделиях,
близких по своему назначению и свойствам. Кроме того, схема
управления, несмотря на относительно небольшой физический объем,
имеет относительно более сложные функции, отчего ее синтез требует
более серьезного подхода. В частности, именно здесь требуется
применение теории автоматов с памятью.
Таким образом, разделение проектируемого устройства на
операционный и управляющий автоматы возникает на стадии логического
синтеза аппаратуры, а в дальнейшем, при переходе к физическому
проектированию, становится ненужным и исчезает.
Операционные автоматы делятся на блочные и
многофункциональные, синхронные и асинхронные, на автоматы
обратного и дополнительного кодов, на автоматы двоичной, десятичной
систем счисления и др.
В блочном автомате для каждой операции предусмотрен
соответствующий блок, в многофункциональном автомате единая
структура перестраивается с учетом каждой операции.
В автомате с синхронным управлением на любую операцию
затрачивается одинаковое время (время самой продолжительной
операции), в автомате с асинхронным управлением время каждой
операции различно.
45

Операционный автомат имеет определенные характеристики: набор


операций, точность расчетов, быстродействие, код, систему счисления и
др.
2.8. Понятия микрооперации, микрокоманды, микропрограммы
Последовательность выполнения операций в ОА определяется
микропрограммой (МП), которая представляет собой совокупность
микроопераций и логических условий.
Под микрооперацией понимается элементарная обработка
информации за время одного такта, т.е. в промежутке между двумя
дискретными моментами времени ti и ti+1. В синтаксическом смысле
микрооперация состоит из левой части (знака присваивания) и двоичного
выражения в правой части.
Различают микрооперации:
 установки (А:=1111),
 инвертирования (А:=А),
 передачи (А:=В),
 сдвига (А:=L1(А), А:=R1(А)),
 счета (А:=А+1, А:= А-1),
 сложения (С:=С+А, С:=С+А) и т.д.
Некоторые из используемых в программе микроопераций (МО)
могут выполняться параллельно во времени, т.е. за один такт. Такие
микрооперации называют функционально совместимыми. Если
микрооперации не могут выполняться параллельно во времени, то они
функционально несовместимы. Совместимость микроопераций
обусловлена содержанием операторов и структурой ОУ, поэтому иногда
говорят о структурной совместимости или несовместимости
микроопераций.
Для выполнения в ОА i-й микрооперации в УА должен выработаться
управляющий сигнал yi ϵ Y, однозначно сопоставленный с этой МО.
Совокупность микроопераций, выполняемых в ОУ одновременно за
один такт, образует микрокоманду (МК). Если, например, Yt = {yt1,
yt2,…,ytn} – микрокоманда, то микрооперации yt1, yt2,…,ytn выполняются
одновременно за один такт. При n=1 микрокоманда содержит одну
46

микрооперацию, а n=0 может означать пропуск такта, т.е. отсутствие


выполнения каких-либо элементарных действий.
Порядок выполнения микрокоманд определяется в общем случае
логическими условиями xi ϵ X или булевыми функциями (функциями
перехода), аргументами которой являются логические условия.
Совокупность микрокоманд и функций перехода образуют
микропрограмму.
В микропрограмме каждой паре микрокоманд Yi, Yj соответствует
функция переходов aij. Если aij =1, то после выполнения микрокоманды Yi
должна выполняться микрокоманда Yj. Причем среди множества функций
переходов {ai1, ai2, aij,…,aim}, где m – число различных микрокоманд, в
каждый момент времени единице равна только одна функция. В
противном случае процесс выполнения микропрограммы был бы
недетерминированным.
2.9. Управляющие автоматы
Управляющий автомат (УА) можно строить двумя способами [10].
Управляющий автомат с жесткой логикой – специальная
логическая сеть с элементами памяти, реализующая микропрограмму
выполнения команды. Структура сети определяется теми
микропрограммами, которые должны выполняться данным устройством.
При этом способе можно свести к минимуму объем оборудования и, что
бывает гораздо важнее, обеспечить максимально возможное
быстродействие. Зато проектирование такого управления является делом
долгим и сложным, а перепрограммирование УА на другую работу
вообще невозможно.
Микропрограммный УА, или управляющий автомат с
программируемой логикой строится с использованием специальной
встроенной памяти микропрограмм. В эту память записываются все
требуемые микропрограммы, а от схемы управления требуется только
организация чтения микропрограмм. Проектирование микропрограммного
автомата несравненно проще, так как в нем используются типовые
аппаратные модули. Единственной специальной задачей, решаемой в
рамках теории автоматов, остается абстрактный синтез и составление
47

таблиц программирования памяти. Недостатками микропрограммного


управления является некоторая избыточность оборудования и меньшее
быстродействие.
В действительности оба принципа построения УА сочетаются в той
или иной пропорции.
2.9.1. Общие понятия и функциональное назначение устройства
управления
Нам уже известно, что в каждом такте в любом процессоре должна
быть сформирована своя микрокоманда, или микроинструкция, которая и
обеспечивает выполнение необходимых микроопераций. На рис. 9
представлена диаграмма, на которой по горизонтальной оси отображена
последовательность тактов, а по вертикальной – номера цепей управления
процессора при выполнении им некой команды [1]. Каждому такту и
каждой цепи управления поставлен в соответствие определенный уровень
управляющего сигнала. Например, единичный уровень сигнала является
разрешающим, а нулевой уровень сигнала – запрещающим. Следует
заметить, что для некоторых цепей за разрешающий может быть принят и
нулевой уровень.
Из диаграммы видно, что в каждом такте на управляющие цепи
процессора (общее число их может составлять 40–60 и более) должна
быть подана своя совокупность сигналов управления, разрешающих или
запрещающих какую-то микрооперацию. Эту совокупность сигналов
управления и называют микрокомандой, или управляющим словом.
Считают, что в тех тактах, в которых имеются несколько разрешающих
сигналов, одновременно выполняется несколько элементарных действий –
микроопераций. Но при этом в каждом такте имеется только одно
управляющее слово, т.е. реализуется одна микрокоманда.
Таким образом, при выполнении любой команды в процессоре
должна быть сформирована совокупность управляющих сигналов,
распределенных в пространстве (по цепям управления) и во времени (по
тактам). Эта совокупность управляющих сигналов и представляет собой
микропрограмму, реализующую данную команду.
48

Управляющие
сигналы Микрокоманда на 6-м такте (Y6)

C9 1 0 1 0 0 0 0 0 1 0
C8 0 0 x 0 0 0 0 x 1 0
C7 0 0 0 0 0 0 0 1 0 0
C6 0 0 1 0 1 0 0 0 1 0
C5 0 0 1 0 0 0 0 0 x 0
C4 0 0 1 0 0 0 0 0 1 1
C3 0 0 1 0 0 0 1 0 1 0
C2 0 0 1 0 0 0 0 0 0 0
C1 0 0 1 0 0 0 0 0 1 0
1 2 3 4 5 6 7 8 9 10 Такты (ti)

Рис. 9. Диаграмма распределения управляющих сигналов процессора


по цепям управления и по тактам
Формирование управляющих сигналов для всех цепей управления в
каждом такте осуществляется устройством управления процессора. Как
видим, задача формирования управляющих сигналов является достаточно
сложной и громоздкой, если принять во внимание при этом, что в
процессоре имеется достаточно большое число цепей управления и
значительное число команд (до 130 и более), причем каждая команда
выполняется за несколько тактов (до 5-10 и более). Кроме того,
устройство управления должно реагировать также на внешние сигналы
управления.
Рассмотрим некоторые общие узлы, которые используются для
построения устройства управления.
Регистр команды (РК) предназначен для приема и хранения кода
операции команды, считанной из оперативного запоминающего
устройства (ОЗУ), на время ее выполнения процессором. Разрядность
регистра команды равна разрядности шины данных процессора.
Содержимое регистра команды несет в себе информацию о коде операции
и об используемом в данной операции способе адресации. При этом
49

другие байты, или слова команды, которые несут в себе адресную


информацию или являются непосредственными данными, принимаются
другими регистрами процессора.
Дешифратор команды (в частности, дешифратор кода операции)
является обязательным узлом любого устройства управления процессора.
Это функциональное комбинационное устройство, предназначенное для
расшифровывания кода операции команды для использования в других
узлах устройства управления.
Во многих современных процессорах есть узел, который
представляет собой очередь команд. Очередь команд – это запоминающее
устройство (ЗУ), предназначенное для хранения очередных команд,
подлежащих выполнению.
Заполнение буферной памяти команд производится в интервалы
времени, когда шина данных процессора не занята им для обмена
данными с основной памятью или внешними устройствами. Выборка
команд из очереди команд производится процессором по мере их
выполнения. Таким образом обеспечивается повышение общей
производительности процессора, поскольку практически не требуется
дополнительных затрат времени на выборку команд из ОЗУ, так как
очередные команды уже находятся во внутренней буферной памяти
процессора. Полное время на выборку команды с обращением к ОЗУ
тратится лишь в тех случаях, когда производится передача управления
при реализации условных переходов в программе. В этих случаях
производится реинициализация очереди команд и загрузка ее новой
последовательностью команд. При этом первая же выбранная из ОЗУ
команда становится сразу доступной для выполнения. Одной из
разновидностей реализации очереди команд является так называемая
КЭШ-память, размещаемая непосредственно на кристалле процессора. В
ряде современных процессоров КЭШ-память используется при этом как
буферное запоминающее устройство не только для потока команд, но
также и для потока данных.
2.9.2. Устройство управления с жесткой логикой
В настоящее время известно большое количество схемных
реализаций устройств управления на основе «жесткой» логики. В качестве
50

примера можно было бы привести структуру одного из вариантов УУ


(рис. 10).
Регистр кода
Счетчик тактов
операции

Дешифратор Дешифратор
кода операции тактов
Блок
вычитание
сложение

синхросигналов

Такт n
Такт 1
Такт 2
... ..
Логические схемы образования
управляющих сигналов

Формирователи
Формирователи управляющих
управляющих
сигналов
сигналов

С0 С1 ... С m

Управляющие сигналы

Рис. 10. Структурная схема управляющего автомата с «жесткой» логикой


В состав схемы входит регистр кода операции, являющийся частью
регистра команд, счетчик тактов, дешифратор тактов и дешифратор кода
операции, а также логические схемы образования управляющих
функциональных сигналов.
Код операции поступает из регистра на дешифратор кода операции,
где раскодируется в сигнал, например, «сложение», «вычитание» и др.
На счетчик тактов поступают сигналы от блока синхросигналов, и
счетчик с каждым сигналом меняет свое состояние. Состояния счетчика
представляют номера тактов, изменяющиеся от 1 до n. Дешифратор тактов
формирует на j-м выходе единичный сигнал при i-м состоянии счетчика
тактов, т.е. во время i-го такта.
Логические схемы образования управляющих сигналов для каждой
команды возбуждают формирователи управляющих сигналов для
выполнения требуемых в данном такте микроопераций.
51

Отметим общие особенности, которые свойственны устройствам


управления на основе "жесткой" логики:
- ограниченный набор команд, обусловленный тем, что с
увеличением числа команд существенно возрастает сложность устройства
управления;
- набор команд фиксирован, другими словами – внутреннее
программирование недоступно пользователю;
- малые временные задержки в УУ при формировании сигналов
управления, что является одним из факторов, обеспечивающих высокое
быстродействие УУ.
Задача синтеза УУ заключается в определении логических функций,
составляющих комбинационную схему. Для этого составляется таблица
переходов автомата по алгоритму выполнения команды. Затем по
полученной таблице определяются функции возбуждения триггеров.
Полученные функции реализуются в элементном базисе.
2.9.3. Устройство управления с программируемой логикой
Выше говорилось, что при проектировании УА с программируемой
логикой используется специальная встроенная память микропрограмм. В
эту память записываются все требуемые микропрограммы, а от схемы
управления требуется только организация чтения микропрограмм.
Проектирование микропрограммного автомата упрощается, так как в нем
используются типовые аппаратные модули. Задача, которую можно
решить в рамках модуля «Теория цифровых автоматов», – абстрактный
синтез и составление таблиц программирования памяти.
Двумя главными узлами УА с программируемой логикой являются
узел формирования адреса следующей микрокоманды и постоянное
запоминающее устройство (ПЗУ) микрокоманд. Основной принцип
действия такого устройства управления состоит в следующем. Вся
совокупность микрокоманд, или управляющих слов, необходимых для
реализации всего списка команд процессора на каждом такте их
выполнения, хранится в ПЗУ микрокоманд (память микрокоманд).
При выполнении любой команды в каждом такте просто
извлекаются из ПЗУ уже готовые для использования очередные
микрокоманды. Каждая микрокоманда, или управляющее слово, имеет в
52

ПЗУ свой адрес. Таким образом, чтобы выбрать микрокоманду,


необходимую в очередном такте выполняемой команды, требуется
сформировать ее адрес. Эту функцию выполняет узел формирования
адреса следующей микрокоманды. Исходными данными для
формирования адреса МК помимо кода операции, логических условий из
операционного устройства и сигналов о прерываниях является также
информация, заключенная в адресной части предшествующей
микрокоманды. При этом адресная часть предшествующей микрокоманды
содержит в себе не только указания о том, как сформировать адрес
очередной микрокоманды, но в необходимых случаях и сам адрес, если по
условиям выполнения команды необходимо совершить переход в новую
область ПЗУ.
Микропрограммное устройство управления, как правило,
реализуется в виде отдельного блока по отношению к собственно
процессору и конструктивно выполняется на одной или нескольких
отдельных микросхемах. Это дает возможность выбрать для реализации
ПЗУ МК различные типы микросхем, различающихся как по организации,
так и по принципу программирования.
Для формирования адреса микрокоманды могут быть использованы
различные способы. Наиболее простым и естественным является так
называемый способ последовательной выборки, который заключается в
том, что при формировании адреса очередной микрокоманды к
содержимому счетчика микрокоманд, с помощью которого формируется
адрес, просто добавляется «1». Это предполагает, что очередная
микрокоманда находится в соседней ячейке ПЗУ. Однако использование
только одного этого способа не позволяет полностью решить задачу
микропрограммирования, так как не дает возможности совершать
переходы в микропрограммах. Кроме того, способ не позволяет повысить
эффективность использования ПЗУ микрокоманд путем повторного и
многократного использования отдельных участков микропрограмм.
Поэтому целесообразно способ последовательной выборки дополнить
другими способами:
- способ, реализующий условные и безусловные переходы
(ветвления) в микропрограммах;
53

- способ, реализующий переходы на микропрограммы;


- способ, реализующий многократное повторение отдельных
участков микропрограмм, т.е. циклы.
Микропрограммные управляющие автоматы функционально
разделяются на три вида:
1) автоматы с вертикальным микропрограммированием;
2) автоматы с горизонтальным микропрограммированием;
3) автоматы со смешанным микропрограммированием.
На рис. 11 приведена схема УА с вертикальным микропрограммным
управлением.
КОП Адрес РК

Преобразователи
Преобразователи кода
кода операции
операции
Флаги

Формирователь адреса следующей


..

микрокоманды

Блок
Регистр синхросигналов
Регистр адреса
адреса микрокоманд
микрокоманд

Память
Память микропрограмм
микропрограмм

Регистр микрокоманды
МО А

Дешифратор
микрокоманды

С0 С1 ... С m

Управляющие сигналы

Рис. 11. Схема устройства управления с вертикальным


микропрограммным управлением
При вертикальном микропрограммировании каждой микрооперации
присваивается определенный код, например, ее порядковый номер в
полном списке возможных микроопераций (МО). Этот код и заносится в
54

МО регистра микрокоманд. Микрооперационная часть микрокоманды


имеет минимальную длину, определяемую как двоичный логарифм от
числа управляющих сигналов (микроопераций). Такой способ
кодирования требует минимальных аппаратных затрат в памяти
микрокоманд на хранение микрокоманд, однако возникает необходимость
в дешифраторе микрокоманд, который должен преобразовать код
микрооперации в соответствующий сигнал управления. При большом
количестве сигналов управления дешифратор вносит значительную
временную задержку, а главное – в каждой микрокоманде указывается
лишь один сигнал управления, инициирующий только одну
микрооперацию, за счет чего увеличиваются длина микропрограммы и
время ее выполнения.
Типичная структура микропрограммного автомата с
горизонтальным микропрограммированием представлена на рис. 12. В
составе узла присутствуют: память микропрограмм, регистр адреса
микрокоманды, регистр микрокоманды, дешифратор микрокоманд,
преобразователь кода операции, формирователь адреса следующей
микрокоманды, формирователь синхроимпульсов.
При горизонтальном микропрограммировании под каждый сигнал
управления в микрооперационной части микрокоманды выделен один
разряд. Это позволяет в рамках одной микрокоманды формировать любые
сочетания сигналов управления, чем обеспечивается максимальный
параллелизм выполнения микроопераций. Кроме того, отсутствует
необходимость в декодировании микроопераций, и выходы регистра
микрокоманды могут быть непосредственно подключены к
соответствующим управляемым точкам вычислительной машины.
Широкому распространению горизонтального микропрограммирования
тем не менее препятствуют большие затраты на хранение
микрооперационных частей микрокоманд, причем эффективность
использования памяти микрокоманд получается низкой, так как при
большом числе микроопераций в каждой отдельной микрокоманде
реализуется лишь одна или несколько из них, т. Е. подавляющая часть
разрядов микрооперации содержит нули.
55

КОП Адрес РК

Преобразователи
Преобразователи кода
кода операции
операции
Флаги

Формирователь адреса следующей


..

микрокоманды

Блок
Регистр синхросигналов
Регистр адреса
адреса микрокоманд
микрокоманд

Память
Память микропрограмм
микропрограмм

Регистр микрокоманды
МО А
С 0 С1 ... С m

Управляющие сигналы

Рис. 12. Схема устройства управления с горизонтальным


микропрограммированием
Так как заданный управляющий автомат имеет горизонтальное
микропрограммирование, то за один такт он может вырабатывать
микрокоманду, содержащую несколько микроопераций, т. е. выполнение
микроопераций может быть совмещено во времени, если это возможно.
Структурная схема управляющего автомата с микропрограммным
управлением вертикально-горизонтального типа приведена на рис. 13.
Следует отметить, что вертикально-горизонтальный тип
микропрограммирования является одним из видов смешанного
микропрограммирования.
56

КОП Адрес РК

Преобразователи
Преобразователи кода
кода операции
операции
Флаги

Формирователь адреса следующей


..

микрокоманды

Блок
Регистр синхросигналов
Регистр адреса
адреса микрокоманд
микрокоманд

Память
Память микропрограмм
микропрограмм

Регистр микрокоманды
МО1 МО2 А

DMS DMS

С0(1) ... С 0(k) Сn(1) ... С n(k)

Управляющие сигналы

Рис. 13. Схема устройства управления с вертикально-горизонтальным


микропрограммированием
При вертикально-горизонтальном способе микропрограммирования
все множество сигналов управления (микроопераций) делится на
несколько групп, в каждую группу включаются сигналы управления
(микрооперации), наиболее часто встречающиеся вместе в одном такте.
Поле МО делится на две части: MO1 и МО2. Поле MO1, длина которого
равна максимальному количеству сигналов управления (микроопераций) в
группе, кодируется горизонтально, а поле МО2, указывающее на
принадлежность к определенной группе – вертикально. Со сменой группы
меняются и управляемые точки, куда должны быть направлены сигналы
управления из каждой позиции МО. Это достигается с помощью
демультиплексоров (DMS), управляемых кодом номера группы из поля
МО2.
57

Отметим общие особенности устройств управления с "гибкой"


логикой:
- широкий и практически неограниченный набор команд; внутреннее
программирование (на уровне микропрограмм), доступное пользователю,
что создает возможность эмуляции набора команд любой известной
системы или разработки новой системы команд, наилучшим образом
удовлетворяющей требованиям решения конкретной технической задачи;
- увеличение числа используемых микросхем, а также
необходимость программирования на уровне микропрограмм, что
является недостатком УУ с "гибкой" логикой по сравнению с УУ с
"жесткой" логикой;
- кроме того, УУ с "гибкой" логикой имеет меньшее быстродействие.
Проведенное краткое рассмотрение микропрограммного устройства
управления позволяет сделать некоторые обобщающие заключения. Как
следует из анализа структурных схемы и принципа действия, устройство
управления с гибкой логикой является достаточно сложным по своей
аппаратурной реализации и требует значительного количества
дополнительных микросхем. Кроме того, микропрограммирование такого
устройства управления, т.е. программирование ПЗУ микрокоманд,
является достаточно трудоемким процессом и требует большого внимания
и аккуратности.
Вместе с тем нельзя не отметить весьма широкие функциональные
возможности микропрограммного устройства управления, которые могут
оказаться особенно ценными при разработке специализированных
компьютерных систем.
58

3. КОНСПЕКТ ЛЕКЦИЙ. РАЗДЕЛ 2. АРИФМЕТИЧЕСКИЕ


ОСНОВЫ ЦИФРОВЫХ АВТОМАТОВ

Комплексная цель разд. 2


Комплексная цель разд. 2 «Арифметические основы цифровых
автоматов»: научиться разработке алгоритмов выполнения арифме-
тических операций для чисел в форме с фиксированной и плавающей
запятой.
3.1. План лекций раздела 2
Лекция 6. Прямой, обратный и дополнительный коды,
модифицированный код. Представления чисел в форме с фиксированной
запятой. Выполнение операций сложения и вычитания двоичных чисел
процессора с фиксированной запятой.
Цели и задачи лекции: повторить формы представления чисел в
ЭВМ, в том числе с фиксированной запятой, и выполнение операций
сложения и вычитания в ЭВМ.
План лекции: позиционные системы счисления. Прямой, обратный и
дополнительный коды, модифицированный код. Структура цифрового
процессора. Понятие разрядной сетки. Представления чисел в форме с
фиксированной запятой. Структурная схема процессора с фиксированной
запятой. Особенности микропрограммирования при выполнении
алгоритмов арифметических операций сложения, вычитания для
двоичных кодов.
Ключевые термины: система счисления, фиксированная запятая,
арифметические операции, сложение, вычитание.
Выводы по теме: знать формы представления чисел с
фиксированной запятой (в прямом, обратном и дополнительном кодах).
Навыки синтеза алгоритмов арифметических операций сложения и
вычитания для процессора с фиксированной запятой.

Лекция 7. Выполнение операции умножения в прямом, обратном и


дополнительном кодах с фиксированной запятой.
59

Цели и задачи лекции: освоение этапов микропрограммирования при


выполнении алгоритмов операции умножения процессора с
фиксированной запятой.
План лекции: особенности микропрограммирования при
выполнении алгоритмов операции умножения процессора с
фиксированной запятой. Выполнение операций в прямом, обратном и
дополнительном кодах. Отличительные особенности выполнения
операции для целых и дробных чисел. Структура операционного автомата
умножителя с фиксированной запятой.
Ключевые термины: арифметические операции, умножение,
фиксированная запятая.
Выводы по теме: Уметь строить граф-схемы алгоритмов умножения
в прямом, обратном и дополнительном кодах. Структурный синтез
умножителя с фиксированной запятой.

Лекция 8. Микропрограммы выполнения операции деления


двоичных целых и дробных чисел для процессора с фиксированной
запятой.
Цели и задачи лекции: освоение этапов микропрограммирования при
выполнении алгоритмов арифметических операций деления процессора с
фиксированной запятой. Деление с восстановлением остатка и без
восстановления остатка.
План лекции: процедура написания микропрограмм выполнения
операции деления двоичных чисел для процессора с фиксированной
запятой. Отличительные особенности выполнения операции для целых и
дробных чисел.
Ключевые термины: деление, фиксированная запятая.
Выводы по теме: навыки синтеза алгоритмов деления чисел с
фиксированной запятой в прямом, обратном и дополнительном кодах.

Лекция 9. Представление чисел в форме с плавающей запятой.


Процедура написания микропрограмм сложения и вычитания, умножения
и деления двоичных чисел для процессора с плавающей запятой. Условия
и процедура нормализации данных.
60

Цели и задачи лекции: повторение формата данных представленных


в ЭВМ с плавающей запятой. Освоение этапов микропрограммирования
при выполнении алгоритмов арифметических операций сложения и
вычитания, умножения и деления процессора с плавающей запятой.
План лекции: представление чисел в форме с плавающей запятой.
Отличительные особенности структурной схемы процессора с плавающей
запятой.
Условия и процедура нормализации данных. Процедура написания
микропрограмм сложения и вычитания, умножения и деления двоичных
чисел для процессора с плавающей запятой.
Ключевые термины: умножение, деление, сложение, вычитание,
плавающая запятая.
Выводы по теме: навыки синтеза граф-схем алгоритмов
арифметических операций сложения и вычитания, умножения и деления
процессора с плавающей запятой.
3.2. Представление двоичных чисел в форме с фиксированной
запятой
При представлении чисел с фиксированной запятой положение
запятой (точки) закрепляется в определенном месте относительно
разрядов числа и сохраняется неизменным для всех чисел [6].
Для кодирования знака двоичных чисел используется знаковый
разряд («0» для положительных чисел и «1» – для отрицательных).
На рис. 14 в качестве примера показана разрядная сетка ЭВМ в
формате 8-разрядного машинного слова для представления
соответственно целого двоичного числа ( X фЦ. з. = +11000) и дробного числа
( X фД. з. = +0,11), представленных с фиксированной запятой.
Если для представления числа со знаком выделено n разрядов, то
диапазон представления целых двоичных чисел в этом случае
определяется выражением

1  X фЦ. з.  2n1  1.
61

Диапазон представления в ЭВМ дробных двоичных чисел будет


приближенно определяться неравенством 0  X фдр. з. .  1 .

Веса разрядов
Знак 26 25 24 23 22 21 20

0 0 0 1 1 0 0 0

Веса разрядов
Знак 2-1 2-2 2-3 2-4 2-5 2-6 2-7

0 1 1 0 0 0 0 0

Рис. 14. Представление в ЭВМ целых (а) и дробных (б) чисел с


фиксированной запятой
3.3. Кодирование отрицательных чисел в ЭВМ
Наиболее широко распространены три способа представления чисел
в зависимости от их знаков или кодирования чисел в ЭВМ: прямой,
обратный и дополнительный коды [5].
Прямой код чисел соответствует обычной записи чисел со своим
знаком:
А1 = +0,0101, [А1]пр = 00101;
А2 = – 0,0101, [А2]пр = 10101.
Для целых чисел в двоичной системе счисления:
А1 = + 1100, [А1]пр = 01100;
А2 = – 1100, [А2]пр = 11100.
Нуль в прямом коде имеет два изображения:
+ 0 = 000…00 = [0]пр,
– 0 = 100…00 = [0]пр
Прямой код используется в ЭВМ для выполнения арифметических
операций над положительными числами, для записи положительных и
отрицательных чисел в ЗУ, а также в устройствах ввода и вывода.
62

Для упрощения выполнения арифметических операций в ЭВМ


отрицательные числа представляются в обратном и дополнительном
кодах.
Обратный код. Чтобы представить двоичное отрицательное число в
обратном коде, нужно поставить в знаковый разряд единицу, а во всех
значащих разрядах единицы заменить нулями, а нули – единицами:
А = – 0,1010. [А]обр = 10101.
Примеры обратного кода отрицательных дробного и целого чисел:

A1др  0,11001 ; [ A1др ]пр  111001 ; [ A1др ]обр  100110 ,

A2ц  10101 ; [ A2ц ]пр  110101 ; [ A2ц ]обр  101010.

Дополнительный код. Для представления отрицательного числа в


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

пр  1110010 ; [ A]доп  1001110 ,


[ A]др др

[ A]цпр  1001110 ; [ A]цдоп  1110010 ,

[ A]цпр  1001001 ; [ A]цдоп  1110111 .


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

Примеры:
[A]пр = 101010; [A]обр = 110101; [A]доп =110110,
[A]пр =111101; [A]обр = 100010; [A]доп =100011.
Отрицательный нуль изображается:
- в обратном коде [–0]обр = 111111…11;
- в дополнительном коде отрицательный нуль отсутствует, т.е. код
нуля в дополнительном коде соответствует коду нуля положительного
числа.
Важно запомнить правило: положительные числа в прямом,
обратном и дополнительных кодах имеют одинаковую форму записи.
Модифицированный код. При выполнении арифметических
операций в ЭВМ иногда возникает необходимость для представления
знака числа использовать не один, а два знаковых разряда. При этом знак
плюс обозначается – 00, а знак минус – 11. Прямой, обратный или
дополнительный коды при машинном представлении числа, в котором для
знака выделяется два разряда, называются модифицированными.
Примеры:
[A1]пр. = 1 01001, [A1]пр. мод. = 11 01001,
[A1]обр. = 1 10110, [A1]обр. мод. = 11 10110,
[A3]доп. = 1 10111, [A3]доп. мод. = 11 10111.
3.4. Сложение и вычитание двоичных чисел, представленных в форме
с фиксированной запятой
Операция сложения двух чисел (целых иди дробных) с
фиксированной запятой с произвольными знаками может выполняться в
ЭВМ в прямых кодах или сводится к арифметическому сложению кодов
чисел путем применения для представления отрицательных чисел
обратного или дополнительного кодов, преимущественно
дополнительного.
При сложении чисел, представленных в прямых кодах,
анализируются знаки слагаемых. Если слагаемые имеют одинаковые
знаки, производится поразрядное суммирование их модулей в
соответствии с правилами сложения двоичной арифметики (А+В):
64

А В А+В
0 0 0
0 1 1
1 0 1
1 1 10
Знаковые разряды участвуют в сложении точно так же, как и
цифровые разряды. При возникновении переноса из разряда знака
единица переноса отбрасывается.
Если результат сложения превышает максимально возможное число
для заданной разрядной сетки, т.е. происходит выход полученного
результата за пределы разрядной сетки в сторону знакового разряда, то
имеет место переполнение (значащий разряд становится знаковым,
результат операции неверный).
Способы выявления переполнения.
1. Для представления чисел применяют модифицированный
код. На переполнение при сложении двух чисел указывают несовпадение
цифр в знаковых разрядах результата. Комбинация 01 соответствует
переполнению положительного результата, а комбинация 10 –
отрицательного.
Пример 1. Найти сумму двух отрицательных машинных чисел с
фиксированной запятой в формате шесть двоичных разрядов со знаком,
представленных в дополнительном коде:
А1 доп = 101001 (целое десятичное число «–23»);
А2 доп = 101110 (целое десятичное число «–18»).
Для приведенного примера суммируем числа в дополнительном
модифицированном коде
+ 11 01001
11 01110
10 10111.
Комбинация 10 в знаковых разрядах результата является признаком
отрицательного переполнения результата.
Результат операции неверный и дальнейшее решение задачи не
имеет смысла. ЭВМ вырабатывает сигнал S = 1 (Останов), если сигнал
S = 0, то переполнения нет, результат верный и можно продолжить
решение задачи.
65

Если обозначить знаковые разряды: младший разряд – зн1, старший


разряд – зн2, то значение сигнала S будет вырабатываться по формуле
1, если зн1  зн2,
S 
0, если зн1  зн2.
Если оба слагаемых из того же примера будут положительными
числами
+ 00 10111 (целое число «+23»)
00 10010 (целое число «+18»)
01 01001,
то комбинация 01 в знаковых разрядах указывает на переполнение
положительного результата суммирования.
2. Анализируются два переноса – из старшего значащего разряда в
знаковый (p1) и из знакового разряда (p2). Если есть оба переноса или нет
ни одного переноса, то переполнения нет, если есть только один из
переносов, то переполнение. Сигнал S («Останов») будет вырабатываться
по формуле
1, если p1  p 2,
S 
0, если p1  p 2.
В современных моделях ЭВМ широко используется второй способ
определения переполнения разрядной сетки результата суммирования.
3. Если отсутствует возможность обнаружения переноса из старшего
значащего разряда в знаковый, например, в случае аппаратной реализации
на многоразрядных сумматорах, то можно использовать способ на основе
анализа знаковых разрядов слагаемых и результата. Переполнение не
возникает, если знаки слагаемых разные, или если знаки слагаемых и знак
результата одинаковые. Если знаки слагаемых одинаковые и не совпадают
со знаком результата, то возникло переполнение.
1, если зн1  зн2  зн( рез ),
S 
0, если зн1  зн2 или зн1  зн2  зн( рез ).
Алгоритм алгебраического суммирования чисел с фиксированной
запятой, заданных в прямом коде (для представления отрицательных
чисел будем использовать дополнительный код):
66

1) положительные числа остаются без изменения (в прямом коде),


отрицательные числа переводятся в дополнительный код;
2) суммируются полученные коды чисел, причем знаковый разряд
суммируется как значащий;
3) анализируется результат (сумма) на переполнение
(анализируем переносы из старшего значащего разряда и из
знакового): если из двух есть только один перенос, то
вырабатывается сигнал S = 1 и ЭВМ останавливает решение
задачи;
4) если переполнения нет (имеет место два переноса или
отсутствуют оба переноса), то анализируется результат по
знаковому разряду: 0 – результат в прямом коде, 1 – результат
в дополнительном коде.

Пример 2. Заданы числа. Выполнить операцию сложения (А1+ А2).


[А1]пр = 0 0100,
[А2]пр = 1 1010, [А2]доп = 1 0110.
Суммируем [А1]пр + [А2]доп:
0 0100пр
+
1 0110доп
1 1010доп.
Переполнения нет, так как отсутствуют оба анализируемых
переноса. Результат отрицательный (в знаковом разряде 1) и представлен
в дополнительном коде:
[А1]пр + [А2]доп = 11010доп = (10110)2пр = (–6)10.
Проверка: (+4) + (–10) = (–6).

Пример 3. Заданы числа. Выполнить операцию сложения (А1+ А2).


[A1]пр = 1 0110, [A1]доп = 1 1010.
[A2]пр = 1 1001, [A2]доп = 1 0111.
Суммируем [А1]доп + [А2]доп:
67

+ 1 1010доп
1 0111доп
1 0001доп.
Единица переноса из знакового разряда в результате игнорируется.
Результат отрицательный и представлен в дополнительном коде.
Переполнения нет, так как присутствуют оба анализируемых переноса.
Результат: [Aрез]доп = 1 0001; [Aрез]пр = 1 1111.
Проверка: (–6) + (–9) = (–15).

Пример 4. Заданы числа. Выполнить операцию сложения (А1+ А2).


[A1]пр = 0 0111,
[A2]пр = 0 1110.
Суммируем [А1]пр + [А2]пр:
0 0111пр
+
0 1110пр
1 0101пр.
Переполнение есть, так как имеется только один из анализируемых
переносов. Результат неверный. Вырабатывается сигнал «Останов» S = 1.
Операция вычитания чисел (целых или дробных), представленных
с фиксированной запятой, сводится в ЭВМ к алгебраическому сложению
по формуле
[A1]пр – [A2]пр = [A1]пр + [–A2]пр.
Знак вычитаемого, представленного в прямом коде, искусственно
инвертируется. После этого выполняется операция алгебраического
сложения уменьшаемого и вычитаемого по вышерассмотренному
алгоритму с использованием дополнительного кода для представления
отрицательных слагаемых.
Последовательность действий при выполнении в ЭВМ операции
вычитания в дополнительных кодах (числа на вычитание поступают в
прямых кодах).
1. Знаковый разряд вычитаемого, представленного в прямом
коде, инвертируется.
68

2. Положительные числа остаются в прямом коде,


отрицательные представляются в дополнительном коде.
3. Суммируются арифметически коды уменьшаемого и
вычитаемого.
4. Анализируется результат арифметического суммирования
кодов на переполнение и в случае его отсутствия
вырабатываются признаки результата (переполнение, равен
0, отрицательный, положительный).

Пример 5. Выполнить операцию вычитания [A1]пр – [A2]пр. Заданы


числа:
[A1]пр = 0 1010;
[A2]пр = 0 0111.
[– A2]пр = 1 0111.
Уменьшаемое остается без изменения, так как оно положительное, а
вычитаемое (оно отрицательное) представляем в дополнительном коде:
[– A2]доп = 1 1001.
Алгебраическое суммирование [A1]пр + [– A2]доп:

+0 1010пр
1 1001доп
0 0011пр.
Переполнения нет, так как присутствуют оба анализируемых
переноса. Результат положительный (в знаковом разряде результата 0) и в
прямом коде.
Проверка: (+10) – (+7) = (+3).

Пример 6. Найти разность чисел [A1]пр – [A2]пр. Заданы числа:


[A1]пр = 1 0111, [A1]доп = 1 1001;
[A2]пр = 0 1110, [–A2]пр = 1 1110;
[–A2]доп = 1 0010.
69

Алгебраическое суммирование уменьшаемого и вычитаемого в


дополнительном коде:
+1 1001доп
1 0010доп
0 1011доп.
Имеет место переполнение, так как присутствует только один из
анализируемых переносов. Результат неверный. Вырабатывается сигнал
«Останов» S = 1.
3.5. Алгоритм умножения двоичных чисел в прямых кодах в форме с
фиксированной запятой
Правила для умножения методом уголка целых и дробных чисел
можно записать следующим образом:
1) Z = X * Y = Сл1 + Сл2 + … + Слn,
т. е. произведение Z равно сумме слагаемых Слi (i=1, 2, …n), где n –
количество числовых разрядов;
00 … 00, если разряд множителя равен 0,
2)Сл𝑖 = {
множимому, если разряд множителя равен 1;
3) Слагаемые Слi и Слi+1 сдвинуты относительно друг друга на
один разряд.
Приведенные правила (1-3) позволяют сформулировать алгоритм
пошагового вычисления произведения Z путем отыскания на каждом i-м
шаге частичного произведения ЧПi.
При этом принимается, что на начальном шаге ЧП0 = 0. Число шагов
определяется количеством числовых разрядов множителя.
В общем случае этому алгоритму соответствуют формулы:

𝑍пр = [𝑋 ∗ 𝑌]пр = |𝑋|пр ∗ |𝑌′ | ,


{ пр
𝑆𝑖𝑔𝑛 𝑍 = 𝑆𝑖𝑔𝑛 𝑋⨁𝑆𝑖𝑔𝑛 𝑌.
Поясним приведенные формулы. Символ «’» означает, что при
вычислении произведения Z рассматриваются только числовые разряды
множителя. В случае использования прямых кодов сомножители (X и Y)
должны быть представлены модулями.
Алгоритм можно компактно сформулировать таким образом:
70

1) сумма частичных произведений ΣЧП0 = 0;


2) анализируется младший разряд множителя Yi:
- если младший разряд множителя |Y|i = 1, то к предыдущему
значению суммы частичных произведений ΣЧПi прибавляется множимое
|𝑋|;
- если младший разряд множителя |Y|i = 0, то предыдущее значение
суммы частичных произведений ΣЧПi не изменяется (прибавление
множимого не выполняется);
3) сдвигается полученная или оставшаяся без изменения сумма
частичных произведений ΣЧПi вправо на 1 разряд. Одновременно
сдвигается множитель |Y|i вправо на 1 разряд;
4) пункты 2) и 3) циклически повторяются n раз, где n – число
значащих разрядов множителя |Y|;
5) сумма частичных произведений сдвигается вправо на 1 разряд для
правильной постановки произведения в двойной разрядной сетке.

Пример 7. Умножение в прямом коде Zпр = Апр * Впр.


Апр = 10110 = (–6)10;
Впр = 11101 = (–13)10.
В этом случае перемножаются модули чисел, а произведению
присваивается знак «плюс», если знаки сомножителей одинаковы, или
знак «минус», если знаки разные.
|А| =00110; |В| = 01101.
Перемножаем числа целые, следовательно, произведение должно
быть представлено двойной (2n) разрядностью.
71

*00110
01101
0000000000 – ΣЧП0;
+ 00110 – прибавление множимого, разряд множителя равен 1;
0011000000 – ΣЧП1;
0001100000 – сдвиг вправо на 1 разряд ΣЧП1;
0000110000 – сдвиг вправо на 1 разряд ΣЧП2;
+ 00110 – прибавление множимого, разряд множителя равен 1;
0011110000 – ΣЧП3;
0001111000 – сдвиг вправо на 1 разряд ΣЧП3;
+ 00110 – прибавление множимого, разряд множителя равен 1;
0100111000 – ΣЧП4;
0010011100 – сдвиг вправо на 1 разряд ΣЧП4;
0001001110 – дополнительный сдвиг вправо на 1 разряд после
умножения на все значащие разряды множителя для правильной
постановки результата в формате 2n разрядов (или умножение на
знаковый разряд).
Одновременно с умножением на знаковый разряд определяется знак
произведения, как «сумма по модулю 2» знаков сомножителей: Zзнак = 0.
Произведение А*В = (0001001110)2пр = (+1001110)2 = (78)10.
Проверка: (–6)10 * (–13)10 = (78)10.

Рассмотрим одну их возможных структур операционного автомата


(ОА) для выполнения умножения операндов в прямых кодах (рис. 15).
72

Шина У

B
Sign B

Шина Z Т Sign B RGB Bi


B(n-1), ……………….………….….…, B3, B2, B1, B0
C

RGSm
(2n-1), ……………….. ..…, 3, 2, 1, 0
Sign C

=1 Sm
ΣЧП(2n-1), ………... ..…, ΣЧП1, ΣЧП0

CT

Т Sign A RGA
A(n-1), ……………….…… …, A3, A2, A1, A0

Sign A A С
Шина Х

Рис. 15. Структурная схема ОА для выполнения операции умножения


Поясним значение некоторых блоков ОА. Для приема модулей
операндов А и В используются регистры RG A и RG B. Следует обратить
внимание, что в этих регистрах хранятся только значащие разряды чисел
(А0, А1, А2, …., Аn-1 и В0, В1, В2, …., Вn-1). Для хранения знаков операндов
Sign A и Sign B используются триггеры Т Sign A и Т Sign B. СТ –
n-разрядный счетчик циклов. Сумматор Sm предназначен для получения
суммы частичных произведений ΣЧПi, где i=0…(n-1). Для хранения
полученной суммы служит регистр сумматора RG Sm.
На рис. 16 представлена блок-схема алгоритма выполнения операции
умножения в прямых кодах. Рассмотрим назначение операторных и
условных вершин алгоритма.
Вершина 2. Здесь выполняется запись операндов А и В с шин Х и Y
в RGA и RGB; устанавливаются начальные значения регистра сумматора
73

(RG Sm) и счетчика циклов СТ; знаковые разряды операндов


записываются в триггеры Т SignA и Т SignB.

1 Начало

RG A:= Х; RG B:= Y;
RG Sм:= 0; CT:= n;
2
Т Sign A:= Sign A;
Т Sign B:= Sign B.

3 0
B0 = 1?

4 RG Sм := RG Sм + RG A

RG Sм := R1 (RG Sм);
5 RG B := R1 (RG B);
CT := CT - 1.

0
6 CT = 0?
1
7 Sign Z := T Sign A + T Sign B

8 Z := RG Sм

9 Конец

Рис. 16. Блок-схема алгоритма операции умножения в прямых кодах


Вершина 3. Выполняется анализ значащего младшего разряда
множителя В0. Если В0=1, то переходим на вершину 4; если В0=0, то
переходим на вершину 5.
74

Вершина 4. К содержимому регистра сумматора RG Sm


прибавляется значение RG А.
Вершина 5. Выполняется сдвиг регистров RG Sm и RG В вправо на
один разряд и одновременно уменьшается значение счетчика циклов на
единицу.
Вершина 6. Проверяется значение счетчика циклов. Если СТ = 0, то
переходим к вершине 7, если СТ ≠ 0, то возвращаемся на вершину 3.
Вершина 7. Здесь вычисляется значение знака произведения Z как
«сумма по модулю 2» знаков операндов, которые хранятся в триггерах Т
SignA и Т SignB.
Вершина 8. Результат операции умножения выдается на шину
результата Z.
3.6. Алгоритм умножения двоичных чисел в дополнительных кодах в
форме с фиксированной запятой
Алгоритм умножения в дополнительных кодах основан на формуле
м
𝑍доп = [𝑋 ∗ 𝑌]доп = 𝑋доп м
∗ 𝑌доп + (𝑆𝑖𝑔𝑛 𝑌 ∗ [−𝑋]м
доп ).

Особенности алгоритма умножения чисел в дополнительных кодах:


1) рассмотренный ранее алгоритм умножения двоичных чисел в
прямых кодах сохраняется, но сомножители должны быть
представлены непосредственно дополнительными модифициро-
ванными кодами операндов;
2) при использовании дополнительных кодов частичное
произведение ЧПi получается за счет модифицированного сдвига
кода ΣЧПi-1 в отличие от простого (арифметического) сдвига для
случая использования прямых кодов. Модифицированный сдвиг
заключается в размножении знакового разряда;
3) если множитель отрицателен (SignY=1), то на дополнительном
(n+1)º-м шаге к частичному произведению ЧПi прибавляется
корректирующая поправка в виде дополнения числа Х, т. е.
дополнительного кода множимого, взятого с противоположным
знаком.
Поясним работу алгоритма на примере.
75

Пример 8. Умножение в дополнительном коде Zдоп = Адоп * Bдоп.


Апр = (+3)10 = 0 011пр = 0 011доп = 00 011мдоп;
Bпр = (–5)10 = 1 101пр = 1 011доп = 11 011мдоп.
Так как Bпр<0, то на последнем шаге требуется ввод
корректирующей поправки К = [-A]мдоп.
Для отыскания коэффициента К необходимо выполнить
последовательность преобразований:
[A]мпр → [-A]мпр → [-A]мдоп. Таким образом, получается:
00 011 → 11 011 → 11 101. Отсюда К = [-A]мдоп = 11 101.
Перемножаем числа целые, следовательно, произведение должно
быть представлено двойной (2n) разрядностью.
* 00 011
00 011

00 000000 – ΣЧП0;
+ 00 011 – прибавление множимого, разряд множителя равен 1;
00 011000 – ΣЧП1;
00 001100 – модифицированный сдвиг вправо на 1 разряд ΣЧП1;
+ 00 011 – прибавление множимого, разряд множителя равен 1;
00 100100 – ΣЧП2;
00 010010 – модифицированный сдвиг вправо на 1 разряд ΣЧП2;
00 001001 – модифицированный сдвиг вправо на 1 разряд ΣЧП3;
+ 11 101 – корректирующая поправка К = [-A]мдоп;
11 110001 – результат умножения Zмдоп.
Произведение Амдоп* Вмдоп = (11 110001)доп = (11 001111)пр = (-15)10.
Проверка: (+3)10 * (-5)10 = (-15)10.

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


кодах нецелесообразно. Отличия от рис. 5 только в вершине 7, где вместо
вычисления знака результата следует к содержимому регистра RG Sm
прибавить корректирующую поправку К = [-A]мдоп.
76

3.7. Алгоритм умножения двоичных чисел с фиксированной запятой


в обратных кодах
Основой построения алгоритма является формула:
−𝑛
м
𝑍обр = [𝑋 ∗ 𝑌]обр = 𝑋обр м
∗ 𝑌обр + (𝑆𝑖𝑔𝑛 𝑌 ∗ ( [−𝑋]м
обр + 2 ∗ 𝑋обр )).
В целом алгоритм умножения двоичных чисел сохраняется и в
случае представления операндов непосредственно обратными
модифицированными кодами. Однако, при наличии отрицательного
множителя выполняется коррекция частичного произведения ЧПn с
помощью двух корректирующих поправок:
- К1 = [-Х]мобр – обратный код множимого, взятого с
противоположным знаком. Данный код получают путем инвертирования
всех разрядов (включая и знаковый) в исходном коде множимого Хмобр;
- К2 = 2-n * Хмобр – обратный код, полученный модифицированным
сдвигом вправо на n разрядов заданного обратного кода множимого Хмобр.
В результате такого сдвига код К2 имеет удвоенное количество числовых
разрядов, равное 2n.
Такое же количество разрядов должны содержать коды частичных
произведений и слагаемые Слi = Хмобр. В этом особенность умножения
обратных кодов сомножителей.
Обратите внимание.
Независимо от того является ли множимое дробным или целым
числом, поступают одинаковым образом при формировании обратного
кода множимого Хмобр с удвоенным количеством числовых разрядов, а
именно: к коду Хмобр, содержащему n числовых разрядов, добавляют
младшую группу (также из n числовых разрядов), причем значения этих
разрядов равны «1», если множимое Х<0 и равны «0», если Х>0.
Например,
Хмобр = 11.101 → Хмобр = 11.101 111;
Хмобр = 00.101 → Хмобр = 00.101 000.
Младшую группу разрядов (подчеркнуто выше) обязательно
необходимо учитывать при вычислении ΣЧПi = ΣЧПi-1 + Слi.
Следовательно, Smобр будет содержать 2n числовых разрядов, что
77

потребует больших аппаратных затрат в сравнении с использованием Smпр


и Smдоп для алгоритмов умножения прямых или дополнительных кодов.

Пример 9. Умножение в обратных кодах Zобр = Аобр * Bобр.


Апр = (–3)10 = 1 011пр = 1 100обр = 11 100мобр = 11 100 111;
Bпр = (–5)10 = 1 101пр = 1 010обр = 11 010мобр.
Так как Bпр<0, то на последнем шаге требуется ввод
корректирующих коэффициентов К1 = [-А]мобр и К2 = 2-n * Амобр. Найдем
коэффициенты К1 и К2:
К1 = [-А]мобр = 00. 011 = 00.011 000;
К2 = 2-n * Амобр = 11. 111 100.
* 11 100 111
11 010
00 000 000 – ΣЧП0;
+ 11 100 111 – прибавление множимого, разряд множителя равен 1;
11 100 111 – ΣЧП1;
11 110 011 – модифицированный сдвиг вправо на 1 разряд ΣЧП1;
11 111 001 – модифицированный сдвиг вправо на 1 разряд ΣЧП2;
+ 00 011 000 – прибавление К1 (так как Bпр<0);
1 00 010 001 – ΣЧП3 после 1-й коррекции;
|________↑ – циклическое сложение с «1»;
00 010 010
+ 11 111100 – прибавление К2;
1 00 001110 – ΣЧП4 после 2-й коррекции;
|________↑ – циклическое сложение с «1»;
00 001111 – результат умножения Zмобр.
Произведение Амдоп* Вмдоп = (00 001111)обр = (00 001111)обр = (+15)10.
Проверка: (–3)10 * (–5)10 = (+15)10.
Однако, учитывая простоту перехода от прямого кода к обратному
коду и наоборот, можно построить алгоритм без внесения
корректирующих поправок.
78

Алгоритм умножения операндов в обратных кодах без


корректирующих поправок.
1. Сомножители представляются в обратных кодах.
2. Исходное значение суммы частичных произведений ΣЧПi = 0.
3. - если знак множителя Sign Y = 1 и анализируемая цифра множителя
Yi=0, то к сумме частичных произведений ΣЧПi прибавляется
инверсия обратного кода множимого (𝑿 ̅ обр ).
- если знак множителя Sign Y = 0 и анализируемый i-разряд Yi=1, то
к сумматору частичных произведений ΣЧПi прибавляется обратный код
множимого Хобр.
- во всех остальных случаях прибавления не производится.
4. Сумма частичных произведений и множитель сдвигаются вправо на
один разряд. Сдвиг модифицированный.
5. Пункты 3 и 4 повторяются для всех разрядов множителя, начиная с
младшего.
6. Произведение получается в обратном коде, если sign X ≠ sign Y, и в
прямом коде, если sign X = sign Y.
Пример 10. Умножение в обратных кодах Zобр = Аобр * Bобр.
Апр = (–3)10 = 1 011пр = 1 100обр = 11 100мобр;
Bпр = (+5)10 = 0 101пр = 0 101обр = 00 101мобр.
* 11 100
00 101
00 000 – исходное значение ΣЧП0;
+ 11 100 – прибавление множимого Хобр, т.к. 1-й разряд Yобр равен 1;
11 100 – сумма частичных произведений ΣЧП1;
11 110 (0) – модифицированный сдвиг вправо на 1 разряд ΣЧП1;
11 111 (0) – модифицированный сдвиг вправо на 1 разряд ΣЧП2;
+ 11 100 – прибавление множимого Хобр, т.к. 3-й разряд Yобр равен 1;
1 11 011 – сумма частичных произведений ΣЧП3;
|_____↑ – циклическое сложение с «1»;
11 100
11 110 (0) – модифицированный сдвиг вправо на 1 разряд ΣЧП3;
79

Цифры «0» вынесенные в скобки и выделенные жирным шрифтом


возникли в результате сдвигов вправо, они должны быть сохранены и
записываются в младшую часть результата снизу вверх.
Результат Zобр = 11 110000обр = 11 001111пр = (-15)10 .
Проверка: (–3)10 * (+5)10 = (–15)10.
Обратите внимание. Во время сложения по данному алгоритму
возможны ситуации, когда модифицированные знаковые разряды чисел
равны «10» и «01». «10» – случай отрицательного переполнения, которое
ликвидируется после сдвига вправо. «01» – случай положительного
переполнения, которое ликвидируется после сдвига вправо.
Граф-схема алгоритма (ГСА) умножения в обратных кодах с
фиксированной запятой изображена на рис. 17.
Вершина 2. Здесь выполняется запись операндов А и В с шин Х и Y
в RGA и RGB; устанавливаются начальные значения регистра сумматора
(RG Sm) и счетчика циклов СТ; знаковые разряды операндов
записываются в триггеры Т SignA и Т SignB.
Вершина 3. Выполняется анализ знакового разряда множителя В
(sign B) и переход к условным вершинам 4.
Вершина 4. Анализируется младший значащий разряд множителя В0.
И выполняется переход на вершину 5 или 6.
Вершина 5. К содержимому регистра сумматора RG Sm
прибавляется инверсное значение регистра А (𝑅𝐺 А).
Вершина 6. К содержимому регистра сумматора RG Sm
прибавляется значение RGA.
Вершина 7. Выполняется сдвиг регистров RG Sm и RG В вправо на
один разряд и одновременно уменьшается значение счетчика циклов на
единицу.
Вершина 8. Проверяется значение счетчика циклов. Если СТ = 0, то
переходим к вершине 9, если СТ ≠ 0, то возвращаемся на вершину 3.
Вершина 9. Результат операции умножения выдается на шину
результата Z.
80

1 Начало

RG A:= Х; RG B:= Y;
RG Sм:= 0; CT:= n;
2
Т Sign A:= Sign A;
Т Sign B:= Sign B.

3 1 0
SignB=1?

0 1 0
4 B0 = 1? B0 = 1?

1
RG Sм := RG Sм + RG A
5

6 RG Sм := RG Sм + RG A

RG Sм := R1 (RG Sм);
7 RG B := R1 (RG B);
CT := CT - 1.

8 0
CT = 0?
1
9 Z := RG Sм

10 Конец

Рис. 17. Блок-схема алгоритма операции умножения в обратных кодах


81

3.8. Алгоритмы деления двоичных чисел с фиксированной запятой


Алгоритмы деления, реализуемые процессором, позволяют
определить цифры (разряды) частного путем выполнения одинаковых
действий на каждом шаге алгоритма. Деление в ЭВМ обычно сводится к
выполнению последовательности вычитаний делителя сначала из
делимого, а затем из образующихся в процессе деления частичных
остатков и их сдвига.
Различают алгоритмы деления с восстановлением и без
восстановления остатка отдельно для дробных и целых чисел. Связано это
с тем, что процессор с фиксированной запятой работает только с данными,
представленными либо только дробными, либо только целыми числами.
В алгоритме деления с восстановлением остатка используется
большее число операций сложения и вычитания, поэтому в ЭВМ, как
правило, используется алгоритм деления без восстановления остатка.
Z = Xпр : Yпр.
Деление для компьютера является весьма трудной операцией.
В ЭВМ, оперирующих с дробными числами c фиксированной
запятой, деление дробных чисел возможно только при выполнении
условия: делимое по модулю меньше делителя. В противном случае
частное равно или больше единицы и выходит за пределы разрядной
сетки.
Условие возможности деления дробных чисел:

X  Y  0.

В ЭВМ, оперирующих с целыми числами c фиксированной запятой,


возникает необходимость представления делимого двойной разрядной
сеткой, т.е. 2n разрядами, делитель и частное имеют n разрядов со знаком.
Условие возможности деления целых чисел:
X  Y  2n1  0. X  ( Y )доп  2n1  0.
82

Перед началом деления делимое и делитель проверяются на


равенство нулю. Если обнаруживается нулевой операнд, то деление не
производится.
При X = 0 частное принимается равным нулю, при Y = 0
вырабатывается требование прерывания исполняемой программы, т. е.
остановки решения некорректно сформулированной задачи.
3.8.1. Алгоритм деления чисел в прямом коде с восстановлением
остатка
1. Берутся модули от делимого /X/ и делителя /Y/. Модуль
делимого заносится в сумматор Sm, а модуль делителя – в RG
А. Знаковые разряды хранятся отдельно в триггерах.
2. Проверка на возможность выполнения операции деления. Из
делимого вычитается делитель, если результат Z0≥0, то частное
переполняет разрядную сетку и деление в ЭВМ с
фиксированной запятой в этом случае невозможно. Если Z<0,
то переполнения нет. Деление также невозможно, если /Y/=0
(делитель равен нулю).
3. Исходное значение частичного остатка (О0) полагается равным
делимому.
4. Частичный остаток Оi удваивается сдвигом влево на один
разряд.
5. Из сдвинутого частичного остатка Оi вычитается делитель и
анализируется знак полученного результата.
6. Если полученный остаток Оi≥0, то очередной цифре частного
присваивается значение «1» , если полученный остаток меньше
нуля (Оi<0), то очередной цифре частного присваивается
значение «0». В последнем случае значение остатка
восстанавливается до того, каким оно было до последнего
вычитания. С этой целью к остатку прибавляется модуль
делителя /Y/.
7. Пункты 4-6 последовательно выполняются до получения
требуемого количества цифр частного.
8. Частному Z присваивается знак как «сумма по модулю 2»
знаков операндов X и Y: Sign Z = Sign X Sign Y.
83

Пример 11. Деление с восстановлением остатка Zобр = Аобр : Bобр.


Заданы следующие дробные числа:
Апр = 01101; Впр = 10110.
Возьмём модули заданных чисел:
│Апр│ = 01101; │Впр│ = 00110.
Теперь рассмотрим сам механизм деления чисел.
1. Перед началом деления делимое и делитель проверяем на
равенство нулю. Ни делитель, ни делимое нулю не равны, поэтому
переходим к следующему этапу.
2. Проверка на корректность деления (на возможность деления).
Условие возможности деления:

A  ( B )доп  0.

(– В)доп=11010. Выполним проверку.


2- 2- 2- 2-
1 2 3 4

0 1 1 0 1 А
+
1 1 0 1 0 (– В)доп
0 0 1 1 1 Z > 0.

Делить нельзя, так как остаток, полученный после вычитания,


положителен (Z > 0). То есть получается, что поскольку числа А и В
дробные, то и результат Z тоже должен быть дробным, а это возможно,
если |А|<|В|.

Пример 12. Деление с восстановлением остатка Zпр = Апр : Bпр.


Заданы следующие числа: А = 0,1011 и В = - 0,1101.
Апр = 01011; Впр = 11101.
Возьмём модули заданных чисел:
│Апр│ = 01011; │Впр│ = 01101.
[│– В│]доп = 10011.
Для обнаружения переполнения вычитаем из делимого делитель:
84

0 1011
1 0011
1 1110,
Так как Z0 < 0, то переполнение отсутствует, следовательно, можно
выполнять операцию деления. Реализацию операции деления можно
увидеть на рис. 18.
Частное
0 1011
1 0011
1 1110 0 1 1 0 1 1

Z0 < 0 Переполнения нет.


Восстанавливаем остаток
1 1110
У 0 1101

Sм 0 1011
L1(Sм) 1 0110
Вычитаем делитель 1 0011
Sм 0 1001
L1(Sм) 1 0010
Вычитаем делитель 1 0011
Sм 0 0101

L1(Sм) 0 1010
Вычитаем делитель 1 0011
1 1101
Восстанавливаем
остаток,
прибавляем У 0 1101
Sм 0 1010
L1(Sм) 1 0100
Вычитаем делитель 1 0011
Sм 0 0111

L1(Sм) 0 1110
Вычитаем делитель 1 0011
Sм 0 0001

Рис. 18. Пример деления чисел в прямом коде с восстановлением остатка


Результат получен в прямом коде: Zпр = 1.11011
𝑺𝒊𝒈𝒏 𝒁 = 𝟎⨁𝟏 = 𝟏
85

Содержательная ГСА деления чисел в прямом коде с


восстановлением остатка представлена на рис. 19.
Вершина 2. Здесь выполняется запись операндов /А/ и /В/ с шин Х и
Y в Sm и RGA. Регистру RGB присваивается нулевое значение.
Вершина 3. Анализируется содержимое RGА на равенство нулю.
Если RGА=0, то операцию деления невозможно выполнить.
Осуществляется переход к вершине 7. Если RGA ≠ 0, то переходим к
вершине 4.
Вершина 4. Проверка на возможность выполнения операции
деления. К содержимому сумматора Sm прибавляется значение [-RGА]доп.
Вершина 5. Выполняется анализ знакового разряда сумматора. Если
SignSm=0, то произошло переполнение разрядной сетки и осуществляется
переход к вершине 7. Если SignSm=1, то переходим к вершине 6.
Вершина 6. Восстанавливается остаток О0. Для этого в сумматор Sm
записывается содержимое RGA. Счетчик циклов устанавливается в «n».
Частичный остаток Оi удваивается сдвигом влево на один разряд
[Sm:=L1(Sm)].
Вершина 7. Установка триггера переполнения в единичное
состояние. Переход к вершине 20 (конец выполнения алгоритма).
Вершина 8. Из сумматора вычитается содержимое RGA.
Вершина 9. В старший разряд RGB записывается инверсное
значение знака Sm.
Вершина 10. Значение Sm сдвигается влево на 1 разряд.
Вершина 11. Анализируется знаковый разряд сумматора. Если
signSm=1, то переход на вершину 12. Если signSm=0, то переход к
вершине 13.
Вершина 12. К содержимому сумматора прибавляется значение
RGA.
Вершина 13. Содержимое RGB сдвигается влево на 1 разряд.
Инкрементируется содержимое счетчика на «1».
Вершина 14. Содержимое RGB сдвигается влево на 1 разряд.
Вершина 15. Анализируется содержимое счетчика на равенство «0».
Если СТ ≠ 0, то возвращаемся на вершину 14.
Вершина 16. Если СТ=0, то в сумматор записывается значение RGB.
86

1 Начало

Sм: = Х
2 RG А: = У
RG В: = 0

3 1
RG А = 0

0
Sм:=Sм+[-RG A]доп
4

0
5 sign Sм=1

Sм: = RG А 7 ТПП: = 1
СчТ= n
6
Sм:=L1(Sм)

8 Sм:=Sм+[-RG A]доп

RG В[n]: = sign Sм
9

10 Sм:=L1(Sм)

0 1
sign Sм=1
11

Y5 Sм:= Sм+RG А
12

13 RG B:= L1(RG B)
СчТ: = СчТ-1
14 RG B:= L1(RG B)

0
СчТ= 0
15
1

16 Sм: = RG В

17 sign X + sign У = 1 0

1
18 sign Sм: = 1

19 sign Z: = sign Sм

20 Конец

Рис. 19. ГСА операции деления в прямых кодах для чисел с


фиксированной запятой с восстановлением остатка
87

Вершина 17. Здесь анализируется SignX и SignY. Если они


совпадают, то переход к вершине 19, если не совпадают, то к вершине 18.
Вершина 18. Знаку сумматора присваивается значение «1».
Вершина 19. Знак результата равен знаку сумматора.
3.8.2. Алгоритм деления чисел в прямом коде без восстановления
остатка
1. Берутся модули от делимого |𝐗| и делителя |У|
Sм:=|𝐗| , RG У:= |У|.
2. Проверяем возможность деления. Из делимого вычитается
делитель, если остаток Z0≥0, то частное ≥1 и деление невозможно
(возникает переполнение). Деление также невозможно, если
|У|=0 (делитель равен 0).
3. Остаток удваивается сдвигом влево на 1 разряд.
4. Если остаток положителен, то делитель вычитается из остатка,
если отрицателен, то делитель суммируется с остатком.
5. Если вновь полученный остаток положителен, то очередная
цифра частного равна «1», если остаток отрицателен, цифра
частного равна «0».
6. Пункты 3-5 до выработки требуемого числа цифр частного.
7. Частному присваивается знак «плюс», если знаки операндов
одинаковы, и знак «минус», если знаки операндов разные.
Пример 13. Выполнить деление без восстановления остатка
Zпр = Апр : Bпр.
Заданы следующие числа: А = 0,1011 и В = - 0,1101.
Апр = 01011; Впр = 11101.
Возьмём модули заданных чисел:
│Апр│ = 01011; │Впр│ = 01101.
[– В]доп = 10011.
Для обнаружения переполнения вычитаем из делимого делитель:
0 1011
1 0011
1 1110.
88

Так как Z0 < 0, то переполнение отсутствует, следовательно, можно


выполнять операцию деления. Реализацию операции деления можно
увидеть на рис. 20.
Частное
0 1011
1 0011
Z0 < 0 Переполнения нет 1 1110 0 1 1 0 1 1

L1(Sм) 1 1100
Прибавляем делитель 0 1101
Sм 0 1001

L1(Sм) 1 0010
Вычитаем делитель 1 0011
0 0101

L1(Sм) 0 1010
Вычитаем делитель 1 0011
1 1101

L1(Sм) 1 1010
Прибавляем делитель 0 1101
0 0111

L1(Sм) 0 1110
Вычитаем делитель 1 0011
0 0001

Рис. 20. Пример деления чисел в прямом коде без восстановления остатка
Результат получается в прямом коде: Zпр = 1.11011
𝑆𝑖𝑔𝑛 𝑍 = 0⨁1 = 1.
Содержательная ГСА деления в прямом коде без восстановления
остатка для чисел с фиксированной запятой (рис. 21).
Пояснения к рис. 21.
89

Вершина 2. Здесь выполняется запись операндов /А/ и /В/ с шин Х и


Y в Sm и RGA. Регистру RGB присваивается нулевое значение.
Вершина 3. Анализируется содержимое RGА на равенство нулю.
Если RGА=0, то операцию деления невозможно выполнить.
Осуществляется переход к вершине 7. Если RGA ≠ 0, то переходим к
вершине 4.
Вершина 4. Проверка на возможность выполнения операции
деления. К содержимому сумматора Sm прибавляется значение [-RGА]доп.
Вершина 5. Выполняется анализ знакового разряда сумматора. Если
SignSm=0, то произошло переполнение разрядной сетки и осуществляется
переход к вершине 7. Если SignSm=1, то переходим к вершине 6.
Вершина 6. Счетчик циклов устанавливается в «n». Частичный
остаток Оi удваивается сдвигом влево на один разряд [Sm:=L1(Sm)].
Вершина 7. Установка триггера переполнения в единичное
состояние. Переход к вершине 20 (конец выполнения алгоритма).
Вершина 8. Анализируется знаковый разряд сумматора. Если
signSm=1, то переход на вершину 10. Если signSm=0, то переход к
вершине 9.
Вершина 9. Из сумматора вычитается содержимое RGA.
Вершина 10. К содержимому сумматора прибавляется значение
RGA.
Вершина 11. В старший разряд RGB записывается инверсное
значение знака Sm. Содержимое RGB сдвигается влево на 1 разряд.
Значение Sm сдвигается влево на 1 разряд. Значение счетчика
уменьшается на «1».
Вершина 12. Анализируется содержимое счетчика на равенство «0».
Если СТ ≠ 0, то возвращаемся на вершину 8.
Вершина 13. Если СТ=0, то в сумматор записывается значение RGB.
Вершина 14. Здесь анализируется SignX и SignY. Если они
совпадают, то переход к вершине 16, если не совпадают, то к вершине 15.
Вершина 15. Знаку сумматора присваивается значение «1».
Вершина 16. На шину Z выставляется содержимое сумматора.
90

1 Начало

Sм: = Х
RG А: = У
2 RG В: = 0

3 1
RG А = 0

4 Sм:=Sм+[-RG A]доп

5 0
sign SМ=1

Sм:=L1(Sм) 7 ТПП: = 1
6
Сч Т= n

0 1
8 sign SМ=1

9 Sм:=Sм+[-RG A]доп SМ: = SМ + RG А 10

RG В[n]:= sign Sм
RG В: = L1(RG В)
11
Sм:=L1(Sм)
Сч Т: = Сч Т-1

0
12 Сч Т= 0

13 Sм: = RG В

0
14
sign X + sign У = 1

sign Sм: = 1
15

16 Z: = Sм

17 Конец

Рис. 21. ГСА операции деления в прямых кодах для чисел с


фиксированной запятой без восстановления остатка
91

3.8.3. Алгоритм деления чисел в дополнительном коде без


восстановления остатка (Z=X/У)
1. Делимое и делитель представляется в дополнительном коде:
Sм:= Xдоп , RG:= Y доп.
2. Проверяем возможность деления: если Sign Х = Sign Y, то из
делимого вычитается делитель, иначе – к делимому
прибавляется делитель.
При этом определяется знак частного следующим образом:

1, если sign O0 = sign У;


Z0 =
{ 0, если sign O0 ≠ sign У.

Условие корректности деления:


𝑆𝑖𝑔𝑛 𝑋 ⊕ 𝑆𝑖𝑔𝑛 𝑌 ⊕ 𝑆𝑖𝑔𝑛 𝑍 = 0.
Если 𝑺𝒊𝒈𝒏 𝑿 ⊕ 𝑺𝒊𝒈𝒏 𝒀 ⊕ 𝑺𝒊𝒈𝒏 𝒁 = 𝟏, то деление некорректно
из-за переполнения разрядной сетки.
3. Остаток Oi удваивается сдвигом влево на 1 разряд.
4. Если знак остатка Oi не совпадает со знаком делителя, то к
нему прибавляется делитель, если знаки совпадают, то из
остатка вычитается делитель.
2 Oi +Удоп , если sign Oi ≠ sign У;
Oi+1 =
{ 2 Oi +[-У]доп , если sign Oi= sign У.
5. Очередная цифра частного Zi = 1, если знак остатка Оi
совпадает со знаком делителя или Zi = 0, если знак остатка Оi
не совпадает со знаком делителя

1, если sign Oi+1 = sign У;


Zi+1 =
{ 0, если sign Oiн ≠ sign У.

6. Пункты 3-5 повторяются до получения требуемого числа цифр


частного.
7. Знак частного получается по алгоритму Zi = Sign Z.
8. При делении в дополнительном коде возникает методическая
погрешность, для компенсации которой необходимо вводить
92

коррекцию, которая равна: sign Z·2-n, где n – число разрядов


частного.
Возможны четыре случая:
1) X>0, У>0;
2) X<0, У>0;
3) X>0, У<0;
4) X<0, У<0.
Первый из них не представляет интереса, так как будет аналогия с
делением в прямых кодах, а для остальных случаев рассмотрим пример.
Пример 14. Выполнение операции деления чисел в дополнительном
коде с фиксированной запятой для X<0, У>0 (рис. 22).
У = 0 1101
Х = - 0 1011 yдоп = 0 1101
Хдоп = 1 0101 [-y]доп = 1 0011

1 0101
0 1101 sign Oi ≠ sign У
Sм 0 0010 переполнения нет
L1(Sм) 00 0100
[-y]доп 11 0011 1 00100
Sм 11 0111
т.к. sign Oi = sign У

L1(Sм) 10 1110
yдоп 00 1101
Sм 11 1011

L1(Sм) 11 0110
yдоп 00 1101
Sм 00 0011
т.к. sign Oi ≠ sign У

L1(Sм) 00 0110
[-y]доп 11 0011
Sм 11 1001

L1(Sм) 11 0010
00 1101
11 1111

Рис. 22. Пример выполнения деления чисел Xдоп<0, Удоп>0


93

Коррекция: sign Z · 2-5.


Выполнив коррекцию, получим результат:
+ 1 00100
0 00001
Zдоп = 1 00101
Пример 15. Выполнение операции деления чисел в дополнительном
коде с фиксированной запятой для X>0, У<0 (рис. 23).

У = - 0 1101
Х = 0 1011 yдоп = 1 0011
Хдоп = 0 1011 [-y]доп = 0 1101

0 1011
1 0011 sign Oi ≠ sign У
Sм 1 1110 переполнения нет

L1(Sм) 11 1100
[-y]доп 00 1101 1 0 0 1 0 0
Sм 00 1001

L1(Sм) 01 0010
yдоп 11 0011
т.к. sign Oi = Sign У

Sм 00 0101

L1(Sм) 00 1010
yдоп 11 0011
L1(Sм) 11 1101
т.к. sign Oi ≠ sign У

Sм 11 1010
[-y]доп 00 1101
Sм 00 0111

L1(Sм) 00 1110
yдоп 11 0011
00 0001

Рис. 23. Пример выполнения деления чисел Xдоп>0, Удоп<0


94

Коррекция: sign Z * 2-5.


Выполнив коррекцию, получим результат:
+ 1 00100
0 00001
Zдоп = 1 00101
Пример 16. Выполнение операции деления чисел в дополнительном
коде с фиксированной запятой для X<0, У<0 (рис. 24).

У = - 0 1101
Х = - 0 1011 yдоп = 1 0011
Хдоп = 1 0101 [-y]доп = 0 1101

1 0101
0 1101 sign Oi ≠ sign У
Sм 0 0010 переполнения нет

L1(Sм) 00 0100
yдоп 11 0011 0 1 1 0 1 1
Sм 11 0111

L1(Sм) 10 1110
[-y]доп 00 1101
Sм 11 1011

L1(Sм) 11 0110
[-y]доп 00 1101
Sм 00 0011

L1(Sм) 00 0110
yдоп 11 0011
Sм 11 1001

L1(Sм) 11 0010
00 1101
11 1111

Рис. 24. Пример выполнения деления чисел Xдоп<0, Удоп<0


95

Коррекция: sign Z * 2-5 = 0


Результат Zдоп = 0.11011.
Содержательная ГСА деления чисел с фиксированной запятой
Zдоп = Xдоп / Yдоп методом без восстановления остатка изображена на рис.
25. Обозначим формат представления данных Xдоп и Yдоп. Операнды
содержат n значащих разрядов, коды чисел модифицированные, значит
числа Xдоп и Yдоп включают (n+2) разряда.
Записи Sign Sм, Sign RGA, Sign RGB подразумевают старший
знаковый разряд соответствующего блока. Sign Sм означает два знаковых
разряда числа, записанного в регистре сумматора.
Знак результата получается в результате выполнения алгоритма.
Пояснения к рис. 25.
Вершина 2. Здесь выполняется запись операндов А и В с шин Y и Х
соответственно в RGA и RGB. Значение сумматора считается равным
нулю. Триггер знака равен «0».
Вершина 3. В сумматор поступает содержание регистра RGB.
Вершина 4. Анализируется содержимое RGА на равенство нулю.
Если RGА=0, то операцию деления невозможно выполнить.
Осуществляется переход к вершине 10. Если RGA ≠ 0, то переходим к
вершине 5.
Вершина 5. Выполняется анализ равенства знаковых разрядов RGA
и RGB. Если знаки совпадают, то переход к вершине 7, если не совпадают,
то – к вершине 6.
Вершина 6. Из содержимого сумматора Sm вычитается значение
RGА.
Вершина 7. К содержимому сумматора Sm прибавляется значение
RGА. Триггер знака устанавливается в «1».
Вершина 8. Анализ равенства знаковых разрядов Sm и RGB. Если
знаки совпадают, то переход к вершине 10, если не совпадают, то – к
вершине 9.
Вершина 9. Значение сумматора сдвигается влево на 1 разряд.
Обнуляется значение RGB. Счетчик циклов устанавливается в «n».
Вершина 10. Установка триггера переполнения в единичное
состояние. Переход к вершине 20 (конец выполнения алгоритма).
96

1 Начало

RG А: = У
RG В: = Х
2 SМ: = 0
Т sign: = 0

3 Sм: = RG В

4 1
RG А = 0

5 1 sign RG А = 0
signRG В

Sм: = Sм + RG А
6 Sм:=Sм+[-RG A]доп 7
T sign: = 1

sign Sм = 1
8 signRG B

Sм: = L1(Sм)
9 RG В: = 0 10 ТПП: = 1
Сч: = n

1 sign Sм = 0
11
signRG А

RG В[n] = 1 RG B[n] = 0
12 13
Sм:=Sм+[-RG A]доп Sм: = Sм + RG А

Sм: = L1(Sм)
14 RG В: = L1(RG В)
Сч: = Сч - 1

0
15 Сч Т= 0

Sм: = RG В
16
Sign Sм[1,2]: = T sign

0
17 sign Sм:=1

1
18 Sм: = Sм+Sign Sм*2-n

19 Z: = Sм

20 Конец

Рис. 25. ГСА деления чисел в дополнительных кодах с фиксированной


запятой без восстановления остатка
97

Вершина 11. Анализируются знаковые разряды сумматора и RGА.


Если они совпадают, то переход на вершину 12, иначе – к вершине 13.
Вершина 12. N-му разряду RGB присваивается значение «1». Из
сумматора вычитается содержимое RGA.
Вершина 13. N-му разряду RGB присваивается значение «0». К
содержимому сумматора прибавляется значение RGA.
Вершина 14. Значения сумматора и RGB сдвигаются влево на 1
разряд. Значение счетчика уменьшается на «1».
Вершина 15. Анализируется содержимое счетчика на равенство «0».
Если СТ ≠ 0, то возвращаемся на вершину 11.
Вершина 16. Если СТ=0, то в сумматор записывается значение RGB.
В знаковые разряды сумматора поступает значение триггера знака.
Вершина 17. Если SignSm=1, то переход на вершину 18, иначе к
вершине 19.
Вершина 18. Ввод коррекции путем прибавления значения signSm*2-
n
к содержимому сумматора.
Вершина 19. На шину Z выставляется содержимое сумматора.
3.8.4. Деление чисел в дополнительном коде с восстановлением
остатка
Алгоритм аналогичен делению в дополнительном коде без
восстановления остатка. Отличие состоит в том, что после проверки
возможности деления значение делимого восстанавливается (в Sм вновь
заносится Х) и только после этого сдвигается влево на один разряд.
В зависимости от знаков делимого и делителя к нему прибавляется
или от него вычитается делитель по тем же правилам. Далее
анализируются знаки остатка и делителя, по тем же правилам
определяются очередные цифры частного. Но в случае, когда signOi+1 ≠
signOi (или X) значение остатка Oi+1 перед сдвигом влево должно быть
восстановлено до Oi = Oi+1 + [±У]доп.
Все остальные условия те же, что и при делении без восстановления
остатка.
Таким образом, если signOi+1 ≠ signX (или signOi), то необходимо
восстановление остатка:
98

Oi+1 +Уд ; signOi+1 ≠ signУ


Oi+1 +(-У)д ; signOi+1 =signУ
Часть ГСА операции деления чисел с фиксированной запятой с
восстановлением остатка отличающаяся от рис. 15 (вершины 8–14)
изображена на рис. 26.

Sм: = RG В
Сч: = n

Sм: = L1(Sм)
RG В: = 0

1 sign Sм = 0
= sign RG А

Sм:=Sм+[-RG A]доп Sм: = Sм +RG А

1 sign Sм =
= sign RG
А

RG В[n] = 1 RG В[n] = 0

sign Sм = 1 1 sign Sм =
= sign RG B = sign RG B

0 0
Sм:=Sм+[-RG A]доп Sм: = Sм +RG А

Sм: = L1(Sм)
RG В: = L1(RG В)
Сч: = Сч - 1

Рис. 26. Часть ГСА деления чисел в дополнительных кодах с


восстановлением остатка
99

Пример 17. Выполнить операцию деления чисел Z=Xдоп / Yдоп с


восстановлением остатка (рис. 27).

Х = - 0 1011 У = 0 1101
Z=X/У Хдоп = 11 0101 - Удоп = 11 0011

Проверка возможности
11 0101 деления
00 1101
Sм 00 0010
} Восстановление
остатка
(делимого)
Sм 11 0101
L1(Sм) 10 1010
y 00 1101 11 0 0 1 0 0
Sм 11 0111

L1(Sм) 10 1110
y 00 1101
Sм 11 1011

L1(Sм) 11 0110
y 00 1101
Sм 00 0011

[-y]доп 11 0011
} Восстановление
остатка
Sм 11 0110
L1(Sм) 10 1100
y 00 1101
Sм 11 1001

L1(Sм) 11 0010
y 00 1101
Sм 11 1111

Результат
Коррекция:
sign Z · 2-5 11 00100
1
Zдоп = 11 00101

Рис. 27. Пример выполнения деления чисел Xдоп и Удоп по алгоритму


с восстановлением остатка
100

3.8.5. Алгоритм деления чисел в обратном коде


Все изложенное для дополнительного кода справедливо и для
обратного кода. Необходимо только учитывать одну особенность: при
сдвиге остатка влево выполняется модифицированный сдвиг. Это значит,
что для отрицательного остатка в освободившийся разряд записывается
«1», а для положительного остатка – «0». Необходимость коррекции не
возникает.

Пример 18. Выполнить операцию деления чисел Z = Xобр / Yобр без


восстановления остатка (рис. 28).

У = - 0 1101
Х = 0 1011
yобр = 1 0010
Хобр = 0 1011
[-y]обр = 0 1101

2 Oi +Уобр , если sign Oi ≠ sign У;


Oi+1 =
{ 2 Oi’ + [-У]обр , если sign Oi= sign У;

1, если sign Oi+1 = sign У;


Zi+1 = { 0, если sign Oiн ≠ sign У.

Содержательная ГСА деления в обратном коде Х/Y без


восстановления остатка в ЭВМ с фиксированной запятой (рис. 29).
Пояснения к рис. 29.
Вершина 2. Здесь выполняется запись операндов А и В с шин Y и Х
соответственно в RGA и Sm. Значение сумматора считается равным нулю.
Вершина 3. В сумматор поступает содержание регистра RGB.
Вершина 4. Анализируется содержимое RGА на равенство нулю.
Если RGА=0, то операцию деления невозможно выполнить.
Осуществляется переход к вершине 10. Если RGA ≠ 0, то переходим к
вершине 5.
Вершина 5. Выполняется анализ равенства знаковых разрядов RGA
и RGB. Если знаки совпадают, то переход к вершине 7, если не совпадают,
то к вершине 6.
101

Вершина 6. Из содержимого сумматора Sm вычитается значение


RGА.
Вершина 7. К содержимому сумматора Sm прибавляется значение
RGА. Триггер знака устанавливается в «1».
Вершина 8. Анализ равенства знаковых разрядов Sm и RGB. Если
знаки совпадают, то переход к вершине 10, если не совпадают, то – к
вершине 9.
Sм 0 1011
yобр 1 0010

переполнения нет Sм 1 1101 т.к sign Oi ≠ sign Х

L1(Sм) 1 1011 т.к. Oi < 0


[-y]обр 0 1101
10 1000
Пц Частное

Sм 0 1001 1 0 0 1 0 0

L1(Sм) 1 0010 т.к. Oi > 0


yобр 1 0010

10 0 10 0
Пц

Sм 0 0101 Zобр = 1 00100

L1(Sм) 0 1010 т.к. Oi > 0


yобр 1 0010
Sм 1 1100

L1(Sм) 1 1001 т.к. Oi < 0


[-y]обр 0 1101

10 0110

Sм 0 0111

L1(Sм) 0 1110 т.к. Oi > 0


yобр 1 0010
10 0000

Sм 0 0001

Рис. 28. Пример операции деления чисел Z=Xобр / Yобр без восстановления
остатка
102

1 Начало

Sм: = Х
2 RG А: = У
RG В: = 0

3 Sм: =RG В

1
4 RG А = 0

5
1 sign RG В =
signRG А

Sм: = Sм +RG А
6 Sм:= Sм+[-RG A]доп 7
T sign: = 1

sign Sм = 1
8
sign RG B

10 ТПП: = 1
9 Sм: = L1(Sм)
RG В: = 0

11
1 sign Sм = 0
signRG А

RG В[n] = 1 RG В[n] = 0
12 13
Sм:=Sм+[-RG A]доп Sм: = Sм + RG А

Sм: = L1(Sм)
14 RG В: = L1(RG В)
Сч: = Сч - 1

15
0
Сч = 0

16 Sм: = RG В
sign Sм: = T sign

17
0
sign Sм:=1

1
18 Sм: = Sм+sign Sм*2-n

19 Z: = Sм

20 Конец

Рис. 29. ГСА деления чисел Z=Xобр / Yобр без восстановления остатка
103

Вершина 9. Значение сумматора сдвигается влево на 1 разряд.


Обнуляется значение RGB. Счетчик циклов устанавливается в «n».
Вершина 10. Установка триггера переполнения в единичное
состояние. Переход к вершине 20 (конец выполнения алгоритма).
Вершина 11. Анализируется знаковые разряды сумматора и RGА.
Если они совпадают, то переход на вершину 12, иначе – к вершине 13.
Вершина 12. N-му разряду RGB присваивается значение «1». Из
сумматора вычитается содержимое RGA.
Вершина 13. N-му разряду RGB присваивается значение «0». К
содержимому сумматора прибавляется значение RGA.
Вершина 14. Значения сумматора и RGB сдвигаются влево на 1
разряд. Значение счетчика уменьшается на «1».
Вершина 15. Анализируется содержимое счетчика на равенство «0».
Если СТ ≠ 0, то возвращаемся на вершину 11.
Вершина 16. Если СТ=0, то в сумматор записывается значение RGB.
В знаковые разряды сумматора поступает значение триггера знака.
Вершина 17. Если SignSm=1, то переход на вершину 18, иначе к
вершине 19.
Вершина 18. Ввод коррекции путем прибавления значения signSm*2-
n
к содержимому сумматора.
Вершина 19. На шину Z выставляется содержимое сумматора.

3.9. Выполнение арифметических операций над числами с


плавающей запятой
3.9.1. Представление двоичных чисел с плавающей запятой в ЭВМ
Представление чисел с плавающей запятой в нормальной
(полулогарифмической) форме используется в ЭВМ, предназначенных
для решения широкого круга задач. Вспомним, что в
полулогарифмической форме число A представляется в виде
A = mn . qp ,
где mn – нормализованная мантисса числа A, определяющая значащие
цифры числа;
Р – порядок (характеристика) числа A;
104

q – основание системы счисления.


Мантисса mn представляет собой правильную дробь,
удовлетворяющую условию:
q-1  | mn | < 1.
Запятая при представлении мантиссы фиксируется перед старшим
значащим разрядом. Порядок Р указывает положение запятой в числе,
может быть положительным или отрицательным целым числом или
целым числом без знака (запятая при представлении порядка фиксируется
после младшего разряда). Порядок Р и мантисса mn представляются в
системе счисления с основанием q.
Выполнение арифметических операций в машинах с плавающей
запятой требует выполнения действий как над мантиссами, так и над
порядками. Числа А1 и А2 представлены следующим образом:
А1 = m1 . qР1; А2 = m2 . qР2.
Арифметическое сложение или вычитание мантисс двух чисел
может быть произведено только в случае равенства их порядков.
3.9.2. Алгоритм сложения двух чисел с плавающей запятой
Алгоритм сложения двух чисел с плавающей запятой.
1. Выравнивание порядков суммируемых чисел:
а) вычитание из порядка числа А1 порядка числа А2 с целью
определения, порядок какого числа больше и на сколько:
P1 – P2 = P;
б) мантисса числа с меньшим порядком сдвигается вправо на
величину разности порядков P.
Если разность порядков положительная, то сдвигается мантисса
второго числа, если отрицательная, то сдвигается мантисса первого числа.
Обоим числам присваивается больший порядок.
2. Алгебраическое суммирование мантисс (аналогично сумми-
рованию дробных чисел с фиксированной запятой).
3. Результату присваивается больший порядок.
105

4. Проверка на нормализацию результата. При выполнении операции


сложения нарушение нормализации суммы может быть влево только на
один разряд (| mns |  1) или вправо на любое число разрядов (|mns | < q-1).
3.9.3. Признаки нарушения и способы восстановления нормализации
мантиссы в ЭВМ с плавающей запятой
Как говорилось выше мантисса считается нормализованной, если
выполняется условие
q-1 ≤ |MхH| < 1.
В нашем случае q = 2.
Положительная нормализованная мантисса в двоичном коде имеет
вид
MхНпр.обр. доп.= + 0,1 Х-2 Х-3 … Х-n = MхНобр. = MхНдоп.
Отрицательная нормализованная мантисса:
MхH = – 0,1 Х-2 Х-3 … Х-n;
MхHпр. = 1,1 Х-2 Х-3 … Х-n;
̅-2Х
MхHобр. = 1,0 Х ̅-3 … Х
̅-n;
̅-2Х
MхHдоп. = 1,0 Х ̅-3 … Х
̅-n +2-n.
Таким образом, признаком нормализованной мантиссы в
обратном и дополнительном кодах является различие цифр, стоящих по
обе стороны от запятой. В прямом коде – наличие единицы в старшем
значащем разряде.
Признак нарушения нормализации влево для дополнительных и
обратных кодов – это сочетание 01 или 10 в знаковых разрядах
модифицированных кодов. Устранение этого нарушения состоит в
модифицированном сдвиге мантиссы Мх вправо на 1 разряд и увеличении
порядка Рх на единицу.
Пример 19. Устранить нарушение нормализации влево мантисс Мх,
представленных обратными или дополнительными кодами:
1) Мх = 01,110111, Рх = 00,101.
После нормализации:
106

Мх = 00,111011 ①1 Рх = 00,110;

2) Мх = 10,10011, Рх = 00,011.
После нормализации:
Мх = 11,01001 ①2, Рх = 00,100.

Признак нарушения нормализации вправо для дополнительных и


обратных кодов является совпадение значения знакового разряда со
значением старшего значащего разряда мантиссы. Для устранения этого
нарушения мантисса сдвигается влево до тех пор, пока не будут
выполняться условия нормализации. Порядок Рх при этом уменьшается на
число выполненных сдвигов. В обратном коде в освобождающиеся
младшие разряды при сдвиге для положительного числа записываются
«0», а для отрицательного – «1». В дополнительном коде в
освобождающиеся разряды записываются «0» независимо от знака числа.
Пример 20. Устранить нарушение нормализации вправо
положительной мантиссы Мх (прямой, обратный или дополнительный
код).
Мх = 00,001011; Рх = 00,101.
Мхн = 00,101100; Рх = 00,011.
Пример 21. Устранить нарушение нормализации вправо мантиссы
Мх в дополнительном коде.
Мх доп. = 11,1101011; Рх = 11,001.
MхHдоп. = 11,0101100; Рх = 11,011.
Пример 22. Устранить нарушение нормализации вправо мантиссы
Мх в обратном коде.
Мх обр. = 11,1101010; Рх = 11,001.
MхHобр. = 11,0101011; Рх = 11,011.

1
и 2 – разряды, вышедшие за пределы разрядной сетки, могут быть использованы для округления или
отброшены.
107

Соблюдение условий нормализации способствует более


экономичному использованию ресурсов ЭВМ, может служить средством
повышения точности выполнения арифметических операций, однако при
этом усложняется процесс их выполнений.
Пример 23. Выполнить операцию сложения чисел А1 и А2 с
плавающей запятой в формате m = 8 со знаком, k = 4 со знаком:
А1 : m1 пр = 01111100, p1 = 0100.
А2 : m2 пр = 11010100, p2 = 0011.

1. Выравниваем порядки суммируемых чисел


Р1 – Р2 = Р + 0100пр

1101доп
0001пр
Р1 – Р2 = 1.
Сдвигаем мантиссу числа А2 вправо на один разряд:
m2пр  2-1 = 10101010пр
Ррез = (0100)2.
2. Суммируем мантиссы чисел: m1пр + m2пр.
При этом мантиссу числа А2 переведём в дополнительный код.
+ 01111100пр
11010110доп
mрез = 01010010пр
3. Анализ результата на нарушение нормализации влево показывает,
что сумма мантисс получена без нарушения нормализации влево, так как
было сформировано два переноса (перенос из старшего в знаковый разряд
и перенос из знакового разряда).
Нарушения нормализации вправо нет.
Сумма чисел А1 и А2 с плавающей запятой в формате m=8 со знаком,
k=4 со знаком равна: S = +0,1010010 . 2100 = 1010,012=(10,25)10.
Проверка: (15,5)10 + (–5,25)10 = (10,25)10.
Пример 24. Выполнить операцию вычитания чисел А1 и А2 с
плавающей запятой в формате m=8 со знаком, k=4 со знаком.
А1 : m1 пр = 01111100, p1 = 0100.
А 2 : m2 пр = 11010100, p2 = 0011.
108

Операция вычитания отличается от сложения искусственным


изменением знака мантиссы вычитаемого на обратный.
А 1 – А м2 = А 1 + ( – А 2 )
1. Выравниваем порядки чисел
Р1 – Р2 = Р + 0100пр
1101доп
0001пр
Р1 – Р2 = 1.
Сдвигаем мантиссу числа А2 вправо на один разряд:
m2пр  2-1 = 10101010пр.
Ррез = (0100)2.
2. Находим разность чисел:
m2пр = 10101010пр
m2пр = 00101010пр – с изменённым знаком
+ 01111100пр
00101010пр
10100110пр.
3. Имеет место нарушение нормализации влево, так как имеет место
только один перенос в знаковый разряд. Поэтому сдвинем мантиссу на 1
разряд вправо и увеличим порядок на 1:
mрез=01010011пр Pрез = 0101
А 1 - А 2 = (+0,1010011 * 2101)2 = (10100,11)2=(20,75)10.
Проверка: (15,5)10 – (–5,25)10 = (20,75)10.
3.9.4. Особенности умножения двоичных чисел, представленных в
форме с плавающей запятой
Числа с плавающей запятой А1 и А2 представлены следующим
образом:
А1 = m1 ∙ qР1; А2 = m2 ∙ qР2.
Арифметическое умножение чисел с плавающей запятой сводится к
умножению мантисс и сложению порядков (как чисел с фиксированной
запятой):
А1 ∙ А2 = [m1 ∙ m2]; qР1+P2.
109

Перед началом умножения мантиссы проверяются на равенство


нулю. Если одна из мантисс равна 0, то сразу формируется нулевой
результат.
Перемножение мантисс осуществляется чаще всего путём
перемножения их модулей.
При суммировании порядков может возникнуть переполнение. Факт
переполнения порядка устанавливается только после нормализации
мантиссы результата. При переполнении разрядной сетки порядка
результата исполнение программы прерывается.
Суммирование порядков осуществляется параллельно с умножением.
При умножении нормализованных мантисс нарушение нормализации
возможно только вправо на 1 разряд (минимальный результат
произведения получаем при перемножении модулей нормализованных
мантисс со знаком: 0,100 ∙ 0,100 = 0,010).
Нарушение нормализации влево при умножении произойти не
может, так как мантиссы по модулю меньше единицы:
0,11111 ∙ 0,11111  0,1111.
Произведению присваивается суммарный порядок сомножителей или
суммарный порядок сомножителей, уменьшенный на 1 в случае
нарушения нормализации вправо мантиссы произведения.

Пример 25. Выполнить операцию умножения чисел А1 и А2 с


плавающей запятой в формате m=8 со знаком, k=4 со знаком.
А1 : m1 пр = 01111100, p1 = 0100.
А2 : m2 пр = 11010100, p2 = 0011.
1. Проверка мантисс на равенство 0.
Перед началом умножения мантиссы проверяются на равенство
нулю. Если одна из мантисс равна 0, то сразу формируется нулевой
результат. Так как мантиссы чисел А1 и А2 не равны 0, то переходим к
следующему этапу.
2. Умножение мантисс.
110

Умножение мантисс производим методом умножения, начиная с


младших разрядов множителя, со сдвигом суммы частичных
произведений вправо при неподвижном множимом.
Перемножаем модули мантисс, а произведению присваивает знак
«плюс», если знаки сомножителей одинаковы, или знак «минус», если
знаки разные.
|m1пр|=01111100; |m2пр|=01010100. Перемножаемые числа дробные,
поэтому для представления результата умножения достаточно одинарной
разрядности.
* 01111100
01010100

00000000 – исходное значение суммы частичных произведений.


+ 01111100 – прибавление множимого, разряд множителя равен 1.
01111100 – сумма частичных произведений (∑ ЧП𝑖 ).
00111110 – сдвиг вправо на 1 разряд ∑ ЧП𝑖 .
00011101 – сдвиг вправо на 1 разряд ∑ ЧП𝑖 .
+ 01111100 – прибавление множимого, разряд множителя равен 1.
10011001 – ∑ ЧП𝑖 .
01001100 – сдвиг вправо на 1 разряд ∑ ЧП𝑖 .
00100110 – сдвиг вправо на 1 разряд ∑ ЧП𝑖 .
+ 01111100 – прибавление множимого, разряд множителя равен 1.
10100010 – ∑ ЧП𝑖 .
01010001 – сдвиг вправо на 1 разряд ∑ ЧП𝑖 .
mРез пр =01010001, следовательно, нарушения нормализации нет.

3. Суммирование порядков.
0100
+ 0011
0111
Переполнения при суммировании порядков нет, так как не было
сформировано ни одного переноса: ни из старшего разряда в знаковый, ни
из знакового разряда.
111

Знак произведения определяется, как сумма по модулю 2 знаков


сомножителей: знак произведения = 0 + 1 = 1, т. е. минус.
Результат умножения чисел А1 и А2 запишем как
mРез пр =01010001, pрез = 0111.
Рез = –0, 1010001∙ 2111 = (–1010001)2 = (–81)10.
Проверка в десятичной системе счисления:
(15,5)10 ∙ (–5,25)10 = (–81,375)10.
Погрешность объясняется ограниченностью разрядной сетки.
3.9.5. Особенности деления двоичных чисел, представленных в форме
с плавающей запятой
Арифметическое деление чисел с плавающей запятой сводится к
делению мантисс и вычитанию порядков (как чисел с фиксированной
запятой):
А1 : А2 = [m1 : m2]; qР1-P2.
Мантиссы делятся как положительные числа (делятся модули) по
методу без восстановления остатка. Знак частного определяется на основе
анализа знаков делимого и делителя: если знаки совпадают, то 0, иначе 1.
Знак заносится в соответствующий разряд кода частного в конце операции
деления.
Алгоритм выполнения операции деления чисел с плавающей
запятой:
 проверка делимого и делителя на нуль:
- если делимое равно 0, то частное равно нулю, мантисса и порядок
результата равны нулю;
- если делитель равен 0, то происходит прерывание исполнения
программы по причине некорректности деления;
 получение одной значащей цифры частного методом без
восстановления остатка требует следующих действий:
- сдвига делимого или очередного частичного остатка (независимо
от его знака) влево на 1 разряд с одновременным сдвигом частного тоже
влево на 1 разряд;
- вычитания из делимого или очередного частичного остатка
делителя, если делимое или остаток положительный, или прибавления к
112

очередному частичному остатку делителя, если остаток отрицательный, и


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

Пример 26. Выполнить операцию деления чисел А1 и А2 с


плавающей запятой в формате m=8 со знаком, k=4 со знаком.
А1 : m1 пр = 01111100, p1 = 0100.
А2 : m2 пр = 11010100, p2 = 0011.
1. Проверка делимого и делителя на нуль.
Если делимое равно 0, то частное равно нулю, мантисса и порядок
результата равны нулю.
Если делитель равен 0, то происходит прерывание исполнения
программы по причине некорректности деления.
В нашем случае ни одно из чисел нулю не равно.
2. Деление мантисс как положительных чисел по методу без
восстановления остатка. Так как мантиссы это дробные числа, то для
представления мантиссы делимого достаточно одинарной разрядной
сетки.

│m1 пр│ = 01111100; │m2 пр│ = 01010100. │m1 пр│ : │m2 пр│.
113

11111000 0 │ 01010100пр (10101100доп)


+01010100 └─────────────────
01001100 >0 10110100
 10011000 0
+01010100
11101100 <0
 11011000 0
+01010100
00101100 >0
 01011000 0
+10101100
00000100 >0
 00001000 0
+10101100
10110100 <0
 01101000 0
+10101100
00010100 >0
 00101000 0
+10101100
11010100 <0
 10101000 0
+01010100
11111100 <0

mРез пр = 10110100, следовательно, мантисса получена с нарушением


нормализации. Выполним нормализацию. Для этого, сдвинем мантиссу на
1 разряд вправо, а порядок увеличим на 1. Получим mРез пр = 01011010.
3. Вычитание порядков.
Вычитание порядков производиться параллельно делению мантисс.
Операция вычитания порядков заменяется операций сложения, но
знак порядка делителя меняется на противоположный.
p2пр = 1011 – порядок делителя с изменённым знаком в прямом коде.
114

p2доп = 1101 – порядок делителя с изменённым знаком в


дополнительном коде.
0100
+ 1101
0001
Переполнения не было, так как было два переноса: из старшего
разряда в знаковый разряд и из знакового разряда.
Увеличим порядок на 1 в связи с проводимой нормализацией
мантиссы результата.
0001
+ 1
0010
Переполнения не было, так как не было ни одного переноса: ни из
старшего разряда в знаковый разряд, ни из знакового разряда.
Знак частного определяется как «сумма по модулю два» знаков
делимого и делителя: знак частного = 0 + 1 = 1, т. е. минус.
Результат деления чисел А1 и А2 запишем как
mРез пр =11011010, pрез = 0010.
Рез = –0,101101 ∙ 210 = (–10,1101)2 = (–2,8125)10.
Проверка в десятичной системе счисления:
(15,5)10 / (–5,25)10 = (–2,952)10.
Погрешность объясняется ограниченностью разрядной сетки.
115

4. ПРАКТИКУМ МОДУЛЯ «ТЕОРИЯ ЦИФРОВЫХ


АВТОМАТОВ»
Форма участия студентов в практических занятиях: студенты
выполняют практические задания по теме сначала самостоятельно, а
потом с участием преподавателя. Первые несколько студентов,
выполнивших правильно задания, получают дополнительные баллы за
активную работу на практическом занятии.
4.1. План практических занятий
Занятие 1 (2 часа). Общие понятия теории цифровых автоматов.
Абстрактный синтез автоматов Мура и Мили. Граф-схема алгоритма.
Процедура построения ГСА по словесному описанию. Получение не
полностью определенного автомата.
Цели и задачи практических занятий: получение практических
навыков при построении ГСА по словесному описанию, абстрактного
синтеза автоматов Мура и Мили.
План практических занятий: общие понятия теории цифровых
автоматов. Абстрактный синтез автоматов Мура и Мили.
Граф-схема алгоритма. Процедура построения ГСА по словесному
описанию. Получение не полностью определенного автомата.
Занятие 2 (4 часа). Структурный синтез цифровых автоматов Мура.
Особенности записи функций переходов для Д- и Т-триггерных устройств.
Особенности записи функций выходов автомата Мура. Построение КС
автомата Мура. Работа над индивидуальным творческим проектом.
Цели и задачи практических занятий: получение практических
навыков структурного синтеза автомата Мура. Возможность получения
индивидуальной консультации и разбора типичных проблемных ситуаций
вместе с преподавателем.
План практических занятий: структурный синтез цифровых
автоматов Мура. Особенности записи функций переходов для Д- и Т-
триггерных устройств. Особенности записи функций выходов автомата
Мура. Построение КС автомата Мура. Работа студентов над
индивидуальными творческими проектами в присутствии преподавателя.
116

Занятие 3 (2 часа). Структурный синтез цифровых автоматов Мили.


Особенности записи функций переходов для JK-триггерных устройств.
Особенности записи функций выходов автомата Мили. Построение
логических преобразователей автомата Мили.
Цели и задачи практических занятий: получение практических
навыков структурного синтеза автомата Мили.
План практических занятий: структурный синтез цифровых
автоматов Мили. Особенности записи функций переходов для JK-
триггерных устройств. Особенности записи функций выходов автомата
Мили. Построение логических преобразователей автомата Мили.
Занятие 4 (4 часа). Моделирование цифровых автоматов в САПР
Quartus. Работа над индивидуальными творческими проектами в
присутствии преподавателя.
Цели и задачи практических занятий: получение знаний и
практических навыков структурного синтеза цифровых автоматов в среде
Quartus. Моделирование ЦА Мура в рамках индивидуального творческого
проекта.
План практических занятий: изучение инструментария САПР Quartus
для моделирования работы ЦА. Структурный синтез цифровых автоматов
Мура и Мили. Создание модели цифрового автомата в рамках
индивидуального творческого проекта.
Занятие 5 (2 часа). Операционный и микропрограммный автоматы.
Понятия микрокоманды и микропрограммы. Особенности процедуры
синтеза микропрограммных автоматов. Управляющий автомат с «жесткой
логикой». Управляющий автомат с хранимой в памяти логикой.
Горизонтальное, вертикальное и смешанное микропрограммирование.
Цели и задачи практических занятий: получение практических
навыков синтеза управляющих автоматов с «жесткой логикой» и с
хранимой в памяти логикой.
План практических занятий: Операционный и микропрограммный
автоматы. Понятия микрокоманды и микропрограммы.
Особенности процедуры синтеза микропрограммных автоматов.
Управляющий автомат с «жесткой логикой».
117

Занятие 6 (2 часа). Особенности выполнения арифметических


операций над двоичными числами с фиксированной запятой в прямом и
обратном кодах.
Цели и задачи практического занятия: закрепление практических
навыков в микропрограммировании арифметических операций над
двоичными числами с фиксированной запятой.
План практического занятия: разбор конкретных примеров
выполнения закрепление арифметических операций над числами в прямом
и обратном кодах.
4.2. Примеры практических заданий
4.2.1. Задания для практического занятия 1
Задание 1
По словесному алгоритму построить:
1) граф схему алгоритма;
2) графы автоматов МИЛИ и МУРА;
3) их структурные графы.
Словесный алгоритм:
устройство управления светофором в ночное время зажигает только
желтый свет (мигающий), в дневное время циклический, в течение 30 с
горит (красный – желтый, зеленый – желтый и т.д.). Устройство
управления реагирует на нажатие кнопки для пешехода, включается на
30 с для пешехода зеленый свет, автомашин – красный. По истечению 30 с
загорается желтый свет.
4.2.2. Задания для практического занятия 2
Задание 1
Для графа автомата Мура, полученного на предыдущем
практическом занятии:
1) самостоятельно выбрать типы триггеров (D-, T- и JK-) для
конкретной задачи. За занятие следует использовать все
перечисленные типы триггеров;
2) расставить на ребрах графа значения j в соответствии с
правилами работы выбранных типов триггеров;
118

3) записать функции выхода и возбуждения ЦА, провести их


минимизацию;
4) выполнить структурный синтез автомата Мура до уровня
функциональной схемы.
Задание 2
Задан граф:

000 001

100 010

011

Для заданного структурного графа:


1) записать входные и выходные сигналы для автомата МУРА;
2) расставить на ребрах графа значения j в соответствии с
правилами работы триггеров, выбрав в блок памяти следующие
триггеры: D-, T-, JK-;
3) записать функции выхода и возбуждения ЦА, провести их
минимизацию;
4) выполнить структурный синтез автомата Мура до уровня
функциональной схемы.
4.2.3. Задания для практического занятия 3
Задание 1
Для графа автомата Мили, полученного на предыдущем
практическом занятии:
119

1) самостоятельно выбрать типы триггеров (D-, T- и JK-) для


конкретной задачи;
2) расставить на ребрах графа значения j в соответствии с
правилами работы выбранных типов триггеров;
3) записать функции выхода и возбуждения ЦА, провести их
минимизацию;
4) выполнить структурный синтез автомата Мили до уровня
функциональной схемы.
4.2.4. Задания для практического занятия 4
Занятие проводится в аудитории, оснащенной современной
компьютерной техникой. На компьютеры должен быть установлен САПР
Quartus для моделирования работы ЦА.
Задание 1
Освоить инструментарий Quartus для синтеза цифровых автоматов.
Задание 2
1) синтезировать принципиальную схему ЦА Мура;
2) выполнить модель цифрового автомата Мура в Quartus;
3) задать входную информацию модели и снять временную
диаграмму работы цифрового автомата;
4) проверить правильность работы модели.
4.2.5. Задания для практического занятия 5
Задание 1
Определить распределенную во времени последовательность
управляющих функциональных сигналов, поступающих на управляющие
входы операционного блока АЛУ, выполняющего операцию сложения.
Задание 2
Синтезировать структурную схему и описать работу управляющего
автомата с хранимой в памяти логикой для выполнения арифметической
операции сложения.
4.2.6. Задания для практического занятия 6
Задание 1
Выполнить умножение в прямых кодах Впр = А1пр ∙ А2пр.
А1пр = 10111 = (–7)10; А2пр = 11100 = (–12)10.
120

Задание 2
Выполнить умножение в обратных кодах Вобр = А1обр ∙ А2обр.
А1пр = 10111 = (–7)10; А2пр = 11100 = (–12)10.
Задание 3
Выполнить деление в прямых кодах Впр = А1пр : А2пр.
А1пр = 11100 = (–12)10; А2пр = 10111 = (–7)10.
Задание 4
Выполнить деление в обратных кодах Вобр = А1обр : А2обр.
А1пр = 11100 = (–12)10; А2пр = 10111 = (–7)10.
121

5. ИНДИВИДУАЛЬНЫЙ ТВОРЧЕСКИЙ ПРОЕКТ


В рамках модуля «Теория цифровых автоматов» предусмотрено
выполнения индивидуального творческого проекта «Абстрактный и
структурный синтез цифровых автоматов Мура».
5.1. Цели и задачи творческого проекта
- закрепление навыков абстрактного и структурного синтеза
цифровых автоматов Мура и Мили на уровне функциональной и
принципиальной схем;
- получение практических навыков моделирования цифровых
автоматов в САПР Quartus.
5.1.1. Общие требования к выполнению творческого проекта и
критерии оценки
1. Требования к выполнению творческого проекта
Задание должно быть выполнено с подробными пояснениями
используемых теоретических положений, выполняемых действий и
полученного результата по каждому заданию. При отсутствии пояснений
задание считается не выполненным.
Задание выполняется в электронном виде. Для текста следует
использовать MS Word; для разработки рисунков – MS Visio;
При необходимости рисунки должны быть вставлены в текст Word.
2. Организация работы в рамках творческого проекта
Индивидуальный проект выполняется студентами в основном
самостоятельно. Однако на практических занятиях №2 и №4
предусмотрено время (по 1 часу) для работы в аудиториях под
руководством преподавателя. Такая форма работы облегчает студенту
выполнение задания, т.к. есть возможность проконсультироваться с
преподавателем прямо на занятии.
3. Критерии оценки творческого проекта
Выполненную работу необходимо сдать преподавателю в
распечатанном варианте и в электронном виде, помещенную в папку,
названную Ф.И.О. студента.
При выставлении результирующей оценки учитываются:
- правильность выполненного задания,
122

- стиль оформления работы,


- сроки сдачи задания.
Выполненное индивидуальное задание оцениваются как:
0 баллов – студент не выполнил задание в срок и не ликвидировал
задолженность (неудовлетворительно);
3-5 баллов – студент выполнил работу; 3 балла – удовлетворительно;
4 балла – хорошо и 5 баллов – отлично.
5.2. Техническое задание на творческий проект
1. Выполнить абстрактный и структурный синтез заданного
цифрового автомата Мура.
2. Разработку довести до функциональной и принципиальной схем.
3. Выполнить модель цифрового автомата в САПР Quartus. Снять
временные диаграммы работы автомата. Убедиться в
правильности работы модели.
Необходимо синтезировать генератор кодов, на выходах которого
должны генерироваться две различные непрерывные последовательности
сигналов, представленные в двоичном параллельном коде. Одна
последовательность формируется при входном сигнале x=1, а другая – при
x=0.
Если на управляющем входе – единичный сигнал, то на выходах
генератора должна формироваться непрерывная последовательность:

a1, a2, a3, a4, a1 , a2 , a3 , a4 , a1, ...

Если на управляющем входе – нулевой сигнал, то на выходах


генерируется непрерывная последовательность

b1, b2, b3, b4, b1 , b2 , b3 , b4 , b1, ...

Для построения генератора кодов в качестве логических элементов


надо использовать логические элементы, а в качестве элементов памяти
D-, T- или JK-триггеры в соответствующем режиме работы (T – со
счетным входом, D – линия задержки, JK – с раздельными входами).
123

Значения а1, а2, а3, а4, b1, b2, b3, b4 и тип используемого триггера
выбираются из табл. 1. Выходные сигналы необходимо выдавать, кодируя
цифры в двоичной системе счисления параллельным кодом.
Таблица 1
№ варианта а1 а2 а3 а4 b1 b2 b3 b4 Тип триггера
1 2 5 1 9 2 9 5 1 Т
2 4 3 8 5 4 8 5 3 Т
3 2 4 7 9 2 7 4 9 Т
4 1 3 5 9 1 9 3 5 Т
5 6 7 9 8 6 8 7 9 Т
6 1 3 5 9 1 9 3 5 Т
7 3 4 6 8 3 8 4 6 Т
8 9 3 2 1 9 1 3 2 D
9 4 5 8 6 4 6 8 5 D
10 2 9 7 1 2 1 7 9 D
11 4 3 2 8 4 2 3 8 D
12 1 7 5 9 1 9 7 5 D
13 2 8 7 6 2 7 8 6 D
14 6 1 4 9 6 9 4 1 JK
15 5 4 8 2 5 8 2 4 JK
16 1 9 7 3 1 7 3 9 JK
17 9 3 1 7 9 7 1 3 JK
18 6 5 8 2 6 8 5 2 JK
19 7 8 1 2 7 1 8 2 JK
20 5 1 6 9 5 9 8 1 JK
21 4 8 5 3 4 3 8 5 D
22 2 7 4 9 2 4 7 9 D
23 1 9 3 5 1 3 5 9 D
24 6 8 7 9 6 7 9 8 D
25 1 9 3 5 1 3 5 9 D
26 3 8 4 6 3 4 6 8 D
27 4 8 5 3 4 3 8 5 D
28 6 8 5 2 6 5 8 2 Т
29 7 1 8 2 7 8 1 2 Т
30 5 9 8 1 5 1 6 9 Т
124

5.3. Образец выполнения проектного задания


№ варианта
Техническое задание:
1. Выполнить абстрактный и структурный синтез заданного
цифрового автомата Мура.
2. Разработку оформить в виде функциональной и
принципиальной схем.
3. Выполнить модель цифрового автомата в САПР Quartus. Снять
временные диаграммы работы автомата. Убедиться в
правильности работы модели.
4. Синтезировать генератор кодов, на выходах которого должны
генерироваться две различные непрерывные последова-
тельности сигналов, представленные в двоичном параллельном
коде. Одна последовательность (а1, а2, а3, а4) формируется при
входном сигнале x = 1, а другая последовательность (b1, b2, b3,
b4) – при x = 0.
5. Последовательности чисел и типы триггеров заданы таблицей в
соответствии с номером варианта:
№ Тип триггера Тип триггера
а1 а2 а3 а4 b1 b 2 b3 b4
варианта 1 2
- 3 9 4 5 3 4 9 5 D Т

Абстрактный синтез ЦА Мура


Если на управляющем входе – единичный сигнал, то необходимо

генерировать последовательность 3, 9, 4, 5, 3, 9, 4, 5, …, 3, ...

Если на управляющем входе - нулевой сигнал, то необходимо

генерировать последовательность 3, 4, 9, 5, 3, 4, 9, 5, …, 3, ...

Рассмотрим две схемы реализации автомата, взяв в качестве


элементов памяти Т-, D-триггеры. Комбинационные схемы будем
реализовывать на элементах конъюнкции, дизъюнкции и отрицания.
Генератор синтезируем, используя канонический метод структурного
синтеза автоматов Мура.
125

I этап. Является общим при синтезе всех схем. Определим, каким


числом состояний должен обладать наш автомат. Так как это автомат
Мура, то число состояний должно равняться числу всевозможных
выходных сигналов. Таких сигналов у нас четыре (3, 4, 5, 9), значит, и
число состояний автомата равняется четырем. Необходимое число
элементов памяти (триггеров) для кодирования всех состояний
определяется по формуле N   log 2 4   2 .
Таблица 2
Код
Состояние
1 2
а1 0 0
а2 0 1
а3 1 0
а4 1 1

Кодирование состояний элементов памяти осуществляется


произвольным кодом, результат заносится в табл. 2. Для удобства анализа
спроектированного генератора начальное состояние кодируется нулевым
кодом. Так как согласно заданию имеются два различных управляющих
сигнала, то у проектируемого автомата будет один входной канал. Причем
единичный сигнал на входе будет кодироваться сигналом х, а нулевой –
x . Число выходных сигналов определяется, исходя из условия исходного
задания, а именно: из требования необходимости кодирования
параллельным кодом в двоичной системе счисления заданных
последовательностей. В данном примере максимальная цифра – 9,
следовательно, число N выходных каналов определяется следующим
образом:

N   log 2 9   4.
Двоичное кодирование цифр выходной последовательности на
выходных каналах y1, у2, y3, у4 приведено в табл. 3.
Проведем синтез автомата, взяв в качестве элементов памяти T-
триггеры, работающие в режиме триггера со счетным входом.
126

Таблица 3
выход
y1 y2 y3 y4
код
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
9 1 0 0 1

II этап. Построим структурный граф автомата. Вершины графа


соответствуют состояниям автомата и обозначаются соответствующим
кодом состояний в буквенном представлении, где  соответствует
единичное состояние триггера, а  – инверсное состояние. Рядом с
вершинами записывается в буквенном представлении код выходного
сигнала, соответствующий данному состоянию. Дуги графа соответствуют
переходам автомата из одного состояния в другое и отличаются входными
сигналами х или x , под действием которых осуществляется переход (см.
рис. 2).

III этап. Получим функции возбуждения j1 , j 2 для триггера со


счетным входом. Если дуге перехода соответствует переход i-гo триггера
из одного состояния в другое, то необходимо на вход данного триггера
подать единичный сигнал, поэтому на данной дуге ставится функция
возбуждения этого триггера j i (рис. 30), затем отыскиваются все дуги
графа, помеченные сигналом j i , и каждой дуге ставится в соответствие
конъюнкция состояния автомата, из которого выходит дуга, и входного
сигнала, который приписан к дуге. Если дуге приписано несколько
входных сигналов, то они образуют несколько конъюнкций.
127

y1 y 2 y 3 y 4 y1 y 2 y 3 y 4
xj2
3  1 2  1 2 4
xx
x
j1 x
xj1 j1
j2 j2
xj1
j1
xj2 1 2
9 1 2 5

y1 y 2 y 3 y 4 y1 y2 y3 y4
Рис. 30. Структурный граф автомата Мура

Функция возбуждения j i представляет собой дизъюнкцию всех тех


конъюнкций, которые соответствуют дугам, помеченным сигналом j i .
При этом функции возбуждения имеют следующий вид:
j1   1 2 x   1 2 x   1 2 x   1 2 x   1 2 x   1 2 x ;
j 2   1 2 x   1 2 x   1 2 x   1 2 x.
IV этап. Получим выходные функции автомата. Определим все
состояния автомата, помеченные сигналом yj в прямой форме. Выходная
функция yj получается как дизъюнкция конъюнкции, каждая из которых
соответствует состоянию автомата, помеченному сигналом yj.
Следовательно, искомые функции y1, y2, y3 и y4 будут иметь следующий
вид:
y1   1 2 ;
y2   1 2   1 2 ;
y3   1 2 ;
y4   1 2   1 2   1 2 .
128

V этап. Минимизируем полученные выходные функции и функции


возбуждения с помощью карт Вейча (Карно). Карта Вейча для функции от
n переменных имеет вид прямоугольной таблицы при соотношении
сторон 1:1 или 1:2, она содержит 2n клеток. Каждой клетке ставится в
соответствие один из наборов n переменных. Для установления
соответствия между клетками и наборами на полях карты ставятся
символы, обозначающие аргумент или его инверсию. Каждой переменной
помечают половину клеток карты в прямом виде, а половину – в
инверсном. Для отыскания набора, соответствующего клетке, необходимо
прочитать обозначение аргументов, лежащих против данной клетки, по
строкам и столбцам. Если прочитанный аргумент не содержит инверсии,
то в наборе он принимает значение, равное 1. Если содержит, то
соответствующая ему переменная принимает значение, равное 0. В клетке
карты записывается значение, принимаемое функцией на
рассматриваемом наборе аргументов.
Для минимизации полученных логических функций воспользуемся
методом карт Карно.
При выполнении вариантов с номерами больше 20 необходимо
учесть, что минимизируемые функции не будут определены на всех тех
наборах, которые не использовались для кодирования рассматриваемой
последовательности. Если найдено минимально возможное число
контуров с максимальными размерами каждый, дизъюнкция конъюнкций,
соответствующих этим контурам, и будет искомой минимальной
дизъюнктивной формой рассматриваемой функции.
x x x

1 0 1 1 1
j1   1 2  x   1 2
1 1 1 1 0

2 2
129

x x x

1 1 0 0 0
j 2   1 2 x   1 x   1 2
1 0 1 1 1

2 2
1 0 1
y 2   1 2   1 2
1 1 0

2 2

1 1 1
y4 1 2
1 0 1

2 2
Минимизируем функции, полученные в нашем примере.
Функции y1 и y2 будут иметь только по одной единице в
соответствующих им картах Карно, следовательно, они не могут быть
минимизированы:
y1   1 2 ;
y3   1 2 .
VI этап. По минимизированным функциям возбуждения и
выходным функциям строим функциональную схему генератора на
синхронных Т-триггерах (рис. 31).
Результаты синтеза принципиальной схемы в Quartus, полученной на
основе функциональной схемы генератора на синхронных Т-триггерах,
(см. рис. 31) приведены на рис. 32-33.
&
1 j1
1 T TT & y1
1
1 C 8
& R 1 &
2 1 6
1 y2
3
& &
130

3 j2 2 7
1 T TT
2 & y3
& C
2 9
4 R 2
x
1 y4
& 4
x 5
1
C R
2 2 1 1
Рис. 31. Функциональная схема генератора на Т-триггерах
131

Рис. 32. Принципиальная схема генератора на Т-триггерах

Рис. 33. Результаты моделирования генератора на Т-триггерах в Quartus

Проведем синтез того же автомата, взяв в качестве элементов памяти


D-триггеры.
I этап. Кодирование входных и выходных сигналов и состояний
автомата оставим прежним.
II этап. Структурный граф автомата тоже не измениться (рис. 34).
132

y1 y 2 y 3 y 4 y1 y 2 y 3 y 4
xj2
 1 2  1 2
xx
x
j 1j2 j 1
x
j1
j2

j1
x
j1 x
1 2 1 2
y1 y 2 y 3 y 4 y1 y2 y3 y4
Рис. 34. Структурный граф автомата
III этап. Получим функции возбуждения для D-триггеров. Сигнал
возбуждения D-триггера должен быть равен единице лишь в том случае,
если данный триггер в следующем такте, также должен находиться в
единичном состоянии. Поэтому сигналы j i проставляем на тех дугах,
которые входят в вершины, помеченные прямым кодом  i . Функция
возбуждения j i представляет собой дизъюнкцию конъюнкций состояний,
из которых исходит дуга, помеченная сигналом j i в прямом виде, и
входного сигнала, приписанного данной дуге. Для рассматриваемого
примера:

j1   1 2 x   1 2 x   1 2 x   1 2 x;
j 2   1 2 x   1 2 x   1 2 x   1 2 x.
IV этап. Минимизируем полученные функции возбуждения с
помощью карт Вейча.
133

x x x

1 1 0 0 0
j1   2 x1   1 x1
1 1 1 1 0

2 2
x x x

1 0 1 0 0
j 2   1 2   1 x   1 2 x
1 1 0 1 1

2 2
V этап. Выходные функции автомата не зависят от выбранных
элементов памяти, т.е., как и в предыдущем, имеют вид:
y1   1 2 ;
y2   1 2   1 2 ;
y3   1 2 ;
y4   1   2 .
VI этап. По полученным выходным функциям и функциям
возбуждения строим функциональную схему генератора на D-триггерах
(рис. 35).
&
S TT
1 j1
1 D & y1
1
1 C 8
& R 1 &
2 1 6
1 y2
3
& 2 &
2
134

S TT
3 j2 7
1 D
2 & y3
& C
2 9
4 R 2
x 1 y4
& 4
1
x 5
C R
2 2 1 1
Рисунок. 35– Функциональная схема генератора на D-триггерах
135

6. ТВОРЧЕСКОЕ ЗАДАНИЕ
Творческое задание на тему «Синтез структурной схемы
управляющего автомата для выполнения заданной арифметической
операции» является необязательным для выполнения студентами.
Студенты могут выполнить его по желанию с целью добора баллов для
получения зачета.
6.1. Цель и задачи выполнения творческого задания
Целью и задачей выполнения проектного задания является
закрепление практических навыков синтеза структурной схемы
управляющего автомата для выполнения заданной арифметической
операции, выданной студенту в качестве задания на междисциплинарный
курсовой проект «Схемотехника ЭВМ».
6.2. Техническое задание на творческое задание
Определить распределенную во времени последовательность
управляющих функциональных сигналов, поступающих на управляющие
входы операционного блока (арифметико-логического устройства),
выполняющего заданную операцию. Синтезировать структурную схему и
описать работу управляющего автомата для выполнения заданной
арифметической операции.
Данные для выполнения творческого задания представлены в табл.
4. В таблице в зависимости от номера варианта указывается вид
управляющего автомата (микропрограммный или с «жесткой логикой»).
УА с хранимой в памяти логикой (микропрограммный автомат) делится
на три вида: с горизонтальным, вертикальным или смешанным
микропрограммированием.
136

Таблица 4
Управляющий автомат (УА)
№ Микропрограммный УА УА с «жесткой
Горизонт. Вертикал. Смешан. логикой»
1 Х
2 Х
3 Х
4 Х
5 Х
6 Х
7 Х
8 Х
9 Х
10 Х
11 Х
12 Х
13 Х
14 Х
15 Х
16 Х
17 Х
18 Х
19 Х
20 Х
21 Х
22 Х
23 Х
24 Х
25 Х
26 Х
27 Х
28 Х
29 Х
30 Х Х
137

6.3. Пример выполнения творческого задания


Техническое задание:
1. Определить распределенную во времени последовательность
управляющих функциональных сигналов, поступающих на
управляющие входы операционного блока (арифметико-
логического устройства), выполняющего заданную операцию.
2. Синтезировать структурную схему и описать работу управляющего
автомата для выполнения заданной арифметической операции.

Операция, выполняемая в
№ варианта Тип УА
операционном блоке
Управляющий автомат с
B1 – B2
«жёсткой логикой»

Структурная схема управляющего автомата с «жёсткой» логикой:

Формирователи
Формирователи управляющих
управляющих
сигналов
сигналов

Логические схемы образования


управляющих сигналов Блок
синхросигналов
вычитание
сложение

Такт n
Такт 1
Такт 2

... ..
Дешифратор Дешифратор
кода операции тактов

Регистр кода
Счетчик тактов
операции

В состав схемы УА с «жёсткой» логикой входят:


1) регистр кода операции, являющийся частью регистра команд;
2) счетчик тактов;
3) дешифратор тактов;
4) дешифратор кода операции;
138

5) логические схемы образования управляющих функциональных


сигналов.
На счетчик тактов поступают сигналы от блока синхросигналов, и
счетчик с каждым сигналом меняет свое состояние. Состояния счетчика
представляют номера тактов, изменяющиеся от 1 до n. Дешифратор тактов
формирует на j-м выходе единичный сигнал при i-м состоянии счетчика
тактов, т.е. во время i-го такта.
Дешифратор кода операции вырабатывает единичный сигнал на j-м
выходе, если исполняется j-я. команда. Логические схемы образования
управляющих функциональных сигналов для каждой команды
возбуждают формирователи функциональных сигналов для выполнения
требуемых в данном такте микроопераций.
Распределенная во времени последовательность управляющих
функциональных сигналов, поступающих на управляющие входы
операционного блока, выполняющего заданную операцию (В1 - B2) над
числами с плавающей запятой будет иметь следующий вид.
1. Запись операндов во входные регистры.
2. Вычитание порядков.
3. Сдвиг вправо мантиссы числа с меньшим порядком на величину
разности порядков.
4. Изменение знака мантиссы вычитаемого на противоположный.
5. Перевод отрицательных мантисс в дополнительный код.
6. Сложение мантисс.
7. Анализ мантиссы частного на нарушение нормализации и если
необходима нормализация, то:
- Сдвиг мантиссы вправо на 1 разряд или влево на несколько
разрядов, в зависимости от вида нарушения нормализации;
- Увеличение порядка на 1, если было нарушение нормализации
влево или уменьшение порядка на число сдвинутых разрядов мантиссы,
если было нарушение нормализации вправо.
8. Запись результата в выходной регистр.
Микрооперации 4 и 5 могут быть совмещены во времени с операцией
2, после чего в этом случае должна выполняться микрооперация 3, а за
ней микрооперация 6 и следующие за ней.
139

7. ТЕКУЩИЙ И РУБЕЖНЫЙ КОНТРОЛЬ ЗНАНИЙ


7.1. Организация текущего контроля знаний
Форма текущего контроля модуля: работа на практических
занятиях и выполнения творческого проекта.
Описание критериев оценки текущего контроля модуля «Теория
цифровых автоматов»:
Форма текущего Критерий
№ Описание критерия
контроля оценки
1 Работа на практических Балльный Активная работа на
занятиях практических занятиях (работа
у доски, самостоятельно
выполненное задание и т.д.)
оценивается до 1 балла за
занятие: min – 0, max – 5
2 Выполнение Балльный За выполненное
индивидуального индивидуальное проектное
проектного задания задания студент может
«Синтез цифровых получить в баллах:
автоматов Мура» min – 3, max – 5
3 Выполнение творческого Балльный За выполненное творческое
задания «Устройства задание студент может
управления» (для добора получить в баллах:
баллов – по желанию min – 0, max – 5
студента)
Итого за модуль баллов: min – 3, max – 15

7.2. Формы рубежного контроля


Форма рубежного контроля модуля: контрольная работа и устное
собеседование.
Система оценивания результатов рубежного контроля модуля.
Форма рубежного Критерий
№ Описание критерия
контроля оценки
1 Контрольная работа Балльный min – 3, max – 5
2 Устное собеседование Балльный min – 3, max – 5
Итого за модуль баллов: min – 6, max – 10
140

7.2.1. Форма проведения контрольной работы в рамках рубежного


контроля модуля «Теория цифровых автоматов»
Контрольная работа выполняется в письменном виде. Пример
заданий для контрольной работы в рамках рубежного контроля модуля
«Теория цифровых автоматов».
1. Составьте алгоритм выполнения операции сложения для чисел с
плавающей запятой. Формат числа: мантисса 5 разрядов, порядок
4 разряда.
2. Преобразуйте заданный граф автомата Мура в граф автомата
Мили.
3. Поясните принцип горизонтального микропрограммирования.
7.2.2. Форма проведения собеседования в рамках рубежного контроля
модуля «Теория цифровых автоматов»
Собеседование работа проходит в устной форме по вопросам
контрольной работы.
7.3. Перечень контрольных вопросов по модулю «Теория цифровых
автоматов»
РАЗДЕЛ 1
Основные понятия и определения теории конечных цифровых
автоматов
1. Как называется устройство, предназначенное для преобразования
цифровой (дискретной) информации, способное переходить под
воздействием входных сигналов из одного состояния в другое и
выдавать выходные сигналы.
2. Дайте определение понятию «цифровой автомат».
3. Как называется автомат без памяти?
4. Поясните термин «Абстрактный цифровой автомат».
5. Чем отличается цифровой автомат от комбинационной схемы?
6. Чем отличается цифровой автомат от конечного цифрового автомата?
7. Что должно быть указано для задания цифрового автомата?
8. Дайте понятие цифрового автомата синхронного и асинхронного
действия.
9. Как функционирует автомат Мили?
141

10. Как функционирует автомат Мура?


11. В чем отличие функционирования автомата Мили от автомата Мура?
12. Перечислите известные варианты цифровых автоматов.
13. Перечислите способы задания цифровых автоматов.
14. Что представляет собой таблица переходов и выходов?
Управляющие автоматы
1. Назначение управляющего устройства ЭВМ – управляющего
автомата.
2. Является ли управляющий автомат конечным автоматом?
3. Поясните принцип функционирования управляющего автомата с
жесткой или схемной логикой.
4. Поясните принцип функционирования управляющего автомата с
хранимой в памяти логикой.
5. Перечислите способы формирования управляющим автоматом с
хранимой в памяти логикой управляющих сигналов.
6. В чем заключается принцип горизонтального микропрограмми-
рования?
7. В чем заключается принцип вертикального микропрограммирования?
8. Перечислите достоинства и недостатки горизонтального и
вертикального микропрограммирования.
9. Почему наибольшее распространение имеет смешанное
микропрограммирование?
10. Что представляет собой программируемая логическая матрица?
11. В чем заключается программирование матрицы?
РАЗДЕЛ 2
Арифметические основы цифровых автоматов
1. Приведите запись чисел Х1=(14,5)10, Х2=(6.25)10 и Х3=(1,125)10 в
двоичной системе счисления в машинных кодах с фиксированной
запятой в формате n=8 со знаком.
2. Приведите запись чисел Х1=(14,5)10, Х2=(6.25)10 и Х3=(1,125)10 в
двоичной системе счисления в машинных кодах с плавающей запятой
в формате n=8 со знаком (мантисса), k=4 со знаком (порядок).
3. Поясните алгоритм выполнения в ЦА сложения положительных чисел
с фиксированной запятой и покажите на конкретном примере.
142

4. Поясните алгоритм выполнения в ЦА сложения чисел с


произвольными знаками с фиксированной запятой и покажите на
конкретном примере.
5. Поясните алгоритм выполнения в ЦА вычитания положительных
чисел с фиксированной запятой и покажите на конкретном примере.
6. Поясните алгоритм выполнения в ЦА вычитания чисел с
произвольными знаками с фиксированной запятой и покажите на
конкретном примере.
7. Поясните, как в ЦА определяется наличие или отсутствие
переполнения при выполнении операций сложения и вычитания чисел
с фиксированной запятой?
8. Перечислите известные Вам методы организации выполнения
операции умножения чисел с фиксированной запятой.
9. Какой метод перемножения чисел с фиксированной запятой является
наиболее эффективным и почему?
10. Поясните различие в алгоритмах перемножения целых и дробных
чисел с фиксированной запятой.
11. Как выполняется умножение чисел с фиксированной запятой в случае
равенства нулю одного из сомножителей?
12. Поясните на конкретном примере алгоритм выполнения в ЦА
операции деления целых чисел с фиксированной запятой в прямом
коде.
13. Запишите условие возможности деления в прямом коде целых и
дробных чисел с фиксированной запятой.
14. Поясните на конкретном примере алгоритм выполнения операции
деления с фиксированной точкой в дополнительных кодах.
15. Приведите пример выполнения арифметических операций сложения и
вычитания с плавающей точкой.
16. Приведите пример выполнения арифметических операций умножения
с плавающей точкой.
17. Поясните на примерах выполнение операций нормализации
результата и переполнения.
18. Как выполняется в ЦА арифметическая операция деления чисел с
плавающей точкой?
143

19. Назовите известные Вам методы ускорение операций умножения и


деления.
Организация АЛУ цифровых автоматов
1. Поясните составляющие структуры АЛУ для сложения чисел с
фиксированной запятой.
2. Поясните составляющие структуры АЛУ для вычитания чисел с
фиксированной запятой.
3. Поясните структуру сумматора частичных произведений.
4. Поясните последовательность действий ЦА по структурной схеме
АЛУ для умножения целых чисел с фиксированной запятой.
5. Поясните структуру АЛУ для деления чисел с фиксированной запятой.
6. Синтезируйте структурную схему АЛУ для умножения целых чисел с
плавающей запятой.
7. Синтезируйте структурную схему АЛУ для деления целых чисел с
плавающей запятой.
144

ЗАКЛЮЧЕНИЕ
Учебное пособие охватывает все виды занятий модуля «Теория
цифровых автоматов» дисциплины «Схемотехника ЭВМ и систем».
Модуль содержательно разбит на два раздела.
Пособие содержит подробный конспект лекций. Рассмотрен
практикум в рамках модуля «Теория цифровых автоматов».
В пособии представлены примеры заданий всех видов контроля
знаний. Изучение первого раздела завершается выполнением
индивидуального творческого проекта текущего контроля. С целью
повышения академической активности студентов предлагается добор
баллов в рамках текущего контроля по модулю за активную работу на
практических занятиях и выполнение проектного задания по теме
«Управляющие автоматы».
145

ПРИНЯТЫЕ СОКРАЩЕНИЯ И ОБОЗНАЧЕНИЯ


БП – блок памяти
ГА – граф автомата
ГСА – граф-схема алгоритма
ДНФ – дизъюнктивная нормальная форма
ЗЯ – запоминающая ячейка
ИМС – интегральная микросхема
КНФ – конъюнктивная нормальная форма
КС – комбинационная схема
МДНФ – минимальная дизъюнктивная нормальная форма
МКНФ – минимальная конъюнктивная нормальная форма
ОА – операционный автомат
ОЗУ – оперативное запоминающее устройство
ПЭВМ – персональная ЭВМ
СДНФ – совершенная дизъюнктивная нормальная форма
СКНФ – совершенная конъюнктивная нормальная форма
СС – система счисления
ТИ (CLK) – тактовые импульсы
ТЗ – техническое задание
ШД – шина данных
УА – управляющий автомат
УГО – условное графическое обозначение
ЦА – цифровой автомат
RG – регистр
SM – сумматор
T – триггер (одноступенчатый)
TT – триггер (двухступенчатый)
146

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Горбатов В. А. и др. Теория автоматов. –М. Изд-во «Астрель»,
2008. – 559с.
2. Пуховский В.Н., Мунтян Е.Р. Рабочая программа по дисциплине
«Схемотехника ЭВМ и систем» (VT//Students/Учебные курсы/
Схемотехника ЭВМ и систем).
3. Пуховский В.Н., Гузик В.Ф., Мунтян Е.Р. Учебное пособие по
курсу «Схемотехника». – Таганрог: Изд-во ТТИ ЮФУ, 2012. – 283 с.
4. Пуховский В.Н., Гузик В.Ф., Мунтян Е.Р., Ляпунцова Е.В.
Учебное пособие по курсу «Схемотехника». – 2-е доп. изд. – Таганрог:
Изд-во ЮФУ, 2014. – 294 с.
5. Мунтян Е.Р. Практикум по курсу «Информатика»: учебное
пособие. – Таганрог: Изд-во ТТИ ЮФУ, 2013. – 117 с.
6. Гармаш А.Н. Основы информатики: учебное пособие. Таганрог:
Изд-во ТРТУ, 2006. – 180 с.
7. http://3ys.ru/strukturnyj-sintez-tsifrovykh-
avtomatov/upravlyayushchie -avtomaty.html
8. http://library.tuit.uz/skanir_knigi/book/arhitektura_EVM/arhitektura_
EVM_3.htm
9. http://www.coolreferat.com/Микропрограммные_автоматы_часть=
3
10. http://gsmtut.narod.ru/tp/1.1.html
11. Самофалов К.Г., Романкевич А.М., и др. Прикладная теория
цифровых автоматов. – Киев: Вища школа, 1987.
12. Соловьев Г.Н. Арифметические устройства ЭВМ. – М.: Энергия,
1978.
13. Савельев А.Я. Прикладная теория цифровых автоматов – М.:
Высшая школа, 1987.
14. Каган Б.М. Электронные вычислительные машины и системы. –
М.: Энергоатомиздат, 1985.
15. Лысиков Б.Г. Арифметические и логические основы цифровых
автоматов. – Минск: Вышэйшая школа, 1980.
147

Учебное издание

Гузик Вячеслав Филиппович


Пуховский Валерий Николаевич
Мунтян Евгения Ростиславна
Мунтян Олег Андреевич

ТЕОРИЯ ЦИФРОВЫХ АВТОМАТОВ

УЧЕБНОЕ ПОСОБИЕ

Ответственный за выпуск Мунтян Е.Р.


Редактор Селезнева Н.И.
Корректор Селезнева Н.И.

Формат 60x84 1/16. Подписано к печати 05.12.2015.


П. л. – 9,3. Уч.-изд. л. – 9,1.
Заказ № ___ Тираж 50 экз.

________________________________________________________________
Издательство Южного федерального университета
344091, г. Ростов-на-Дону, пр. Стачки, 200/1.
Отпечатано в Секторе обеспечения полиграфической продукцией кампуса
в г. Таганроге отдела полиграфической, корпоративной и сувенирной
продукции ИПК КИБИ МЕДИА ЦЕНТРА ЮФУ.
ГСП 17А, Таганрог, 28, Энгельса, 1, тел. (8634)371717, 371655.