以下是一个满足您要求的 Verilog 代码示例:

module counter (
  input wire clk,
  input wire rst,
  output wire [7:0] cnt,
  output wire out
);

  reg [7:0] count;
  
  always @(posedge clk or posedge rst) begin
    if (rst)
      count <= 8'b0; // 重置计数器为 0
    else if (count >= 8'd159)
      count <= 8'b0; // 计数达到 159 后重置为 0
    else
      count <= count + 1; // 计数器递增
    
    if ((count >= 10 && count <= 12) || (count >= 60 && count <= 80) || (count >= 120 && count <= 159))
      out <= 1'b1; // 在指定范围内拉高输出
    else
      out <= 1'b0; // 在其他范围内拉低输出
  end
  
  assign cnt = count; // 输出计数值

endmodule

上述代码中,计数器 'count' 是一个 8 位寄存器,用于保存计数值。当 'rst' 为高电平时,计数器被重置为 0。每个时钟上升沿,计数器递增 1。当计数值在指定的范围内时,'out' 被拉高,否则被拉低。'cnt' 输出当前计数值。

Verilog 计数器实现 10-12,60-80,120-159 范围拉高输出

原文地址: https://www.cveoy.top/t/topic/pjIk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录