亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
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, 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; 
  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 入门:数字电路设计完整教程
  3. 掌握 Verilog 拼接操作:实用指南
  4. 深入理解 Verilog 赋值语句:类型、语法与最佳实践
  5. Verilog阻塞与非阻塞赋值:关键区别详解
  6. 掌握Verilog函数:高效RTL设计的复用利器
  7. 理解Verilog任务:函数vs任务、语法与用法全解析
  8. Verilog 时钟发生器设计与实现指南
  9. 掌握 Verilog 数学函数:高效硬件设计的利器
  10. 掌握 Verilog $timeformat:精度控制与显示格式化
  11. Verilog 模 N 计数器设计:参数化模块与测试平台
  12. Verilog 格雷码计数器模块:4 位格雷码生成器