Московский государственный университет путей сообщения
Опубликован: 06.09.2012 | Доступ: свободный | Студентов: 1233 / 168 | Оценка: 5.00 / 5.00 | Длительность: 35:22:00
Специальности: Разработчик аппаратуры
Лекция 4:

Модели логических элементов

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >

Модели логических элементов в многозначных алфавитах

При построении многозначных моделей элементов используются те же подходы, что и в случае двоичного алфавита. Рассмотрим сначала моделирование логических элементов в троичном алфавите E_3. Для примера возьмем 2-входовой вентиль И y=x_1\&x_2. Входы и выход этого элемента принимают значения из троичного алфавита E_3=\lbrace0,1,u \rbrace. Пусть входы имеют значения x_1=0,x_2=u. Чему равно значение выхода y в алфавите E_3? Поскольку символ u представляет два значения u=\lbrace 0 \cup 1 \rbrace (это 0 или 1, но неизвестно, что именно), то моделирование на одном троичном наборе можно выполнить путем моделирования на двух двоичных наборах, покрываемых троичным, и затем сравнить результаты. Для нашего примера имеем:

  1. значения первого двоичного набора x_1=0,x_2=0 (покрываемом троичным) дают y=0;
  2. значения второго двоичного набора x_1=0,x_2=1 также дают y=0.

Поскольку значения выхода y для двух двоичных наборов совпадают, то полагаем y=0 (где 0 – символ троичного алфавита). Для другого входного троичного набора x_1=1,x_2=u аналогично получаем:

  1. значения первого двоичного набора x_1=1,x_2=0 дают y=0;
  2. значения второго двоичного набора x_1=1,x_2=1 дают y=1.

Поскольку значения y различны для двоичных наборов, покрываемых данным троичным, полагаем значение выхода y=u. Исходя из подобных соображений и физического смысла, можно построить табличные модели логических элементов в 3- и 5-значном алфавитах.

Табличные многозначные модели

В таблица 4.2, таблица 4.3, таблица 4.4 представлены 5-значные модели стандартных 2-входовых вентилей соответственно И, ИЛИ\ и\ НЕ.

Таблица 4.2.
И 0 1 u E H
0 0 0 0 0 0
1 0 1 u E H
u 0 u u u u
E 0 E u E u
H 0 H u u H
Таблица 4.3.
ИЛИ 0 1 u E H
0 0 1 u E H
1 1 1 1 1 1
u u 1 u u u
E E 1 u E u
H H 1 u u H
Таблица 4.4.
НЕ
0 1
1 0
u u
E Н
H Е

При этом левый верхний угол таблиц содержит трехзначную часть. Справедливость этих таблиц нетрудно проверить, исходя из смысла символов соответствующего алфавита. При программной реализации обычно символы многозначного алфавита кодируются целыми числами, а таблицы описываются в виде двумерных массивов. Так перекодированная таблица И ( таблица 4.2) будет иметь следующий вид, представленный в табл.4.5.

Таблица 4.5.
И 0 1 2 3 4
0 0 0 0 0 0
1 0 1 2 3 4
2 0 2 2 2 2
3 0 3 2 3 2
4 0 4 2 2 4
Таблица 4.6.
f^* f^0 f^1
A^*B^* A^0 \lor B^0 A^1B^1
A^* \lor B^* A^0B^0 A^1 \lor B^1
\overline{A^*} A^1 A^0

Таблица 4.7.
x^* x^* x^*
0 1 0
1 0 1
u 1 1

При этом вычисление значение выхода в многозначном алфавите по заданным значениям входов сводится к выборке нужного элемента в двумерном массиве, так как значения входов определяют индексы этого массива. Пусть, например, для вентиля И модель описана в виде двумерного массива TAND[0:4, 0:4]. При входных значениях x_1=1 (соответствует символу 1E_3) и x_2=2 (соответствует символу u) получаем y=TAND[1,2]=2, что соответствует неопределенному значению u. Ясно, что с ростом числа переменных резко возрастает объем требуемой памяти и метод становится практически непригодным. Следует отметить, что эвристический подход к построению моделей логических элементов в многозначных алфавитах и табличная форма задания модели, сдерживают дальнейшую разработку многозначных моделей для сложных ДУ, реализованных на СБИС. В третьем разделе рассмотрены более подробно вопросы построения многозначных моделей, как на вентильном, так и на функциональном уровне.

Компонентные многозначные модели

