Count clock

From HDLBits

countbcdPrevious
Nextshift4

Create a set of counters suitable for use as a 12-hour clock (with am/pm indicator). Your counters are clocked by a fast-running clk, with a pulse on ena whenever your clock should increment (i.e., once per second).

reset resets the clock to 12:00 AM. pm is 0 for AM and 1 for PM. hh, mm, and ss are two BCD (Binary-Coded Decimal) digits each for hours (01-12), minutes (00-59), and seconds (00-59). Reset has higher priority than enable, and can occur even when not enabled.

The following timing diagram shows the rollover behaviour from 11:59:59 AM to 12:00:00 PM and the synchronous reset and enable behaviour.

clkresetenapmhh[7:0]8'h118'h12mm[7:0]8'h598'h00ss[7:0]8'h578'h588'h598'h008'h018'h008'h018'h02

Module Declaration

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

Note that 11:59:59 PM advances to 12:00:00 AM, and 12:59:59 PM advances to 01:00:00 PM. There is no 00:00:00.

Write your solution here

x
 
1
module top_module(
2
    input clk,
3
    input reset,
4
    input ena,
5
    output pm,
6
    output [7:0] hh,
7
    output [7:0] mm,
8
    output [7:0] ss); 
9
10
endmodule
11
Upload a source file...