HDLBits中的12-hour clock count clock 12小时制时钟
原题链接: https://hdlbits.01xz.net/wiki/Count_clock
实现一个12小时制的时钟,reset:同步复位,高电平有效;ena:使能计时;pm:指示上午下午;hh(小时)mm(分钟)ss(秒) 均使用BCD码编码(8bit),因此不能简单的加1,这里分高4位和低4位分别操作。注意:11:59:59 PM 下一时刻为12:00:00 AM, 12:59:59 PM 下一时刻为 01:00:00 PM. 没有00:00:00(本题的难点)。
知乎中有该题答案,但本人感觉代码较乱,没仔细研究https://zhuanlan.zhihu.com/p/64645186(该作者也给出了其他题目的解答,可参考)本人使用了大道至简中的计数器架构思路,结构清晰可能更加好理解,下面贴代码参考。
module top_module(
input clk,
input reset,
input ena,
output reg pm,
output reg [7:0] hh,
output reg [7:0] mm,
output reg [7:0] ss);
wire ss1_add