用verilog设计一个计数器
时间: 2024-12-28 15:37:23 浏览: 16
在Verilog中设计一个简单的计数器通常会涉及使用`reg`数据类型和组合逻辑来实现。下面是一个基本的四进制同步二进制计数器的例子:
```verilog
module counter #(parameter WIDTH = 4) (
input wire clk, // 时钟输入
input wire reset, // 重置信号
output reg [WIDTH-1:0] count // 计数值输出
);
// 初始化计数器状态
reg [WIDTH-1:0] next_state;
always @(posedge clk or posedge reset) begin
if (reset) begin
count <= 0; // 当reset高电平时,清零计数器
next_state <= 0;
end else if (clk') begin
next_state = {count[WIDTH-2], count[WIDTH-3:0]+1}; // 时钟上升沿,计数加一
if (next_state == 2**WIDTH - 1) begin
next_state <= 0; // 如果溢出,循环回到开始
end else
count <= next_state; // 更新当前计数值
end
end
endmodule
```
这个模块使用了一个名为`next_state`的寄存器来保存每次时钟上升沿后的下一个状态,如果发生溢出,则将计数器状态复位到初始值。
阅读全文