亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Verilog

4 位 Johnson 计数器 Verilog 实现:设计、测试平台与仿真

设计

module johnson_ctr #(parameter WIDTH=4) ( 
  input clk, 
  input 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) begin 
        out[i] <= out[i+1]; 
      end 
    end 
  end 
endmodule 

测试平台

module tb; 
  parameter WIDTH = 4; 
  reg clk; 
  reg rstn; 
  wire [WIDTH-1:0] out; 
  johnson_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 

仿真日志

ncsim> run
T=0 out=xxxx
T=10 out=0001
T=50 out=0000
T=70 out=1000
T=90 out=1100
T=110 out=1110
T=130 out=1111
T=150 out=0111
T=170 out=0011
T=190 out=0001
T=210 out=0000
T=230 out=1000
T=250 out=1100
T=270 out=1110
T=290 out=1111
T=310 out=0111
Simulation complete via $finish(1) at time 330 NS + 0

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 位格雷码生成器