Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория автоматов. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆

1
матрицы ИЛИ
3231431
1
матрицы ИЛИ
.
3231431
xxxxPPF
.
32121212
xxxxxPPF
Рис. 9.5. Программируемая логическая матрица
Высокий уровень напряжения (логическая 1) на шине F1 матрицы ИЛИ будет лишь тогда, когда высокий уровень напряжения (логическая 1) действует или на третьем, или на четвертом столбцах, т.е. по отноше­нию к выходной шине F
выполняется функция ИЛИ:
1
.
xxxxPPF
По аналогии получим:
Таким образом, программируемая логическая матрица — это сет­ка взаимно перпендикулярных проводников (рис. 9.2), в местах пересе­чения которых находятся полупроводниковые элементы — диоды или транзисторы, включенные через легкоплавкие перемычки к проводни­кам матрицы. Программирование ПЛМ заключается в пережигании пе­ремычек, соединяющих горизонтальные и вертикальные шины матриц, которое выполняется на специальных устройствах — программаторах. В исходном состоянии все перемычки целы. Если в переменную Р входит прямое значение аргумента х, то пережигается перемычка, соединяющая вертикальную шину Р с инверсной горизонтальной шиной, если значе­ние аргумента инверсное — то с шиной, передающей прямое значение аргумента. Если аргумент не участвует в формировании переменной, пе­режигаются обе перемычки. Если переменная Р входит в функцию у, то перемычка сохраняется, в противном случае — пережигается [27].
-111-

  
В [28] изложен систематический подход к построению комбинаци­онных схем — простейших преобразователей информации, реализую­щих функциональное отображение конечных множеств.
Рассмотрим проблемы построения простейших дискретных пре­образователей информации.
Пусть А — некоторое множество элементов информации, пред­ставленных тем или иным образом, В — другое множество элементов информации, а Ф — функция преобразования. Преобразователь инфор­мации можно представить себе схематично как устройство, реализую­щее отображение Ф : А → В одного множества на другое (рис. 10.1, а). Рассмотрим возможность систематического построения таких преоб­разователей. Очевидно, что трудно предложить какое-то решение в об­щем случае, когда множества А и В имеют произвольную природу, а о самом отображении Ф ничего не известно. Однако, если множества А и В являются конечными (то есть преобразователь, который мы хотим построить, является «конечным функциональным преобразователем») и дискретными (то есть преобразование осуществляется в дискретные моменты времени), существует систематический метод решения этой проблемы. Этот метод состоит в том, что элементы множеств А и В предварительно кодируют двоичными кодами и строят преобразова­ние одного множества двоичных векторов в другое (рис. 10.1, б). Рас­смотрим этот метод на примере.
Двоичное кодирование состоит во взаимно однозначном сопос­тавлении всем элементам конечного множества некоторых двоичных векторов одной и той же длины. При таком подходе проблема реализа­ции преобразователя Ф сводится к построению трех преобразователей:
-112-

A
В
Ф
A
В
Ф
F
…
…
x1 x
x
f1 f2 f
A
В
…
Y
X
x
x
f
f
кодировщика К : А → Х, собственно функционального преобразователя (ФП) F : X → Y и декодировщика D: Y → B, причем эти отображения должны быть выбраны так, что K • F • D = Ф (рис. 10.1, б). Рассмотрим проблемы построения этих трех преобразователей поочередно.
Y
К
…
D
а б
2
m
1
D
…
n
n
К
1
…
m
в г
Рис. 10.1. Реализация конечного ФП
Число двоичных векторов длины n равно 2n, и если все элементы множества S закодировать двоичными векторами одной и той же дли­ны n, то для однозначности кодирования n должно быть не меньше, чем log
|S|. Пусть m и n — длины двоичных векторов для кодирования со-
2
ответственно множеств А и В входных и выходных информационных элементов конечного функционального преобразователя Ф. Тогда ко­дирование — это построение некоторого отображения К : А → {0,1} кодирование — построение отображения D : {0,1} ное отображение F сопоставляет каждому вектору из {0,1} вектор из {0,1}
В = {b1, b2, b3} и отображение Ф задается табл. 10.1.
n
, причем так, чтобы K • F • D = Ф.
n
→B, а функциональ-
m
некоторый
n
, де-
Пример 10.1. Пусть множество А = {а1, а2, а3, а4, а5}, а множество
-113-

