Деление без восстановления остатка со сдвигом остатка (Otchet)

Посмотреть архив целиком

27



ЗАДАНИЕ



Деление без восстановления остатка со сдвигом остатка

В форме с фиксированной запятой: формат (1, 8)

Дополнительный код

Двоично-десятичная система счисления (код 8421, 8421+6)

Контроль по модулю

Синхронный автомат Мили

Логический элемент “ИЛИ-НЕ”

Триггер JK -типа


















Задание выдал ² ___ ² _______ 2003г. Преподаватель: Шерстобитова Т.М.

Задание принял ² ___ ² _______ 2003г. Студент: Родионов С.В. .Специальность: 3704 Группа: ЭВМ 00-2 .

ВВЕДЕНИЕ


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

Для всего этого необходимы четкие знания арифметических и логических основ цифровых автоматов, принципов анализа и синтеза этих автоматов.

В данном курсовом проекте описан процесс проектирования управляющего автомата (УА), осуществляющий управление выполнения операции деления без восстановления в коде 8421, 8421+6. Курсовая работа состоит из двух разделов: разработка алгоритма выполнения операции и непосредственно синтеза УА, реализующего этот алгоритм, а также программы на языке программирования Ассемблера, выполняющей операцию деления в коде 8421, 8421+6.

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















1. Разработка микропрограммы выполнения операции


  1. Представление чисел с фиксированной запятой


Необходимость в указании положения запятой отпадает, если место запятой в разрядной сетки машины заранее фиксировано раз и навсегда. Такая форма представления чисел называется представлением с фиксированной запятой (точкой).

Так как числа бывают положительные и отрицательные, то формат (разрядная сетка) машинного изображения разбивается на знаковую часть и поле числа. В поле числа размещается само изображение числа, которое мы условно называем мантиссой числа. Для кодирования знака числа используется самый старший разряд разрядной сетки, отведенной для изображения двоичного числа, а остальные разряды отводятся под мантиссу числа. Положение запятой в разрядной сетке строго фиксируется, обычно или правее самого младшего разряда мантиссы, или левее самого старшего. В первом случае число представляется как целое, во втором - как правильная дробь.

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

В знаковую часть записывается информация о знаке числа. Принято, что знак положительного числа "+" изображается символом 0, а знак отрицательного числа " – " изображается символом 1.



1.2 Обзор дополнительного кода числа


Известно, что одним из способов выполнения операции вычитания является замена знака вычитаемого на противоположный и прибавление его к уменьшаемому:

А - В = А + ( - В)


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

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


[A]пр = 0.an an-1 an-2.....a1 a0,


тогда число – А в этом же коде представляется как


[-A]пр = 1.an an-1 an-2.....a1 a0,


тогда число -A в дополнительном коде изображается в виде


[-A]доп = [-A]об + 1


где


[-A]об = 1.an an-1 an-2.....a1 a0,


где

ai = 1, если ai = 0,

ai = 0, если ai = 1,


ai – цифра i - того разряда двоичного числа. Следовательно, при переходе от прямого кода к обратному все цифры разрядов мантиссы числа инвертируются.

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

Дополнительный код некоторого числа получается его заменой на новое число, дополняющее его до числа, равного весу разряда, следующего за самым старшим разрядом разрядной сетки, используемой для представления мантиссы числа в формате с фиксированной запятой. Поэтому такой код числа называется дополнительным.

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

Таким образом, цифровые разряды отрицательного числа в прямом коде остаются неизменными, а в знаковой части записывается единица.


1.3 Рассмотрение процесса выполнения операции деления без восстановления в коде 8421,8421+6


a) Двоично-десятичная система счисления:

Двоично-десятичный код (Д-код) десятичного числа, это такое его представление, в котором каждая десятичная цифра изображается четырьмя двоичными разрядами (тетрадой из двоичных символов):


A = {a4,n a3,n a2,n a1,n}n {a4,n-1 a3,n-1 a2,n-1 a1,n-1}n-1 ... {a4,0 a3,0 a2,0 a1,0}0 ,


где - двоичные разряды тетрады, i - номер разряда внутри тетрады, j - номер самой тетрады.

Для однозначности перевода чисел в Д-код и обратно желательно, чтобы разряды тетрад имели определенный вес. Максимальное допустимое число в тетраде - 9. Если возникает число 10 и больше, то единица переходит в следующую старшую тетраду. Существуют различные Д-коды, мы рассматрим Д-код, вес разрядов, тетрады которого следующий: 8, 4, 2, 1.

