-
Notifications
You must be signed in to change notification settings - Fork 6
Clock в Verilog (Симуляция)
VeryNiceGuy edited this page Oct 4, 2016
·
3 revisions
Предположим, нам нужен Clock с частотой 100МГц, чтобы его реализовать нам понадобится 1 битовая переменная и ключевые слова initial и always:
reg clock;
// Блокирующее присваивание (blocking assignment)
initial clock = 0;
always #5 clock = ~clock;
// Неблокирующее присваивание (non-blocking assignment)
initial clock <= 0;
always #5 clock <= ~clock;
Период для частоты в 100МГц равен 10нс, поэтому задержку выставляем в 5нс. (1000000000нс/100000000Гц=10нс)
Тильда “~” в выражениях выше это оператор побитовое НЕ (bitwise NOT).
Уравнение для расчета частоты: f = 1/T
Уравнение для расчета периода: T = 1/f
f – частота, T – период, 1 - секунда
Пример testbench модуля:
module test_tb;
reg clock;
test t(.clock);
initial clock <= 0;
always #5 clock <= ~clock;
endmodule
Пример модуля:
module test(input wire clock);
always @ (posedge clock) begin
// Что-нибудь делаем...
end
endmodule