本次给大家介绍一个非常有意思的Verilog编程题,题目描述如下图:
这道题主要考察了计数器相关的知识,对逻辑能力要求比较严格,解答如下:
module top_module(
input clk,
input reset,
input ena,
output pm,
output reg[7:0] hh,
output reg[7:0] mm,
output reg[7:0] ss);
always @(posedge clk)begin
if(reset)begin//复位,复位值12:00:00 AM
pm <= 1'b0;
hh <= 8'h12;
mm <= 8'h00;
ss <= 8'h00;
end
else if(ena) begin
if(ss < 8'h59)begin//秒计时
if(ss[3:0] < 4'h9)//每满10秒进1
ss[3:0] <= ss[3:0] + 1'b1;