Синтез микропрограммных управляющих автоматов
Алгоритм умножения двоичных чисел. Выбор и описание структурной схемы операционного автомата. Реализация содержательной граф-схемы алгоритма. Построение отмеченной граф-схемы и структурной таблицы переходов и выходов. Правила кодирования на D-триггерах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 01.04.2013 |
Размер файла | 273,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
Вятский государственный университет
Факультет автоматики и вычислительной техники
Кафедра электронных вычислительных машин
Пояснительная записка к курсовой работе
Синтез микропрограммных управляющих автоматов
Киров, 2011
1. Постановка задачи
Требуется разработать МПА, управляющий операцией умножения двоичных чисел в форме с фиксированной запятой в дополнительном коде третьим способом с простой коррекцией.
Функциональную схему устройства построить в основном логическом базисе. Операнды разрядностью 4 байта (тридцать два разряда) поступают по входной шине (ШИВх) в дополнительном коде (ДК), результат также в ДК выводится по выходной шине (ШИВых).
2. Алгоритм умножения двоичных чисел III сп. в ДК с простой коррекцией
1. Определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей.
2. Проверить множимое на равенство нулю: если равно нулю, операцию умножения следует прекратить, т.к. результат будет также равным нулю.
3. Проверить множитель на равенство нулю: если равен нулю, операцию умножения следует прекратить, т.к. результат будет также равным нулю.
4. Перед циклом умножения произвести коррекцию.
Если хотя бы один из сомножителей отрицателен, выполнить коррекцию по следующим правилам:
- если один сомножитель отрицателен, к псевдопроизведению прибавляется дополнительный код от модуля положительного сомножителя;
- если оба сомножителя отрицательны, к псевдопроизведению прибавляются дополнительные коды от модулей дополнительных кодов обоих сомножителей, т.е. их прямые коды.
5. Произвести анализ цифры очередного разряда множителя.
6. Произвести суммирование множимого с суммой частичных произведений (ЧП), если цифра множителя «1», иначе перейти к п.7 алгоритма.
7. Произвести сдвиг множителя и суммы ЧП на один разряд влево.
8. Присвоить модулю произведения знак из п.1 данного алгоритма.
3. Численные примеры
Выполним ручной подсчет в соответствии с вышеуказанным алгоритмом.
В качестве множителя возьмём число 55, а в качестве множимого 36.
Представим числа отрицательными.
A = -55 = 1101112, Апк = 1,110111, Адк = 1,001001
B = -36 = 1001002, Впк = 1,100100, Вдк = 1,011100.
Таблица 1.
Множитель |
Множимое |
Сумматор |
Пояснения |
|
1,001001 |
1,011100 |
0,000000000000 0,000001001000 |
||
0,000001001000 |
Коррекция |
|||
0,000000110111 0,000000100100 0,000001001011 |
||||
1,010010 |
0,000101101100 |
Сдвиг |
||
1,100100 |
0,001011011000 |
Сдвиг |
||
0,000000011100 |
Сложение |
|||
0,001011110100 |
||||
1,001000 |
0,01011110100 |
Сдвиг |
||
1,010000 |
0,10111101000 |
Сдвиг |
||
1,100000 |
0,011110100000 |
Сдвиг |
||
0,000000011100 |
Сложение |
|||
0,011110111100 |
Получили результат: 0,011110111100
P = (-55)*(-36) = 1980 = 111101111002
2.Представим числа таким образом: А<0, B>0
A = -55 = 1101112, Апк = 1,110111, Адк = 1,001001
B = 36 = 1001002, Впк = 0,100100, Вдк = 0,100100.
Таблица 2.
Множитель |
Множимое |
Сумматор |
Пояснения |
|
1,001001 |
0,100100 |
0,000000111000 0,000000000000 0,000000111000 |
Коррекция |
|
1,010010 |
0,000001110000 |
Сдвиг |
||
1,100100 |
0,000011100000 |
Сдвиг |
||
0,000000100100 |
Сложение |
|||
0,000100000100 |
||||
1,001000 |
0,001000001000 |
Сдвиг |
||
1,010000 |
0,010000010000 |
Сдвиг |
||
1,100000 |
0,100000100000 |
Сдвиг |
||
0,000000100100 |
Сложение |
|||
0,100001000100 |
Получили результат: 0,100001000100
(A*B)дк=1,100001000100 , (A*B)пк=1,011110111100
P = (-55)*36 = -1980 = -111101111002
3.Представим числа положительными:
A = 55 = 1101112, Апк = 0,110111, Адк = 0,110111
B = 36 = 1001002, Впк = 0,100100, Вдк = 0,100100.
Таблица 3.
Множитель |
Множимое |
Сумматор |
Пояснения |
|
0,110111 |
0,100100 |
0,000000000000 |
||
0,000000100100 |
Сложение |
|||
0,000000100100 |
||||
0,101110 |
0,000001001000 |
Сдвиг |
||
0,000000100100 |
Сложение |
|||
0,000001101100 |
||||
0,011100 |
0,000011011000 |
Сдвиг |
||
0,111000 |
0,000110110000 |
Сдвиг |
||
0,000000100100 |
Сложение |
|||
0,000111010100 |
||||
0,110000 |
0,001110101000 |
Сдвиг |
||
0,000000100100 |
Сложение |
|||
0,001111001100 |
||||
0,100000 |
0,011110011000 |
Сдвиг |
||
0,000000100100 |
Сложение |
|||
0,011110111100 |
Получили результат: 0,011110111100
Коррекция не нужна, получаем результат:
P =55*36 = 1980 = 111101111002
4. Выбор и описание структурной схемы операционного автомата
Операционный автомат (ОА) должен содержать:
- регистры RG1, RG2 для приема операндов с ШИВх,
- регистр RG3 для записи и хранения результата и частных сумм,
- комбинационный сумматор SM,
- счетчик СТ для подсчета тактов умножения,
- схему дизъюнкции,
- схема "сложение по модулю 2" для реализации инверсии;
- схема "сложение по модулю 2" для определения знака произведения;
- усилитель-формирователь для выдачи результата на ШИВых.
Операнды поступают в операционный автомат по 32-разрядной шине ШИВх и записываются в соответствующие регистры. Мантисса множителя записывается в RG1, а мантисса множимого в RG2. Операнды поступают в дополнительном коде. Сначала анализируются знаки операндов. Знак результата определяется с помощью схемы “сложения по модулю 2” и подается на усилитель-формирователь. Зная знаки операндов, произведем коррекцию, если это необходимо. Для этого в зависимости от p3 и p1 на плечо A сумматора поступает информация с выхода триггера RG3 или на плечо В с выхода RG2. На плечо B поступает информация либо с прямых, либо с инверсных выходов триггера RG2. Множимое, в зависимости от очередной цифры множителя, либо суммируется с предыдущей частной суммой, либо суммирование не происходит. Цикл сложения выполняется до тех пор пока в шестом разряде счетчика СТ не окажется "1". Перед выдачей результата на ШИВых содержимое RG3 и подается на усилитель-формирователь.
Таким образом, для выполнения операции умножения из управляющего автомата (УА) в операционный автомат необходимо подать управляющие сигналы, реализующие следующие микрооперации:
y0 - запись в RG1, запись в СТ, запись в Т;
y1 - сдвиг RG1 влево RG1:=L1(RG1).0, сдвиг RG3 влево
RG3:=L1(RG3).0, СТ: = СТ+1;
y2 - запись в RG2;
y3 - инверсия выхода RG2 и SMp=1 - подача “1” на вход переноса сумматора;
y4 - сброс RG3;
y5 - запись в RG3;
y8 - обнуление счётчика;
y11 - управление выдачей информации на ШИВых;
y12 - очистка RG1;
y13 - очистка RG2.
Из операционного автомата в управляющий автомат необходимо передать осведомительные сигналы о состоянии устройств операционного автомата, определяемые списком следующих логических условий.
Х - проверка наличия операндов на ШИВх;
Р1- знак операнда RG1;
Р2- проверка очередной цифры множителя;
Р3 - знак операнда RG2,
Р4=1, выполнения цикла сложения завершено;
P5=0, один из операндов равен “0”;
Р6 - знак произведения;
Z - проверка возможности выдачи по ШИВых.
Таким образом, управляющий МПА должен вырабатывать 12 управляющих сигналов и посылать их в ОА в нужные такты машинного времени в соответствии с алгоритмом выполнения операции сложения, ориентируясь на 8 осведомительных сигналов, поступающих из ОА, структурная схема которой представлена на рис. 1.
5. Реализация содержательной ГСА
Содержательная граф-схема алгоритма представлена на рис. 2.
Выполнение алгоритма начинается с проверки наличия множителя на ШИВх. Он заносится в RG1, RG2, логическим условием P5 проверяется осведомительный сигнал, если он равен “1”, то поступил не нулевой операнд, иначе алгоритм заканчивается и результат умножения равен “0”. Далее с инверсных выходов RG2 множитель подаётся на плечо В сумматора SM, где получается ДК, а затем заносится в RG3. Далее происходит проверка наличия множимого на ШИвх и занесение его в RG2 с последующей проверкой на “0” и подачей на плечо В сумматора SM. Также в счетчик тактов заносится 1, знак произведения определяется путём сложения по модулю 2 знаков множителя и множимого.
Далее, следуя алгоритму, логическим условием P3 проверяется знак множимого, если он равен “1”, то логическим условием Р1 проверяется знак множителя и в зависимости от его знака на плечо А сумматора SM поступают данные, записанные в RG3 или происходит проверка очередной цифры множителя. Если ли знак множимого равен “0”, то RG3 очищается и происходит проверка знака множителя логическим условием Р1. Далее проверяется очередная цифра множителя логическим условием Р2, если он равен “1”, то производим такт сложения суммы ЧП с множимым, иначе переходим к проверке логического условия P4. Если он равен “0”, то следует произвести сдвиги суммы ЧП и множителя, т.е. RG3 и RG1, в счётчик СТ прибавляется 1, в противном случае такт является последним и производится проверка на возможность выдачи результата на ШИВых, завершение алгоритма.
6. Построение отмеченной ГСА
Перед разметкой содержательной ГСА необходимо возле каждой операторной вершины проставить управляющие сигналы УА и обеспечивающие выполнение требуемых действий в соответствии со списком МО операционного автомата. Совокупность МО для каждой операторной вершины образуют микрокоманды (МК), список которых приведен в таблице 4.
Таблица 4.
MK |
Совокупность МО |
|
Y1 |
y0,y2,y4 |
|
Y2 |
y3,y5 |
|
Y3 |
y2 |
|
Y4 |
y4 |
|
Y5 |
y5 |
|
Y6 |
y1 |
|
Y7 |
y11 |
Каждой условной вершине содержательной ГСА поставим в соответствие один из входных сигналов управляющего автомата X1, … ,X7, список которых дан в таблице 5.
Таблица 5.
Входной сигнал УА |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
|
Логическое условие ОА |
X |
P1 |
P2 |
P3 |
P4 |
P5 |
Z |
Далее в полном соответствии с содержательной ГСА строим отмеченную ГСА( рис. 3), условным вершинам которой приписывается один из входных сигналов УА ( Х1,...,Х7 ), а операторным вершинам - одна из МК ( в скобках указана совокупность МО для каждой МК). Выделение состояний управляющего МПА возможно в соответствии с моделью Мили или моделью Мура. умножение двоичный число автомат
На рис. 3 приведена разметка ГСА для модели Мили символами a0, а1, ... , а8 и для модели Мура - символами b0, b1, ... , b10. Таким образам, если строить управляющий МПА в соответствии с моделью Мили, то он будет иметь 9 состояний, а в соответствии с моделью Мура - 11 состояний.
Замечание. В двух вершинах ожидания ( 3 и 17 ) при разметке по Муру введены фиктивные состояния автомата b3 и b9.
Явно большее число состояний для модели Мура по сравнению с моделью Мили не дает достаточных оснований для выбора модели Мили как более предпочтительной. Сравнение вариантов можно будет выполним лишь на этапе построения функциональных схем УА, сравнив схемы по сложности и быстродействию. Поэтому далее будем вести проектирование УА параллельно для модели Мили и для модели Мура.
7. Синтез МПА в соответствии с моделью Мили
Построение графа автомата и структурной таблицы переходов и выходов
Граф автомата Мили имеет восемь вершин, соответствующих состояниям автомата a0,...,a8. Дуги его отмечены входными сигналами, действующими на каждом переходе (числитель), и набором выходных сигналов, вырабатываемых УА на данном переходе (знаменатель).
Кодирование на D-триггерах
При использовании D-триггеров в качестве ЭП для получения смены состояний на каждом переходе (am -> as) сигналы возбуждения должны быть поданы на те триггеры, которые в коде состояния перехода as содержат "1". Отсюда основное требование к выбору кодов состояний: чем больше переходов в какое-либо состояние, тем меньше "1" должен содержать код этого состояния. Для кодирования 9 состояний (a0 ,…, a8) необходимо 4 элемента памяти.
Таблица 6.
as |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
а8 |
|
{am} |
a8,a0 |
a0 |
a2,a1 |
a2 |
a3 |
a4 |
a7 |
a6 |
a1,a3,a7,a8 |
Наибольшее количество переходов в состояние a8 - закодируем его кодом К(a8) = 0000. Для остальных состояний первой строки табл.6 назначим коды с одной "1" и более: K(a0) = 0001, K(a1) = 0010, К(a2) = 0011, К(a3) = 0100, K(a4) = 0101, K(a5) = 0110, K(a6) = 1000, K(a7) = 1001. Таким образом, таблица кодирования для D-триггеров такова:
Таблица 7.
as |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
a8 |
|
K{as} |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
1000 |
1001 |
0000 |
Далее коды состояний заносим в соответствующие столбцы прямой таблицы переходов (табл. 8) и формируем логические выражения для функций возбуждения.
Таблица 8. Прямая структурная таблица переходов и выходов.
Исходное состояние am |
Код am |
Состояние перехода as |
Код as |
Входной сигнал X(am, as) |
Выходные сигналы Y(am,as) |
Функция возбуждения D-триггеров |
|
a0 |
0001 |
a0 a1 |
0001 0010 |
~X1 X1 |
- y0y2y4 |
D0 D1 |
|
a1 |
0010 |
a2 a8 |
0011 0000 |
X6 ~X6 |
y3y5 - |
D0D1 - |
|
a2 |
0011 |
a2 a3 |
0011 0100 |
~X1 X1 |
- y2 |
D0D1 D2 |
|
a3 |
0100 |
a4 a4 a8 |
0101 0101 0000 |
X6~X4 X6X4 ~X6 |
y4 - y4 |
D0D2 D0D2 - |
|
a4 |
0101 |
a5 a5 |
0110 0110 |
~X2 X2 |
- y3y5 |
D1D2 D1D2 |
|
a5 |
0110 |
a6 a6 |
1000 1000 |
X3 ~X3 |
y5 - |
D3 D3 |
|
a6 |
1000 |
a7 |
1001 |
1 |
y1 |
D0D3 |
|
a7 |
1001 |
a6 a6 a8 |
1000 1000 0000 |
~X5~X3 ~X5X3 X5 |
- y5 - |
D3 D3 - |
|
а8 |
0000 |
a0 a8 |
0001 0000 |
X7 ~X7 |
y11 - |
D0 - |
Получение логических выражений для функции возбуждения D-триггеров
Логические выражения для каждой функции возбуждения D-триггера получают по таблице как конъюнкции соответствующих исходных состояний Am и входных сигналов, которые объединены знаками дизъюнкции для всех строк, содержащих данную функцию возбуждения.
D0 = a0~x1 V a1x6 V a2~x1 V a3x6~x4 V a3x6x4 V a6 V a8x7
D1 = a0x1 V a1x6 V a2~x1 V a4~x2 V a4x2
D2 = a2x1 V a3x6~x4 V a3x6x4 V a4~x2 V a4x2
D3 = a5x3 V a5~x3 V a6 V a7~x5~x3 V a7~x5x3
Аналогично составляются логические выражения для функций выходов.
y0 = a0x1
y1 = a6
y2 = a0x1 V a2x1
y3 = a1x6 V a4x2
y4 = a0x1 V a3x6~x4 V a3~x6
y5 = a1x6 V a4x2 V a5x3 V a7~x5x3
y11 = a8x7
После выделения общих частей в логических выражениях и некоторого их упрощения получаем логические уравнения для построения функциональной схемы управляющего автомата.
c = a0x1 (2) l = a5x3 (2)
d = a0 V a2 (2) m = a7~x5x3 (3)
e = a1x6 (2) n = a3~x6 (2)
f = a8x7 (2)
g = a3x6 (2)
h = a7~x5 (2)
i = a2x1 (2)
j = a4x2 (2)
k = a2~x1 (2)
D0 = a0~x1 V a1x6 V a2~x1 V a3x6~x4 V a3x6x4 V a6 V a8x7 = ~x1d V e V g V a6 V f (7)
D1 = a0x1 V a1x6 V a2~x1 V a4~x2 V a4x2 = c V e V k V a4 (4)
D2 = a2x1 V a3x6~x4 V a3x6x4 V a4~x2 V a4x2 = i V g V a4 (3)
D3 = a5x3 V a5~x3 V a6 V a7~x5~x3 V a7~x5x3 = a5 V a6 V h (3)
y0 = c (0)
y1 = a6 (0)
y2 = a0x1 V a2x1 = x1d (2)
y3 = e V j (2)
y4 = c V g~x4 V n (5)
y5 = e V j V l V m (4)
y11 = f (0)
Инверсия: (~x1~x5~x6) (3)
Полная цена по Квайну: 58(КС)+8(ЭП)+4(DC)+0(НУ)=70
Цена комбинационной схемы по Квайну для автомата Мили, с использованием в качестве элементов памяти D-триггеров, равна С = 70, причем в схеме предполагается использовать 4-входовой дешифратор.
Кодирование на RS- триггерах
Однако в качестве элементов памяти возможно использование не только D-триггеров, также используются RS-триггеры. Но при использовании RS-триггеров придется перекодировать состояния автомата. Кодирование осуществим способом минимизирующим число переключений элементов памяти.
Для этого сначала выпишем матрицу M - матрицу всех возможных переходов автомата. Состояниям автомата a0 и a1 присвоим коды: К(a0)=0000, К(a1)=0001. Далее из матрицы М составим подматрицу M2, в которую запишем переходы из 2 состояния. В множество В2 выпишем коды уже закодированных состояний, а в множество C1 коды с кодовым расстоянием "1" от кодов В2. Закодировав состояние a2, выпишем матрицу М3 для кодирования следующего состояния автомата. Кодирование состояния a3 аналогично a2, причем для определения наиболее выгодного кода будем находить суммы кодовых расстояний между множествами Вi и Di. Код с наименьшей суммой и является наиболее оптимальным, когда все суммы получились одинаковыми, выбираем любой код и кодируем это состояние.
1). ?=a2
B={1} С1={0011,0101,1001} W0011=1
D2={0011,0101,1001} W0101=1
W1001=1
Выбираем любой:
K(a2)=0011
2). ?=a3
B={2}
C2={0010,0111,1011} W0010=1
D3={0010,0111,1011} W0111=1
W1011=1
Выбираем любой:
K(a3)=0010
3). ?=a4
B={3}
C3={0110,1010} W0110=1
D4={0110,1010} W1010=1
Выбираем любой:
K(a4)=0110
4). ?=a5
B={4}
C4={1110,0111,0100}
W1110=1
D5={1110,0100,0111}
W0100=1
W0111=1
Выбираем любой:
K(a5)=0100
5). ?=a6
B={5}
C5={0101,1100}
W0101=1
D6={0101,1100}
W1100=1
Выбираем любой: K(a6)=1100
6). ?=a7B={6}
C6={1101,1110,1000}
W1101=2
D7={1101,1110,1000}
W1110=2
W1000=2
Выбираем: K(a7)=1000
7). ?=a8
B={0,1,3,7} C0={Ш}
W1001=7
C1={1001} W1010=7
C3={1010} W1100=9
C7={1001,1100,1010}
D8={1001,1010,1100}
Выбираем: K(a7)=1001
Кодирования для RS-триггеров изображены в таблице 8.
Таблица 8.
as |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
a8 |
|
K{as} |
0000 |
0001 |
0011 |
0010 |
0110 |
0100 |
1100 |
1000 |
1001 |
Получение логических выражений для функций возбуждения RS-триггеров
Далее составляем прямую структурную таблицу переходов и выходов автомата Мили и по известному правилу формируем логические выражения для функций возбуждения.
Таблица 9. Прямая структурная таблица переходов и выходов.
Исходное состояние |
Код am |
Состояние перехода as |
Код as |
Входной сигнал X(am,as) |
Выходные сигналы Y(am,as) |
Функции возбуждения RS-триггеров |
|
a0 |
0000 |
a0 a1 |
0000 0001 |
~X1 X1 |
- y0y2y4 |
- S0 |
|
a1 |
0001 |
a2 a8 |
0011 1001 |
X6 ~X6 |
y3y5 - |
S1 S3 |
|
a2 |
0011 |
a2 a3 |
0011 0010 |
~X1 X1 |
- y2 |
- R0 |
|
a3 |
0010 |
a4 a4 a8 |
0110 0110 1001 |
X6~X4 X6X4 ~X6 |
y4 - y4 |
S2 S2 S0R1S3 |
|
a4 |
0110 |
a5 a5 |
0100 0100 |
~X2 X2 |
- y3y5 |
R1 R1 |
|
a5 |
0100 |
a6 a6 |
1100 1100 |
X3 ~X3 |
y5 - |
S3 S3 |
|
a6 |
1100 |
a7 |
1000 |
1 |
y1 |
R2 |
|
a7 |
1000 |
a6 a6 a8 |
1100 1100 1001 |
~X5~X3 ~X5X3 X5 |
- y5 - |
S2 S2 S0 |
|
a8 |
1001 |
a0 a8 |
0000 1001 |
X7 ~X7 |
y11 - |
R0R3 - |
Так как мы изменили используемые элементы памяти, то у нас изменятся логические выражения для функций их возбуждения, а логические выражения для функций выходов не изменятся.
S0 = a0x1 V a3~x6 V a7x5
S1 = a1x6
S2 = a3x6~x4 V a3x6x4 V a7~x5~x3 V a7~x5x3
S3 = a1~x6 V a3~x6 V a5x3 V a5~x3
R0 = a2x1 V a8x7
R1 = a3~x6 V a4~x2 V a4x2
R2 = a6
R3 = a8x7
После упрощения и выделения общих частей, получим:
l = a2x1 (2) r = a3x6 (2) x = a7~x5 (2)
m = a0x1 (2) s = a7x5 (2)
n = a3~x6 (2) t = a1~x6 (2)
o = a1x6 (2) u = a3x6~x4 (3)
p = a8x7 (2) v = a5x3 (3)
q = a4x2 (2) w = a7~x5x3 (3)
S0 = m V n V s (3)
S1 = o (0)
S2 = r V x (2)
S3 = t V n V a5 (3)
R0 = l V p (2)
R1 = n V a4 (2)
R2 = a6 (0)
R3 = p (0)
y0 = m (0)
y1 = a6 (0)
y2 = m V l (2)
y3 = o V q (2)
y4 = m V u V n (3)
y5 = o V q V v V w (4)
y11 = p (0)
Инверсии: (~x6~x4~x5) (3)
Полная цена по Квайну: С = 55(КC)+12(ЭП)+4(ДЦ)+4(НУ) = 75
С использованием в качестве элементов памяти RS-триггеров, цена комбинационной схемы по Квайну для автомата Мили равна C= 75, причем в схеме предполагается использовать 4-входовой дешифратор.
Кодирование на счетчике
Для кодирования состояний автомата на счётчике необходимо, чтобы разность кодов между соседними состояниями составляла единицу. Данная кодировка представлена в таблице 10.
Таблица 10.
As |
a0 |
a1 |
a2 |
a3 |
a4 |
a5 |
a6 |
a7 |
а8 |
|
K{as} |
0000 |
0001 |
0010 |
0011 |
0100 |
0101 |
0110 |
0111 |
1000 |
Составляем прямую структурную таблицу переходов и выходов автомата Мили и по известному правилу формируем логические выражения для функций возбуждения.
Таблица 11. Прямая структурная таблица переходов и выходов автомата Мили.
Исходное состояние |
Код am |
Состояние перехода as |
Код as |
Входной сигнал X(am,as) |
Выходные сигналы Y(am,as) |
Функции возбуждения счётчиков |
|
a0 |
0000 |
a0 a1 |
0000 0001 |
~X1 X1 |
- y0y2y4 |
- +1 |
|
a1 |
0001 |
a2 a8 |
0010 1000 |
X6 ~X6 |
y3y5 - |
+1 D3EWR |
|
a2 |
0010 |
a2 a3 |
0010 0010 |
~X1 X1 |
- y2 |
- - |
|
a3 |
0011 |
a4 a4 a8 |
0100 0100 1000 |
X6~X4 X6X4 ~X6 |
y4 - y4 |
+1 +1 D3EWR |
|
a4 |
0100 |
a5 a5 |
0101 0101 |
~X2 X2 |
- y3y5 |
+1 +1 |
|
a5 |
0101 |
a6 a6 |
0110 0110 |
X3 ~X3 |
y5 - |
+1 +1 |
|
a6 |
0110 |
a7 |
0111 |
1 |
y1 |
+1 |
|
a7 |
0111 |
a6 a6 a8 |
0110 0110 1000 |
~X5~X3 ~X5X3 X5 |
- y5 - |
-1 -1 +1 |
|
a8 |
1000 |
a0 a8 |
0000 1000 |
X7 ~X7 |
y11 - |
R - |
Так как мы изменили используемые элементы памяти, то у нас изменятся логические выражения для функций их возбуждения, а логические выражения для функций выходов не изменятся.
+1 = a0x1 V a1x6 V a3x6~x4 V a3x6x4 V a4~x2 V a4x2 V a5x3 V a5~x3 V a6 V a7x5 - 1 = a7~x5~x3 V a7~x5x3
R = a8y11
D3EWR = a1~x6 V a3~x6
После упрощения и выделения общих частей, получим:
1 = a4x2 (2) 7 = a8x7 (2) 13 = a5x3 (2)
2 = a0x1 (2) 8 = 6x3 (2) 14 = a7~x5 (2)
3 = a3x6 (2) 9 = a1~x6 (2) 15 = 9 V 4 (2)
4 = a3~x6 (2) 10 = a7x5 (2)
5 = a1x6 (2) 11 = a2x1 (2)
6 = a1 V a3 (2) 12 = 3~x4 (2)
+1 = 2 V 5 V 3 V a4 V a5 V a6 V 10 (7)
- 1 = 14 (0)
R = 7 (0)
D3EWR = 15 (0)
y0 = 2 (0)
y1 = a6 (0)
y2 = 2 V 11 (2)
y3 = 5 V 1 (2)
y4 = 2 V 12 V 4 (3)
y5 = 5 V 1 V 13 V 8 (4)
y11 = 7 (0)
Инверсии: (~x4~x6~x5) (3)
Полная цена по Квайну: С = 51(КС)+9(ЭП)+4(ДЦ)+0(НУ)=0.
Сравнивая относительно аппаратурных затрат варианты построения автомата Мили на RS, D-триггерах можно убедиться что цена логических выражений для функций возбуждения оказывается приблизительно равной: для D цена - 70, для RS цена - 75, а для счетчика - 64.
8. Синтез МПА в соответствии с моделью Мура
Построение графа автомата
На основе отмеченной ГСА построен граф автомата Мура (рис.4). Он имеет 12 вершин, соответствующих состояниям автомата b0,b1,...,b11, каждое из которых определяет наборы выходных сигналов у1,..,у7 управляющего автомата, а дуги графа отмечены входными сигналами, действующими на данном переходе.
Кодирование на D-триггерах
В таблице 12 представлена прямая структурная таблица переходов и выходов автомата Мура. Так как каждому состоянию автомата Мура соответствует свой набор выходных сигналов, то столбец выходных сигналов в таблице помещен следом за столбцом исходных состояний автомата. Проанализируем синтез автомата Мура на D-триггерах.
При кодировании состояний автомата, в качестве элементов памяти которого выбраны D-триггеры, следует стремиться использовать коды с меньшим числом "1" в кодовом слове. Для кодирования 12 состояний (b0, b1, ... , b11) необходимо 4 элемента памяти и из множества 4-разрядных двоичных слов надо выбрать код каждого состояния, ориентируясь на граф и таблицу переходов: чем чаще в какое-либо состояние происходят переходы из других состояний, то есть чем чаще оно встречается в столбце bs таблицы, тем меньше в коде этого состояния следует иметь "1". Для этого построим таблицу, в первой строке которой перечислены состояния, в которые есть переходы, а во второй - состояния, из которых осуществляются эти переходы(табл. 13).
Таблица 12. Прямая структурная таблица переходов и выходов автомата Мура.
Исходное состояние bm |
Выходные сигналы |
Код bm |
Состояние перехода bs |
Код bs |
Входной сигнал |
Функции возбуждения D-триггеров |
|
b0 |
- |
1010 |
b0 b1 |
1010 1100 |
~X1 X1 |
D1D3 D2D3 |
|
b1 |
y0y2y4 |
1100 |
b2 b10 b11 |
0101 0001 0010 |
X6 ~X6~X7 ~X6X7 |
D0D2 D0 D1 |
|
b2 |
y3y5 |
0101 |
b3 b4 |
1000 0011 |
~X1 X1 |
D3 D0D1 |
|
b3 |
- |
1000 |
b3 b4 |
1000 0011 |
~X1 X1 |
D3 D0D1 |
|
b4 |
y2 |
0011 |
b5 b6 b7 b8 b9 |
0110 0111 1001 0100 0000 |
~X6 X6~X4 X6X4X2 X6X4~X2X3 X6X4~X2~X3 |
D1D2 D0D1D2 D0D3 D2 - |
|
b5 |
y4 |
0110 |
b10 b11 |
0001 0010 |
~X7 X7 |
D0 D1 |
|
b6 |
y4 |
0111 |
b7 b8 b9 |
1001 0100 0000 |
X2 ~X2X3 ~X2~X3 |
D0D3 D2 - |
|
b7 |
y3,y5 |
1001 |
b8 b9 |
0100 0000 |
X3 ~X3 |
D2 - |
|
b8 |
y5 |
0100 |
b9 |
0000 |
1 |
- |
|
b9 |
y1 |
0000 |
b8 b9 b10 b11 |
0100 0000 0001 0010 |
~X5X3 ~X5~X3 X5~X7 X5X7 |
D2 - D0 D1 |
|
b10 |
- |
0001 |
b10 b11 |
0001 0010 |
~X7 X7 |
D0 D1 |
|
b11 |
y11 |
0010 |
b0 |
1010 |
1 |
D1D3 |
Таблица 13.
bs |
b0 |
b1 |
b2 |
b3 |
b4 |
b5 |
b6 |
b7 |
|
{bm} |
b0b11 |
b0 |
b1 |
b2b3 |
b2b3 |
b4 |
b4 |
b4b6 |
|
bs |
b8 |
b9 |
b10 |
b11 |
|||||
{bm} |
b4b6b7b9 |
b4b6b7b8b9 |
b1b5b9b10 |
b1b5b9b10 |
Коды состояний автомата определим по выше описанному методу кодирования состояний при использовании D-триггеров.
Таблица 14.
b |
b0 |
b1 |
b2 |
b3 |
b4 |
b5 |
b6 |
|
K(b) |
1010 |
1100 |
0101 |
1000 |
0011 |
0110 |
0111 |
|
b |
b7 |
b8 |
b9 |
b10 |
b11 |
|||
K(b) |
1001 |
0100 |
0000 |
0001 |
0010 |
Получение логических выражений для функций возбуждения D-триггеров и функций выходов
Далее коды состояний заносим в соответствующие столбцы прямой таблицы переходов (таблица 12) и по известному правилу формируем логические выражения для функций возбуждения.
D0 = b1x6 V b1~x6~x7 V b2x1 V b3x1 V b4x6~x4 V b4x6x4x2 V b5~x7 V b6x2 V b9x5~x7 V b10~x7
D1 = b0~x1 V b1~x6x7 V b2x1 V b3x1 V b4~x6 V b4x6~x4 V b5x7 V b9x5x7 V b10x7 V b11
D2 = b0x1 V b1x6 V b4~x6 V b4x6~x4 V b4x6x4~x2x3 V b6~x2x3 V b7x3 V b9~x5x3
D3 = b0~x1 V b0x1 V b2~x1 V b3~x1 V b4x6x4x2 V b6x2 V b11
Так как для автомата Мура функции выходов не зависят от входных сигналов, то в соответствии со вторым столбцом таблицы 12 записываем логические выражения для управляющих сигналов.
y0 = b1
y1 = b9
y2 = b1 V b4
y3 = b7
y4 = b1 V b5 V b6
y5 = b7 V b8
y11 = b11
Выделив общие части получаем:
c = b1x6 (2)
d = b1~x6 (2)
e = b2x1 (2)
f = b4x6~x4 (3)
g = b3x1 (2)
h = b4~x6 (2)
i = e V g V f (3)
j = k V l (2)
k = b4x6x4x2 (4)
l = b6x2 (2)
m = b9x5 (2)
n = b5 V m V b10 V d (4)
D0 = b1x6 V b1~x6~x7 V b2x1 V b3x1 V b4x6~x4 V b4x6x4x2 V b5~x7 V b6x2 V b9x5~x7 V b10~x7 =
= c V i V j V ~x7(b5 V m V b10 V d) = c V i V j V ~x7n (6)
D1 = b0~x1 V b1~x6x7 V b2x1 V b3x1 V b4~x6 V b4x6~x4 V b5x7 V b9x5x7 V b10x7 V b11 = b0~x1 V I V h V x7(b5 V m V b10 V d) V b11 = b0~x1 V I V h V x7n (8)
D2 = b0x1 V b1x6 V b4~x6 V b4x6~x4 V b4x6x4~x2x3 V b6~x2x3 V b7x3 V b9~x5x3 = b0x1 V c V h V f V ~x2x3 (b4x6x4 V b6) V x3(b7 V b9~x5) (22)
D3 = b0 V b2~x1 V b3~x1 V b4x6x4x2 V b6x2 V b11 = b0 V ~x1(b2 V b3) V j (6)
y0 = b1 (0)
y1 = b8 (0)
y2 = b1 V b4 (2)
y3 = b2 V b6 (2)
y4 = b1 V b5 (2)
y5 = b2 V b6 V b7 (3)
y6 = b8 (0)
Инверсии: (~x1~x2~x4~x5~x6~x7) (6)
Полная цена по Квайну: С = 87(КС)+8(ЭП)+0(НУ)+4(ДЦ) = 99
Цена комбинационной схемы по Квайну для автомата Мура, построенного на D-триггерах, равна С = 99, причем в схеме предполагается использовать 4-входовой дешифратор.
Кодирование на RS-триггерах
Однако в качестве элементов памяти возможно использование не только D-триггеров, также используются RS-триггеры. Для этого сначала выпишем матрицу М - матрицу всех возможных переходов автомата. Состояниям автомата b0 и b1 присвоим коды: К(b0)=0000, К(b1)=0001. Далее из матрицы М составим подматрицу М2, в которую запишем переходы из 2 состояния. В множество В2 выпишем коды уже закодированных состояний, а в множество C0 и C1 коды с кодовым расстоянием "1" от кодов В2. Для определения наиболее выгодного кода будем находить суммы кодовых расстояний между множествами Вi и Di. Код с наименьшей суммой и является наиболее оптимальным, когда все суммы получились одинаковыми, выбираем любой код и кодируем это состояние.
Таблица 15.
b |
b0 |
b1 |
b2 |
b3 |
b4 |
b5 |
b6 |
|
K(b) |
0000 |
0001 |
0011 |
0010 |
0110 |
0111 |
0100 |
|
b |
b7 |
b8 |
b9 |
b10 |
b11 |
|||
K(b) |
0101 |
1100 |
1110 |
1111 |
1101 |
Получение логических выражений для функций возбуждения RS-триггеров
Далее составляем прямую структурную таблицу переходов и выходов автомата Мура (таблица 16) и по известному правилу формируем логические выражения для функций возбуждения.
Таблица 16. Прямая структурная таблица переходов и выходов автомата Мура.
Исходное состояние bm |
Выходные сигналы |
Код bm |
Состояние перехода bs |
Код bs |
Входной сигнал |
Функции возбуждения RS-триггеров |
|
b0 |
- |
0000 |
b0 b1 |
0000 0001 |
~X1 X1 |
- S0 |
|
b1 |
y0y2y4 |
0001 |
b2 b10 b11 |
0011 1111 1101 |
X6 ~X6~X7 ~X6X7 |
S1 S1S2S3 S2S3 |
|
b2 |
y3y5 |
0011 |
b3 b4 |
0010 0110 |
~X1 X1 |
R0 R0S2 |
|
b3 |
- |
0010 |
b3 b4 |
0010 0110 |
~X1 X1 |
- S2 |
|
b4 |
y2 |
0110 |
b5 b6 b7 b8 b9 |
0111 0100 0101 1100 1110 |
~X6 X6~X4 X6X4X2 X6X4~X2X3 X6X4~X2~X3 |
S0 R1 S0R1 R1S3 S3 |
|
b5 |
y4 |
0111 |
b10 b11 |
1111 1101 |
~X7 X7 |
S3 R1S3 |
|
b6 |
y4 |
0100 |
b7 b8 b9 |
0101 1100 1110 |
X2 ~X2X3 ~X2~X3 |
S0 S3 S1S3 |
|
b7 |
y3,y5 |
0101 |
b8 b9 |
1100 1110 |
X3 ~X3 |
R0S3 R0S1S3 |
|
b8 |
y5 |
1100 |
b9 |
1110 |
1 |
- |
|
b9 |
y1 |
1110 |
b8 b9 b10 b11 |
1100 1110 1111 1101 |
~X5X3 ~X5~X3 X5~X7 X5X7 |
R1 - S0 S0R1 |
|
b10 |
- |
1111 |
b10 b11 |
1111 1101 |
~X7 X7 |
- R1 |
|
b11 |
y11 |
1101 |
b0 |
0000 |
1 |
R0R2R3 |
Так как мы изменили используемые элементы памяти, то у нас изменятся логические выражения для функций их возбуждения, а логические выражения для функций выходов не изменятся.
R0 = b2~x1 V b2x1 V b7x3 V b7~x3 V b11
R1 = b4x6~x4 V b4x6x4x2 V b4x6x4~x2x3 V b5x7 V b9~x5x3 V b9x5x7 V b10x7
R2 = b11
R3 = b11
S0 = b0x1 V b4~x6 V b4x6x4x2 V b6x2 V b9x5~x7 V b9x5x7
S1 = b1x6 V b1~x6~x7 V b6~x2~x3 V b7~x3
S2 = b1~x6~x7 V b1~x6x7 V b2x1 V b3x1
S3 = b1~x6~x7 V b1~x6x7 V b4x6x4~x2x3 V b4x6x4~x2~x3 V b5~x7 V b5x7 V b6~x2x3 V b6~x2~x3 V b7x3 V b7~x3
y0 = b1
y1 = b8
y2 = b1 V b4
y3 = b2 V b6
y4 = b1 V b5
y5 = b2 V b6 V b7
y6 = b8
Упростив и выделив общие части получаем:
o = b4x6x4x2 (4)
p = b4x6x4~x2 (4)
q = b1~x6 (2)
R0 = b2 V b7 V b11 (3)
R1 = b4x6~x4 V o V px3 V b5x7 V b9~x5x3 V b9x5x7 V b10x7 (21)
R2 = b11 (0)
R3 = b11 (0)
S0 = b0x1 V b4~x6 V o V b6x2 V b9x5 (13)
S1 = b1x6 V b1~x6~x7 V b6~x2~x3 V b7~x3 (14)
S2 = q V b2x1 V b3x1 (7)
S3 = q V p V b5 V b6~x2 V b7 (7)
y0 = b1 (0)
y1 = b8 (0)
y2 = b1 V b4 (2)
y3 = b2 V b6 (2)
y4 = b1 V b5 (2)
y5 = b2 V b6 V b7 (3)
y6 = b8 (0)
Инверсии: (~x2~x3~x4~x5~x6) (5)
Полная цена по Квайну: С = 89(КС)+12(ЭП)+4(НУ)+4(ДЦ) = 109
С использованием в качестве элементов памяти RS-триггеров, цена комбинационной схемы по Квайну для автомата Мура равна С = 109 причем в схеме предполагается использовать 4-входовой дешифратор.
9. Построение функциональной схемы микропрограммного управляющего автомата
Сравнивая построения автомата на основе модели Мура и Мили, видно, что построение автомата по модели Мили требует меньше аппаратурных затрат, чем построение автомата по модели Мура.
Наиболее оптимальной по аппаратурным затратам и стоимости является модель Мили на счётчике, поэтому функциональная схема МПА будет строиться именно для этой модели.
На рисунке 5 приведена функциональная схема проектируемого МПА, управляющего операцией умножения двоичных чисел с ФЗ в ДК с простой коррекцией. Функциональная схема построена в основном логическом базисе И, ИЛИ, НЕ в полном соответствии с приведенной для модели Мили системой логических уравнений для функций возбуждения элементов памяти.
Рис. 5. Функциональная схема управляющего микропрограммного автомата
Список использованных сокращений:
ДК - дополнительный код
ФЗ - фиксированная запятая
УА - управляющий автомат
ОА - операционный автомат
МО - микрооперация
ЛУ - логическое условие
ГСА - граф-схема алгоритма
МК - микрокоманда
ЭП - элемент памяти
КС - комбинационная схема
~ - знак инверсии (инвертируется то, перед чем стоит этот знак)
Библиографический список
Курс лекций по дисциплине “Дискретная математика”.
В.Ю. Мельцов. Синтез микропрограммных управляющих автоматов. Учебное пособие. Киров, 2000.
Курс лекций по дисциплине “Теория автоматов”.
Размещено на Allbest.ru
Подобные документы
Содержание и особенности этапов синтеза дискретного автомата. Граф переходов-выходов автомата Мура, кодирование входных и выходных сигналов. Построение функциональной схемы автомата Мура на RS–триггерах и элементах И-НЕ в программе Electronic WorkBench.
курсовая работа [964,2 K], добавлен 20.07.2015Описание структурной схемы операционного устройства. Построение обратной структурной таблицы автомата. Проектирование функций выходов и управление элементами памяти. Изображение пользовательского интерфейса и инструкции по инсталляции и запуску программы.
курсовая работа [642,6 K], добавлен 19.05.2014Построим содержательные графы выполнения трёх команд языка Ассемблера. Команда умножения двоичных чисел без знака mul. Команда преобразования типов cwde. Логическая команда xor. Синтез канонического автомата. Синтез М-автомата. Управляющие сигналы.
реферат [35,7 K], добавлен 18.11.2004Теоретическое изучение системы проведения арифметических операций над двоичными числами. Создание описания операций умножения и блок-схемы алгоритма её выполнения. Определение набора управляющих сигналов и синтез схемы арифметико-логического устройства.
курсовая работа [169,3 K], добавлен 25.12.2012Принцип микропрограммного управления. Управляющие автоматы с жесткой и программируемой логикой. Граф-схемы алгоритмов. Синтез управляющего автомата по граф-схеме алгоритма. Построение управляющего автомата с программируемой логикой на основе ПЗУ.
курсовая работа [263,8 K], добавлен 25.01.2011Разработка функциональной схемы управляющего микропрограммного автомата. Построение графов автомата для модели Мили и Мура. Кодирование состояний для модели Мура на D-триггерах. Алгоритм умножения чисел в дополнительном коде с простой коррекцией.
курсовая работа [764,0 K], добавлен 27.08.2012Функциональная организация процессора. Сложение с нормализацией, синтез операций, выборка команды. Описание структурной схемы процессора. Синтез управляющего автомата, разметка граф схемы. Разбиение микроопераций по полям и кодирование логических условий.
курсовая работа [91,8 K], добавлен 24.09.2010Общая структура и принцип функционирования синхронного управляющего автомата. Анализ граф схемы алгоритма управляющего автомата и детализация блока памяти. Структурный синтез логического преобразователя и разработка электрической функциональной схемы.
курсовая работа [222,6 K], добавлен 19.02.2013Разработка устройства обработки и передачи информации для суммирования двоичных чисел в дополнительном коде. Разработка алгоритма выполнения операций и структурной схемы. Составление временной диаграммы управляющих сигналов, расчет быстродействия.
курсовая работа [32,0 K], добавлен 16.08.2012Построение граф-схем и матричной схемы алгоритмов. Формулы фазовых переходов. Выполнение операции "Пересечение" над заданными отношениями базы данных. Принципы взаимосвязи страниц виртуальной памяти с сегментами оперативно запоминающих устройств.
контрольная работа [239,4 K], добавлен 10.10.2015