Схема (комбинированная и последовательная) Реализация с использованием Пролога
Предварительное условие – Пролог | Введение
Обзор :
Цифровые схемы или цифровая электроника — это отрасль электроники, которая имеет дело с цифровыми сигналами для выполнения различных задач для удовлетворения различных требований. Входной сигнал, применяемый к этим схемам, имеет цифровую форму, которая представлена в двоичном формате 0 и 1. Эти схемы разработаны с использованием логических вентилей, таких как вентили И, ИЛИ, НЕ, НЕНАД, ИЛИ, исключающее ИЛИ, которые выполняют логические операции. Это представление помогает схеме переключаться из одного состояния в другое для обеспечения точного вывода. Системы с цифровыми схемами в основном предназначены для преодоления недостатков аналоговых систем, которые работают медленнее, а полученные выходные данные могут содержать ошибку. Существует два типа цифровых схем: комбинационная схема и последовательная схема.
Реализация с использованием Пролога:
Пролог — логический и декларативный язык программирования. Само название, Prolog, является сокращением от Programming in Logic.
Пример :
Здесь возникает вопрос, как изобразить схему в коде пролога. Рассмотрим следующую принципиальную схему.
На принципиальной схеме есть 3 входа: A, B и C. Мы рассмотрим и передаем приведенную выше принципиальную схему как код пролога в следующей строке кода следующим образом.
circuit1(A,B,C,Q,R):- not(A,T1), and(A,B,T2), nand(T1,T2,T3), xnor(T3,C,T4), dff(T4,Q,R).
Описание :
Здесь Q и R — выходные переменные. T1-T4 — значения экземпляра или выходы промежуточных ворот. Используемые логические элементы: НЕ, И, НЕ-И и XNOR. Имеется один D-FLIP FLOP и 2 выхода Q и Q'. Мы будем рассматривать таблицы истинности как факты, а принципиальную схему как правила в прологе, как написано в следующем коде.
Примечание -
В следующем коде таблицы истинности написаны для g-prolog. В swi-prolog таблицы истинности предопределены.
Реализация кода:
Здесь мы реализуем логику и напишем код на прологе.
Шаг 1 :
Здесь мы реализуем таблицы истинности всех логических вентилей для двух входов A и B.
% Made by - Maninder kaur % Following are the truth tables of all logic gates for 2 inputs A and B. and(0,0,0). and(0,1,0). and(1,0,0). and(1,1,1). or(0,0,0). or(0,1,1). or(1,0,1). or(1,1,1). not(0,1). not(1,0). nand(0,0,1). nand(0,1,1). nand(1,0,1). nand(1,1,0). nor(0,0,1). nor(0,1,0). nor(1,0,0). nor(1,1,0). xor(0,0,0). xor(0,1,1). xor(1,0,1). xor(1,1,0). xnor(0,0,1). xnor(0,1,0). xnor(1,0,0). xnor(1,1,1).
Шаг 2 :
Здесь мы реализуем таблицы истинности OR GATE для 4 входов A, B, C и D.
% Following is the truth tables of OR GATE for 4 inputs A ,B ,C and D. % (Used in 8X3 Encoder) or4(0,0,0,0,0). or4(0,0,0,1,1). or4(0,0,1,0,1). or4(0,0,1,1,1). or4(0,1,0,0,1). or4(0,1,0,1,1). or4(0,1,1,0,1). or4(0,1,1,1,1). or4(1,0,0,0,1). or4(1,0,0,1,1). or4(1,0,1,0,1). or4(1,0,1,1,1). or4(1,1,0,0,1). or4(1,1,0,1,1). or4(1,1,1,0,1). or4(1,1,1,1,1).
Шаг 3 :
Здесь мы реализуем половинный сумматор.
% HALF ADDER :- % INPUT VARIABLES - A,B,C % OUTPUT VARIABLES - S ,Ca(Sum and Carry) half_adder(A,B,S,Ca):- xor(A,B,S), and(A,B,Ca).
Шаг-4:
Здесь мы реализуем полный сумматор.
%FULL ADDER :- %INPUT VARIABLES - A,B,C %OUTPUT VARIABLES - S ,Ca (Sum and Carry) full_adder(A,B,C,S,Ca):- xor(A,B,T1), xor(C,T1,S), and(T1,C,T2), and(A,B,T3), or(T3,T2,Ca).
Шаг-5:
Здесь мы реализуем половинный вычитатель.
% HALF SUBTRACTOR :- % INPUT VARIABLES - A,B % OUTPUT VARIABLES - D ,BO (Difference and borrow) half_sub(A,B,D,BO):- xor(A,B,D), not(A,T1), and(B,T1,BO).
Шаг-6:
Здесь мы реализуем полный вычитатель.
% FULL SUBTRACTOR :- % INPUT VARIABLES - A,B % OUTPUT VARIABLES - D ,BO (Difference and borrow) full_sub(A,B,BI,D,BO) :- xor(A,B,T1), xor(T1,BI,D), not(T1,T2), not(A,T3), nand(T2,BI,T4), nand(T3,B,T5), nand(T4,T5,BO).
Шаг-7:
Теперь мы реализуем ДЕКОДЕР 2 × 4.
% 2 X 4 DECODER % INPUT VARIABLES - A,B % OUTPUT VARIABLES - D0,D1,D2,D3 decoder_2x4(A,B,D0,D1,D2,D3):- not(A,A_0), not(B,B_0), and(A_0,B_0,D0), and(A_0,B,D1), and(A,B_0,D2), and(A,B,D3).
Шаг 8:
Теперь мы реализуем ДЕКОДЕР 3 × 8.
% 3 X 8 ENCODER % OUTPUT VARIABLES - A,B % INPUT VARIABLES - D0,D1,D2,D3,D4,D5,D6,D7 encoder_8x3(_,D1,D2,D3,D4,D5,D6,D7,A,B,C):- or4(D1,D3,D5,D7,A), or4(D2,D3,D6,D7,B), or4(D4,D5,D6,D7,C).
Шаг-9:
Теперь мы реализуем МУЛЬТИПЛЕКСОР 2 X 1.
% 2 X 1 MULTIPLEXER % INPUT VARIABLES - A,B,S (Selector) % OUTPUT VARIABLES - Z mux_2x1(A,B,S,Z):- not(S,S1), and(A,S1,I0), and(B,S,I1), or(I0,I1,Z).
Шаг-10:
Теперь мы реализуем демультиплексор 1 × 2.
% 1 X 2 DEMULTIPLEXER % INPUT VARIABLES - I (Input) ,S (Selector) % OUTPUT VARIABLES - A,B demux_1x2(I,S,A,B):- not(S,S_0), and(I,S_0,A), and(I,S,B).
Шаг 11:
Теперь мы реализуем демультиплексор 1 × 4.
% 1 X 4 DEMULTIPLEXER % INPUT VARIABLES - I (Input) ,S0 and S1(Selectors) % OUTPUT VARIABLES - A,B,C,D demux_1x4(I,S0,S1,A,B,C,D):- decoder_2x4(S0,S1,T0,T1,T2,T3), and(I,T0,A), and(I,T1,B), and(I,T2,C), and(I,T3,D).
Шаг 12:
Теперь мы реализуем D FLIP FLOP.
% D FLIP FLOP TRUTH TABLE dff(0,0,1). dff(1,1,0).
Шаг 13:
Теперь мы реализуем код схемы.
% CIRCUITS circuit1(A,B,C,Q,R):- not(A,T1), and(A,B,T2), nand(T1,T2,T3), xnor(T3,C,T4), dff(T4,Q,R).
Выход :