I II III
IV
3
23
 
BD
1,0:
ВАФ :
A
{0,1}3
{0,1}3
{0,1}2
{0,1}2
B A B a1
010 000
-- 00
b1 a1
b2
a2
110
001
10
01
-- = a2
b3
a3
001 010
10 10
b2 a3
b2
a4
100 011
10 11
b3 a4
b1
a5
011 100
00
a5
b2
101
-- 110
11
111
--
I II III
IV
3
1,0: АК
23
1,01,0: F
BD
2
1,0:
ВАФ :
A
{0,1}3
{0,1}3
{0,1}2
{0,1}2
B A B a1
010 000
-- 00
b1 a1
b2
a2
110
001
10
01
-- = a2
b3
a3
001 010
10 10
b2 a3
b2
a4
100 011
10 11
b3 a4
b1
a5
011 100
00
a5
b2 101
-- 110
11 111
--
Рис. 10.2. Отображение F
Устройство кодирования должно преобразовать элементы информации
nm
, который может быть задан, например, таблично, поскольку ис-
Таблица 10.1
Отображение Ф : А → В
A B
a1 b2 a2 b3 a3 b2 a4 b1 a5 b2
Понятно, что в данном примере m должно быть не меньше 3, n должно быть не меньше 2. Мы можем выбрать произвольно функции кодирования и декодирования (например, представленные на рис. 10.2 в виде таблиц I и II). Отображение F строим таким образом, чтобы вы­полнялось соотношение K • F • D = Ф.
1,0: АК
1,01,0: F
2
Рис. 10.2. Отображение F
Устройство кодирования должно преобразовать элементы инфор­мации множества А заданной природы в двоичные векторы (представ­ленные тем или иным удобным нам способом), причем преобразование это должно быть взаимно однозначно. Аналогично устройство декоди­рования должно преобразовать двоичные векторы (представленные тем или иным способом) в элементы информации множества В. Про­блема построения конечного функционального преобразователя теперь
сводится к реализации произвольного преобразователя
F 1,01,0:
-114-
,

