В алгебре логики известны три основные логические операции:
Логическое умножение (конъюнкция или операция И). Записывается как 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;