Данный способ построения многозначных моделей элементов основан на кодировании многозначных алфавитов и является обобщением метода построения моделей, изложенных для двоичного алфавита. Рассмотрим сначала троичные компонентные модели. Так как каждая троичная переменная x^* принимает три значения {0,1,u},то она может быть представлена двумя булевыми переменными, принимающими двоичные значения. Для этого используются различные способы кодирования троичного алфавита [ 2.4 ] . Мы, в основном, будем использовать дизъюнктивный метод кодирования троичного алфавита, представленный табл.4.7.

Здесь переменные x^0,x^1 могут принимать только двоичные значения. В современных системах моделирования, как правило, компоненты хранятся в разных машинных словах. Очевидно, что при таком подходе для моделирования логического элемента с троичной функцией f^* необходимо две булевых функции f^0 и f^1. В табл.4.6 представлены троичные компонентные модели основных вентилей для дизъюнктивного метода кодирования.

Известен простой способ построения функций f^0 и f^1 для произвольной булевой функции. Если f задана дизъюнктивной нормальной формой (ДНФ), то компонента f^1 получается из ДНФ функции f заменой вхождений переменных x_i на x_i^1 и \bar{x_i} на x_i^0. Аналогично компонента f^0 получается из ДНФ отрицания функции \bar f. Например, для функции f=a\overline b \lor bc \lor \overline c \overline b и \overline f=с\overline b \lor a\overline b\overline c имеем f^1=a^1b^0\lor b^1c^1 \lor b^0c^0 и f^0=c^1b^0\lor a^1b^0c^0.

Метод сканирования входов

Таблица 4.8.
C x x c\oplus i
X c x c\oplus i
X x c c\oplus i
\overline c \overline c \overline c \overline c\oplus i
Таблица 4.9.
C I
И 0 0
ИЛИ 1 0
НЕ-И 0 1
НЕ-ИЛИ 1 1

В большинстве программ моделирования в качестве базовых (элементарных) логических элементов используются простейшие вентили И, ИЛИ, НЕ, НЕ-И, НЕ-ИЛИ. Они характеризуются, прежде всего, двумя параметрами: контролирующее значение c и инверсия i. Значение входа называется контролирующим, если оно определяет выход вентиля, равный y=c\oplus i, независимо от значений остальных входов. таблица 4.9 и таблица 4.8представляют соответственно простые кубы и значения параметров для любых стандартных 3-входовых вентилей. В табл.4.9 в каждой строке представлен простой куб вентиля в порядке, указанном в табл.4.8.

Ниже представлен псевдокод типичной программы вычисления значения выхода, реализующей данный метод [ 2.3 ] .


\text{Вычисление (G,c,i)}\\
\{\\
\text{\quad u\_values=FALSE;}\\
\text{\quad for каждого входа v вентиля G}\\
\text{\quad \{}\\
\text{\qquad if v=c then return } c\oplus i;\\
\text{\qquad if v=u then u\_values=TRUE;}\\
\text{\quad \}}\\
\text{\quad if u\_values  then return u;}\\ 
\text{\quad return  }\overline c\oplus i;\\
\}

Метод счетчиков

Анализ программы показывает, что для вычисления значения выхода стандартного вентиля в троичном алфавите достаточно знать: имеет ли какой либо вход контролирующее значение c и при его отсутствии наличие неопределенного значения u на входах. Поэтому был предложен метод [ 2.3 ] , в котором вместо хранения значений входов для каждого вентиля сохраняются значения двух счетчиков – c\_count и u\_count, где содержится число входов с контролирующим и неопределенным значением соответственно. При очередном вызове функции модели вентиля значение этих счетчиков может изменяться. Например, при изменении 1 \to 0 входа вентиля И счетчик 0_\count увеличивается на 1, в то время как при изменении 0 \to u увеличивается на 1 счетчик u\_count. Тогда вычисление значения выхода вентиля сводится к проверке счетчиков. Ниже представлен метод вычисления значения выхода.


\text{Вычисление (G,c,i)}\\
\{\\
\text{\quad If c\_count > 0 then return }c\oplus i;\\
\text{\quad If u\_count > 0 then return u;}\\
\text{\quad return }\overline c\oplus i;\\
\}

Более подробно вопросы построения многозначных моделей логических элементов будут изложены в "Система многозначных алфавитов и функций" , где рассматривается единая система многозначных алфавитов и функций.

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >
Дмитрий Медведевских
Дмитрий Медведевских

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