Десятичные

цифры

8421

8421(+6)

0

0000

0110

1

0001

0111

2

0010

1000

3

0011

1001

4

0100

1010

5

0101

1011

6

0110

1100

7

0111

1101

8

1000

1110

9

1001

1111














б) Свойства кода 8421

1) Коды 8421 и 8421(+6) взаимно дополняющие друг друга, и это свойство используется при выполнение алгебраического сложения.


-3 = 1.0011 пк

1.1100 ок

1

1.1101 дк = | 7 |

1.1101 ¹ 7 (8421)

1.1101 = 7 (8421(+6))


Для рассматриваемого кода 8421нельзя получить обратный или дополнительный код простым инвертированием, т.к. инвертирование набора тетрад означает получение дополнения до .

Следовательно, необходимо убрать разницу. Один из используемых при этом приемов состоит в том, что во все цифровые тетрады числа в коде 8421 добавляется 0110 и после этого производится инвертирование набора.

Полученное изображение представляет собой обратный код числа. А дополнительный код получается, как обычно, добавлением 1 к младшему разряду младшей тетрады.


2) Аддитивность системы:

Сi = I1I2I3...In

Cj = J1J2J3...Jn

Eij = E1E2E3...En


Система счисления 8421 аддитивна

3= 0.0011

4= 0.0100

7= 0.0111


в) Алгебраическое сложение в коде 8421,8421+6

Первый случай – если слагаемые тетрады имеют одинаковые знаки

А>0, В>0, å – ?

A<0, B<0, å – ?


+



Если при этом был перенос p = 1, то выполняется К = 0

Если при этом не было переноса p = 0, то выполняется К = – 6


Второй случай – если слагаемые тетрады имеют различные знаки

А>0, В<0

A<0, B>0


+



å

Если å > 0 и при этом был перенос p = 1, то выполняется К = 0,

Если å > 0 и при этом не было переноса p = 0, то выполняется К = – 6

Если å < 0 сумма получается в коде 8421(+6), если при этом был перенос p = 1, то выполняется К = +6,

Если å < 0 сумма получается в коде 8421(+6), если при этом не было переноса p = 0, то выполняется К = 0


г) Деление в коде 8421, 8421+6

1) Тетрада рассматривается как единое целое, и сдвиг осуществляется на одну тетраду после формирования очередной тетрады частного.

2) Для формирования тетрады частного из делимого вычитают делитель до тех пор, пока знак остатка не изменится на противоположный. Если после положительного остатка получили отрицательный, то он не восстанавливается, в следующую тетраду частного записывается 9 и после сдвига начинается прибавление делителя, на каждый отрицательный остаток из текущей тетрады частного отнимается 1. При смене знака на положительный в следующую тетраду частного записывается 0 и на каждый положительный остаток в текущую тетраду частного прибавляется 1.

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

4) Каждое алгебраическое сложение требует соответствующей коррекции.

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



Реализация примера в десятичном виде:

д.к.=9.4267


+

0.13570011

0.5733

9.4267

0 . 9 0 9 0

¬

+

9.56240011

5.62400110

-1 +1 -1 +1

-1 +1 -1 +1

0.5733

-1 +1 -1 +1

+

6.19730110

-1 -1 +1

0.5733

-1 -1 +1

+

6.77060110

-1 -1 +1

0.5733

-1 +1

+

7.34390110

0 . 2 3 6 7

0.5733

+

7.91720110

0.5733

+

8.49050110


0.5733


+

9.06380110


0.5733


+

9.63710110


0.5733


¬

+

0.21040110

2.10401100


9.4267


+

1.53071100


9.4267


+

0.95741100


9.4267



+

0.38411100


9.4267


¬

+

9.81081100

8.10811000


0.5733


+

8.68141000


0.5733


+

9.25471000


0.5733


+

9.82801000


0.5733


¬

+

0.40131000

4.01310000


9.4267


+

3.43980000


9.4267


+

2.86690000


9.4267


+

2.29320000


9.4267


+

1.71990000


9.4267


+

1.14660000


9.4267


+

0.57330000


9.4267



0.00000000



Реализация примера в двоично-десятичном коде 8421, 8421+6

д.к.1111 1010 1000 1100 1101

+

0000 0001 0011 0101 0111 0000 0000 0001 0001

0110 1011 1101 1001 1001

1111 1010 1000 1100 1101

