Синтез микропрограммных управляющих автоматов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    43,4 Кб
  • Опубликовано:
    2013-04-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Синтез микропрограммных управляющих автоматов

Министерство образования и науки РФ

Вятский государственный университет

Факультет автоматики и вычислительной техники

Кафедра электронных вычислительных машин









Пояснительная записка к курсовой работе

Синтез микропрограммных управляющих автоматов












Киров, 2011

1. Постановка задачи

Требуется разработать МПА, управляющий операцией умножения двоичных чисел в форме с фиксированной запятой в дополнительном коде третьим способом с простой коррекцией.

Функциональную схему устройства построить в основном логическом базисе. Операнды разрядностью 4 байта (тридцать два разряда) поступают по входной шине (ШИВх) в дополнительном коде (ДК), результат также в ДК выводится по выходной шине (ШИВых).

. Алгоритм умножения двоичных чисел III сп. в ДК с простой коррекцией

. Определить знак произведения путем сложения по модулю два знаковых разрядов сомножителей.

. Проверить множимое на равенство нулю: если равно нулю, операцию умножения следует прекратить, т.к. результат будет также равным нулю.

. Проверить множитель на равенство нулю: если равен нулю, операцию умножения следует прекратить, т.к. результат будет также равным нулю.

. Перед циклом умножения произвести коррекцию.

Если хотя бы один из сомножителей отрицателен, выполнить коррекцию по следующим правилам:

если один сомножитель отрицателен, к псевдопроизведению прибавляется дополнительный код от модуля положительного сомножителя;

если оба сомножителя отрицательны, к псевдопроизведению прибавляются дополнительные коды от модулей дополнительных кодов обоих сомножителей, т.е. их прямые коды.

. Произвести анализ цифры очередного разряда множителя.

. Произвести суммирование множимого с суммой частичных произведений (ЧП), если цифра множителя «1», иначе перейти к п.7 алгоритма.

. Произвести сдвиг множителя и суммы ЧП на один разряд влево.

. Присвоить модулю произведения знак из п.1 данного алгоритма.

3. Численные примеры

Выполним ручной подсчет в соответствии с вышеуказанным алгоритмом.

В качестве множителя возьмём число 55, а в качестве множимого 36.

1. Представим числа отрицательными.

= -55 = 1101112, Апк = 1,110111, Адк = 1,001001= -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

= (-55)*(-36) = 1980 = 111101111002

.Представим числа таким образом: А<0, B>0

= -55 = 1101112, Апк = 1,110111, Адк = 1,001001= 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

.Представим числа положительными:

= 55 = 1101112, Апк = 0,110111, Адк = 0,110111= 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

Коррекция не нужна, получаем результат:

=55*36 = 1980 = 111101111002

. Выбор и описание структурной схемы операционного автомата

Операционный автомат (ОА) должен содержать:

регистры RG1, RG2 для приема операндов с ШИВх,

регистр RG3 для записи и хранения результата и частных сумм,

комбинационный сумматор SM,

счетчик СТ для подсчета тактов умножения,

схему дизъюнкции,

схема "сложение по модулю 2" для реализации инверсии;

схема "сложение по модулю 2" для определения знака произведения;

усилитель-формирователь для выдачи результата на ШИВых.

Операнды поступают в операционный автомат по 32-разрядной шине ШИВх и записываются в соответствующие регистры. Мантисса множителя записывается в RG1, а мантисса множимого в RG2. Операнды поступают в дополнительном коде. Сначала анализируются знаки операндов. Знак результата определяется с помощью схемы “сложения по модулю 2” и подается на усилитель-формирователь. Зная знаки операндов, произведем коррекцию, если это необходимо. Для этого в зависимости от p3 и p1 на плечо A сумматора поступает информация с выхода триггера RG3 или на плечо В с выхода RG2. На плечо B поступает информация либо с прямых, либо с инверсных выходов триггера RG2. Множимое, в зависимости от очередной цифры множителя, либо суммируется с предыдущей частной суммой, либо суммирование не происходит. Цикл сложения выполняется до тех пор пока в шестом разряде счетчика СТ не окажется "1". Перед выдачей результата на ШИВых содержимое RG3 и подается на усилитель-формирователь.

