AND OR NOT Gates
Часть раздела Основы путешествия по Verilog на Coddy. Урок 40 из 90.
В этом уроке рассматриваются три наиболее базовых логических вентиля: AND, OR и NOT. Эти вентили составляют основу проектирования цифровой логики.
Логический элемент AND
Логический элемент AND выдаёт 1 только тогда, когда все входы равны 1.
Таблица истинности (2 входа):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Примитив логического элемента Verilog:
and(out, a, b);Эквивалентное непрерывное присваивание:
assign out = a & b;Логический элемент OR
Логический элемент OR выдаёт 1, когда по крайней мере один вход равен 1.
Таблица истинности (2 входа):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
Примитив логического элемента Verilog:
or(out, a, b);Эквивалентное непрерывное присваивание:
assign out = a | b;Логический элемент NOT
Логический элемент NOT выдаёт противоположное значение своего единственного входа. Его также называют inverter.
Таблица истинности:
| a | out |
|---|---|
| 0 | 1 |
| 1 | 0 |
Примитив логического элемента Verilog:
not(out, a);Эквивалентное непрерывное присваивание:
assign out = ~a;Несколько входов
Логические элементы AND и OR могут иметь более 2 входов:
and(out, a, b, c); // 3-входовый AND (out = a & b & c)
or(out, x, y, z, w); // 4-входовый ORЭлементы NOT всегда имеют ровно 1 вход.
Пример кода
module and_or_not (
input a, b,
output and_out,
output or_out,
output not_out
);
and(and_out, a, b); // вентиль И
or(or_out, a, b); // вентиль ИЛИ
not(not_out, a); // вентиль НЕ (инвертор)
endmoduleЗадание
Добавьте отсутствующие примитивы логических вентилей согласно заданиям.
Что нужно сделать:
- Создайте вентиль AND с выходом
and_resultи входамиpиq - Создайте вентиль OR с выходом
or_resultи входамиpиq - Создайте вентиль NOT с выходом
not_resultи входомp
Попробуйте сами
module gates_challenge (
input p,
input q,
output and_result,
output or_result,
output not_result
);
// TODO: Добавь вентиль AND (and_result = p & q)
// TODO: Добавь вентиль OR (or_result = p | q)
// TODO: Добавь вентиль NOT (not_result = ~p)
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog