Автоматы Мили.
В основном картина здесь аналогична вышерассмотренной. В тоже время в УА Мили функции выходов как и функции возбуждения реализуются на БИС ПЛМ. В связи с этим процедура кодирования состояний несколько изменяется по сравнению с используемой для УА Мура и приобретает следующий вид.
Сначала предполагаем, что функции возбуждения как и в автомате Мура, реализуются отдельно и выполняем частичное кодирование состояний так, чтобы получить склеивание конъюнкций в функциях возбуждения. Действия на этом этапе ничем не отличаются от тех, что выполняются с автоматами Мура.
ПРИМЕР.
Пусть УА Мили имеет 60 состояний и задан обратной таблицей переходов, фрагмент которой представлен ниже.
S0
P1P0
Y14
S10
P1
Y13
Y11
S12
P1
S0
Y2
S14
P1
Y5
S16
P1
Y2
Y5
S0
P1
S1
Y1
Y2
S1
1 S2
Y7
S2
1 Y2
Y10
S20
1 S3
Y5
S3
X1
Y1
S5
X1
Y2
S6
1 S4
Y7
S40
P1
Y1
Y2
S3
X1
Y1
S19
X1
S5
Y5
*
*
Отмеченные подчеркиванием слева группы строк задают состояния, кодирование которых соседними кодами позволяет получить склеивающиеся конъюнкции при реализации функций возбуждения. С учетом того, что, кодируя 60 состояний, нужно использовать 6-ти разрядный двоичный код, и что S0 обычно задается кодом 00…00, можно осуществить частичное кодирование так.
S0: 000000
S 10: 001000
00100-
S12: 001001
0010--
S14: 001010
00101-
S16: 001011
S2: 000010
00001-
S20: 000011
S3: 000100
00010-
S5: 000101
S3: 000100
0001-0
S19: 000110
Если mплм – число выходов ПЛМ больше mф– числа функций возбуждения, то к выделенной для отдельной реализации подсистеме бф,содержащей функции возбуждения, добавляются (mплм– mф) функций выходов. При этом целесообразно добавлять функции, имеющие максимальное число конъюнкций (строк или групп строк), совпадающих с ранее отнесенными к формируемой подсистеме. Преположим, что в нашнем примере к таким бф оказались отнесены функции y1 и y5. В представленном фрагменте y1 имеет 2 строки, совпадающие с ранее отнесенными к подсистеме (отмечены в таблице справа меткой *), а y5 не имеет ни одной строки.
Для продолжения кодирования нужно рассматривать бф выходов, не отнесенные ранее к отдельно реализуемой подсистеме бф.
Из рассматриваемых бф выходов формируются отдельные подсистемы для последующей независимой реализации. В отдельную подсистему выделяется такая совокупность бф, которая содержит «близкие» бф (имеющие большое число одинаковых конъюнкций) с числом бф не более числа выходов у ПЛМ, как описано в разделе «Синтез КС на БИС ПЛМ» данных методических материалов.
Предположим, что в примере, который мы начали рассматривать, всего было 16 бф выходов:y1-y16. Бф y1 и y5, как как указано выше, реализуются совместно с функциями возбуждения, а оставшиеся бф разбиваются на подсистемы, например, (y2,y3,y4,y6,y10,y12,y15,y16) и (y7,y8,y9,y11,y13,y14). Далее будут отрабатываться эти подсистемы.
3)Поочередно рассматривая каждую из подсистем бф, продолжаем выполнять частичное кодирование незакоди-рованных ранее состояний. Делается это так.
По обратной таблице переходов строится таблица зависимости наборов значений реализуемых бф от состояний и значений входных переменных. В этой таблице выделяются группы строк с одинаковыми условиями переходов, представляющие одинаковые наборы значений реализуемых бф, при числе строк 2,4,8,16,… . Далее фиксируются коды состояний для этих групп строк так, чтобы конъюнкции, соответствующие группам строк, склеивались в одну. При невозможностим обеспечения однозначности кодирования, некоторые выделенные группы строк будут вновь разгруппированны и станут рассматриваться как меньшие группы или даже отдельные строки.
ПРИМЕР 1.
Обращаясь к рассматривавшемуся ранее примеру можно пред-ставить фрагменты таблиц зависимостей для (y2,y3,y4,y6,y10, y12,y15,y16) и (y7,y8,y9,y11,y13,y14) по заданному фрагменту обратной таблицы переходов в виде
S5 X1 S10 P1 Y11 Y13
S12 P1 S0 P1P0 Y14
S16 P1 Y2 S1 1
S0 P1 S6 1 Y7
S40 P1
S2 1 Y2 Y10
Если бы мы обрабатывали не фрагмент, а всю таблицу переходов, то таблица зависимостей была бы иной.
Из таблиц видно, что целесообразно соседнее кодирование для состояний S12, S16, S0 и S40 при котором 4 конъюнкции заменяются на одну, но поскольку коды для S12, S16, и S0 были уже зафиксированны можно задать соседнее кодирование лишь для S0 и S40, например, при S40:100000. В результате мы получим две группы по две строки, что даст y2 = … S5x1 S12 S16)p1 S0 S40)p1… = … S5x1 Q5Q4Q3Q2Q0)p1 …Q4Q3Q2Q1Q0)p1
Из таблиц видно также, что соседнее кодирование выгодно взять и для состояний S1 и S16 с целью упрощения выражения y7.
ПРИМЕР 2.
Sa 1
Sb x1
Sc x1
Sd x1 YpYq
Sk x1
Зафиксируем Sb:00100 Sc:00101 Sd:00110 Sk:00111.
Тогда в дальнейшем это даст
yp = yq = … Sa (Q4Q3Q2)x1 …
Получается это из-за склеивания конъюнкций для состояний
Sb:00100
0010-
Sc:00101
001--
Sd:00110
0011-
Sk:00111
Чтобы завершить кодирование, нужно зафиксировать коды для всех оставшихся нерассмотренными состояний. Их коды можно взять произвольно.
Имея кодирование состояний и зная для каждой подсистемы бф какие группы строк (конъюнкций) следует представлять одной конъюнкцией, полученной в результате склеивания, можно переходить к реализации сбф в ПЛМ.
В заключение отметим, что построенную в итоге схему на БИС ПЛМ целесообразно попытаться улучшить. С этой целью в ПЛМ, имеющие неиспользованные конъюнкторы или выходы, нужно при возможности переносить из других ПЛМ части функций в расчете на сокращение в конечном счете числа используемых БИС.
Так например, в автоматах Мура можно пытаться переносить функции выходов из БИС ПЗУ в БИС ПЛМ, если последние имеют неиспользованные выходы.