Таким образом, для выполнения операции умножения из управляющего автомата (УА) в операционный автомат необходимо подать управляющие сигналы, реализующие следующие микрооперации:- запись в RG1, запись в СТ, запись в Т;- сдвиг RG1 влево RG1:=L1(RG1).0, сдвиг RG3 влево

:=L1(RG3).0, СТ: = СТ+1;

- запись в RG2;- инверсия выхода RG2 и SMp=1 - подача “1” на вход переноса сумматора;- сброс RG3;- запись в RG3;- обнуление счётчика;- управление выдачей информации на ШИВых;- очистка RG1; - очистка RG2.

Из операционного автомата в управляющий автомат необходимо передать осведомительные сигналы о состоянии устройств операционного автомата, определяемые списком следующих логических условий.

Х - проверка наличия операндов на ШИВх;

Р1- знак операнда RG1;

Р2- проверка очередной цифры множителя;

Р3 - знак операнда RG2,

Р4=1, выполнения цикла сложения завершено;=0, один из операндов равен “0”;

Р6 - знак произведения; - проверка возможности выдачи по ШИВых.

Таким образом, управляющий МПА должен вырабатывать 12 управляющих сигналов и посылать их в ОА в нужные такты машинного времени в соответствии с алгоритмом выполнения операции сложения, ориентируясь на 8 осведомительных сигналов, поступающих из ОА, структурная схема которой представлена на рис. 1.

. Реализация содержательной ГСА

Содержательная граф-схема алгоритма представлена на рис. 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, в противном случае такт является последним и производится проверка на возможность выдачи результата на ШИВых, завершение алгоритма.

. Построение отмеченной ГСА

Перед разметкой содержательной ГСА необходимо возле каждой операторной вершины проставить управляющие сигналы УА и обеспечивающие выполнение требуемых действий в соответствии со списком МО операционного автомата. Совокупность МО для каждой операторной вершины образуют микрокоманды (МК), список которых приведен в таблице 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= a0x1 V a1x6 V a2~x1 V a4~x2 V a4x2= a2x1 V a3x6~x4 V a3x6x4 V a4~x2 V a4x2= a5x3 V a5~x3 V a6 V a7~x5~x3 V a7~x5x3

Аналогично составляются логические выражения для функций выходов.

y0 = a0x1  = a6 = a0x1 V a2x1  = a1x6 V a4x2 = a0x1 V a3x6~x4 V a3~x6 = a1x6 V a4x2 V a5x3 V a7~x5x3

y11 = a8x7

После выделения общих частей в логических выражениях и некоторого их упрощения получаем логические уравнения для построения функциональной схемы управляющего автомата.

c = a0x1 (2) l = a5x3 (2)= a0 V a2 (2) m = a7~x5x3 (3)= a1x6 (2) n = a3~x6 (2)= a8x7 (2)= a3x6 (2)= a7~x5 (2)= a2x1 (2)= a4x2 (2)= a2~x1 (2)= 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)= a0x1 V a1x6 V a2~x1 V a4~x2 V a4x2 = c V e V k V a4 (4)= a2x1 V a3x6~x4 V a3x6x4 V a4~x2 V a4x2 = i V g V a4 (3)= a5x3 V a5~x3 V a6 V a7~x5~x3 V a7~x5x3 = a5 V a6 V h (3) = c (0) = a6 (0) = a0x1 V a2x1 = x1d (2) = e V j (2) = c V g~x4 V n (5) = e V j V l V m (4)= 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=11001=1

Выбираем любой:

K(a2)=0011

2). =a3

 B={2}2={0010,0111,1011} W0010=13={0010,0111,1011} W0111=11011=1

Выбираем любой:

K(a3)=0010

). =a4

 B={3}3={0110,1010}           W0110=14={0110,1010} W1010=1

Выбираем любой:

K(a4)=0110

). =a5

B={4}4={1110,0111,0100}

W1110=1

W0100=1

W0111=1

 Выбираем любой:

K(a5)=0100

5). =a6

B={5}5={0101,1100}0101=1

D6={0101,1100}

W1100=1

Выбираем любой: K(a6)=1100

6). =a7B={6}6={1101,1110,1000}1101=2 7={1101,1110,1000}1110=21000=2

Выбираем:         K(a7)=1000

). =a8

B={0,1,3,7}         C0={Ø} 1001=7

