Разработка структуры операционной части автомата
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
µдиница. Прямой код положительного числа совпадает с его обычным изображением в естественной форме.
Данное определение позволяет дать прямому коду такую интерпретацию:
Аналитическое выражение показывает, что прямой код дробного числа (J=0) формируется как сумма абсолютной величины исходного числа и единицы. Прямой код целого числа (J=n-1, причем знаковым является крайний левый разряд) формируется как сумма 10n-1+|X|/
Прямой код получил широкое распространение в ЭЦВМ вследствие своей простоты. В нем удобно хранить числа в памяти, перемножать числа. Но, как оказалось, он плохо приспособлен для сложения чисел. Действительно, при алгебраическом сложении чисел в прямом коде требуется выполнить четыре действия.:
1.сравнить знаки слагаемых;
2.сравнить слагаемые по модулю при неравенстве их знаков;
.выполнить соответствующую арифметическую операцию: сложение при равенстве знаков и вычитание из большего по модулю слагаемого меньшего при неравенстве их знаков;
.присвоить алгебраической сумме знак большего по модулю слагаемого.
Так как операция сложения значительно проще вычитания, то возникает вопрос: нельзя ли каким-либо образом алгебраическое сложение свести к арифметическому? Оказывается, это возможно за счет более сложного кодирования.
2. Синтез управляющего автомата с жесткой (схемной) логикой
Ниже приведена реализация вышеприведенных этапов синтеза управляющего автомата с жесткой (схемной) логикой, обеспечивающего выполнение операций деление без восстановления остатка.
При деление числе без восстановления остатка делитель вычитается из делимого и определяется знак нулевого (по порядку) остатка. Если остаток положительный, т.е. , то в псевдознаковом разряде частного проставляется 1, при появлении которой формируется признак переполнения разрядной сетки и операция прекращается. Если остаток отрицательный, то в псевдознаковом разряде частного записывается 0, а затем выполняется сдвиг текущего остатка на один разряд влево и прибавление к нему делителя. Знак получаемого таким образом остатка определяет первую значащую цифру частного: если остаток положителен, то в первом разряде частного записывается 1, если отрицательный, то записывается 0. Далее, если остаток положителен, то он сдвигается влево на 1 разряд и из него вычитается делитель для определения следующей цифры частного. Если остаток отрицателен, то к нему прибавляется делитель и определяется следующий остаток, знак которого определяет следующую цифру частного. Операция сдвигов и алгебраических сложений повторяется до тех пор, пока в частном не получается требуемое количество цифр.
2.1 Разработка структуры операционной части автомата
Структура операционной части автомата, предназначенная для реализации операции деление без восстановления остатка.
Действия, которые требуется выполнить для реализации алгоритма, включим в состав операционного автомата следующие элементы:
два шестнадцатиразрядных регистра Рг А и Рг В для хранения входных операндов и промежуточных результатов, причем регистр Рг А должен обеспечить возможность сдвига своего содержимого влево;
шестнадцатиразрядный регистр Рг С для размещения результата арифметической операции сложения или вычитания (в нашем случае в этом регистре формируется остаток): в конце операции в нем будет размещен результат - частное;
шестнадцатиразрядный регистр Pг D с возможностью левого сдвига кода для размещения частного в процессе его формирования;
шестнадцатиразрядный двоичный параллельный сумматор/вычитатель Сум/Выч;
четырехразрядный вычитающий счетчик Сч и по модулю 16 для подсчета цифр частного;
схема сравнения на "равно" знаковых разрядов исходных операндов;
дешифратор DC "0" нулевой комбинации в разрядах C[1: 15], формирующий признак нулевого результата Z.
В операционной части автомата выполняется следующие микрооперации и логические условия, показанные на рис. 2.
Рис. 1. Структура операционного автомата
МикрооперацияДействиеМикрооперацияДействиеЛогическое условиеДействиеу1x:=0у10A:=L1(A)x1an:= bnу2x:=1у11D[15]:=1x2c0у3an:=0у12D[15]:=0x3Сч n:=0у4bn:=0у13C:=A+Bу5C:=A-Bу14D:=L1(D)у6OV:=0у15Сч n:=Cч-1у7OV:=1у16C:=Dу8n:=16у17c0:=sу9A:=CРис. 2. Таблица микроопераций и логических условий
2.2 Построение содержательной ГСА
Содержательная граф-схема алгоритма операции деление без восстановления остатка приведена на рис. 3.
Алгоритм предусматривает формирование знака результата и сохранение его временно в переменной s. После этого производится деление модулей чисел (знаки операндов обнуляются).
Сначала производится пробное вычитание делителя из делимого. Поскольку знаки операндов - 0, то появление 1 в знаковом разряде разности означает, что А < В, и можно продолжать деление (целая часть частного равна 0). При с0 = 0 деление невозможно - формируется признак переполнения.
В процессе получения цифр частного значение очередного остатка принимает переменная С. Независимо от знака остатка она копируется в переменную А, которая затем увеличивается вдвое путем сдвига влево на один разряд. В зависимости от знака переменной С (знака остатка) формируется очередная цифра переменной D (частного) и принимается решение о действии на следующем шаге - добавлять или вычитать делитель из сдвинутого остатка. После арифметической операции выполняется сдвиг влево частного D (освобо?/p>