HDLBits练习-12小时时钟

前言

        最近在用HDLBits开始学习verilog,做了一百道出头的题了,遇到这个12小时时钟的题比较有意思,题目地址是https://hdlbits.01xz.net/wiki/Count_clock。看了好几个答案,没有用层次化思维写的,都是一个模块大量的分支语句和always块直接堆完,菜鸡如我看答案都费劲,于是贴一个自己写的。比较高大上地用了层次化建模的思想,这样思路梳理起来个人觉得比较方便。

分析

        分和秒的计数用的是同一个模块,0-59的六十进制的计数器,不过需要注意题目要求用一个8bit数的高4位表示十位,低4位表示个位。

        小时单独写一个模块,1-12的十二进制计数器,需要考虑复位、进位、循环的问题。

        顶层模块的部分就很简单了,例化2次六十进制计数器,例化1次十二进制计数器,然后连起来就行了。

//顶层模块
module top_module(
    input clk,
    input reset,
    input ena,
    output pm,
    output [7:0] hh,
    output [7:0] mm,
    output [7:0] ss
); 
        wire [1:0] ena_t;
        
        mod_c60 mod_ss(clk, reset, ena, ss, ena_t[0]);
        mod_c60 mod_mm(clk, reset, ena_t[0

你可能感兴趣的:(verilog,fpga开发)