基于Verilog HDL的数字秒表
生活随笔
收集整理的這篇文章主要介紹了
基于Verilog HDL的数字秒表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 代碼
- 結果
工具:quartus18.1 lite
代碼
module biao_v(clk,reset,pause,msh,msl,sh,sl,minh,minl);//其中msh為百分秒的十位,msl為百分秒的個位,sh為秒的十位,sl為秒的個位,minh為分的十位,minl為分的個位input clk,reset,pause;//時鐘,復位,暫停output [3:0] msh,msl,sh,sl,minh,minl;//輸出reg [3:0] msh,msl,sh,sl,minh,minl;//寄存器reg count1,count2;//寄存器//設置百分秒always @(posedge clk or posedge reset)//時鐘上升沿或復位上升沿beginif(reset)//信號為復位時begin{msh,msl}<=0;//百分秒十位和百分秒個位賦0count1<=0;//寄存器count1賦0endelse if(!pause)//信號不是復位不是暫停時beginif(msl==9)//如果百分秒個位為9beginmsl<=0;//百分秒個位賦0if(msh==9)//如果百分秒十位為9beginmsh<=0;//百分秒十位賦0count1<=1;//寄存器count1賦1endelse//如果百分秒十位不為9msh<=msh+1;//百分秒十位加1endelse//如果百分秒個位不為9begin msl<=msl+1;//百分秒個位加1count1<=0;//寄存器coount1賦0endendend//設置秒always @(posedge count1 or posedge reset)//信號為寄存器count1上升沿或復位上升沿時beginif(reset)//信號為復位begin{sh,sl}<=0;//秒的十位和個位賦0count2<=0;//寄存器count2賦0endelse if(sl==9)//秒的個位為9beginsl<=0;//秒個位賦0if(sh==5)//秒十位為5beginsh<=0;//秒十位賦0count2<=1;//寄存器count2賦1endelse //秒十位不為5sh<=sh+1;//秒十位加1endelse//秒個位不為9beginsl<=sl+1;//秒個位加1count2<=0;//寄存器count2賦0endend//設置分always@(posedge count2 or posedge reset)//寄存器count2上升沿或復位上升沿beginif(reset)//信號為復位beginminh<=0;//分十位賦0minl<=0;//分個位賦0endelse if(minl==9)//信號為分個位為9beginminl<=0;//分個位賦0if(minh==5)//分十位為5minh<=0;//分十位賦0else//分十位不為5minh<=minh+1;//分十位加1endelse//分個位不為9也不是復位minl<=minl+1;//分個位加1endendmodule結果
從功能仿真結果可以看到,只有百分秒十位個位發生了變化
事實上我自己對這個程序一知半解的,不太了解具體的原理
參考:https://blog.csdn.net/qq_43643118/article/details/117031719
總結
以上是生活随笔為你收集整理的基于Verilog HDL的数字秒表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电路板上的这些标志你都知道是什么含义吗?
- 下一篇: PPS参数集