Структурный автомат и кодирование
Рассмотренные схемы соединения элементарных автоматов, имеющих один вход и один выход, позволяют представить структурный автомат, имеющим несколько входов и несколько выходов. Поскольку режим работы синхронный, то в момент времени [t] на каждом входе и выходе структурного автомата появляется сигнал. Следовательно, входной и выходной сигналы структурного автомата есть векторы. Если сигналы на входе и выходе элементарных автоматов принадлежат множеству {0, 1}, то для структурного автомата входной и выходной сигналы есть булевы вектора x=(x1, x2,…xn) и y=(y1, y2,…yp). Синхронный режим работы элементарных автоматов, формирует внутреннее состояние структурного автомата булевым вектором (q1, q2,…qm). Для определения числа разрядов регистров структурного автомата необходимо знать мощности алфавитов X, Y и Q. Затем вычислить значения log2|X|, log2|Y| и log2|Q|. Так как число разрядов регистра может быть только целым положительным числом, то n³log2|X|, где n - целое положительное число, p³log2|Y|,где p - целое положительное число m³log2|Q|, где m - целое положительное число. В этом случае каждый разряд значений функций выходов j и переходов y структурного автомата есть логические функции от булевых векторов x и q, то есть yi[t]=j(q1[t], q2[t],...qm[t], x1[t], x2[t],...xn[t]) и qj[t+1]=y(q1[t], q2[t],...qm[t], x1[t], x2[t],...xn[t]). Логическая функция j[t] может быть реализована с помощью схем параллельного и последовательного соединения комбинационных автоматов, а логическая функция y[t+1] – с помощью схем обратной связи, реализующих задержку на один такт [t+1]. Поэтому любой конечный автомат при двоичном кодировании его алфавитов есть структурный автомат (см.рис.6.19) c ”памятью”. Модель современной вычислительной включает операционный и управляющий автоматы.
Операционные автоматы - это блоки памяти, арифметико-логические устройства, каналы обмена информацией и т.п.. Эти блоки и устройства исполняют основные операции при передаче и/или преобразовании информации. Основными элементами таких устройств являются регистры, которые состоят из наборов двоичных разрядов и представляют информацию двоичными кодами. Такие регистры имеют 32 или 64 разряда. Использование операционным автоматом более 10-ти регистров формирует очень большой (до нескольких гигабайт) объем памяти. Поэтому модель операционного автомата есть структурный автомат с бесконечной памятью. Управляющие автоматы вычислительной машины - это адаптеры, контроллеры, управляющие блоки периферийными устройствами и т. п. Эти блоки и устройства управляют исполнением операции при передаче и/или преобразовании информации. Такие автоматы используют 4-х или 8-и разрядные регистры, то есть управляющие автоматы имеют небольшой (до нескольких килобайт) объем памяти. Поэтому модель управляющего есть структурный автомат с конечной памятью. Логическое проектирование автоматов Основными этапами логического проектирования конечного автомата являются: 1) кодирование алфавитов абстрактного автомата; 2) выбор комбинационных автоматов и формирование оператора j; 3) выбор элементов задержки и формирование оператора y; 4) построение логической схемы структурного автомата. Кодирование алфавитов автомата Пусть таблицей 6.41 дан минимизированный абстрактный автомат.
В данном автомате X={1, 2, 3}, Y={0, 1}, Q={q1, q2, q3, q4, q5}. Число разрядов в регистрах входа и выхода структурного автомата и в регистре внутренних состояний должно быть: log2|X|=log23£n=2, log2|Y|=log22£n=1, log2|Q|=log25£n=3. Поведение автомата при кодовом описании сигналов представлено в таблице 6.42. Автоматы без “памяти”. Выбор состава и структуры комбинационного автомата начинают с исследования функциональной зависимости булевой функции от компонент булевого вектора. При этом минимизируют число двоичных переменных в описании одной или нескольких, полностью или частично определенных булевых функций. Аналитические приемы минимизации состава и структуры одной, полностью определенной булевой функции были изложены в 1.5.8. Ниже будет рассмотрен инженерный способ минимизации числа двоичных переменных в описании одной или нескольких, полностью или частично определенных булевых функций. Формирование оператора j В основе метода лежит использование таблиц специального вида - диаграмм Вейча или карт Карно. В диаграммах Вейча каждой клетке присваивается номер, значение которого в двоичной системе счисления записывается в клетку. Каждый разряд кода есть двоичная переменная булевого вектора. Число клеток диаграммы должно быть 2n, где n - число двоичных переменных. Особенность нумерации клеток заключена в том, что любые две рядом расположенные клетки отличаются в кодовой конфигурации не более, чем в одном разряде. Это позволяет для одинаковых значений булевой функции “склеивать” соседние клетки диаграммы и описывать их сокращенными элементарными конъюнкциями или дизъюнкциями двоичных переменных, имеющими одинаковое значение. Так можно объединить по вертикали и/или по горизонтали две, четыре и восемь смежных клеток. Следует обратить внимание, что кодовые конфигурации клеток левого и верхнего краев диаграммы отличаются от кодовых конфигураций клеток правого и нижнего краев также только в одном разряде, что позволяет “склеивать” и крайние клетки.
На рис. 6.20 представлены диаграммы Вейча для булевых векторов (x1, x2, x3), (x1, x2, x3, x4) и (x1, x2, x3, x4, x5, x6). В этих диаграммах каждая клетка таблицы описана двоичным кодом длины три, четыре и шесть. Вне поля таблицы указаны имена двоичных переменных.
На рис. 6.21 представлены карты Карно для булевых векторов (x1, x2, x3), (x1, x2, x3, x4) и (x1, x2, x3, x4, x5, x6). В этих картах нет наборов двоичных переменных, но вне поля таблицы указаны имена булевых переменных. Это позволяет в клетках карты указывать значения булевой функции. Каждую клетку карты Карно можно описать элементарной конъюнкцией или элементарной дизъюнкцией двоичных переменных, используемых в карте Карно. Если в клетке карты указано значение функции f=1, то эта клетка может быть описана элементарной конъюнкцией СДНФ. И наоборот, если в клетке указано значение f=0, то – элементарной дизъюнкцией СКНФ (см. 1.5.7). Множество клеток карты Карно, где f=1, описывают дизъюнкцией элементарных конъюнкций СДНФ. И наоборот, множество клеток карты Карно, где f=0, описывают конъюнкцией элементарных дизъюнкций СКНФ. Левый край строки карты Карно примыкает к правому, а верхний соответствующего столбца - к нижнему. Если карту Карно свернуть в трубку, то крайние клетки отличаются между собой значением только одной двоичной переменной (см. рис. 6.20).
Любые смежные клетки карты Карно также различаются между собой только одной двоичной переменной. Так как смежные и крайние клетки карты Карно различаются между собой значением только одной двоичной переменной, то их можно “склеить” и описать сокращёнными нормальными формами формул, воспользовавшись законами противоречия и дистрибутивности. При объединении двух смежных клеток карты сокращённая конъюнкция (или дизъюнкция) имеют (n-1) двоичную переменную. При объединении четырёх клеток формируется сокращенная нормальная форма, содержащая (n-2) двоичных переменных, а при объединении восьми - (n-3) двоичных переменных. Пусть булева функция четырех двоичных переменных задана таблицей 6.43 и отображена на карте Карно (см. рис.6.22).
Анализ карты показывает, что в четырех смежных клетках, описываемых кодами 0111, 0011, 0101 и 0001, булева функция имеет значение “1” ”. Следовательно, j=1=`x1×x2×x3×x4Ú`x1×`x2×x3×x4Ú `x1×x2×`x3×x4 Ú`x1×`x2×`x3×`x4=`x1×x3×x4×(x2Ú`x2)Ú`x1×`x3×x4×(x2Ú×`x2)= `x1×x3×x4Ú`x1×`x3×x4 =`x1 ×x4×(x3Ú`x3)=`x1 ×x4 В четырех крайних по вертикали клетках, описываемых кодами 0110, 0100, 0010 и 0000 – значение ”0”. Следовательно, j=0=(x1Ú`x2Ú`x3Úx4)×(x1Ú`x2Úx3Úx4)×(x1Úx2Ú`x3Úx4)×(x1Úx2Úx3Úx4)= =((x1Ú`x2Úx4)Úx3×`x3`)×((x1Úx2Úx4)Úx3×`x3)=(x1Ú`x2Úx4)×(x1Úx2Úx4)= (x1Úx4)Úx2×`x2=(x1Úx4). Есть по две смежных клетки, имеющих одинаковые значения функции. Например, для j=1 это клетки, имеющие коды 1100 и 1110, 1110 и 1111, 1111 и 0111, для j=0 - это 1000 и 1001, 1001 и1011, 1000 и 0000. Булевы функции для этих пар клеток могут быть описаны сокращенными нормальными формами: j=1=x1×x2×`x4Ú x1×x2×x3Úx2×x3×x4, j=0=(`x1Úx2Úx3)×(`x1Úx2Ú `x4)×(x2Úx3Úx4). Множество клеток, в которых булева функция имеет значение “0” или “1”, позволяет сформировать минимальную ДНФ или КНФ из числа сокращенных. На рис.6.23 узором выделены возможные варианты минимальных ДНФ и КНФ.
Рис. 6.23. Карты Карно для таблицы 6.43.
Минимальные ДНФ: для карты а) jmin(x1, x2, x3, x4)=`x1×x4Úx1×x2×`x4Ú x1×x2×x3 , для карты b) jmin(x1, x2, x3, x4)=`x1×x4Úx1×x2×`x4Úx2×x3×x4. Минимальные КНФ: для карты c) jmin(x1, x2, x3, x4)=(x1Úx4)×(`x1Úx2Ú`x4))×(`x1Úx2Úx3), для карты d) jmin(x1, x2, x3, x4)=(x1Úx4)×(`x1Úx2Ú`x4)×(x2Úx3Úx4). В двух клетках карты не определены значения булевой функции (помечены знаком “*”). Анализ позволяет допустить для кода 1101 значение f=1, для кода 1010 значение f=0. Тогда минимальная ДНФ jmin(x1, x2, x3, x4)=`x1×x4Úx1×x2, Минимальная КНФ jmin(x1, x2, x3, x4)=(x1Úx4)×(`x1Úx2).
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|