В алгебре логики известны три основные логические операции:
Логическое умножение (конъюнкция или операция И). Записывается как F = A Λ B, F = A & B, F = A·B, F = AB, читается – A и B.
Логическое сложение (дизъюнкция или операция ИЛИ). Записывается как F = A V B, F = A | B, F = A+B, читается – F = A или B.
Логическое отрицание (инверсия или операция НЕ). Записывается F = A , читается – F = “не” A.
Слайд:Таблица истинности логических элементов
Аргументы
Логические операции (булевы функции)
А
В
И
ИЛИ
НЕ
A·B
A+B
A
B
0
0
0
0
1
1
0
1
0
1
1
0
1
0
0
1
0
1
1
1
1
1
0
0
Операторы VHDL
A and B
A or B
not A
not B
Комментарий
Таким образом, выполнение сколь угодно сложной логической операции может быть сведено к трем вышеперечисленным операциям. Следовательно, имея некоторые технические устройства, реализующие операции И, ИЛИ, НЕ, можно построить сколь угодно сложное цифровое устройство. Такие устройства называются соответственно логическими элементами И, ИЛИ, НЕ (рис. 2) и образуют основной базис или функционально полную систему логических элементов.
комбинационная схема, преобразующее n-разрядный двоичныйв -ичный одноединичный (позиционный) код
Слайд:Дешифратор (VHDL модель)
entity dc isport(
x :instd_logic_vector(2downto0);
y :outstd_logic_vector(7downto0));end dc;architecture beh of dc isbegin
y <="00000001"when x ="000"else"00000010"when x ="001"else"00000100"when x ="010"else"00001000"when x ="011"else"00010000"when x ="100"else"00100000"when x ="101"else"01000000"when x ="110"else"10000000"when x ="111"else"00000000";end beh;
entity cd isport(
x :instd_logic_vector(7downto0);
y :outstd_logic_vector(2downto0));end dc;architecture beh1 of cd isbegin
y <="000"when x(0)="1"else"001"when x(1)="1"else"010"when x(2)="1"else"011"when x(3)="1"else"100"when x(4)="1"else"101"when x(5)="1"else"110"when x(6)="1"else"111"when x(7)="1"else"000";end beh1;
entity cd isport(
x :instd_logic_vector(7downto0);
y :outstd_logic_vector(2downto0));end dc;architecture beh2 of cd isbegin
y(0)<= x(1)or x(3)or x(5)or x(7);
y(1)<= x(2)or x(3)or x(6)or x(7);
y(2)<= x(4)or x(5)or x(6)or x(7);end beh2;
комбинационная схема, которая передает сигнал с одного из информационных входов Xi на единственный выход Y, причем номер выбираемого входа задается с помощью управляющих сигналов (адресных входов ai).
y = OE(x0*~a1*~a0 + x1*~a1*a0 + x2*a1*~a0 + x3*a1*a0)
Слайд:Мультиплексор (Схема)
Слайд:Мультиплексор (VHDL модель)
entity mux isport(
x :instd_logic_vector(3downto0);
a :instd_logic_vector(1downto0);
y :outstd_logic);end mux;architecture beh of mux isbegin
y <=
x(0)when a ="00"else
x(1)when a ="01"else
x(2)when a ="10"else
x(3)when a ="11"else
'0';end beh;
Слайд:Мультиплексор (Особенность)
с помощью мультиплексора можно реализовать любую логическую функцию
комбинационная схема, которая выполняет функцию, обратную мультиплексору, т.е. в соответствии с принятой адресацией Ai направляет информацию с единственного входа D на один из M выходов Fj. При этом на остальных выходах будут логические нули (единицы).
Входы
Выходы
A1
A0
F3
F2
F1
F0
0
0
0
0
0
D
0
1
0
0
D
0
1
0
0
D
0
0
1
1
D
0
0
0
Слайд: Демультиплексор (Схема)
Слайд: Демультиплексор (VHDL модель)
entity dms isport(
x :instd_logic;
a :instd_logic_vector(1downto0);
y :outstd_logic_vector(3downto0));end dms;architecture beh of dms isbegin
y <="000"& x when a ="00"else"00"& x & '0' when a ="01"else
'0' & x &"00"when a ="10"else
x &"000"when a ="11"else"0000";end beh;