Clock Generation
Часть раздела Основы путешествия по Verilog на Coddy. Урок 71 из 90.
Clock — это сигнал, который непрерывно переключается между 0 и 1 через равные интервалы. Clock необходим для такой последовательной логики, как триггеры и счётчики.
Зачем генерировать Clock
В тестовых стендах вам нужен Clock для тестирования последовательностных схем. Clock управляет поведением триггеров, регистров и конечных автоматов.
Методы генерации тактового сигнала
| Метод | Описание |
|---|---|
always с задержкой # | Наиболее распространённый метод |
Цикл forever | Альтернативный метод |
Цикл repeat | Для фиксированного числа cycles |
Метод 1: block always с задержкой
reg clk;
initial begin
clk = 0;
end
always #5 clk = ~clk;clk = 0в момент времени 0- Каждые 5 единиц времени
clkпереключается
- Period = 10 time units
- Частота = 1/10 = 0.1 за time unit
Метод 2: Цикл forever
reg clk;
initial begin
clk = 0;
forever begin
#5 clk = ~clk;
end
endТот же результат, что и у метода always.
Метод 3: повторение в течение фиксированного числа циклов
reg clk;
initial begin
clk = 0;
repeat (10) begin
#5 clk = ~clk;
end
endГенерирует ровно 10 тактовых переходов (5 полных циклов), затем останавливается.
Задание
Добавьте недостающий код, чтобы сгенерировать Clock, который переключается каждые 4 time units (период = 8 time units).
Что нужно сделать:
- Инициализируйте
clkзначением 0 в момент времени 0, используя блокinitial - Используйте блок
alwaysс задержкой, чтобы переключатьclkкаждые 4 time units
Попробуйте сами
module clock_challenge;
reg clk;
// TODO: Шаг 1 - Добавьте блок initial, чтобы установить clk = 0
// TODO: Шаг 2 - Добавьте блок always для переключения clk каждые 4 единицы времени
initial begin
$monitor("Time %0t: clk = %b", $time, clk);
#20;
$display("Clock generated for 20 time units");
$finish;
end
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 Design13Timing And Delays
What Are DelaysGate DelaysAssignment DelaysTimescale DirectiveClock GenerationRecap - Timing Control5Operators 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