Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Verilog

Кольцевой счётчик на Verilog: параметризованный модуль и тестбенч

Проект

module ring_ctr #(parameter WIDTH=4) (
  input  clk, rstn,
  output reg [WIDTH-1:0] out
);
  always @(posedge clk) begin
    if (!rstn) out <= 1;
    else begin
      out[WIDTH-1] <= out[0];
      for (int i = 0; i < WIDTH-1; i = i+1)
        out[i] <= out[i+1];
    end
  end
endmodule

Тестбенч

module tb;
  parameter WIDTH = 4;
  reg clk, rstn;
  wire [WIDTH-1:0] out;

  ring_ctr u0 (.clk(clk), .rstn(rstn), .out(out));

  always #10 clk = ~clk;

  initial begin
    {clk, rstn} <= 0;
    $monitor("T=%0t out=%b", $time, out);
    repeat (2) @(posedge clk);
    rstn <= 1;
    repeat (15) @(posedge clk);
    $finish;
  end
endmodule

Результат симуляции

T=0   out=xxxx
T=10  out=0001
T=50  out=1000
T=70  out=0100
T=90  out=0010
T=110 out=0001
T=130 out=1000
T=150 out=0100
T=170 out=0010
T=190 out=0001
T=210 out=1000
T=230 out=0100
T=250 out=0010
T=270 out=0001
T=290 out=1000
T=310 out=0100
Simulation complete via $finish(1) at time 330 NS

Verilog

  1. Освоение Verilog: полное руководство по проектированию цифровых схем
  2. Освоение конкатенации в Verilog: практическое руководство
  3. Понимание назначений в Verilog: типы, синтаксис и лучшие практики
  4. Блокирующие и неблокирующие назначения в Verilog: ключевые различия
  5. Мастерство функций в Verilog для эффективного RTL дизайна
  6. Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
  7. Генератор тактового сигнала в Verilog: проектирование и реализация
  8. Мастерство математических функций Verilog для эффективного аппаратного дизайна
  9. Параметризованный Mod-N счётчик на Verilog: модуль и тестбенч
  10. Счётчик Грея на Verilog: 4-битный генератор кода Грея