如何用verilog代码设计一个数字时钟
时间: 2023-12-04 15:03:55 浏览: 40
下面是一个简单的数字时钟的Verilog代码设计:
```
module Digital_Clock(
input wire clk, // 输入时钟信号
output reg [3:0] hour, // 输出小时数
output reg [3:0] minute, // 输出分钟数
output reg [3:0] second // 输出秒数
);
reg [3:0] hr = 0; // 定义小时数寄存器
reg [3:0] min = 0; // 定义分钟数寄存器
reg [3:0] sec = 0; // 定义秒数寄存器
always @(posedge clk) begin // 在时钟上升沿触发
sec <= sec + 1; // 秒数加1
if (sec == 10) begin // 如果秒数到10
sec <= 0; // 秒数清零
min <= min + 1; // 分钟数加1
if (min == 10) begin // 如果分钟数到10
min <= 0; // 分钟数清零
hr <= hr + 1; // 小时数加1
if (hr == 10) begin // 如果小时数到10
hr <= 0; // 小时数清零
end
end
end
end
assign second = sec; // 将秒数寄存器赋值给输出
assign minute = min; // 将分钟数寄存器赋值给输出
assign hour = hr; // 将小时数寄存器赋值给输出
endmodule
```
该代码模块有一个时钟输入信号和三个输出信号,分别为小时数、分钟数和秒数。在时钟的上升沿触发时,秒数加1,如果秒数到10则秒数清零,分钟数加1,如果分钟数到10则分钟数清零,小时数加1,如果小时数到10则小时数清零。最后将三个寄存器的值分别赋值给对应的输出信号。