Разработать операционный автомат и граф-схему алгоритма для перевода целых чисел со знаком из двоичной системы счисления в код D1. КОНТРОЛЬНАЯ РАБОТА Тема: «Проектирование операционных автоматов» Выполнил: студент 3 курса группы ИВТ-327 Проверила: Асеева Татьяна Васильевна Тверь 2014 Вариант 3 Разработать операционный автомат и граф-схему алгоритма для перевода целых чисел со знаком из двоичной системы счисления в код D1. Данные для примера (в десятичной системе счисления) – 94 Тип управляющего автомата/тип элемента памяти - Мили/RS-триггер Логический базис - {&, ∨, } Алгоритм выполнения заданной операции: Для перевода из целого двоичного числа в код Д1, выполняем следующие операции: 1) Код Д1 формируется в тетрадах, число которых определяется предварительно. 2) Спадающая с регистра двоичного числа цифра подсуммируется в младшую тетраду кода Д1. 3) Затем выполняется проверка содержимого всех тетрад. Если содержимое тетрады после подсуммирования > 4, выполняется коррекции +0011. 4) После этого текущее значение кода Д1 и двоичное число сдвигается на один разряд влево и процедуры повторяется. 5) Операции заканчивается под суммированием цифры младшего разряда двоичного числа. На этом последнем шаге коррекция не выполняется. Переведем это число в двоичную систему счисления: 9410 = 10111102 Рассчитаем, какое количество разрядов необходимо для хранения в памяти итогового результата: где k – число разрядов десятичного числа, определяющего его точность, n – число двоичных разрядов, обеспечивающее точность перевода.  Значит, для хранения в памяти такого числа потребуется 2 разряда, но мы должны в итоге получить десятичное число, записанное в D1 коде. Так как этот код имеет естественные веса разрядов, то для кодирования этого числа потребуется 8 разрядов, потому что десятичное число в коде D1 кодируется 4 битами. Схема операционного автомата должна содержать следующие структурные элементы: 1. РгА[0-7] – для записи тетрад кода D1 2. РгВ[0-6] – для записи исходного двоичного числа 3. КС1 – две комбинационные схемы для выполнения коррекций в тетрадах 4. СТ. – счетчик контроля числа подсуммированных разрядов двоичного числа. Комбинационная схема выполняет коррекцию тетрад следующим образом: для кода D1 коррекция «+3» выполняется в тетраде, если её значение превышает 4. Это позволяет избежать при сдвигах влево появления недопустимых тетрад. Для того чтобы правильно переводить числа, нужно знать алгоритм перевода. Чтобы определить алгоритм перевода числа из системы счисления с основанием q в систему счисления с основанием p, запишем число Aq в виде разложения по степеням 2: Ap = anqn + a (n-1) q (n-1) + …+ a1q1 + a0q0 = a0 +q*(a1+q (a2+...+q*(an+0))). Рассмотрим пример перевода на выбранном числе и проверим результат: РгА | РгВ | СТ. | Операции | 0000.0000 | | | 1) Начальные присваивания Подсуммирование к коду Д1 старшего разряда двоичного числа | 0000.0001 | 011110_ | | 2) сдвиг на один разряд влево обоих чисел и подсуммирование старшего разряда двоичного числа. СТ=СТ-1 | 0000.001_ | | | 3) выполнение коррекции | 0000.0010 | 11110_ _ | | 4) сдвиг и подсуммирование и СТ=СТ-1 | 0000.010_ | | | 5) выполнение коррекции | 0000.0101 | 1110_ _ _ | | 6) сдвиг и подсуммирование и СТ=СТ-1 | 0001.000_ | | | 7) выполнение коррекции | 0001.0001 | 110_ _ _ _ | | 8) сдвиг и подсуммирование и СТ=СТ-1 | 0010.001_ | | | 9) выполнение коррекции | 0010.0011 | 10_ _ _ _ _ | | 10) сдвиг и подсуммирование и СТ=СТ-1 | 0100.011_ | | | 11) выполнение коррекции | 0100.0111 | 0_ _ _ _ _ _ | | 12) сдвиг и подсуммирование и СТ=СТ-1 | 1001.010_ | | | 13) выполнение коррекции | 1001.0100 | _ _ _ _ _ _ _ | | 14) конец так. как СТ =0. | 9410 | | | | Очевидно, что итоговый результат совпадает с тем числом, двоичный код которого мы анализировали, поэтому алгоритм перехода работает верно. Разработаем комбинационную схему коррекции тетрад в коде D1 при сдвиге влево. Алгоритм коррекции приведен выше. Таблица с двоичными кодами. x1 | x2 | x3 | x4 | № | y1 | y2 | y3 | y4 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - | - | - | - | | | | | | - | - | - | - | | | | | | - | - | - | - | | | | | | - | - | - | - | | | | | | - | - | - | - | | | | | | - | - | - | - | Проминимизируем полученные значения y и построим комбинационную схему. 1). Построим диаграмму Вейча для 4 переменных и найдем МДНФ – нормальная минимальная дизъюнктивная форма. Используем диаграмму Вейча, размещая в ней имена состояний таким образом, чтобы они склеивались между собой, образуя интервалы наименьшего ранга. В каждой склейке могут участвовать метки состояний, соответствующие переменной xj и метки состояний уравнения P1. Если для кодирования состояний используются не все возможные кодовые комбинации, соответствующие всем наборам значений внутренних переменных, то неиспользуемые коды образуют области неопределенности функции (диаграммы), которые могут участвовать в любых склейках. Необходимо только следить за тем, чтобы в склейку, определяющую конъюнкцию при переменной xj, не попадали метки состояний, для которых обозначен переход в другие состояния под действием других переменных в этом же столбце таблицы. Очевидно, что разным способам размещения меток в диаграмме будут соответствовать разные выражения, определяющие новые внешние переменные. X1  - | - | | | - | - | - | - | | | | | | | | | 1.  X2
X4 Аналогично поступим при расчете МДНФ для остальных функций. X1  2. X2
X4 X1  3. X2
X4 X1  4. X2
X4 Итог: МДНФ1 = X2 (X1&X4) (X1&X3) МДНФ2 = (X1& & ) (X2&X4); МДНФ3 = (X3& ) ( &X3); МДНФ4 = (X2& ) ( & &X4) (X1 X3 ). Построим операционный автомат перевода целых чисел из двоичной системы в код D1. 0 3 4 7 0 6    0 3 4 7 0 РгВ:=[В] 0 3 0 3 РгВ:=L (1) РгВ СТ.:=СТ.-1 РгА:=0 РгА[7]:=РгВ[0] РгА:=L(1)РгА  0 3 0 3 СТ-1 0 – выход из цикла. |