Разработка устройства сложения чисел с плавающей точкой с естественным адресом
Разработка устройства сложения чисел с плавающей точкой с естественным адресом. Анализ видов чисел. Формы представления данных в ЭВМ. Алгоритм сложения чисел с плавающей точкой. Блок-схема алгоритма. Разработка микропрограммного устройства управления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.01.2022 |
Размер файла | 706,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ Государственное АВТОНОМНОЕ образовательное учреждение Высшего образования
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
ИНСТИТУТ ИНЖЕНЕРНЫХ И ЦИФРОВЫХ ТЕХНОЛОГИЙ
Кафедра информационно-телекоммуникационных систем и технологий
Курсовой проект
Разработка устройства сложения чисел с плавающей точкой с естественным адресом
Курылева Владислава Евгеньевича
Белгород 2021
- Введение
- алгоритм микропрограммный число плавающая точка
- Потребность в вычислениях возникла у людей на самых ранних стадиях развития человеческого общества. С самого начала для облегчения счета люди использовали различные приспособления. Многие из них были весьма интересными по принципу действия, но все они обязательно требовали, чтобы в процессе вычислений активно участвовал человек-оператор. Качественно новый этап развития вычислительной техники наступил с изобретением и созданием электронных вычислительных машин, которые работают автоматически, без участия человека, в соответствии с заранее заданной программой. В настоящее время во всех сферах деятельности используются различные вычислительные машины, которые могут выполнять разнообразные математические операции. Самыми простыми операциями, выполняемыми ЭВМ, являются сложение, вычитание деление и умножение чисел. ЭВМ все операции выполняет с двоичными числами.
- Данный курсовой проект сложения чисел с плавающей точкой с естественным адресом. Целью проекта является разработка устройства сложения чисел с плавающей точкой с естественным адресом.
- Задачи курсового проекта:
· Изучить виды чисел.
· Изучить формы представления данных в ЭВМ
· Изучить алгоритм сложения чисел с плавающей точкой
· Построить блок-схему алгоритма
· Разработать микропрограммное устройство управления
1.Числа с фиксированной и плавающей запятой
1.1 Фиксированная запятая
Число с фиксированной запятой -- формат представления вещественного числа в памяти ЭВМ в виде целого числа. При этом само число x и его целочисленное представление x? связаны формулой x = x' \cdot z.
Немногие языки программирования предоставляют встроенную поддержку чисел с фиксированной запятой, поскольку для большинства применений двоичное или десятичное представление чисел с плавающей запятой проще и достаточно точно. Числа с плавающей запятой проще из-за их большего динамического диапазона, для них не нужно предварительно задавать количество цифр после запятой. Если же потребуется арифметика с фиксированной запятой, она может быть реализована программистом даже на языках типа C и C++, которые обычно не включают в себя такой арифметики.
Числа с фиксированной запятой в формате BCD часто используются для хранения денежных величин -- неточности от форматов с плавающей запятой недопустимы, а простеньким микроконтроллерам платёжных терминалов BCD предпочтительнее двоичного представления. Исторически, числа с фиксированной точкой часто использовались для десятичных типов данных, например в языках PL/I и COBOL. Язык программирования Ada включал встроенную поддержку чисел с фиксированной запятой (как двоичных, так и десятичных) и чисел с плавающей запятой. JOVIAL и Coral 66 также предоставляли оба формата.
Применение
· Для ускорения вычислений в местах, где не требуется высокая точность. В большинстве современных процессоров ФЗ аппаратно не реализована, но даже программная ФЗ очень быстра -- поэтому она применяется в разного рода игровых движках, растеризаторах[1] и т. д. Например, движок Doom для измерения расстояний использует фиксированную запятую 16,16, для измерения углов -- 360°=65536.
· Чтобы обеспечить минимальную поддержку дробных чисел на целочисленном процессоре -- микроконтроллера, мобильного телефона, приставок вплоть до Playstation и т. д. Если не решаются некорректные задачи и СЛАУ высокого порядка, фиксированной запятой зачастую достаточно -- важно только подобрать подходящую цену (вес) младшего разряда для каждой из величин.
· Для записи чисел, которые по своей природе имеют постоянную абсолютную погрешность: координаты в программах вёрстки, денежные суммы. Например, файлы метрики шрифтов TeX используют 32-битный знаковый тип с фиксированной запятой (12,20).
· Кроме того, фиксированная запятая ведёт себя абсолютно предсказуемо -- при подсчёте денег это позволяет наладить разные виды округления, а в играх -- наиболее простой способ реализовать мультиплеер и запись повторов.
Недостаток фиксированной запятой -- очень узкий диапазон чисел, с угрозой переполнения на одном конце диапазона и потерей точности вычислений на другом. Эта проблема и привела к изобретению плавающей запятой. Например: если нужна точность в 3 значащих цифры, 4-байтовая фиксированная запятая даёт диапазон в 6 порядков (то есть, разница приблизительно 106 между самым большим и самым маленьким числом), 4-байтовое число одинарной точности -- в 70 порядков.
1.2 «Плавающая запятая» и «плавающая точка»
Так как в некоторых, преимущественно англоязычных и англофицированных, странах (см. подробный список Decimal separator (англ.)) при записи чисел целая часть отделяется от дробной точкой, то в терминологии этих стран фигурирует название «плавающая точка» (floating point (англ.)). Так как в России целая часть числа от дробной традиционно отделяется запятой, то для обозначения того же понятия используется термин «плавающая запятая».
Для представления чисел с плавающей точкой разработан и введен стандарт IEEE-754, включающий базовый одинарный, базовый двойной, расширенный одинарный и расширенный двойной форматы, отличающиеся количеством разрядов и способами представления мантиссы и порядка. На рис.1 приведена структура полей базового 32-разрядного одинарного формата. Формат содержит знаковый разряд S, 8-разрядное поле для смещенного порядка В и 23-разрядное поле для мантиссы F.
Рисунок-1 Базовый одинарный формат
В этом формате при изображении порядка используется смещение, равное 127, скрытый бит целой части мантиссы Fq, содержащий 1. Минимальный (Е = 0) и максимальный (В = 255) порядки зарезервированы для представления специальных чисел. Диапазон ± 38 представления чисел в этом формате составляет ±10 , а точность 6-7 десятичных разрядов. Приведем несколько примеров кодирования чисел в этом формате:
В рассмотренных далее алгоритмах для 8-разрядных микроконтроллеров принимается представление истинного нуля нулевым набором (знак, порядок, мантисса). Специальные числовые значения из стандарта (на изображения бесконечности, неопределенности) учитывать не будем.
Во всех приводимых программах арифметических операций для микроконтроллеров AVR принято размещение исходных операндов и результатов во второй половине регистров общего назначения (R16…R31). Первый операнд, символически обозначаемый А, размещается в четырех регистрах А: рА (порядок), шАН, тАМ, rtiAL (старший, средний и младший байты мантиссы). Второй операнд, символически обозначаемый В, размещается в регистрах В: рВ (порядок), тВН, шВМ, mBL (мантисса). Результат помещается перед выходом из процедуры в регистры рА, шАН, тАМ, mAL.
Для выполнения арифметических операций над числами с плавающей точкой в микроконтроллерах необходимо разрабатывать довольно сложные подпрограммы. Исходные числа в формате с плавающей точкой представлены знаком, мантиссой и порядком. Мантисса является правильной дробью, разряды которой представляют значащие разряды числа, порядок показывает фактическое положение точки в записи мантиссы.
1.3 Сложение чисел с плавающей точкой
Процедура сложения чисел с плавающей точкой одного знака включает следующие действия:
* определяется разность порядков слагаемых Ар = (рА - рВ). При неравенстве порядков, если разность порядков больше 0, сдвигается мантисса числа В вправо до тех пор, пока порядок меньшего числа В не станет равным большему; если разность порядков меньше 0, сдвигается мантисса числа А вправо;
* после выравнивания порядков слагаемых при Ар = 0 производится сложение мантисс. В качестве порядка суммы принимается рА или рВ;
* проверяется мантисса суммы на возможность нарушения нормализации. При сложении чисел с одинаковыми знаками возможно нарушение нормализации только влево на один разряд. Чтобы получить нормализованную мантиссу, необходимо сдвинуть ее вправо. Порядок увеличивается на единицу, что может привести к переполнению.
На рис.2 приведена схема алгоритма сложения чисел А и В с плавающей точкой и одинаковыми знаками. Каждое слагаемое представлено однобайтовым порядком и трехбайтовой мантиссой в стандартном формате: знак числа, 8-разрядный смещенный порядок, 23-разрядная мантисса со скрытой единицей (всего 32 разряда). Число А перед началом операции размещено в регистрах рА, тАН, шАМ, mAL, число В - в регистрах рВ, рВИ, рВМ, pBL. Результат операции сохраняется на месте первого операнда А.
Рисунок-2 Схема алгоритма сложения с плавающей точкой
Процедура сложения с плавающей точкой AddF начинается с проверки знаков слагаемых. Если знаки операндов не совпадают, знак второго операнда изменяется на противоположный и выполняется переход к процедуре вычитания чисел SubF. Если исходные операнды имеют один знак, каждый из них проходит проверку на равенство 0. Если один из операндов равен О, сложение не проводится, а результат принимается равным другому операнду. При этом в случае равенства О первого операнда регистры А и В обмениваются операндами. На этом операция заканчивается. Преобразование результата в стандартный формат не проводится.
Если оба операнда ненулевые, в однобитовом флаге Т регистра состояния микроконтроллера SREG сохраняется общий знак операндов и выполняется их восстановление из базового формата. Поскольку для этого используется одна и та же процедура гес из библиотеки вспомогательных процедур, настроенная на работу с регистрами А, перед вторым восстановлением проводится обмен операндами.
Далее вычитают порядки. При получении отрицательной разности выполняется обмен операндами и вычитание повторяется. При равенстве порядков, когда их разность Ар = О, выполняется переход к сложению мантисс. В противном случае предварительно разность Ар сравнивается с длиной мантиссы. Если разность превысит 24, то при выравнивании порядков со сдвигом вправо мантиссы меньшего числа она покинет разрядную сетку, происходит потеря значимости. В качестве результата принимается операнд, который в этот момент находится в регистрах первого операнда (рА, шА). Если разность меньше 24, переходим к сдвигу мантиссы меньшего числа, поместив ее в регистры (тАН, шАМ, mAL), разность порядков - в регистре рВ, меньший порядок - в регистре рА. Сдвиг мантиссы вправо сопровождается увеличением порядка в регистре рА, уменьшением в регистре рВ и продолжается до тех пор, пока в регистре рВ не получим 0.
Сложив побайтно мантиссы, проверяем признак переноса, который свидетельствует о нарушении нормализации. При отсутствии его (С = 0) выполняется переход к преобразованию числа в базовый формат. При С = 1 мантиссу суммы сдвигаем вправо и порядок увеличиваем на 1. Выполняем проверку переполнения. Если образовался порядок, равный 0, это означает превышение максимального порядка 255. Программа завершается с установленным флагом переполнения С. Полученный в регистрах рА, шА результат считается неопределенным и не форматируется. При отсутствии переполнения флаг С сбрасывается и выполняется преобразование в базовый формат.
Алгоритм сложения чисел с одинаковым знаком представлен листингом программы 3.3. Программа позволяет выполнить алгебраическое сложение чисел с учетом знаков слагаемых. В том случае, когда слагаемые имеют разные знаки, происходит обращение к модулю вычитания. С помощью директивы .include "flsub.asm" подключают программный модуль вычитания чисел с плавающей точкой одинаковых знаков. Это позволяет в дальнейшем выполнить посредством одной и той же программы не только сложение, но и вычитание чисел.
В начале общей программы сложения выполняют проверку кода выполняемой операции: 1 - для сложения (+), 2 - для вычитания (-). В зависимости от заданной операции и знаков операндов запускают процедуру сложения или вычитания без знаковых чисел (табл. 1). При необходимости производится перемена мест операндов. В итоге можно применить одну из двух процедур: сложение или вычитание модулей чисел.
Таблица 1 Выполняемые операции
Типовые процедуры, используемые алгоритмами сложения, помещены в библиотеку, подключаемую директивой .include "fllib.asm". Библиотека fllib содержит процедуры восстановления операнда из базового формата гес, упаковки в базовый формат раек, обмен операндов swapAB, сдвига мантиссы вправо на один разряд shift, логического сложения 24-разрядной мантиссы для сравнения с нулем.
Программа сложения чисел с плавающей точкой
class DoubleInfo
{
public long Mantissa;
public int Exponent;
public bool IsNegative;
public override string ToString()
{
return
$"Mantissa: {Mantissa:X8}, Exponent: {Exponent}, " +
$"Sign: {(IsNegative ? '-' : '+')}";
}
}
class Program
{
static DoubleInfo ExtractInfo(double d)
{
if (double.IsInfinity(d) || double.IsNaN(d))
return null;
var result = new DoubleInfo();
long bits = BitConverter.DoubleToInt64Bits(d);
result.IsNegative = bits < 0;
result.Exponent = (int) ((bits >> 52) & 0x7ffL);
result.Mantissa = bits & 0xfffffffffffffL;
if (result.Exponent == 0) // субнормальные числа
result.Exponent++;
else // нормальные числа, добавляем ведущий бит
result.Mantissa = result.Mantissa | (1L << 52);
result.Exponent -= 1023; // экспонента сдвинута на 1023
return result;
}
static void Main(string[] args)
{
double d1 = 2.1;
double d2 = 2;
double diff = d1 - d2;
Console.WriteLine($"d1 : {ExtractInfo(d1)}");
Console.WriteLine($"d2 : {ExtractInfo(d2)}");
Console.WriteLine($"d1 - d2: {ExtractInfo(diff)}");
}
}
Выдаёт:
d1 : Mantissa: 10CCCCCCCCCCCD, Exponent: 1, Sign: +
d2 : Mantissa: 10000000000000, Exponent: 1, Sign: +
d1 - d2: Mantissa: 199999999999A0, Exponent: -4, Sign: +
1.4 Разработка функциональной схемы операционного автомата микросхемы специализированного процессора, выполняющего заданную арифметическую операцию
Условное графическое изображение спецпроцессора
Функциональная схема, представленная на чертеже, выполняет операцию сложения двух чисел с фиксированной точкой. Числа A и В поступают в дополнительном немодифицированном коде. Сложение чисел выполняется в дополнительном немодифицированном коде. Результат поступает на выход спецпроцессора также в дополнительном немодифицированном коде.
Рисунок-1
Входы D14-D8: значащие разряды числа А.
Вход D15 - знаковый разряд.
Вход D14 - старший значащий разряд.
числа A
Вход D8 - младший значащий разряд.
числа A
Входы D6 - D0: значащие разряды числа B.
Вход D7 - знаковый разряд числа B.
Вход D6 - старший значащий разряд.
числа B
Вход D0 - младший значащий разряд.
числа B
Вход RI: сигнал о готовности входных операндов.
Вход C: синхроимпульс.
Вход R: асинхронный вход сброса.
Выходы R6 - R0: значащие разряды результата.
Выход R7 - знаковый разряд результата.
Выход R6 - старший значащий разряд результата.
Выход R0 - младший значащий разряд результата.
Выход RО: сигнал о готовности результата.
Выход ER: сигнал о возникновении ошибки.
Выход OF: сигнал о возникновении переполнения.
1.5 Назначение и описание режимов работы функциональных узлов операционного автомата
Рисунок-2 RgA, RgA1
Эти регистры предназначены для хранения числа A. Являются 8-ми разрядными последовательно-параллельными сдвигающими регистрами (7 значащих и 1 знаковый разряд). Предназначены для приема, хранения и сдвигов в сторону младших разрядов числа А.
Рисунок-3 RgA, RgA1
Входы:-D0 - прямые входы регистров (D7 - знаковый разряд, D6 - старший значащий разряд, D0 - младший значащий разряд)- последовательный вход- разрешение параллельной записи- сдвиг в сторону младших разрядов на один разряд.
Выходы:- знаковый разряд.- Q0 - значащие разряды.- старший значащий разряд.- младший значащий разряд.
Режим работы:
При подаче сигнала на вход S информация с входов D7-D0 записывается в регистр.
При подаче сигнала на вход сдвига происходит сдвиг содержимого регистра в сторону младших разрядов на один разряд, при этом в освободившийся разряд вдвигается знаковый разряд.
Рисунок-4 RgB
8-ми разрядный последовательно-параллельный реверсивный регистр. (7 значащих и 1 знаковый разряд). Предназначены для приема, хранения и сдвига в сторону младших/старших разрядов числа B.
Входы:-D0 - прямые входы регистра.
(D7 - знаковый разряд, D6 - старший значащий разряд, D0 - младший значащий разряд).
- сдвиг информации в сторону старших разрядов, при этом в Q0
вдвигается то, что находится на входе DI.
- сдвиг информации в сторону младших разрядов. При этом в Q7 вдвигается то, что находится на входе DR.,DI - последовательные входы.- разрешение параллельной записи.
Выходы:- знаковый разряд.- Q0 - значащие разряды.- старший значащий разряд.- младший значащий разряд.
Рисунок-5 RgS
- 8-разрядный параллельный регистр, служит для хранения результата суммирования.
Входы:-D0 - параллельные входы записи.- разрешение параллельной записи.
Выходы:-Q0 - параллельные прямые выходы.
Рисунок-6 SM1
8-ми разрядный двоичный суматор.
дополнительных кодов. Предназначеный для прибавления единицы в младшие разряды числа.
Входы:
A7-A0 и B7-B0 - операнды;
C - входной перенос;
Выходы:
S7-S0 - параллельные прямые выходы(сумма операндов);
P - выход переноса.
Рисунок-7 SM2
8-ми разрядный мультиплексор
Предназначен для выбора операции, сложения(+B) или вычитания(-B). При подаче на адресный вход Z сигнала «1» на выход мультиплексора коммутируются сигналы с входов 1.7-1.0, при подаче сигнала «0», на выход мультиплексора коммутируются сигналы с входов 0.7-0.0
Входы:
.7-0.0 - группа входов, на которые подается число +B.
.7-1.0 - группа входов, на которые подается число -B.- адресный вход.
Выходы:-Q0 - прямые выходы.
Таблица 1
Z |
Выходные сигналы |
|
0 |
Информация с входов 0.7-0.0 |
|
1 |
Информация с входов 1.7-1.0 |
Рисунок-8 MUX2
8-ми разрядный мультиплексор.
Предназначен для выбора операции, сложения («вычитания») чисел A и B либо преобразования числа A. При подаче на адресный вход Z сигнала «1» на выход мультиплексора коммутируются сигналы с входов 1.7-1.0, при подаче сигнала «0», на выход мультиплексора коммутируются сигналы с входов 0.7-0.0.
Входы:
.7-0.0 - группа входов, на которые подается число записанное в регистре RgA1;
.7-1.0 - группа входов, на которые подается число +B либо -B;- адресный вход.
Выходы:-Q0 - прямые выходы.
Таблица 2
Z |
Выходные сигналы |
|
0 |
Информация с входов 0.7-0.0 |
|
1 |
Информация с входов 1.7-1.0 |
Рисунок-9 Элемент «или-не»
Схема преобразования числа в противоположное
Предназначена для преобразования числа B, для того чтобы организовать операцию вычитания чисел.
Элемент «ИЛИ-НЕ»
Служит для того чтобы определить является ли число A кратным 4. На вход элемента подаются два младших разряда числа A.
Рисунок-10 Схема обнаружения числа, которое по модулю меньше 0.5
Служит для того чтобы определить явявляется ли модуль числа записанного в RgB, меньшим чем 0.5. На вход схемы подается знаковый разряд числа и его старший значащий разряд.
Рисунок-11 Элемент «или-не» для обнаружения «0»
Предназначен для определения равенства нулю регистров RgA RgB. На входы элемента подаются значащие разряды числа записанного в одном из регистров(RgA, RgB).
Рисунок-12 Схема преобразования числа в противоположное
Предназначена для преобразования числа записанного в регистре RgB в противоположное, для того, чтобы организовать операцию вычитания, на входы схемы подается число записанное в регистре RgB, в схеме происходит инвертирование всех разрядов числа и прибавление единицы к младшему разряду.
Рисунок-13 Схема определения переполнения регистра результата
Предназначена для определения переполнения регистра результата. Переполнение может возникнуть, когда знак результата противоположен знакам операндов и в случае нахождения разности чисел с разными знаками. На входы схемы подаются знаки чисел записанных в регистрах RgA, RgB, RgS и сигналы x3, x6. Сигнал x9 равный «1» сигнализирует о переполнении, таблица истинности данной функции представлена ниже (таблица 3).
Таблица 3
SgA |
SgB |
SgS |
x3 |
x6 |
x9 |
|
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
0 |
0 |
1 |
0 |
|
0 |
0 |
0 |
1 |
0 |
0 |
|
0 |
0 |
0 |
1 |
1 |
0 |
|
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
0 |
1 |
0 |
1 |
1 |
|
0 |
0 |
1 |
1 |
0 |
1 |
|
0 |
0 |
1 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
0 |
0 |
|
0 |
1 |
0 |
0 |
1 |
0 |
|
0 |
1 |
0 |
1 |
0 |
0 |
|
0 |
1 |
0 |
1 |
1 |
0 |
|
0 |
1 |
1 |
0 |
0 |
0 |
|
0 |
1 |
1 |
0 |
1 |
0 |
|
0 |
1 |
1 |
1 |
0 |
0 |
|
0 |
1 |
1 |
1 |
1 |
0 |
|
1 |
0 |
0 |
0 |
0 |
0 |
|
1 |
0 |
0 |
0 |
1 |
0 |
|
1 |
0 |
0 |
1 |
0 |
0 |
|
1 |
0 |
0 |
1 |
1 |
0 |
|
1 |
0 |
1 |
0 |
0 |
0 |
|
1 |
0 |
1 |
0 |
1 |
1 |
|
1 |
0 |
1 |
1 |
0 |
0 |
|
1 |
0 |
1 |
1 |
1 |
0 |
|
1 |
1 |
0 |
0 |
0 |
1 |
|
1 |
1 |
0 |
0 |
1 |
1 |
|
1 |
1 |
0 |
1 |
0 |
1 |
|
1 |
1 |
0 |
1 |
1 |
1 |
|
1 |
1 |
1 |
0 |
0 |
0 |
|
1 |
1 |
1 |
0 |
1 |
0 |
|
1 |
1 |
1 |
1 |
0 |
0 |
|
1 |
1 |
1 |
1 |
1 |
0 |
ФАЛ описывающая осведомительный сигнал x9:
Переполнение на наборе 10101 возникает потому что выполняется условие A>0, B-четное и выполняется операция А-0.5B, и при выполнении данной операции возникает сложение двух положительных чисел сумма которых превышает допустимую разрядность.
2.Разработка закодированной граф-схемы машинного алгоритма выполнения заданной арифметической операции
2.1Список используемых осведомительных сигналов X
микросхема сигнал процессор мультиплексор
RI - сигнал готовности входных операндов.- проверка условия «A - кратно 4-ем».- проверка условия А<0.
Х4 - проверка условия |B|<0.5.
Х5 - проверка условия B<0.
Х6 - проверка условия, «B - четное».- проверка условия B=0.- проверка условия A=0.
Х9 - проверка на переполнение регистра результата.
2.2Список используемых управляющих сигналов Y
- разрешение выдачи результата.- сигнал о возникновении ошибки.- сдвиг содержимого регистра RgA в сторону младших разрядов.- запись операндов в регистры.-сдвиг содержимого регистра RgA1 в сторону младших разрядов.- сдвиг регистра RgВ в сторону старших разрядов.- сдвиг регистра RgВ в сторону младших разрядов.- сигнал на адресный вход мультиплексора MUX1, для выбора того, что будет подано на MUX2.- сигнал на адресный вход мультиплексора MUX2, для выбора того, что будет подано на сумматор SM2. Y10 - разрешение записи данных в регистр RgS. OF - сигнал о переполнение разрядной сетки.
Граф-схема машинного алгоритма
Рисунок-14
2.3 Описание граф-схемы микропрограммы
. Начальная инициализация спецпроцессора.
. Проверка готовности операндов.
. Запись операндов в регистры RgA, RgA1, RgB.
. Проверка содержмого регистра RgB на равенство нулю. Если RgB=0, то выдаем сигнал об ошибке и переходим в конец микропрограммы.
. Проверка содержмого регистра RgA на равенство нулю. Если RgA=0, то выдаем сигнал об ошибке и переходим в конец микропрограммы, иначе переходим в 6.
. Проверка знака содержимого регистра RgA, если x3=1, то переходим в семь, иначе в 13.
. Проверка знака содержимого регистра RgB, если x5=1, то переходим в 8, иначе в 13.
. Проверка содержимого регистра RgA на кратность 4-ем, если содержимое регистра кратно четырем,переходим в 9, иначе в 13.
. Проверка условия |RgB|<0.5, если условие выполняется переходим в 10, иначе в 13.
. Сдвиг содержимого регистра RgA в сторону младших разрядов.
. Сдвиг содержимого регистра RgA в сторону младших разрядов, и сдвиг содержимого RgB в сторону старших разрядов.
. Запись в регистр RgS значения выражения 0.25RgA+2B.
. Проверка знака содержимого регистра RgA, если знак отрицательный, то переходим в 14, иначе в 16.
. Проверка знака содержимого RgB, если RgB>0, то переходим в 15, иначе в 17.
. Сдвиг содержимого регистра RgA1 в сторону младших разрядов.
. Запись в регистр RgS значения выражения 1.5A.
. Проверка знака содержимого регистра RgA, если RgA<0, то переходим в 24, иначе в 18.
. Проверка является ли содержимое регистра RgB четным, если RgB-кратно 2, то переходим в 19, иначе в 24.
. Сдвиг содержимого RgB в сторону младших разрядов.
. Запись в регистр RgS значения выражения A-0.5B.
. Проверка содержимого регистра RgS на переполнение, если x9=1, выдаем сигнал о переполнении и переходим в конец микропрограммы, иначе выдаем сигнал о готовности результата и переходим в конец микропрограммы.
. Выдача сигнала о переполнении.
. Выдача сигнала о готовности результата.
. Выдача сигнала об ошибке.
. Конец микропрограммы.
2.4Таблица работы операционного автомата
Числа для проверки работы спецпроцессора[1]:= -76 В двоичной системе счисления: [A] пк = 1.1001100= -48 В двоичной системе счисления: [В] пк = 1.0110000
Представленные в кодах поступления:
[A] дк = 1.0110100
[В] дк = 1.1010000
Таблица 4 - Значения регистров автомата в каждом такте работы
№ |
RgA |
RgВ |
RgA1 |
RgS |
|
1 |
0.0000000 |
0.0000000 |
0.0000000 |
0.0000000 |
|
2 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
3 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
4 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
5 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
6 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
7 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
8 |
1.0110100 |
1.1010000 |
1.0110100 |
0.0000000 |
|
9 |
1.1011010 |
1.1010000 |
1.0110100 |
0.0000000 |
|
10 |
1.1101101 |
1.0100000 |
1.0110100 |
0.0000000 |
|
11 |
1.1101101 |
1.0100000 |
1.0110100 |
1.0001101 |
|
12 |
1.1101101 |
1.0100000 |
1.0110100 |
1.0001101 |
|
13 |
1.1101101 |
1.0100000 |
1.0110100 |
1.0001101 |
|
14 |
1.1101101 |
1.0100000 |
1.0110100 |
1.0001101 |
|
15 |
1.1101101 |
1.0100000 |
1.0110100 |
1.0001101 |
Результат:
[R]дк = 1.0001101
[R]пк = 1.1110011
Переведем в десятичну систему счисления:
= -1* (20+21+24+25+26 ) = -1*(1+2+16+32+64)=-115.
Проверка:
0.25А+2В=0.25*(-76) +2*(-48)= -19-96= -115.
Вывод: результат, выданный автоматом является верным.
3.Разработка функциональной схемы управляющего автомата микросхемы специализированного процессора
Данный управляющий автомат построен на основе принципа программного управления, с принудительной адресацией. Формат микрокоманды управляющего автомата представлен в табл. 5.
Таблица 5 - Формат микрокоманды управляющего автомата с принудительной адресацией
Адрес AD4-AD0(RgADR) |
CX Q3-Q0(RgMK) |
A0 Q13-Q9(RgMK) |
A1 Q13-Q9(RgMK) |
Y Q24-Q14(RgMK) |
|
1 na |
1 nx |
1 na |
1 na |
1 ny |
Адрес - адрес микрокоманды в памяти.- поле управления выбором опрашиваемого входного осведомительного сигнала xi;- поле адреса следующей микрокоманды, если опрашиваемый осведомительный сигнал xi =1;- поле адреса следующей микрокоманды, если опрашиваемый осведомительный сигнал xi =0;- выходные сигналы.- разрядность полей адреса следующей микрокоманды.- разрядность поля выбора входного сигнала.
Разрядности полей микрокоманды:= log2 nвх = log2 12 = 4 - разрядность поля выбора входного сигнала.вх - число входных осведомительных сигналов х;= log2 (nусл + nоп) = log2 (12 + 11) = 5 - разрядность полей адреса следующей микрокоманды.усл - число условных вершиноп - число операторных вершин;= k =11- разрядность поля выходных управляющих сигналов.- число выходных управляющих сигналов.= 4= 5= 11= 4+2*5+11=25[3]
Организация ПЗУ 32х25 (32*25=800 бит).
3.1 Описание функциональной схемы управляющего автомата
Управляющий автомат с программируемой логикой на ПЗУ с принудительной адресацией.
Рисунок-15 RgADR
Регистр адреса. Содержит адрес текущей микрокоманды.
Входы:
АD4-АD0 - прямые информационные входы;- асинхронный сброс регистра;- тактовый вход синхроимпульса.
Выходы:-Q0 - адресные выходы.
Рисунок-16 ROM
ПЗУ предназначено для хранения микропрограммы управляющего автомата. Организация 32x25.
При подаче адреса на адресные входы, на выходе появляются данные (выходной(ые) сигнал(ы), адрес микрокоманды «A0», адрес микрокоманды «A1», опрашиваемый сигнал) соответствующие микрокоманде поданной на вход.
Входы:-A0 - адресные входы
Выходы:-Q0 - выходы данных.-Q14 - выходы, содержащие управляющие сигналы для ОА.-Q9, Q8-Q4 - выходы, содержащие адреса для мультиплексора выбора следующего адреса.-Q0 - выходы, содержащие опрашиваемый осведомительный сигнал.
Рисунок-17 RgMK
Параллельный 25-ти разрядный регистр микрокоманды, содержит текущую микрокоманду из ПЗУ.
Входы:- D0 - прямые информационные входы.
Выходы:- Q14 - выходы, содержащие управляющие сигналы для ОА;- Q4, Q13 - Q9 - выходы, содержащие адреса для мультиплексора выбора следующего адреса;- Q0 - выходы, содержащие опрашиваемый осведомительный сигнал.- асинхронный сброс регистра;- тактовый вход синхроимпульса.
Рисунок-18 MUX ADR
Мультиплексор выбора следующего адреса. Выбирает адрес следующей микрокоманды в зависимости от значения на входе Z. Принцип работы мультиплексора показан в табл. 6
Входы:
.4-0.0-входы адреса микрокоманды «A0»
.4-1.0-входы адреса микрокоманды «A1»- адресный вход
Выходы:-Q0 - сигналы содержащие, коммутируемую информацию с одного из входов(0.4-0.0 или 1.4-1.0).
Таблица 6 - Принцип работы мультиплексора MUX ARD
Z |
Выходные сигналы (Q4,Q3,Q2,Q1,Q0) |
|
0 |
Информация с входов 0.7-0.0 |
|
1 |
Информация с входов 1.7-1.0 |
Рисунок-19 MUX X
Мультиплексор выбора осведомительного сигнала.
В зависимости от значения на входах D3-D0 выводит на выход значение осведомительного сигнала со входов 0-9.
Входы:-D0 - группа входов, на
которые подается адрес коммутируемого сигнала;
-9 - группа входов на которые поступают осведомительные сигналы
Выходы:- прямой выход.
Таблица 7 - Принцип работы мультиплексора MUX X
D3 D2 D1 D0 |
Выходной сигнал |
|
0000 |
«0» |
|
0001 |
RI |
|
0010 |
X2 |
|
0011 |
X3 |
|
0100 |
X4 |
|
0101 |
X5 |
|
0110 |
X6 |
|
0111 |
X7 |
|
1000 |
X8 |
|
1001 |
X9 |
Таблица прошивки ПЗУ
Адрес |
CX |
A0 |
A1 |
Y |
|
00000 |
0001 |
00000 |
00001 |
«0» |
|
00001 |
0000 |
00010 |
00010 |
Y4 |
|
00010 |
0111 |
00011 |
10110 |
«0» |
|
00011 |
1000 |
00100 |
10110 |
«0» |
|
00100 |
0011 |
01011 |
00101 |
«0» |
|
00101 |
0101 |
01011 |
00110 |
«0» |
|
00110 |
0010 |
01011 |
00111 |
«0» |
|
00111 |
0100 |
01011 |
01000 |
«0» |
|
01000 |
0000 |
01001 |
01001 |
Y3 |
|
01001 |
0000 |
01010 |
01010 |
Y3, Y6 |
|
01010 |
0000 |
10011 |
10011 |
Y9, Y10 |
|
01011 |
0011 |
01111 |
01100 |
«0» |
|
01100 |
0101 |
01101 |
01111 |
«0» |
|
01101 |
0000 |
01110 |
01110 |
Y5 |
|
01110 |
0000 |
10011 |
10011 |
Y10 |
|
01111 |
0011 |
10000 |
10110 |
«0» |
|
10000 |
0110 |
10110 |
10001 |
«0» |
|
10001 |
0000 |
10010 |
10010 |
Y7 |
|
10010 |
0000 |
10011 |
10011 |
Y8, Y9,Y10 |
|
10011 |
1001 |
10101 |
10100 |
«0» |
|
10100 |
0000 |
10111 |
10111 |
OF |
|
10101 |
0000 |
10111 |
10111 |
RO |
|
10110 |
0000 |
10111 |
10111 |
ER |
|
10111 |
0000 |
00000 |
00000 |
«0» |
|
11000 |
0000 |
00000 |
00000 |
«0» |
|
11001 |
0000 |
00000 |
00000 |
«0» |
|
11010 |
0000 |
00000 |
00000 |
«0» |
|
11011 |
0000 |
00000 |
00000 |
«0» |
|
11100 |
0000 |
00000 |
00000 |
«0» |
|
11101 |
0000 |
00000 |
00000 |
«0» |
|
11110 |
0000 |
00000 |
00000 |
«0» |
|
11111 |
0000 |
00000 |
00000 |
«0» |
Таблица назначения адресных входов мультиплексора сигнала
CX (входы MUX X) |
Сигнал (выход MUX X) |
|
0000 |
«0» |
|
0001 |
RI |
|
0010 |
X2 |
|
0011 |
X3 |
|
0100 |
X4 |
|
0101 |
X5 |
|
0110 |
X6 |
|
0111 |
X7 |
|
1000 |
X8 |
|
1001 |
X9 |
3.2 Требования к ПЗУ
Микропрограмма состоит из 32 строк по (5+4+5+5+11=30) бит. Общий объём памяти занимаемый микропрограммой:
То есть 800 бит. Организация 32x25.
Заключение
В данном курсовом проекте мною был разработан спецпроцессор для выполнения операции сложения чисел, представленных в формате с плавающей точкой. Были закреплены навыки синтеза операционного и управляющего автоматов и знания, полученные в ходе изучения данной дисциплины. Были рассмотрены основные стандарты ГОСТ и ЕСКД, которые используются при проектировании цифровой вычислительной техники. В ходе работы над курсовым проектом были выполнены следующие задачи:
· Изучил виды чисел.
· Изучил формы представления данных в ЭВМ
· Изучил алгоритм сложения чисел с плавающей точкой
· Построил блок-схему алгоритма
· Разработал микропрограммное устройство управления
Практические навыки приобретенные в данном проекте, с легкостью можно применить на практике.
Список используемых источников
алгоритм микропрограммный число плавающая точка
1. Постников А.И. «Методические указания по курсовому проектированию для студентов специальности 230101.65» Красноярск, 2011.
2. Постников А.И. «Прикладная теория цифровых автоматов. Машинная арифметика» Красноярск 2003.
3. Постников А.И. «Теория автоматов и машинная арифметика» Красноярск 2006.
4. ГОСТ 2.743-91 «Единая система конструкторской документации. Обозначения условные в графических схемах. Элементы цифровой техники».
5. https://dic.academic.ru/dic.nsf/ruwiki/1194526
6. https://dic.academic.ru/dic.nsf/ruwiki/328214
7. http://nauchebe.net/2011/03/operacii-nad-chislami-s-plavayushhej-tochkoj-mk-avr/
Размещено на Allbest.ru
...Подобные документы
Основные форматы данных и их представление. Запись чисел в формат с плавающей точкой. Вычитание чисел в формате с плавающей точкой. Регистры операндов и результата, размером формата числа с плавающей точкой, двойной точности. Поля смещённого порядка.
курсовая работа [78,9 K], добавлен 09.09.2014Общая характеристика и преимущество использования двоично-десятичных чисел с плавающей точкой. Разработка цифрового автомата. Функциональное назначение выводов корпуса МК51, арифметико-логического устройства, портов. Примеры деления данных чисел.
курсовая работа [719,3 K], добавлен 12.09.2015Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.
курсовая работа [266,9 K], добавлен 24.12.2013Разработка функциональной схемы операционного автомата микросхемы специализированного процессора, выполняющего заданную арифметическую операцию. Закодированная граф-схема машинного алгоритма. Таблица входов мультиплексора выбора осведомительного сигнала.
курсовая работа [669,9 K], добавлен 25.07.2013Функциональное диагностирование вычислительного устройства (ВУ), требования к нему по производительности, диапазону представления чисел, точности вычислений, сложности реализации и достоверности функционирования. Контроль по модулю ВУ с плавающей точкой.
реферат [1,2 M], добавлен 14.12.2012Разработка устройства, реализующего набор команд из числа операций с плавающей точкой семейства процессора i486. Структура сопроцессора FPU. Принцип выполнения операций, разработка блок-схемы, построение структурной схемы основных блоков процессора.
курсовая работа [734,9 K], добавлен 27.10.2010Операции, осуществляемые при реализации алгоритмов цифровой обработки сигналов. Применение процессора ADSP-2106x для операций с фиксированной и плавающей точкой. Исключения при выполнении операций с плавающей точкой, режимы и границы округления.
реферат [35,2 K], добавлен 13.11.2009Символы, целые, числа с плавающей точкой в языке Си. Машинное представление значений типа char, double, float, беззнаковых чисел. Представление целых чисел в позиционных системах счисления с произвольным основанием. Алгоритм перевода b-ичной записи.
презентация [296,3 K], добавлен 05.01.2014Разработка алгоритма работы блока сложения дробных двоичных чисел в обратном модифицированном коде с фиксированной запятой. Определение состава узлов и управляющих сигналов блока по схеме электрической функциональной, описание его принципа работы.
реферат [415,8 K], добавлен 29.11.2010Проектирование блоков устройства контроля по модулю три матричного умножителя с сокращением вычислений для обработки мантисс чисел с плавающей точкой. Методика выполнения арифметических операций, порядок обработки мантисс по n-разрядным операндам.
курсовая работа [125,2 K], добавлен 24.09.2010Общее представление о записи данных. Виды регистров и типов данных с плавающей точкой. Модель выполнения программы SIMD. Формат данных в памяти регистра с плавающей точкой. Состояние и управление потоковым разрешением. Поле управления округлением.
реферат [1,1 M], добавлен 06.01.2011Двоичная, восьмеричная и шестнадцатеричная системы счисления и перевод из одной в другую. Форматы хранения чисел с плавающей точкой. Позиционная система счисления. Подпрограмма вывода служебных слов и полученных данных. Альтернативные варианты решения.
курсовая работа [920,9 K], добавлен 13.07.2014Разработка устройства, выполняющее следующие операции: загрузку операндов, алгебраическое вычитание чисел с фиксированной точкой в модифицированных дополнительных кодах и выдачу результата. Функциональная микропрограмма работы операционного устройства.
курсовая работа [2,7 M], добавлен 14.02.2012Схема алгоритма работы устройства сравнения трех чисел, структурная, функциональная и принципиальная схемы. Оценка параметров устройства. Схемы задержки и сброса по питанию, комбинационная схема определения среднего числа. Построение временной диаграммы.
курсовая работа [205,0 K], добавлен 24.06.2013Разработка устройства, позволяющего производить сложение четырехразрядных двоичных чисел. Последовательные и параллельные регистры. Временные диаграммы одноразрядного сумматора. Программа, отражающая функционирование параллельного регистра на 4 разряда.
курсовая работа [332,8 K], добавлен 16.10.2013Тестирование арифметико-логического блока процессора на уровне двоичных форм представления данных типовыми программными средствами ЭВМ. Рассмотрение основ сложения и вычитания чисел с плавающей запятой. Описание логического и текстового типа данных.
курсовая работа [1,4 M], добавлен 13.12.2014Выбор принципов проектирования устройства записи, хранения и передачи чисел. Разработка алгоритма выполнения операций, необходимых для обработки информации. Структурная схема устройства. Элементарная база, необходимая для разработки принципиальной схемы.
курсовая работа [1,3 M], добавлен 16.08.2012Формальные правила двоичной арифметики. Операция алгебраического сложения в ЭВМ. Алгебраическое сложение в дополнительном коде. Денормализация чисел. Виды денормализации и методы устранения. Особенности округления чисел, заданных инверсными кодами.
реферат [42,9 K], добавлен 16.01.2011Выполнение операции деления в ЭВМ. Умножение чисел, представленных в форме с плавающей запятой. Методы ускорения операции умножения. Матричный метод умножения. Деление чисел в машинах с плавающей запятой. Деление чисел с восстановлением остатков.
реферат [49,4 K], добавлен 18.01.2011Арифметические операции с целыми числами. Сложение и вычитание в дополнительном коде. Представление чисел в формате с плавающей точкой. Особенности выполнения арифметических операций в соответствии с IEEE. Точность выполнения арифметических операций.
контрольная работа [5,6 M], добавлен 19.05.2010