给出一个Verilog示例程序
时间: 2025-01-05 20:39:45 浏览: 4
在Verilog语言中,一个基本的模块例子可以是一个计数器,它会连续增加直至达到设定的最大值。这是一个简单的异步二进制计数器的示例:
```verilog
module counter (
input wire clk, // 时钟信号
input wire reset, // 复位信号
input [3:0] enable, // 控制信号,允许计数从0开始
output reg [3:0] count // 输出当前计数值
);
always @(posedge clk or posedge reset) begin
if (reset) begin
count <= 4'b0; // 当复位时,计数器重置为0
end else if (enable == 4'b1000) begin // 当enable为全1时,计数开始
if (count < 4'b1111) begin // 当计数值小于最大时
count <= count + 1'b1; // 增加计数
end else begin
count <= 4'b0; // 计数溢出后重置
end
end
end
endmodule
```
在这个例子中,`counter`模块有四个输入端口和一个输出端口。时钟信号`clk`控制计数过程,`reset`用于清零计数器,`enable`是一个4位的输入控制计数器何时开始计数,`count`则是输出的当前计数值。每当时钟上升沿到来,或者复位信号变为高电平时,内部的always块会更新计数器状态。
阅读全文