Ещё один готовый курсовой проект
Описание файла
Документ из архива "Ещё один готовый курсовой проект", который расположен в категории "". Всё это находится в предмете "теория автоматов" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "теория автоматов" в общих файлах.
Онлайн просмотр документа "Ещё один готовый курсовой проект"
Текст из документа "Ещё один готовый курсовой проект"
МОСКОВСКИЙ ИНСТИТУТ РАДИОТЕХНИКИ,
ЭЛЕКТРОНИКИ И АВТОМАТИКИ
(Технический Университет)
Кафедра Вычислительной Техники
КУРСОВАЯ РАБОТА
Группа: ВСС–1–97
Студентка: Шарапова Д.А.
Преподаватель: Иваненко Нина Сергеевна
Москва
2001
Оглавление
Задание на курсовую работу 3
Используемые сокращения 4
Структура ВУ 5
Обоснование алгоритмов 6
Блок-схема алгоритма 8
Примеры расчетов. 10
Описание используемых функциональных узлов 12
Функциональная схема ОА и УА 14
Таблица прошивки памяти ПЗУ 15
Таблица соответствия управляющих сигналов и блоков m 16
Таблица соответствия предикатных блоков Р, входов MX в УА и внутренних сигналов h схемы ОА 17
Алгоритм в mp кодах 18
Задание на курсовую работу
Факультет ВАВТ
Кафедра Вычислительной техники
Студентка Шарапова Дарья Александровна
Группа ВСС–1–97
Разработать вычислительное устройство, состоящее из двух взаимосвязанных частей — операционного и управляющего автоматов — и выполняющее следующие операции:
1. Нахождение суммы массива чисел с фиксированной точкой.
2. Умножение двух чисел с фиксированной точкой со сложением в двухрядовом коде.
Числа произвольных знаков 16 разрядов, код дополнительный, числа с ФТ.
Тип УА — с частичной записью адреса.
Должны быть разработаны и представлены
1. Интерфейс разрабатываемого устройства.
2. Математическое обоснование используемых алгоритмов и схема алгоритма.
3. Микропрограммы в содержательной и закодированной формах.
4. Таблица управляющих сигналов и комментарии к ней.
5. Таблица заполнения управляющей памяти.
6. Функциональные схемы операционного и управляющего автоматов.
Функциональные схемы разрабатываются с использованием многоразрядных мультиплексоров, дешифраторов, сумматоров, регистров, счетчиков, ПЗУ с четким указанием информационных, управляющих и синхронизирующих входов.
Управляющий автомат должен проектироваться с использованием ПЗУ.
Используемые сокращения
АвОст — аварийный останов.
СИ — синхроимпульсы.
ВУ — вычислительное устройство.
ДК — дополнительный код.
КОп — код операции.
ОА — операционный автомат.
М2 — схема сложения по модулю 2 (xor).
ПЗУ — постоянное запоминающее устройство.
(р.) — действие совершается по разрядам.
УА — управляющий автомат.
ФТ — фиксированная точка (запятая).
ШИВх — шина информационная входная.
ШИВых — шина информационная выходная.
ШУВх — шина управления входная.
ШУВых — шина управления выходная.
СТ — счетчик.
Err (Error) — ошибка.
МХ — мультиплексор.
Overload — переполнение.
Reset — выполнение команды обнуления регистров и счетчиков в ОА (rst, y1)
Rdi — готов к приему.
Rdo — готов к выдаче.
RG — регистр.
RG1[i]/0 — схема выбора одного из значений реализована в ОА.
ROM — см. ПЗУ.
rst — сигнал обнуления регистров и счетчика ОА (y1).
SM — сумматор.
xor — операция логического сложения по модулю 2.
Структура ВУ
Разработанный автомат может быть представлен в виде совокупности операционного и управляющего автоматов (далее ОА и УА) с внутренними связями.
Операционный автомат предназначен для непосредственного выполнения поставленной задачи: нахождения суммы чисел массива и умножения двух чисел со сложением в двухрядовом коде.
Управляющий автомат выполняет функции контроля и общего руководства над процессами вычислений.
ШИВх и ШИВых — 16-ти разрядные информационные шины данных. С их помощью автомат обменивается данными с "внешней средой" — по ШИВх в автомат поступают числа, предназначенные для обработки, а по ШИВых автомат выдает результат.
ШУВх — 7-и разрядная шина, передающая в автомат разрешение на прием и выдачу информации (0-й и 1-й разряды), КОп (2-й разряд) и количество элементов в массиве (3-й–6-ой разряды).
ШУВых — 4-х разрядная шина, по которой автомат сообщает о готовности к приему, выдаче, об ошибке (error) или об аварийной остановке (АвОст).
Обмен информацией между УА и ОА осуществляется по двум внутренним шинам: H — 5-и разрядная шина, передающая информацию о состоянии ОА в УА. Y — 26-и разрядная шина, управляющая процессом вычисления, происходящем в ОА.
Операции с числами проводятся в дополнительном коде, знаковым является 0-й разряд. Формат числа: 0-й разряд — знак; 1–15-й разряды — число в дополнительном коде.
Обоснование алгоритмов
1. Для нахождения суммы массива чисел необходимо знать количество элементов в массиве (от 0 до 15). Количество элементов поступает по ШУВх (3-й–6‑й разряды) одновременно с поступлением первого числа и сохраняется на счетчике. Так как при наличии одного (первого) числа в регистре количество элементов в массиве не может быть меньше одного, будем считать размер массива равный 0 критической ошибкой и будем проводить аварийный останов (АвОст) работы ОА, с выдачей соответствующего сигнала.
Если размер массива больше 0, то будем последовательно складывать числа, с контролем на переполнение, и уменьшать счетчик. Когда счетчик будет равен 0 — это будет означать, что сложение чисел завершено.
После завершения сложения выдаем результат на ШИВых. Если в процессе сложения возник сигнал переполнения, то выдается сигнал об ошибке и останавливается работа ОА.
2. Для умножения двух чисел в двухрядовом коде необходимо, после приема, провести анализ их знаков. Причем двухрядовый код позволяет осуществлять умножение на отрицательное число в дополнительном коде, но не позволяет умножать отрицательное число на какое-либо другое.
Поэтому проводим анализ знака множимого и подаем его на сумматоры в прямом (положительное) или дополнительном (отрицательное по модулю) коде. В зависимости от значения младшего знака множителя складываем промежуточную сумму и переносы с предыдущего шага с множимым (младший разряд множителя равен 1) или с нулями (младший разряд множителя равен 0).
После сложения производится сдвиг вправо множителя и промежуточной суммы. Промежуточная сумма хранится на двух регистрах (для точного умножения): старший активно участвует в сложении, в младшем хранятся уже неизменяемые младшие разряды произведения. Поэтому при сдвиге младший разряд старшего регистра пересылается на вход DCR (вход заполнения крайнего левого разряда при сдвиге вправо) младшего регистра.
Количество произведенных шагов сложения подсчитывается. После умножения на все числовые разряды производится умножение на знаковый разряд (коррекция при умножении на отрицательное число) при котором на вход сумматоров подается множимое в дополнительном коде.
Так как используется положительный множитель, то на последнем шаге он подается на сумматоры преобразованном в дополнительный код (положительный множитель) или без преобразования (отрицательный множитель).
Для упрощения алгоритма можно последнее действие выполнять в главном цикле умножения инвертируя знаковый разряд множителя по сигналу заполнения счетчика. Это можно выполнить с помощью схемы сложения по модулю 2.
После выполнения основных шагов умножения необходимо провести сложение произведения и последнего переноса.
Последним шагом перед выдачей результата является перевод произведения (если надо) в дополнительный код. Он осуществляется в 2 этапа: на первом этапе переводятся младшие разряды с контролем появления единицы переноса в старшие разряды; на втором этапе инвертируются старшие разряды и к ним прибавляется перенос от сложения на первом этапе (если переноса не было — прибавляется ноль).
Выдача результата также производится в два этапа: на первом выдаются старшие 16 разрядов; на втором — младшие.
При всех обменах информацией (прием данных и выдача результата) предварительно выдаются сигналы готовности к обмену (готов к приему или готов к выдаче).
Блок-схема алгоритма
Примеры расчетов.
Проведем на 8-и разрядных числах.
Нахождение суммы массива из 3-х чисел.
RG1 | RG3 | CT1 | Примечание |
0000 0000 | 0000 0000 | 0000 | Начальные значения |
0010 1100 | 0000 0000 | 0011 | Прием первого числа и размера массива |
0010 1100 | 0010 1100 | 0010 | Сложение регистров и уменьшение значения счетчика на 1 |
0011 1101 | 0010 1100 | 0010 | Прием второго числа |
0011 1101 | 0110 1001 | 0001 | Сложение регистров и уменьшение значения счетчика на 1 |
0001 0101 | 0110 1001 | 0001 | Прием третьего числа |
0001 0101 | 0111 1110 | 0000 | Сложение регистров и уменьшение значения счетчика на 1 |
0001 0101 | 0111 1110 | 0000 | Сложение завершено, выдаем результат. |
Результат: 0111 1110.
Умножение.
Рассмотрим вариант умножения 2-х отрицательных чисел
-99 (1001 1101) и –67 (1011 1101).
RG1 | RG2 | RG3 | RG4 | RG5 | CT1 | Примечание |
1001 1101 | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0000 | 000 | Прием первого числа |
1001 1101 | 1011 1101 | 0000 0000 | 0000 0000 | 0000 0000 | 000 | Прием второго числа |
1001 1101 | 1011 1101 | 0110 0011 | 0000 0000 | 0000 0000 | 000 | Складываем RG1 в ДК с RG3 по разрядам (р.) |
1001 1101 | 0101 1110 | 0011 0001 | 0000 0000 | 1000 0000 | 001 | Сдвиги и увеличение CT1 |
1001 1101 | 0101 1110 | 0011 0001 | 0000 0000 | 1000 0000 | 001 | Складываем RG3 и переносы (р.) |
1001 1101 | 0010 1111 | 0001 1000 | 0000 0000 | 1100 0000 | 010 | Сдвиги и увеличение CT1 |
1001 1101 | 0010 1111 | 0111 1011 | 0000 0000 | 1100 0000 | 010 | Складываем RG1 в ДК, RG3 и переносы (р.) |
1001 1101 | 0001 0111 | 0011 1101 | 0000 0000 | 1110 0000 | 011 | Сдвиги и увеличение CT1 |
1001 1101 | 0001 0111 | 0101 1110 | 0010 0001 | 1110 0000 | 011 | Складываем RG1 в ДК, RG3 и переносы (р.) |
1001 1101 | 0000 1011 | 0010 1111 | 0010 0001 | 0111 0000 | 100 | Сдвиги и увеличение CT1 |
1001 1101 | 0000 1011 | 0110 1101 | 0010 0011 | 0111 0000 | 100 | Складываем RG1 в ДК, RG3 и переносы (р.) |
1001 1101 | 0000 0101 | 0011 0110 | 0010 0011 | 1011 1000 | 101 | Сдвиги и увеличение CT1 |
1001 1101 | 0000 0101 | 0111 0110 | 0010 0011 | 1011 1000 | 101 | Складываем RG1 в ДК, RG3 и переносы (р.) |
RG1 | RG2 | RG3 | RG4 | RG5 | CT1 | Примечание |
1001 1101 | 0000 0010 | 0011 1011 | 0010 0011 | 0101 1100 | 110 | Сдвиги и увеличение CT1 |
1001 1101 | 0000 0010 | 0001 1000 | 0010 0011 | 0101 1100 | 110 | Складываем RG3 и переносы (р.) |
1001 1101 | 0000 0001 | 0000 1100 | 0010 0011 | 0010 1110 | 111 | Сдвиги и увеличение CT1 |
1001 1101 | 0000 0001 | 1011 0010 | 0000 1101 | 0010 1110 | 111 | Складываем RG1, RG3 и переносы (р.) |
1001 1101 | 0000 0000 | 1101 1001 | 0000 1101 | 0001 0111 | 111 | Сдвиги |
1001 1101 | 0000 0000 | 1110 0110 | 0000 1101 | 0001 0111 | 111 | Сложение RG3 и RG4 |
1001 1101 | 0000 0000 | 1110 0110 | 0000 1101 | 1110 1001 | 111 | Перевод RG5 в ДК |
1001 1101 | 0000 0000 | 0001 1001 | 0000 1101 | 1110 1011 | 111 | Инверсия RG3 |
Результат: 0001 1001 1110 1011 = 6633 = (-99)·(-67).