二刷HDLBits发现自己可以独立做出这道题,来分享一下自己的解法。
这道题主要难点就是计数器的十位和个位需要分开计数,如果直接按照八位一起计数就会产生十六进制的结果。
module top_module(
input clk,
input reset,
input ena,
output pm,
output [7:0] hh,
output [7:0] mm,
output [7:0] ss);
wire [2:0]num2;
assign num2[0] = ena;
assign num2[1] = (ss[7:4] == 4'd5) && (ss[3:0] == 4'd9) && ena;
assign num2[2] = (mm[7:4] == 4'd5 && mm[3:0] == 4'd9) && (ss[7:4] == 4'd5 && ss[3:0] == 4'd9) && ena;
always @ (posedge clk)begin
if(reset)begin
pm <= 1'b0;
hh[7:4] <= 4'd1;
hh[3:0] <= 4'd2;
end
else if(num2[2])begin
if(hh[7:4]