Примеры и проектыВопросы и ответыАкадемия Engee
Engee Community
/
Примеры и проекты
/
Таблицы истинности

Таблицы истинности

Автор
avatar-nkapyrinnkapyrin
Notebook

Построение таблиц истинности, булевых схем и выражений¶

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

Описание модели¶

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

A B C Y
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0

Таблицу истинности можно задать множеством разных способов, например при помощи кода, помещенного внутри блока Engee Function.

Входные сигналы формируются при помощи генераторов импульсов Pulse Generator, у каждого следующего генератора период импульсов делится на 2 ("младший" имеет период 1 с, следующий 2 с, "старший" – 4 с) . По умолчанию все генераторы в нулевой момент времени начинают с верхнего уровня импульса (указанного в параметре Amplitude). Привычная форма для таблиц истинности подразумевает, что перечисление сигналов начинается с нижнего уровня. Чтобы не изменять фазу каждого генератора, мы применяем опеиацию Not к каждому входному каналу (при помощи соответствующим образом настроенного блока Logical Operator).

Шаг дискретизации модели равен 0.5. Каждый генератор за один полный период выдает оба значения импульса – верхнее и нижнее, с коэффициентом заполнения 50%. И так мы получаем следующую модель:

image.png

Внутри блока, таблица истинности описана следующим кодом:

function (c::Block)(t::Real, A, B, C)
    if     A == 0 && B == 0 && C == 0 return 0; 
    elseif A == 0 && B == 0 && C == 1 return 0;
    elseif A == 0 && B == 1 && C == 0 return 1;
    elseif A == 0 && B == 1 && C == 1 return 0;
    elseif A == 1 && B == 0 && C == 0 return 1;
    elseif A == 1 && B == 0 && C == 1 return 0;
    elseif A == 1 && B == 1 && C == 0 return 1;
    elseif A == 1 && B == 1 && C == 1 return 0;
    else return 0; end;
end

Такую же схему мы можем создать при помощи логических элементов И, ИЛИ, НЕ.

Нашей таблице истинности соответствует уравнение, описанное формулой $F = (A \lor B) \land (\lnot C$). Его легко реализовать при помощи нескольких блоков Logical Operator.

image.png

Либо при помощи выражения (u[1] || u[2]) && !u[3] внутри блока Fcn.

image.png

Запуск модели¶

Запустим модель при помощи команд программного управления:

In [ ]:
modelName = "truth_tables"
# Если модель еще не открыта, загрузим из файла
if modelName ∉ [m.name for m in engee.get_all_models()] engee.load( "$(@__DIR__)/$modelName.engee"); end;
data = engee.run( modelName )
Out[0]:
Dict{String, DataFrame} with 6 entries:
  "Y"  => 21×2 DataFrame…
  "B"  => 21×2 DataFrame…
  "A"  => 21×2 DataFrame…
  "C"  => 21×2 DataFrame…
  "Y2" => 21×2 DataFrame…
  "Y1" => 21×2 DataFrame…

И визуализируем результат. Если преобразование таблицы истинности в логическую схему выполнено правильно, мы должны получить три идентичных графика:

In [ ]:
gr()

plot(
    plot( data["Y"].time, data["Y"].value, st=:step, lc=1, leg=false, title="Сигналы по таблице истинности" ),
    plot( data["Y1"].time, data["Y1"].value, st=:step, lc=2, leg=false, title="Сигналы по логической схеме" ),
    plot( data["Y1"].time, data["Y2"].value, st=:step, lc=3, leg=false, title="Сигналы по логическому выражению" ),
    layout=(3,1)
)
Out[0]:

Заключение¶

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

Группа видимости
ПубличноПросматривать контент могут все пользователи сообщества

Тип

Проекты

Краткое описание

Создание цифровых устройств, поведение которых задано таблицей истинности, соответствующей логической схемой или логическим выражением

Связанные материалы

Пусто

Теги

Пусто

Категории

Моделирование в Engee
Отраслевые примененияОбработка сигналов
Учебные дисциплиныИнженерное направлениеМикроэлектроника

Языки

    Julia

Форматы

    engee
    ngscript

Уровень

    Базовый

Статус

Опубликовано

Обновлено

Источник

Engee