 
        
        - •Тверь 2004
- •Введение
- •Арифметика цвм Формы представления чисел в эвм
- •Представление чисел со знаком в эвм
- •Переполнение разрядной сетки
- •Модифицированные коды.
- •Умножение двоичных чисел в форме с плавающей запятой
- •Умножение чисел с фиксированной запятой на дсдк, схема 1
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 1
- •Умножение двоичных чисел с фиксированной запятой на дсдк, схема 2
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 2
- •Умножение двоичных чисел с фиксированной запятой на дсдк, схема 3
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 3
- •Умножение двоичных чисел с фиксированной запятой на дсдк, схема 4
- •Умножение двоичных чисел с фиксированной запятой на дсок, схема 4
- •Деление двоичных чисел с плавающей запятой.
- •Деление двоичных чисел с фиксированной запятой с восстановлением остатка
- •Деление двоичных чисел с фиксированной запятой без восстановления остатка.
- •Алгоритмы перевода чисел из системы счисления с основаниемpв систему счисления с основаниемq Перевод правильной дроби из кода д1 в двоичную систему счисления
- •Перевод правильной дроби из двоичной системы счисления в код д1
- •Перевод целого числа из кода д1 в двоичную систему счисления
- •Перевод целого двоичного числа в код д1
- •Основные сведения о конечных цифровых автоматах
- •Абстрактная теория цифровых автоматов
- •Совмещенная модель автомата (с-автомат)
- •Функционирование цифрового автомата во времени
- •Канонический метод структурного синтеза цифровых автоматов
- •Элементы памяти в цифровых автоматах
- •Проектирование автомата Мили Кодированная таблица переходов-выходов
- •Проектирование автомата Мура
- •Принцип микропрограммного управления в цифровых автоматах
- •Алгоритм отметки гса и построение автомата Мура
- •Тривиальная реализация цифрового автомата
- •Кодирование состояний. Гонки в автомате
- •Замена входных переменных и кодирование состояний
- •Кодирование микрокоманд
- •Матричная реализация комбинационных схем и автоматов
Перевод целого двоичного числа в код д1
Как было отмечено в предыдущем разделе, результат перевода в этом случае будет представлять каждую десятичную цифру в виде четырехразрядного двоичного кода. Поскольку код Д1 имеет естественные веса разрядов, то получаемые при переводе тетрады будут кодами соответствующих десятичных цифр в коде Д1. Если требуется выполнить перевод двоичного целого числа в код Д2 или Д4, необходимо уточнить механизм коррекций в тетрадах в соответствии с допустимыми в рассматриваемом коде тетрадами. В качестве примера выполним обратных перевод полученного в предыдущем разделе двоичного числа в код Д1. Так же, как и в предыдущем случае, требуется оценить число необходимых десятичных разрядов. Число значимых двоичных разрядов равно 8, следовательно, требуемое число десятичных разрядов равно n=]log28[ =3.
Схема операционного автомата должна содержать следующие структурные элементы:
- РгА[0-11] для записи тетрад кода Д1, 
- РгВ[0-7] для записи исходного двоичного числа, 
- КС1 – три комбинационные схемы для выполнения коррекций в тетрадах, 
- СТ служит для контроля числа подсуммированных разрядов двоичного числа. 
КС1 выполняет коррекцию тетрад следующим образом: для кода Д1 коррекция «+3» выполняется в тетраде, если ее значение превышает 4. Это позволяет избежать при сдвигах РгА влево появления недопустимых тетрад.
В каждом такте производится подсуммирование старшего бита двоичного числа к коду десятичного числа. Цикл управляется значением счетчика СТ. Выход из цикла при СТ=0.
Пример перевода целого двоичного числа в код Д1 в таблице 3.
Таблица 16 Перевод целого двоичного числа в код Д1
| РгА | РгВ | СТ | Комментарии | 
| 0000 0000 0000 | 10001001 | 8 | РгА:=0, РгВ:= [B], | 
| 0000 0000 0001 | 0001001- | 7 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 
 0000 0000 001- | 
 | 
 | СТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?НЕТ Коррекции в тетрадах не требуются. РгА:=L(1)РгА, | 
| 0000 0000 0010 | 001001-- | 6 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 0000 0000 010- | 
 | 
 | СТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?НЕТ Коррекции в тетрадах не требуются. РгА:=L(1)РгА, | 
| 0000 0000 0100 | 01001--- | 5 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 
 | 
 | 
 | 
 | 
| 0000 0000 100- | 
 | 
 | СТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?НЕТ Коррекции в тетрадах не требуются. РгА:=L(1)РгА, | 
| 0000 0000 1000 | 1001---- | 4 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 0000 0000 1011 | 
 | 
 | СТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?ДА Требуется коррекция в третьей тетраде. Выполняем коррекцию +3. | 
| 0000 0001 011- | 
 | 
 | РгА:=L(1)РгА, | 
| 0000 0001 0111 | 001----- | 3 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 0000 0001 1010 | 
 | 
 | СТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?ДА Требуется коррекция в третьей тетраде. Выполняем коррекцию +3. | 
| 0000 0011 010- | 
 | 
 | РгА:=L(1)РгА, | 
| 0000 0011 0100 | 01------ | 2 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 0000 0110 100- | 
 | 
 | РгВСТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?НЕТ Коррекции в тетрадах не требуются. РгА:=L(1)РгА, | 
| 0000 0110 1000 | 1------- | 1 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 0000 1001 1011 | 
 | 
 | СТ=0? НЕТ РгА[0-3]>4?НЕТ РгА[4-7]>4? НЕТ РгА[7-11]>4?НЕТ Коррекции во второй и третьей тетрадах +3 | 
| 0001 0011 011- | 
 | 
 | РгА:=L(1)РгА, | 
| 0001 0011 0111 | -------- | 0 | РгА[11]:= РгВ[0], РгВ:=L(1)РгВ, | 
| 
 | 
 | 
 | СТ=0? ДА Выход из цикла. Коррекция тетрад не выполняется. Ответ: данное двоичное число равно 13710. | 
Таким образом, алгоритм перевода целого двоичного числа в код Д1 работает до тех пор, пока не будут подсуммированы все разряды двоичного числа, начиная со старшего к десятичному числу. Так как подсуммирование всегда производится после сдвига, то подсуммирование означает просто замещение нуля, стоящего в младшем разряде РгА, на значение старшего разряда РгВ. Признак СТ=0 означает выход из цикла. При этом сдвиг РгА не производится и коррекция в тетрадах не выполняется.
