Жмакин А.П. Архитектура ЭВМ (2006) (1186252), страница 15
Текст из файла (страница 15)
Следует отметить, что проблемы гонок могут быть полностью решены при использовании в автомате двухтактных элементов памяти, причем способ кодирования состояний в этом случае роли не играет. Правда, затраты оборудования при таком решении несколько возрастают, по сравнению с использованием метода противогоночного кодирования, но во-первых, эффективность метода заметно проявится лишь при достаточно большом числе состояний автомата (25—40), а во-вторых, большинство современных интегральных элементов памяти (триггеров) выпускаются именно двухтактными. Применение специальных методов кодирования "с учетом сложности комбинационных схем" [2] так же обеспечивает заметный эффект лишь для достаточно громоздких автоматов.
В нашем примере воспользуемся простейшим методом кодирования состояний автомата, когда код состояния совпадает с двоичным числом, соответствующим номеру состояния. В рассматриваемом автомате насчитывается 14 состояний (см. рис. 4.6), поэтому для их кодирования требуется четырехразрядный двоичный код(24 >14; 23 <14) — табл. 4.2.
Таблица 4.2. Кодирование состояний автомата
Шаг 5. Выбор элемента памяти (типа триггера). При выборе элемента памяти следует учитывать простоту управления им. С этой точки зрения удобнее выбирать триггеры, управляемые по единственному информационному входу — к таким относятся D- и Т-триггеры. В нашем примере в качестве элемента памяти автомата выберем синхронный двухтактный D-триггер. Очевидно, для реализации нашего автомата понадобятся четыре D-триггера.
Шаг 6. Построение автоматной таблицы переходов (табл. 4.3).
Эта таблица практически описывает функцию переходов автомата, строится по графу автомата и определяет, какие значения необходимо подать на управляющие входы триггеров на каждом переходе автомата в новое состояние. Строка таблицы соответствует одному переходу автомата. Таким образом, автоматная таблица содержит столько строк, сколько ребер в графе автомата (включая и петли, если они имеются в графе).
Таблица 4.3. Автоматная таблица переходов
Шаг 7. Синтез комбинационной схемы, реализующей функцию переходов автомата. Эта комбинационная схема в нашем случае реализует четыре булевы функции £>,, D2, £>3, А», зависящие от четырехразрядного двоичного
кода состояния автомата ТХТ2Т3Т4 и трехбитного вектора входных символов ххх2х3. Комбинационная схема, описываемая системой четырех булевых функций от семи переменных, должна обеспечивать переходы автомата в соответствии с графом рис. 4.6.
Для построения этой схемы можно построить четыре карты Карно для Dx, D2, D3, D4 по таблицам истинности, заданным соответствующими столбцами автоматной таблицы переходов, и минимизировать эти функции. Менее трудоемкий способ состоит в предварительной дешифрации состояний автомата (булевы функции четырех переменных) и записи функций возбуждения через значения af и хк. Воспользуемся последним способом, тем более, что дешифрированные состояния автомата пригодятся нам и на следующем шаге при формировании функции выходов.
Итак, предусмотрим дешифратор, на входы которого поступает двоичный код состояния автомата ТХТ2Т3Т4, а на выходах формируется унитарный код ax...aj_xaiaM...aX4. Кстати, поскольку на входах дешифратора не могут появиться комбинации 0000 и 1111 (их мы не использовали при кодировании состояний), то схему дешифратора можно минимизировать. (Как? Попробуйте построить такой дешифратор самостоятельно.) Рассмотрим столбец Dx автоматной таблицы переходов, отметив те наборы входных переменных функции возбуждения (из {а} и {*}), на которых Dx принимает единичные значения. Можно записать:
А =а6 va8 vo9 va10 va,, v aX2 va13. (4.2)
Обратите внимание, что функция Dx не зависит от входных переменных {х) (частный случай!). Действительно, переход, например, из состояния а9 в зависимости от значения х2 может произойти в ахо или в ахх, но в обоих этих состояниях значение старшего разряда кодов одинаково. То же для £>, можно сказать и обо всех остальных переходах, зависящих от входных символов (из ах, а5, а,2).
Теперь запишем булевы выражения для остальных функций возбуждения.
D2 = а2 v а3 v а4 v as v ах0 v ах, v аХ2х3 v ахз. (4.3)
D3 = ах v а5 v а9 v ахз. (4.4)
D4 - аххх va4v а5х2 v о7 v а8 v а9х2 v ах2х3 v а14. (4.5)
Шаг 8. Синтез комбинационной схемы, реализующей функцию выходов. Функция выходов автомата Мура зависит только от его внутреннего состояния и задана непосредственно на графе автомата (см. рис. 4.6). Выходами микропрограммного автомата являются микрооперации, поступающие в точки управления операционного автомата. Поэтому выходные символы микропрограммного автомата обычно не кодируют, а формируют на выходе значение вектора микроопераций. При большом числе микроопераций с целью уменьшения связности между OA и УА на вход OA передают не вектор микроопераций, а номер активной в данном такте микрооперации. Подробнее об этом — в следующем разделе.
Из графа автомата (см. рис. 4.6) видно, что микрооперация ух должна вырабатываться автоматом, когда он находится в состоянии а2, микрооперация у2 — в состоянии аъ и т. д. Микрооперация ^5 должна вырабатываться автоматом, находящимся в состоянии а5 и ахо. Запишем функцию выходов автомата в виде системы булевых функций':
У\ = а2,У2 =аЗ>УЗ =а4>У4 =а4>У5 =а5^а\0>Уб =а6>У1 =°7>
.У8 =а6>У9 =а »>У\0 =а9>У\\ =аЮ'У\2 =а11»>;13 =а11'>'14 =°12> (4-6)
У\5 =а\2>У\б =а\з>Уп = Ян-Шаг 9. Теперь изобразим функциональную схему управляющего автомата, используя выражения (4.2)—(4.6) с учетом выбранного типа элемента памяти.
Управляющий микропрограммный автомат с жесткой логикой (автомат Мура), изображенный на рис. 4.7, имеет три двоичных входа хх, х2, х3, вход тактового сигнала CLK и семнадцать двоичных выходов — микрооперации
Уи У2> Ум-
Память автомата представлена четырьмя двухтактными синхронными D-триг-герами, объединенными общей цепью синхронизации (CLK). Выходы триггеров поступают на вход дешифратора DC "4 -» 16", на выходах которого формируется унитарный код текущего состояния автомата. Поскольку проектируемый автомат является автоматом Мура, выходы дешифратора фактически являются выходами управляющего автомата (значениями микроопераций). Исключение составляет микрооперация у5, которая формируется как
дизъюнкция двух различных состояний автомата, поскольку эта микрооперация присутствует в двух различных операторных вершинах исходной микропрограммы (см. рис. 4.5).
Функции возбуждения триггеров формируют значения Dt, /e{l, 2,3,4} на выходах одно- или двухуровневых схем, построенных согласно выражениям (4.2)—(4.5). Обратите внимание, что в выражениях (4.3) и (4.5) имеется одинаковый терм — о^^з ■ На функциональной схеме выход конъюнктора, реализующего этот терм, поступает на два входа различных дизъюнкторов, "обеспечивая" одновременно две функции возбуждения — D2 и D4.
Схемы, реализующие функции возбуждения, можно построить иначе. Для примера рассмотрим выражение (4.4). Состояния автомата, входящие в это выражение, если выразить их через значения состояний триггеров, окажутся соседними и склеиваются. Действительно:
Dt, =(Х\ VOt VflqVan =
__ _ _ _ __ _ (4.7)
- Т^Т^Тд v ТхТгТ3ТА v Г,Г2Г3Г4 v Т{Г2ТЪТА = Т2Т4.
Очевидно, схема, реализованная по выражению (4.7), будет проще, чем схема (4.4). Проверьте, можно ли подобным образом минимизировать выражения остальных функций возбуждения.
Итак, мы построили микропрограммный автомат с "жесткой" логикой. Давайте представим, что нам понадобилось незначительно изменить исходную микропрограмму, например, добавить еще одну операторную вершину. Практически это приведет к необходимости полного перепроектирования всей схемы автомата. Это особенность автоматов с "жесткой" логикой является их серьезным недостатком.
Для того чтобы уменьшить зависимость структуры автомата от реализуемых им микропрограмм, используют управляющие автоматы с программируемой логикой.
4.4.2. Управляющий автомат с программируемой логикой
Принципы организации
Заметим, что функция любого управляющего автомата — генерирование последовательности управляющих слов (микрокоманд), определенной реализуемым алгоритмом с учетом значений осведомительных сигналов.
Если заранее разместить в запоминающем устройстве все необходимые для реализации заданного алгоритма (группы алгоритмов) микрокоманды, а потом выбирать их из памяти в порядке, предусмотренном алгоритмом (с учетом значения осведомительных сигналов), то получим управляющий автомат, структура которого слабо зависит от реализуемых алгоритмов, а поведение в основном определяется содержимым запоминающего устройства.
При изменениях реализуемого алгоритма в достаточно широких пределах структура такого автомата не меняется, достаточно лишь изменить содержимое ячеек запоминающего устройства. Управляющий микропрограммный автомат, построенный по таким принципам, называется управляющим автоматом с программируемой логикой.
Структурная схема такого автомата в самом общем виде приведена на рис. 4.8. Автомат включает в себя запоминающее устройство микрокоманд (обычно реализуемое как ПЗУ), регистр микрокоманд и устройство формирования адреса микрокоманды.
В каждом такте дискретного времени из памяти микрокоманд считывается одна микрокоманда, которая помещается в регистр микрокоманд. Микрокоманда содержит два поля (две группы полей), одно из которых определяет набор микроопераций, которые в данном такте поступают в операционный автомат, а другое содержит информацию для определения адреса следующей микрокоманды.