Сложение чисел с плавающей запятой в прямом коде
Каноническая структура синтеза синхронного вычислительного устройства. Управление работой всех синхронных узлов и деталей. Сложение в прямом коде с плавающей запятой. Моделирование работы алгоритма на ЭВМ. Процедуры и функции основного кода программы.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.03.2014 |
Размер файла | 201,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Омский государственный технический университет
Кафедра информатики и вычислительной техники
Специальность "Информатика и вычислительная техника"
Курсовой проект
на тему: "Сложение чисел с плавающей запятой в прямом коде"
по дисциплине "Дискретная математика"
Студент Алейников Д.Е.
Руководитель проекта Червенчук И.В.
Омск 2008
Содержание
Введение
1. Описание алгоритма
2. Структура операционного устройства
3. Таблица оповещающих, управляющих сигналов
4. Моделирование работы алгоритма на ЭВМ
Список используемой литературы
Приложение
Введение
Каноническая структура синтеза синхронного вычислительного устройства состоит из двух автоматов - операционного (ОА) и управляющего (УА).
На вход ОА подаются входные (исходные) данные, а на выходе ОА формируются выходные данные (результат). На вход УА подается управляющая информация (например, код операции (КОП), сигнал разрешения чтения и т.п.), а на выходе УА формируется выходная управляющая информация (например, сигнал готовности, сигнал ошибки и тп.). ОА и УА взаимосвязаны: от ОА к УА передаются сигналы признаков (условия) и в зависимости от этих условий от УА к ОА возвращается соответствующая микрокоманда. Синхронизация служит для управления работой всех синхронных узлов и деталей устройства.
1. Описание алгоритма
Сложение мантисс выполняется на сумматоре мантисс SmM и возможно только при одинаковых порядках чисел. В связи с этим сначала нужно выровнять порядки, для чего на сумматоре порядков SmP определяется разность
АР=P1 - Р 2.
Если АР = 0, то порядки равны (P1= Р 2) и возможно сложение мантисс. При АР>0 первое число больше второго, и мантисса второго числа должна быть сдвинута на АР разрядов вправо. В случае АР<0 второе число больше первого. Следовательно, для выравнивания порядков необходимо сдвинуть на |A.Р| разрядов вправо мантиссу первого числа. Если |A.Р| превосходит количество цифровых разрядов, то в качестве результата операции сложения принимается большее число: n-количество разрядов мантиссы, к - число разрядов порядка, M1, М 2 - мантиссы и P 2 Р 1-- порядки чисел.
При нахождении разности порядков может иметь место переполнение результата (SmP). Если переполнение положительное, то в качестве результата сложения должен быть принят первый операнд. Отрицательное переполнение сумматора порядков свидетельствует о том, что в качестве результата сложения должен быть принят второй операнд.
После выполнения сложения мантисс может получиться денормализованный результат. При нормализации результата меняется величина порядка. Также может иметь место переполнение сумматора порядков. В случае положительного переполнения результат считается бесконечностью, знак которой определяется знаком мантиссы. При отрицательном переполнении сумматора порядков считается, что получен бесконечно малый результат, заведомо отличный от нуля, если мантисса не равна нулю. вычислительный синхронный алгоритм
Поскольку при выравнивании порядков мантисса меньшего из чисел сдвигается вправо, то имеет место потеря ее цифровых разрядов. В этом случае сумма чисел получается с недостатком, и для исключения накопления ошибок вычислений производится округление, для чего в сумматор вводится дополнительный младший разряд, к которому после выполнения операции сложения добавляется единица.
2. Структура операционного устройства
Сложение в прямом коде с плавающей запятой.
3. Таблица оповещающих, управляющих сигналов
Y1= Rg1M:=Ma |
X1= SmP=0 |
|
Y2= Rg1P :=Pa |
X2= SmP[1]=1 |
|
Y3= Rg2M:=Mb |
X3= SmP[1]=0 |
|
Y4= Rg2P:=Pb |
X5= SmM[2]=0 |
|
Y5= SmP:=Rg1P |
X6= SmM=0 |
|
Y6= SmP:= Rg1P -Rg2P |
||
Y7= Rg1P:=Rg1P+n |
||
Y8= Rg2P:=Rg2P+n |
||
Y9= SmP:=Rg2P |
||
Y10= SmP:=SmP-1 |
||
Y11=Smm= Rg1M |
||
Y12=Smm= Rg2M |
||
Y13= Rg2M:= Rg2M" |
||
Y14= Rg1M:= Rg1M" |
||
Y15= SmM:= SmM" |
||
Y16= SmM:= Rg1M +Rg2M |
4. Моделирование работы алгоритма на ЭВМ
Отличительные черты разработки программы
Моделирование алгоритма умножения, а дополнительном коде производилось на языке высокого уровня Turbo Pascal 7.0. Программа состоит из ряда процедур, функций и основного кода.
Процедуры и функции программы:
1) Procedure vvod (a:integer ;var m:mass) - Задает с клавиатуры исходные массивы до элемента с номером "а".
2) Procedure vivod (m:mass; a:integer)- Выводит на экран массив до элемента с номером "а".
3) Procedure sloj (m1,m2:mass; q:integer; var sm:mass)- Складывает два массива по правилам двоичной арифметики.
4) Procedure invert (m1:mass; a:integer; var m2:mass)- Инвертирует элементы массива.
5) Procedure vi4it (m1,m2:mass; q:integer; var sm:mass)- Вычитает из первого массива второй.
6) Procedure sdvigvlevo (sm1:mass; var sm2:mass)- Сдвигает массив влево на 1 разряд.
7) Procedure okrug (m1:mass; var m2:mass)- Округляет массив.
ma=0.1011 pa=0.101
mb=0.1000 pb=0.100
Ap=0.101+1.100=0.001
ma=0.1011
+
mb=0.0100
----------
mc=0.1111
pc=pa=0.101
ma=0.1010 pa=00.101
mb=0.1101 pb=11.011
Ap=00.101+00.101=01.010
mc=ma=0.1010
pc=pa=0.101
ma=1.0100 pa=0.100
mb=0.1100 pb=0.111
Ap=0.011
ma=1.1110
+
mb=0.1100
----------
mc=0.1010 pc=pb=0.111
Список используемой литературы
1. Операции двоичной и десятичной арифметики в ЭВМ: Метод. указания / Сост. Пальянов И.А.; Омск: ОмПИ, 1990. - 36 с.
2. Моделирование на ЭВМ алгоритмов выполнения арифметических операций и синтез управляющих автоматов: Метод. указания / Сост. Пальянов И.А., Шафеева О.П.; Омск: ОмПИ, 1988. - 36 с.
3. Б.Н. Иванов Дискретная математика. Алгоритмы и программы: Учеб. пособие. - М.: Лаборатория Базовых Знаний, 2002 - 288 с.: ил.
Приложение
Текст программы.
Program Kursovik;
Uses crt;
Type mass=array[1..11] of integer;
mass1=array[1..5] of integer;
Const
qwe1:mass1=(0,0,0,0,0);
lm:mass1=(0,0,0,0,1);
qwe2:mass=(0,0,0,0,0,0,0,0,0,0,0);
Var ch:char;
n,buf,por,po,sdvigman,i:integer;
Rg1M,Rg2M,SmM:mass;
Rg1Par,Rg2Par,SmPar,smpred:mass1;
label l1,l2,l3,l4;
Procedure vvod(a:integer ;var m:mass);
Begin
For i:=1 to a do
read(m[i]); end;
Procedure vvod1(a:integer ;var m:mass1);
Begin
For i:=1 to a do
read(m[i]); end;
Procedure vivod(m:mass; a:integer);
Begin
For i:=1 to a do
write(m[i]); end;
Procedure vivod1(m:mass1; a:integer);
Begin
For i:=1 to a do
write(m[i]); end;
Procedure sloj(m1,m2:mass; q:integer; var sm:mass; var buv:integer);
var buf:integer;
a:mass;
Begin
buf:=0;
for i:=q downto 1 do begin
a[i]:=m1[i]+m2[i]+buf;
Case a[i] of
0:begin buf:=0; sm[i]:=0 end;
1:begin buf:=0; sm[i]:=1 end;
2:begin buf:=1; sm[i]:=0 end;
3:begin buf:=1; sm[i]:=1 end;
end; end;
buv:=buf;
end;
Procedure sloj1(m1,m2:mass1; q:integer; var sm:mass1);
var buf:integer;
a:mass1;
Begin
buf:=0;
for i:=q downto 1 do begin
a[i]:=m1[i]+m2[i]+buf;
Case a[i] of
0:begin buf:=0; sm[i]:=0 end;
1:begin buf:=0; sm[i]:=1 end;
2:begin buf:=1; sm[i]:=0 end;
3:begin buf:=1; sm[i]:=1 end;
end;
end;
end;
Procedure sloj2(m1,m2:mass1; q:integer; var sm:mass1; per:integer);
var buf:integer;
a:mass1;
Begin
buf:=0;
for i:=q downto 1 do begin
a[i]:=m1[i]+m2[i]+buf;
Case a[i] of
0:begin buf:=0; sm[i]:=0 end;
1:begin buf:=0; sm[i]:=1 end;
2:begin buf:=1; sm[i]:=0 end;
3:begin buf:=1; sm[i]:=1 end;
end;
end;
per:=buf;
end;
Procedure invert(m1:mass; a:integer; var m2:mass);
var i:integer;
Begin
for i:=1 to a do
if m1[i]=0 then m2[i]:=1 else m2[i]:=0; end;
Procedure invert1(m1:mass1; a:integer; var m2:mass1);
var i:integer;
Begin
for i:=1 to a do
if m1[i]=0 then m2[i]:=1 else m2[i]:=0; end;
Procedure vi4it1(m1,m2:mass1; q:integer; var sm:mass1);
Const dop:mass1=(0,0,0,0,1);
Begin
invert1(m2,5,m2);
sloj1(m2,dop,5,m2);
sloj1(m1,m2,5,sm); end;
Procedure vi4it2(m1,m2:mass1; q:integer; var sm:mass1;var perepolnenie:integer);
Const dop:mass1=(0,0,0,0,1);
Begin
invert1(m2,5,m2);
sloj1(m2,dop,5,m2);
sloj2(m1,m2,5,sm,perepolnenie); end;
Procedure sdvigvlevo(sm1:mass; var sm2:mass);
var j:integer;
begin
for j:=4 to 10 do
sm2[j]:=sm1[j+1];
sm2[11]:=0; end;
Begin
por:=0;
clrscr;
writeln('Vvedite mantissu 1-ogo 4isla');
vvod(11,rg1m);
writeln('Vvedite poryadok 1-ogo 4isla');
vvod1(5,rg1par);
writeln('Vvedite mantissu 2-ogo 4isla');
vvod(11,rg2m);
writeln('Vvedite poryadok 2-ogo 4isla');
vvod1(5,rg2par);
writeln('Press any key...');
readkey;
vi4it2(rg1par,rg2par,5,smpred,buf);
if buf=1 then begin
if smpred[1]=0 then begin smm:=rg1m; smpar:=rg1par; end
else begin smm:=rg2m; smpar:=rg2par; end;
goto l1;
end;
sdvigman:=smpred[5]+2*smpred[4]+4*smpred[3];{prav}
if sdvigman=0 then smpar:=rg1par
else
begin
if smpred[1]=0 then begin
smpar:=rg1par;
po:=11-sdvigman;
for i:=4 to po do begin
rg2m[i+sdvigman]:=rg2m[i]
end;
for i:=1 to sdvigman do begin
rg2m[i+3]:=0;
end;
end
else
begin
smpar:=rg2par;
po:=11-sdvigman;
for i:=4 to po do begin
rg1m[i+sdvigman]:=rg1m[i]
end;
for i:=1 to sdvigman do begin
rg1m[i+3]:=0;
end;
end;
end;
sloj(rg1m,rg2m,11,smm,buf); {prav}
n:=0;
l2:
if smm[4]=0 then
begin
sdvigvlevo(smm,smm);
vi4it2(smpar,lm,5,smpar,buf);
n:=n+1;
if n=11 then begin
smpar:=qwe1;
goto l3;
end;
goto l2;
end;
if buf=1 then begin
if smpar[1]=1 then begin
smpar:=qwe1;
smm:=qwe2;
end
else begin writeln('beskone4nost'); goto l4; end;
end;
l1:
l3:
writeln;
write('Mantissa= ');
vivod(smm,11);
writeln;
write('Poryadok= ');
vivod1(smpar,5);
l4:
readkey;
end.
Размещено на Allbest.ru
...Подобные документы
Изучение основных понятий теории автоматов. Анализ работы цифровых машин с программным управлением на примере автоматов Мили и Мура. Устройство преобразователей дискретной информации (RS-триггера). Разработка схемы цифрового автомата для сложения чисел.
курсовая работа [449,2 K], добавлен 16.09.2017Исследование абстрактного цифрового автомата Мили заданного устройства. Алгоритм его работы, таблицы прошивки и возбуждения постоянного запоминающего устройства. Составление функции возбуждения, функциональной и электрической принципиальной схемы.
курсовая работа [758,5 K], добавлен 18.02.2011Разработка электрической функциональной схемы устройства. Обоснование выбора серии интегральных микросхем. Расчет частоты тактового генератора, его потребляемой мощности. Среднее время выполнения операции после расчета по временному графу автомата Мура.
курсовая работа [20,9 K], добавлен 10.01.2015Назначение устройства, его cтруктурная схема, элементная база. Функциональная схема сложения в двоично-десятичном коде. Время выполнения операции. Принцип работы суммирующего счетчика в коде Грея. Синтез функций возбуждения триггеров. Временные диаграммы.
курсовая работа [853,7 K], добавлен 14.01.2014Разработка блока управления в АЛУ, выполняющего сложение чисел с плавающей точкой; структурная и функциональная схемы, алгоритм сложения чисел. Выбор типа автомата, преобразование таблиц переходов и выходов в таблицу функций возбуждения триггеров.
курсовая работа [283,3 K], добавлен 06.08.2013Сущность кода Хэмминга. Схемы кодирующего устройства на четыре информационных разряда и декодера. Определение числа проверочных разрядов. Построение корректирующего кода Хэмминга с исправлением одиночной ошибки при десяти информационных разрядах.
курсовая работа [1,1 M], добавлен 10.01.2013Изучение структуры и алгоритмов работы асинхронных и синхронных триггеров. Суммирующие и вычитающие счетчики. Изменение коэффициента пересчета счетчиков. Временные диаграммы работы суммирующего счетчика. Логические сигналы на прямом и инверсном выходах.
лабораторная работа [614,9 K], добавлен 20.06.2011Проектирование синхронного счетчика с четырьмя выходами, циклически изменяющего свои состояния. Решение задач логического синтеза узлов и блоков цифровых ЭВМ. Разработка структурной, функциональной и электрической принципиальной схем заданного устройства.
контрольная работа [500,9 K], добавлен 19.01.2014Исследование и специфика использования инверсного кода и Хемминга. Структурная схема устройства передачи данных, его компоненты и принцип работы. Моделирование датчика температуры, а также кодирующего и декодирующего устройства для инверсного кода.
курсовая работа [530,1 K], добавлен 30.01.2016Анализ разработки преобразователя кода из прямого двоичного и циклического кода Джонсона. Описание функций и синтеза структуры устройства и функциональных узлов. Изучение проектирования регистра памяти, мультиплексора, сдвигового регистра и счетчика.
практическая работа [261,7 K], добавлен 08.03.2012Применение кондуктометрических датчиков. Описание построения основных узлов и блоков. Измерительная цепь уровнемера. Создание программы, обеспечивающей работу данного устройства под управлением микроконтроллера PIC16F876, разработка алгоритма и кода.
курсовая работа [366,2 K], добавлен 23.12.2012Проектирование и синтезирование комбинационной схемы и счетчика с коэффициентом пересчета на D-тригерах. Синтезирование вычислительного устройства для реализации алгоритма вычислений на дискретных элементах. Проектирование и синтезирование автомата Мили.
курсовая работа [829,7 K], добавлен 21.03.2010Проектирование систем автоматического управления (САУ), методы их расчетов. Коэффициенты усиления в прямом канале управления, передачи обратных модальных связей, обеспечивающих показатели качества замкнутой САУ. Переходные процессы синтезированной САУ.
курсовая работа [1,2 M], добавлен 06.04.2013Техническая характеристика микроконтроллера ADuC812 – интегральной 12-разрядной системы сбора информации, включающей в себя прецизионный многоканальный АЦП с самокалибровкой, два 12-разрядных ЦАП. Описание алгоритма работы устройства и листинг программы.
курсовая работа [442,3 K], добавлен 25.12.2012Описание принципа работы структурной электрической схемы устройства умножения двоичных чисел, назначение каждого из входящих в нее узлов. Назначение и принцип построения матричных умножителей двоичных чисел, его структурная и электрическая схемы.
реферат [63,9 K], добавлен 04.02.2012Анализ и синтез асинхронного счетчика с КСЧ=11 в коде 6-3-2-1 и с типом триггеров JJJJ, его назначение, разновидности и технические характеристики. Пример работы суммирующего счетчика. Синтез JK–триггера (устройства для записи и хранения информации).
курсовая работа [2,4 M], добавлен 25.07.2010Технические системы сбора телеметрической информации и охраны стационарных и подвижных объектов, методы обеспечения целостности информации. Разработка алгоритма и схемы работы кодирующего устройства. Расчет технико-экономической эффективности проекта.
дипломная работа [3,8 M], добавлен 28.06.2011Представление чисел в дополнительном двоичном коде. Номенклатура арифметических операций в цифровом фильтре. Назначение аналого-цифрового преобразователя. Амплитудно-частотная характеристика рекурсивного фильтра. Составление схемы лабораторного макета.
реферат [215,6 K], добавлен 14.02.2016Практическое изучение логических элементов, реализующих элементарные функции алгебры логики. Классификация и параметры триггеров, принципы построения асинхронных и синхронных RS-триггеров. Изучение работы синхронного двоичного счетчика на j-k триггерах.
лабораторная работа [1,4 M], добавлен 28.06.2013Проектирование контроллера опорно-поворотного устройства антенны. Структура микроконтроллера. Функциональная и принципиальная схема устройства. Выбор транзисторной сборки, двигателя, дисплея, источника питания. Алгоритм работы устройства, моделирование.
курсовая работа [1,6 M], добавлен 08.06.2012