I II III
IV
3
1,0: АК
23
1,01,0: F
BD
2
1,0:
ВАФ :
A
{0,1}3
{0,1}3
{0,1}2
{0,1}2
B A B a1
010 000
-- 00
b1 a1
b2
a2
110
001
10
01
-- = a2
b3
a3
001 010
10 10
b2 a3
b2
a4
100 011
10 11
b3 a4
b1
a5
011 100
00
a5
b2 101
-- 110
11 111
--
Рис. 10.2. Отображение F
Устройство кодирования должно преобразовать элементы информации
nm
, который может быть задан, например, таблично, поскольку ис-
I II III
IV
3
1,0: АК
23
1,01,0: F
BD
2
1,0:
ВАФ :
A
{0,1}3
{0,1}3
{0,1}2
{0,1}2
B A B a1
010 000
-- 00
b1 a1
b2
a2
110
001
10
01
-- = a2
b3
a3
001 010
10 10
b2 a3
b2
a4
100 011
10 11
b3 a4
b1
a5
011 100
00
a5
b2 101
-- 110
11 111
--
Рис. 10.2. Отображение F
Устройство кодирования должно преобразовать элементы информации
nm
, который может быть задан, например, таблично, поскольку ис-
II III
IV
23
1,01,0: F
BD
2
1,0:
ВАФ :
{0,1}3
{0,1}2
{0,1}2
B A B
000
-- 00
b1 a1
b2
001
10
01
-- = a2
b3 010
10 10
b2 a3
b2
011
10 11
b3 a4
b1
100
00
a5
b2 101
-- 110
11 111
--
Рис. 10.2. Отображение F
nm
F 1,01,0:
nm
F 1,01,0:
построим n функций
1,01,0:
m
i
f
1,01,0:
m
f
, сопоставляющие двоичным векторам дво-
II III
IV
23
1,01,0: F
BD
2
1,0:
ВАФ :
{0,1}3
{0,1}2
{0,1}2
B A B
000
-- 00
b1 a1
b2
001
10
01
-- = a2
b3 010
10 10
b2 a3
b2
011
10 11
b3 a4
b1
100
00
a5
b2 101
-- 110
11 111
--
Рис. 10.2. Отображение F
nm
F 1,01,0:
nm
F 1,01,0:
построим n функций
1,01,0:
m
i
f
1,01,0:
m
f
, сопоставляющие двоичным векторам дво-
который может быть задан, например, таблично, поскольку исходное множество А конечно.
Проблема построения произвольного преобразователя
F 1,01,0:
нако решить ее непросто. Для упрощения решения этой проблемы удо­бен следующий простой прием: вместо одной функции
построим n функций
имеет более четкую математическую формулировку, од-
F 1,01,0:
так, что реализация совокупности этих более простых функций даст искомый преобразователь F. Этот прием представлен на рис.10.1, в. На рис. 10.1, г функции f
выделе-
i
ны явно.
Функции вида
, сопоставляющие двоичным векто-
рам двоичные значения, называются двоичными (или булевыми)
функциями.
Булевы функции определены на конечном множестве аргументов, каждый из которых принимает только два значения, 0 и 1. Поэтому бу­левы функции можно представить таблицей истинности, перечисляю­щей для каждого набора значений аргументов значение функции.
Если мы сможем эффективно реализовывать любые двоичные функции, при построении конечных функциональных преобразовате­лей останутся только проблемы кодирования и декодирования, кото­рые должны решаться всякий раз по-своему при каждом специфичес­ком представлении входной и выходной информации.
-115-

  
Комбинационным автоматом (автоматом без памяти) называется автомат, у которого множество состояний состоит из одного элемента, т.е. |A| = 1. Для такого автомата характерно то, что функция переходов у него отсутствует. По этой причине выходной сигнал автомата без памя­ти зависит от комбинации логических значений входных переменных. Именно поэтому автомат называют комбинационным или автоматом без памяти.
Комбинационный автомат называют также nk-полюсником. Это обусловлено тем, что на уровне черного ящика автомат рассматривают как устройство, имеющее n-входов и k-выходов. Если k = 1, то автомат называется одновыходным, если k > 1, то автомат называется многовы­ходным или k-выходным. Для различных комбинационных автоматов существуют и различные соотношения между n и k. Процедуру синтеза комбинационных автоматов можно охарактеризовать схемой алгорит­ма, представленной на рис.11.1.
Каждый из блоков этой схемы представляет собой определенный этап синтеза комбинационного автомата:
1-й — начало синтеза комбинационного автомата;
2-й — на этом этапе комбинационный автомат представляют на уровне черного ящика;
3-й — словесное описание работы автомата;
4-й — задание работы автомата в виде таблицы истинности; в слу­чае необходимости происходит доопределение таблицы истинности;
5-й — аналитическое описание работы автомата в виде СДНФ или СКНФ;
6-й — минимизация аналитического описания работы автомата;
-116-

A
= 1. Для
Начало
2
3
4
5
6
7
Конец
7-й — синтез логической схемы автомата в заданном элементном базисе;
8-й — конец синтеза комбинационного автомата.
Рис. 11.1. Схема алгоритма, характеризующая процедуру
синтеза комбинационного автомата
В общем случае процесс синтеза комбинационного автомата явля­ется итерационным процессом, о чем свидетельствует наличие обрат­ной связи в схеме алгоритма.
Рассмотрим типовые комбинационные автоматы и их синтез.


Шифратор — это устройство, осуществляющее преобразование входного кода «1 из n» в k-разрядный позиционный выходной код.
Код «1 из n» часто называют унитарным кодом.
Если число входов шифратора равно 2 но, должно быть равным n, то есть числу разрядов двоичного кода, ко­торым можно закодировать 2
n
различных комбинаций.
-117-
n
, то число выходов, очевид-

