Verillog学习笔记——电子钟

///Verillog学习笔记——电子钟

Verillog学习笔记——电子钟

好久不见,我又回来开新坑了。

这学期开始接触数电了,感觉比模电好玩多了,而且因为数电极强的逻辑性以及又fpga这种可编程器件的存在,所以我觉得数电比模电更容易上手,而事实也是现在数电的发展远比模电强大。

闲话不多说,接下来我来介绍一下我设计的电子钟模块,它通过输入一个1Hz的时钟信号来达到计秒的功能,并且具有校准时、分、秒以及清零的功能。具体的实现方法是在内部设置了两套存储器,一套用于存储时钟信号计算的秒数,另一套用于存储用户自定义的校准时间,然后将两套存储相加即可输出最后的时分秒信号。

原理非常简单,算是我学习Verillog以来做的第一个模块了吧,接下来贴出代码:

module clock(
    input clk,h_ad,m_ad,s_ad,res,
    output reg[5:0]h,
    output reg[5:0]m,
    output reg[5:0]s
    );
    reg[5:0]h1;
    reg[5:0]m1;
    reg[5:0]s1;
    reg[5:0]h2;
    reg[5:0]m2;
    reg[5:0]s2;
    reg[6:0]m_tmp;
    initial begin
        h=0;
        m=0;
        s=0;
        h1=0;
        h2=0;
        m1=0;
        m2=0;
        s1=0;
        s2=0;
    end
    always @(posedge clk,negedge res)begin
        s1=s1+1;
        if(s1==60)begin
            s1=0;
            m1=m1+1;
        end
        if(m1==60)begin
            m1=0;
            h1=h1+1;
        end
        if(h1==24)
            h1=0;
        if(!res)begin
            s1=0;
            m1=0;
            h1=0;
        end
    end
    always @(h_ad,m_ad,s_ad,res)begin
        if(h_ad)
            h2=h2+1;
        if(m_ad)begin
            m2=m2+1;
            if(m2==60)begin
                m2=0;
                h2=h2+1;
             end
         end
         if(h2==24)
            h2=0;
         if(s_ad)begin
            s2=s1;
         end
         if(!res)begin
             s2=0;
             m2=0;
             h2=0;
         end
    end
    always @(h1,h2,m1,m2,s1,s2)begin
        h=h1+h2;
        m_tmp=m1+m2;
        if(s1>=s2)
            s=s1-s2;
        else begin
            s=s1+60-s2;
            if(m_tmp==0)begin
                h=h-1;
                m_tmp=59;
            end
            else
                m_tmp=m_tmp-1;
        end
        if(m_tmp>=60)begin
            m_tmp=m_tmp-60;
            h=h+1;
        end
        m=m_tmp[5:0];
        if(h>=24)
            h=h-24;
    end
endmodule
发布者 | 2019-09-24T21:44:39+08:00 九月 24th, 2019|verillog, 学习笔记|0条评论

关于作者

坚强大概——并不是指的的结果,而是迈向某个目标的过程吧。

发表评论

博客作者

坚强大概——并不是指的的结果,而是迈向某个目标的过程吧。

标签云

博客统计

  • 4,154 点击次数
召唤伊斯特瓦尔