HDLBits (106) — 12小時時鐘
本題鏈接:
https://hdlbits.01xz.net/wiki/Count_clock
創(chuàng)建一組適合用作12小時時鐘的計數(shù)器(帶有am/pm指示器)。你的計數(shù)器由一個快速運行的時鐘來計時,每當(dāng)你的時鐘增加時(即每秒一次),ena就會有一個脈沖。
reset?將時鐘重置到12:00 AM。下午0時代表 AM,下午1時代表 PM。Hh、 mm 和 ss 分別是小時(01-12)、分鐘(00-59)和秒(00-59)的 BCD (二進(jìn)制編碼十進(jìn)制)數(shù)字。復(fù)位的優(yōu)先級高于使能,并且即使在未啟用時也會發(fā)生復(fù)位。
以下時序圖顯示了從11:59:59 AM至12:00:00 PM和同步復(fù)位和啟用行為的翻轉(zhuǎn)行為。


題目
提示:
請注意,11:59:59 PM接著是到12:00:00 AM,12:59:59 PM接著是到01:00:00 PM。沒有00:00:00。

答案

輸出波形





為確保系統(tǒng)上電后有一個明確、穩(wěn)定的初始狀態(tài),或系統(tǒng)運行狀態(tài)紊亂時可以恢復(fù)到正常的初始狀態(tài),數(shù)字系統(tǒng)設(shè)計中一定要有復(fù)位電路模塊。復(fù)位電路異??赡軙?dǎo)致整個系統(tǒng)的功能異常,所以在一定程度上,復(fù)位電路的重要性也不亞于時鐘電路。
復(fù)位電路可分類為同步復(fù)位和異步復(fù)位。
同步復(fù)位
同步復(fù)位是指復(fù)位信號在時鐘有效邊沿到來時有效。如果沒有時鐘,無論復(fù)位信號怎樣變化,電路也不執(zhí)行復(fù)位操作。
同步復(fù)位常常會被綜合成如下電路:

同步復(fù)位的優(yōu)點:信號間是同步的,能濾除復(fù)位信號中的毛刺,有利于時序分析。
同步復(fù)位的缺點:大多數(shù)觸發(fā)器單元是沒有同步復(fù)位端的,采用同步復(fù)位會多消耗部分邏輯資源。且復(fù)位信號的寬度必須大于一個時鐘周期,否則可能會漏掉復(fù)位信號。
異步復(fù)位
異步復(fù)位是指無論時鐘到來與否,只要復(fù)位信號有效,電路就會執(zhí)行復(fù)位操作。
異步復(fù)位常常會被綜合成如下電路:

異步復(fù)位的優(yōu)點:大多數(shù)觸發(fā)器單元有異步復(fù)位端,不會占用額外的邏輯資源。且異步復(fù)位信號不經(jīng)過處理直接引用,設(shè)計相對簡單,信號識別快速方便。
異步復(fù)位的缺點:復(fù)位信號與時鐘信號無確定的時序關(guān)系,異步復(fù)位很容易引起時序上 removal 和 recovery 的不滿足。且異步復(fù)位容易受到毛刺的干擾,產(chǎn)生意外的復(fù)位操作。
參考內(nèi)容:
5.1 Verilog 復(fù)位簡介 | 菜鳥教程:
https://www.runoob.com/w3cnote/verilog2-reset.html