산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 비동기 리플 카운터 설계 및 구현

리플 카운터는 첫 번째를 제외한 모든 플롭이 앞선 플롭의 출력으로 클럭되는 비동기 카운터입니다.

설계

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

하드웨어 회로도

테스트벤치

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) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  2. Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드
  3. Verilog 할당문 이해: 유형, 문법, 모범 사례
  4. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  5. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  6. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  7. Verilog 클럭 생성기: 설계 및 구현 가이드
  8. Verilog 수학 함수 마스터하기: 효율적인 하드웨어 설계를 위한 활용
  9. Verilog $timeformat 마스터하기: 정밀도 및 표시 제어
  10. Verilog Mod-N 카운터 설계: 파라미터화 모듈 및 테스트벤치