Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Verilog

Verilog Asynchroner Ripple-Counter: Design & Implementierung

Ein Ripple-Counter ist ein asynchroner Zähler, bei dem alle Flipflops außer dem ersten durch den Ausgang des vorherigen Flipflops getaktet werden.

Design

module dff (
  input d,
  input clk,
  input 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,
  input rstn,
  output [3:0] out
);
  wire q0, qn0;
  wire q1, qn1;
  wire q2, qn2;
  wire 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

Hardware-Schaltplan

Testbench

module tb_ripple;
  reg clk;
  reg 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 meistern: Komplettes Tutorial für digitales Schaltungsdesign
  2. Verilog Concatenation meistern: Praktischer Leitfaden
  3. Verilog Assignments verstehen: Typen, Syntax und Best Practices
  4. Verilog Blocking vs. Non-Blocking: Wichtige Unterschiede erklärt
  5. Verilog Functions meistern für effizientes RTL-Design
  6. Verilog Tasks verstehen: Functions vs. Tasks, Syntax und Verwendung
  7. Verilog Clock Generator: Design & Implementierungsleitfaden
  8. Verilog Math Functions meistern für effizientes Hardware-Design
  9. Verilog $timeformat meistern: Präzision und Anzeigesteuerung
  10. Verilog Mod-N Counter Design: Parameterisiertes Modul & Testbench