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

Асинхронный рипл-счётчик на Verilog: проектирование и реализация

Рипл-счётчик (asynchronous ripple counter) — асинхронный счётчик, где все триггеры, кроме первого, тактируются выходом предыдущего.

Проект

module dff (
  input  d, clk, rstn,
  output reg q,
  output qn
);
  always @(posedge clk or negedge rstn)
    if (!rstn) q <= 0;
    else       q <= d;
  assign qn = ~q;
endmodule

module ripple (
  input  clk, rstn,
  output [3:0] out
);
  wire q0, qn0, q1, qn1, q2, qn2, q3, qn3;

  dff dff0 (.d(qn0), .clk(clk),  .rstn(rstn), .q(q0),  .qn(qn0));
  dff dff1 (.d(qn1), .clk(q0),   .rstn(rstn), .q(q1),  .qn(qn1));
  dff dff2 (.d(qn2), .clk(q1),   .rstn(rstn), .q(q2),  .qn(qn2));
  dff dff3 (.d(qn3), .clk(q2),   .rstn(rstn), .q(q3),  .qn(qn3));

  assign out = {qn3, qn2, qn1, qn0};
endmodule

Аппаратная схема

Тестбенч

module tb_ripple;
  reg clk, rstn;
  wire [3:0] out;

  ripple r0 (.clk(clk), .rstn(rstn), .out(out));

  always #5 clk = ~clk;

  initial begin
    rstn <= 0; clk <= 0;
    repeat (4) @(posedge clk);
    rstn <= 1;
    repeat (25) @(posedge clk);
    $finish;
  end
endmodule

Verilog

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