数字电子时钟verilog
时间: 2023-09-22 21:08:09 浏览: 40
下面是一个简单的数字电子时钟的 Verilog 实现:
```verilog
module digital_clock(
input clk, // 时钟信号
output reg [3:0] hour, // 小时数码管输出
output reg [3:0] minute, // 分钟数码管输出
output reg [3:0] second // 秒数码管输出
);
reg [3:0] h_reg = 4'h0; // 小时数码管寄存器
reg [3:0] m_reg = 4'h0; // 分钟数码管寄存器
reg [3:0] s_reg = 4'h0; // 秒数码管寄存器
always @(posedge clk) begin
s_reg <= s_reg + 1; // 每秒加 1
if (s_reg == 60) begin
s_reg <= 4'h0;
m_reg <= m_reg + 1; // 每分钟加 1
if (m_reg == 60) begin
m_reg <= 4'h0;
h_reg <= h_reg + 1; // 每小时加 1
if (h_reg == 24) begin
h_reg <= 4'h0; // 从 0 开始
end
end
end
end
assign second = s_reg;
assign minute = m_reg;
assign hour = h_reg;
endmodule
```
该模块有一个时钟信号作为输入,以及三个 4 位数码管输出,分别表示小时、分钟和秒。在时钟上升沿触发的 always 块中,秒数码管寄存器每秒加 1,当秒数码管寄存器达到 60 时,将其清零并使分钟数码管寄存器加 1,以此类推。最后,将寄存器值分配给对应的输出信号。