n
k
2 1 3 2 4 2 5 3 6 3 7
3
x
x
y
y
…
…
Если в качестве позиционного кода использовать двоичный код, то между n и k должно иметь место следующее соотношение:
k
n = 2
, тогда k = ]log2n[ = int(log2n + 0,5), (11.1)
где ]x[ — означает ближайшее целое, не меньше x. Рассчитаем по соот­ношению (11.1) значения k при n = 2, 3, 4, 5, 6, 7:
n k
2 1 3 2 4 2 5 3 6 3 7 3
Синтезируем шифратор, преобразующий 10-разрядный унитар­ный код в двоичный код.
«1 из 10» → 2k.
1. Начало.
2.Представим шифратор на уровне черного ящика с детализацией
его до входов и выходов (рис. 11.2).
0
9
Рис. 11.2. Представление шифратора на уровне черного ящика
с детализацией его до входов и выходов
Шф.
0
3
3. При воздействии на вход шифратора каждого в отдельности входного сигнала, на его выходе должен формироваться соответствую­щий данному входному сигналу двоичный код.
4.Работа шифратора описывается четырьмя функциями y
, каждая из которых равна 1 на некоторых наборах, номер которых
y
3
соответствует номеру входа шифратора. Составим таблицу истинности, отражающую закон функционирования шифратора (табл. 11.1).
-118-
, y1, y2,
0

1 0 1 0 0 4 1 0 1 0 1 5 1 0 1 1 0 6 1 0 1 1 1
7
1 1 0 0 0 8 1 0 0 1
9
;
975310
xxxxxy
76321
xxxxy
; (11.2)
76542
xxxxy
;
983
xxy
.
x9
x8
x7
x6
x5
x4
x3
x2
x1
x0
y0
y1
y2
y3
Таблица 11.1
x9x8x7x6x5x4x3x2x1x0y3y2y1y0№ входа
1 0 0 0 0 0
1 0 0 0 1 1
1 0 0 1 0 2
1 0 0 1 1 3
1 0 1 0 0 4
1 0 1 0 1 5
1 0 1 1 0 6
1 0 1 1 1 7
1 1 0 0 0 8
1 1 0 0 1 9
5–6. Воспользовавшись табл. 11.1, составим СДНФ функций выхода
шифратора: y
y
7.Синтезируем шифратор в элементном базисе И, ИЛИ, НЕ (рис. 11.3). Функции (11.2) реализуются четырьмя дизъюнкторами, на выходах ко­торых формируется четырехразрядный двоичный код.
= x1 + x3 + x5 + x7 + x9;
0
= x2 + x3 + x6 + x7;
1
y
= x4 + x5 + x6 + x7;
2
= x8 + x9.
y
3
(11.2)
1
1
1
1
Рис. 11.3. Схема шифратора на 10 входов
8. Конец.
-119-

x0 x
y
y
CD
На рис. 11.3 аргумент x0 не входит ни в одну из логических функций и шина x му сигналу x
остается незадействованной в схеме. Действительно, входно-
0
должен соответствовать код «0000», который сформирует-
0
ся на выходе шифратора, если все остальные аргументы будут равны 0.
Шифраторы широко применяются в системах управления техноло­гическими процессами («1» — включено и «0» — выключено). Их приме­няют также для зашифровки адресов ячеек запоминающих устройств, высвечивания букв и цифр на мониторах, приоритетные шифраторы применяются при работе ЭВМ и других устройств, когда решается зада­ча определения приоритетного претендента на обслуживание (высший приоритет — наибольший номер входа, низший — наименьший) [27].
На рис. 11.4 представлено условное графическое обозначение (УГО) шифратора.
0
…
x
n
n–1
…
y
k
k–1
Рис. 11.4. Условное графическое обозначение шифратора

Дешифратор (decoder) — это комбинационное устройство, позво- ляющее распознавать числа, представленные позиционным n-разряд­ным кодом. Если на входе дешифратора n-разрядный двоичный код, то на его выходе код «1 из N». В кодовой комбинации этого кода только одна позиция занята единицей, а все остальные— нулевые [27].
Дешифратор предназначен для преобразования n-разрядного по­зиционного кода в k-разрядный унитарный код.
Число входов дешифратора n должно удовлетворять соотношению
n < k, где k — число выходов дешифратора.
n
Если k удовлетворяет соотношению k = 2
n
зывается полным, если k < 2
— то неполным.
, то такой дешифратор на-
-120-