C1={1001} W1010=73={1010} W1100=97={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= a1x6= a3x6~x4 V a3x6x4 V a7~x5~x3 V a7~x5x3= a1~x6 V a3~x6 V a5x3 V a5~x3= a2x1 V a8x7= a3~x6 V a4~x2 V a4x2

R2 = a6= a8x7

После упрощения и выделения общих частей, получим:

l = a2x1 (2) r = a3x6 (2) x = a7~x5 (2)= a0x1 (2) s = a7x5 (2)= a3~x6 (2) t = a1~x6 (2)= a1x6 (2) u = a3x6~x4 (3)= a8x7 (2) v = a5x3 (3)= a4x2 (2) w = a7~x5x3 (3)= m V n V s (3)= o (0)= r V x (2)= t V n V a5 (3)= l V p (2)= n V a4 (2)= a6 (0)= p (0) = m (0) = a6 (0) = m V l (2) = o V q (2) = m V u V n (3) = o V q V v V w (4)= 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= a8y11EWR = a1~x6 V a3~x6

После упрощения и выделения общих частей, получим:

1 = a4x2 (2) 7 = a8x7 (2) 13 = a5x3 (2)

= a0x1 (2) 8 = 6x3 (2) 14 = a7~x5 (2)

= a3x6 (2) 9 = a1~x6 (2) 15 = 9 V 4 (2)

= a3~x6 (2) 10 = a7x5 (2)

= a1x6 (2) 11 = a2x1 (2)

= 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)= 7 (0)EWR = 15 (0) = 2 (0) = a6 (0) = 2 V 11 (2)  = 5 V 1 (2) = 2 V 12 V 4 (3) = 5 V 1 V 13 V 8 (4)= 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

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) и по известному правилу формируем логические выражения для функций возбуждения.

= 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= b0~x1 V b1~x6x7 V b2x1 V b3x1 V b4~x6 V b4x6~x4 V b5x7 V b9x5x7 V b10x7 V b11= b0x1 V b1x6 V b4~x6 V b4x6~x4 V b4x6x4~x2x3 V b6~x2x3 V b7x3 V b9~x5x3= b0~x1 V b0x1 V b2~x1 V b3~x1 V b4x6x4x2 V b6x2 V b11

Так как для автомата Мура функции выходов не зависят от входных сигналов, то в соответствии со вторым столбцом таблицы 12 записываем логические выражения для управляющих сигналов.

y0 = b1 = b9

y2 = b1 V b4

y3 = b7

y4 = b1 V b5 V b6

y5 = b7 V b8

y11 = b11

Выделив общие части получаем:

c = b1x6 (2)= b1~x6 (2)= b2x1 (2)= b4x6~x4 (3)= b3x1 (2)= b4~x6 (2)= e V g V f (3)= k V l (2)= b4x6x4x2 (4)= b6x2 (2)= b9x5 (2)= b5 V m V b10 V d (4)= 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)= 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)= 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)= b0 V b2~x1 V b3~x1 V b4x6x4x2 V b6x2 V b11 = b0 V ~x1(b2 V b3) V j (6)= b1 (0)= 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= b4x6~x4 V b4x6x4x2 V b4x6x4~x2x3 V b5x7 V b9~x5x3 V b9x5x7 V b10x7= b11= b11= b0x1 V b4~x6 V b4x6x4x2 V b6x2 V b9x5~x7 V b9x5x7= b1x6 V b1~x6~x7 V b6~x2~x3 V b7~x3= b1~x6~x7 V b1~x6x7 V b2x1 V b3x1= 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= b1 = b8

y2 = b1 V b4

y3 = b2 V b6

y4 = b1 V b5

y5 = b2 V b6 V b7

y6 = b8

Упростив и выделив общие части получаем:

o = b4x6x4x2 (4)= b4x6x4~x2 (4)= b1~x6 (2)= b2 V b7 V b11 (3)= b4x6~x4 V o V px3 V b5x7 V b9~x5x3 V b9x5x7 V b10x7 (21)= b11 (0)= b11 (0)= b0x1 V b4~x6 V o V b6x2 V b9x5 (13)= b1x6 V b1~x6~x7 V b6~x2~x3 V b7~x3 (14)= q V b2x1 V b3x1 (7)= q V p V b5 V b6~x2 V b7 (7)= b1 (0)= 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.

Курс лекций по дисциплине “Теория автоматов”.

Похожие работы на - Синтез микропрограммных управляющих автоматов

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!