Skip to content

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