0000 1001 0000 1001 0000

+

1111 1011 1100 0010 0100

-0001+0001-0001+0001

1010 1010 1010 коррекция

-0001+0001-0001+0001

¬

+

1001 0101 0110 0010 0100 0000 0000 0001 0001

-0001+0001-0001+0001

0101 0110 0010 0100 0000 0000 0001 0001 0000

-0001 -0001+0001

0110 1011 1101 1001 1001

-0001 -0001+0001

+

1100 0001 1111 1101 1001

-0001 -0001+0001

1010 1010 1010 1010 коррекция

-0001 +0001

+

0110 0001 1001 0111 0011

0010 0011 0110 0111

0110 1011 1101 1001 1001


+

1100 1101 0111 0000 1100


1010 1010 1010 коррекция


+

0110 0111 0111 0000 0110


0110 1011 1101 1001 1001


+

1101 0011 0100 1001 1111


1010 1010 1010 коррекция


+

0111 0011 0100 0011 1001


0110 1011 1101 1001 1001


+

1101 1111 0001 1101 0010


1010 1010 1010 коррекция


+

0111 1001 0001 0111 0010


0110 1011 1101 1001 1001


+

1110 0100 1111 0000 1011


1010 1010 1010 коррекция


+

1000 0100 1001 0000 0101


0110 1011 1101 1001 1001


+

1111 0000 0110 1001 1110


1010 1010 1010 коррекция


+

1001 0000 0110 0011 1000


0110 1011 1101 1001 1001


+

1111 1100 0011 1101 0001


1010 1010 1010 коррекция


+

1001 0110 0011 0111 0001


0110 1011 1101 1001 1001


+

0000 0010 0001 0000 1010


1010 коррекция


¬

+

0000 0010 0001 0000 0100 0000 0001 0001 0000

0010 0001 0000 0100 0000 0001 0001 0000 0000


1111 1010 1000 1100 1101


+

0001 1011 1001 0000 1101


1010 1010 1010 коррекция


+

0001 0101 0011 0000 0111


1111 1010 1000 1100 1101


+

0000 1111 1011 1101 0100


1010 1010 1010 коррекция


+

0000 1001 0101 0111 0100


1111 1010 1000 1100 1101


+

0000 0011 1110 0100 0001


1010 коррекция


+

0000 0011 1000 0100 0001


1111 1010 1000 1100 1101


+

1111 1110 0001 0000 1110


1010 1010 1010 коррекция


¬

+

1001 1000 0001 0000 1000 0001 0001 0000 0000

1000 0001 0000 1000 0001 0001 0000 0000 0000


0110 1011 1101 1001 1001


+

1110 1100 1110 0001 1010


1010 1010 1010 1010 коррекция


+

1000 0110 1000 0001 0100


0110 1011 1101 1001 1001


+

1111 0010 0101 0101 1101


1010 1010 1010 коррекция


+

1001 0010 0101 0100 0111


0110 1011 1101 1001 1001


+

1111 1110 0010 1110 0000


1010 1010 1010 коррекция


+

1001 1000 0010 1000 0000


0110 1011 1101 1001 1001


+

0000 0100 0000 0001 1001


1010 коррекция


¬

+

0000 0100 0000 0001 0011 0001 0000 0000 0000

0100 0000 0001 0011 0001 0000 0000 0000 0000


1111 1010 1000 1100 1101


+

0011 1010 1001 1111 1110


1010 1010 1010 1010 коррекция


+

0011 0100 0011 1001 1000


1111 1010 1000 1100 1101


+

0010 1110 1100 0110 0101


1010 1010 коррекция


+

0010 1000 0110 0110 0101


1111 1010 1000 1100 1101


+

0010 0010 1111 0011 0010


1010 коррекция


+

0010 0010 1001 0011 0010


1111 1010 1000 1100 1101


+

0001 1101 0001 1111 1111


1010 1010 1010 коррекция


+

0001 0111 0001 1001 1001


1111 1010 1000 1100 1101


+

0001 0001 1010 0110 0110


1010 коррекция


+

0001 0001 0100 0110 0110


1111 1010 1000 1100 1101


+

0000 1011 1101 0011 0011


1010 1010 коррекция


+

0000 0101 0111 0011 0011


1111 1010 1000 1100 1101



0000 0000 0000 0000 0000



Случайные файлы

Файл
26474.rtf
66016.rtf
41717.rtf
175446.rtf
64252.rtf