跳到主要内容

8.12小时时钟

创建一套适合作为12小时时钟(带有AM/PM指示)的计数器。你的计数器由一个快速运行的clk时钟驱动,并在时钟应该递增时(即,每秒一次)在ena上产生一个脉冲。

reset将时钟重置为12:00 AM。pm标志位为0表示AM,为1表示PM。hh、mm和ss分别是两位BCD(二进制编码的十进制)数字,分别表示小时(01-12)、分钟(00-59)和秒(00-59)。复位的优先级高于使能,即使在未使能状态下也能发生复位。

以下时序图展示了从11:59:59 AM滚转到12:00:00 PM的滚动行为,以及同步复位和使能的行为。

alt text

模块声明

module top_module(
input clk,
input reset,
input ena,
output pm,
output [7:0] hh,
output [7:0] mm,
output [7:0] ss);

做题区