- •Тверь 2004
- •Введение
- •Арифметика цвм Формы представления чисел в эвм
- •Представление чисел со знаком в эвм
- •Переполнение разрядной сетки
- •Модифицированные коды.
- •Умножение двоичных чисел в форме с плавающей запятой
- •Умножение чисел с фиксированной запятой на дсдк, схема 1
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 1
- •Умножение двоичных чисел с фиксированной запятой на дсдк, схема 2
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 2
- •Умножение двоичных чисел с фиксированной запятой на дсдк, схема 3
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 3
- •Умножение двоичных чисел с фиксированной запятой на дсдк, схема 4
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 4
- •Деление двоичных чисел с плавающей запятой.
- •Деление двоичных чисел с фиксированной запятой с восстановлением остатка
- •Деление двоичных чисел с фиксированной запятой без восстановления остатка.
- •Алгоритмы перевода чисел из системы счисления с основаниемpв систему счисления с основаниемq Перевод правильной дроби из кода д1 в двоичную систему счисления
- •Перевод правильной дроби из двоичной системы счисления в код д1
- •Перевод целого числа из кода д1 в двоичную систему счисления
- •Перевод целого двоичного числа в код д1
- •Основные сведения о конечных цифровых автоматах
- •Абстрактная теория цифровых автоматов
- •Совмещенная модель автомата (с-автомат)
- •Функционирование цифрового автомата во времени
- •Канонический метод структурного синтеза цифровых автоматов
- •Элементы памяти в цифровых автоматах
- •Проектирование автомата Мили Кодированная таблица переходов-выходов
- •Проектирование автомата Мура
- •Принцип микропрограммного управления в цифровых автоматах
- •Алгоритм отметки гса и построение автомата Мура
- •Тривиальная реализация цифрового автомата
- •Кодирование состояний. Гонки в автомате
- •Замена входных переменных и кодирование состояний
- •Кодирование микрокоманд
- •Матричная реализация комбинационных схем и автоматов
Алгоритмы перевода чисел из системы счисления с основаниемpв систему счисления с основаниемq Перевод правильной дроби из кода д1 в двоичную систему счисления
Перевод выполняется за n+1 такт, гдеn– число двоичных разрядов, обеспечивающих точность перевода такую же, как у исходного десятичного числа. Необходимое сило разрядов может быть определено из выражения
где k– число разрядов десятичного числа, определяющее его точность.
Чтобы определить алгоритм перевода числа из системы счисления с основанием qв систему счисления с основаниемp, запишем числоAqв виде разложения по степеням 2:
Aq=a1p-1+a2p-2+…+anp-n=p-1(a1+p-1(a2+…+p-1(an+0))…).
(1)
Полученное выражение есть схема Горнера, определяющая последовательность действий при переводе.
Умножая Aq наp, получим смешанную дробь, целая часть которой будет равна первой цифре числа в системе счисления с основаниемq. Далее, умножая дробную часть получившегося числаA’qнаp, будем получать в целой части получающейся смешанной дроби значения очередных цифр в системе счисления с основанием р. При этом, еслиq>p, то цифры числа в новой системе счисления будут сразу получаться правильными. Если жеp>q, то целая часть смешанной дроби, получающейся в результате умноженияq-ичной правильной дроби на основание новой системы счисления будет представлять очередную цифру р-ичного числа кодовой последовательностью вq-ичной системе счисления. Из выражения (1) следует следующий алгоритм перевода правильной дроби из кода Д1 в двоичную систему счисления, представленный в табл. 1Примем значение исходного числа равным А10=0.13710. Число необходимых двоичных разрядов не меньше (3/lg2), т.е. больше или равно 10. Следовательно, необходимо принять число тактов равным 11 для последующего округления результата. В коде Д1 наше число будет иметь вид: А10= 0001 0011 0111. Умножение на 2 соответствует сдвигу регистра, в котором хранится число А на один разряд влево. Исходное число в коде Д1 хранится в РгА, Двоичный код записывается в РгВ последовательно разряд за разрядом, начиная со старшего разряда, путем сдвига РгВ влево. В таблице, представляющей алгоритм перевода, будем также записывать результат умножения десятичного числа на 2 в десятичной системе счисления (столбец А10), чтобы контролировать результат выполнения операций сдвига и коррекции в коде Д1. Таблица также содержит столбец СТ, в котором учитывается число уже выполненных тактов. Критерием завершения операции перевода является СТ=0.
Таблица 13 Перевод правильных дробей из кода Д1 в двоичную систему счисления
РгВ |
РгА |
А10 |
CT |
Комментарии |
***** ****** |
0.00001 0011 0111 |
0.137 |
11 |
Загрузить [A] в РгА. СТ:=11, РгВ:=0, |
***** *****0 |
0.0010 0110 1110 |
0.274 |
|
РгВ[10]:=РгА[0], РгА:=L(1)РгA, |
|
0.0010 0111 0100 |
|
|
Выполнить коррекцию в тетрадах. Сравнить полученный результат с вычисленным значением А10. |
***** ****0* |
0.0100 1110 1000 |
0.548 |
10 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
0.0101 0100 1000 |
|
|
Выполнить коррекцию тетрад. |
***** ***00* |
0.1010 1001 0000 |
1.096 |
9 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
1.0000 1001 0110 |
|
|
Выполнить коррекцию тетрад |
***** **001* |
0.0001 0010 1100 |
0.192 |
8 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
0.0001 1001 0010 |
|
|
Выполнить коррекцию тетрад |
***** *0010* |
0.0011 0010 0100 |
0.384 |
7 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
0.0011 1000 0100 |
|
|
Выполнить коррекцию тетрад |
***** 00100* |
0.0111 0000 1000 |
0.768 |
6 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
0.0111 0110 1000 |
|
|
Выполнить коррекцию тетрад |
****0 01000* |
0.1110 1101 0000 |
1.536 |
5 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
1.0101 0011 0110 |
|
|
Коррекция тетрад |
***00 10001* |
0.1010 0110 1100 |
1.072 |
4 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
1.0000 0111 0010 |
|
|
Коррекция тетрад |
**001 00011* |
0.0000 1110 0100 |
0.144 |
3 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
0.0001 0100 0100 |
|
|
Коррекция тетрад |
*0010 10110* |
0.0010 1000 1000 |
0.288 |
2 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
|
|
|
Коррекция тетрад не требуется |
00100 01100* |
0.0101 0001 0000 |
0.576 |
1 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
0.0101 0111 0110 |
|
|
Коррекция тетрад |
00101 011000 |
0.1010 1110 1100 |
1.152 |
0 |
РгВ[10]:=РгА[0], РгВ:=L(1)РгВ, РгА:=L(1)РгА, СТ:=СТ-1, |
|
1.0001 0101 0010 |
|
|
|
00100 011000 + 1 00100 011001 |
|
|
|
СТ=0? ДА Выход из цикла. Округление СМ:=СМ+1, |
|
|
|
|
ШД:=РгB[0:10] – выдача результата в шину данных (ШД). |
Результат получается отбрасыванием младшего разряда суммы после округления.
Таким образом схема операционного автомата должна содержать двенадцатиразрядный РгА, одиннадцатиразрядный РгВ, счетчик числа циклов СТ и сумматор для выполнения округления. В этом случае нет необходимости в использовании полного двоичного сумматора. Поэтому можно применить комбинационную схему, выполняющую подсуммирование 1 в младший разряд полученного двоичного числа. Следует иметь в виду, что запятая в данном случае фиксирована слева от старшего разряда.
Коррекции в коде Д1 при сдвиге влево выполняются:
при получении недопустимой тетрады;
в младшей тетраде при наличии передачи единицы из младшей тетрады в старшую,
коррекция в тетраде выполняется только один раз; т.е., если при коррекции возникает перенос в старшую тетраду, он не требует коррекции.
В любом случае коррекция в коде Д1 состоит в подсуммировании +6 к тетраде, требующей коррекции. При коррекции формируется символ переноса в старшую тетраду. Поэтому запись цифры из целой части дроби в коде Д1 в РгВ [10] следует производить после выполнения коррекции.