一:紋波計數器
1:紋波計數器的面積最小,易於結構化實現。這種計數器的觸發器是前一級輸出數據的邊沿作為時鍾來驅動。前一級的輸出連在后一級的時鍾端,每當時鍾的輸入端口的數據產生了上升沿,輸出就會翻轉。這個計數器必須從一個確定的狀態開始工作,這要求我們要對它復位,否則,計數器的翻轉則沒有意義。3比特的紋波計數器如下圖所示,輸出位Q[0],Q[1],Q[2](圖中未標出)
2:代碼(4bit紋波計數器)
vcs dump的波形
可見,毛刺很大;這是因為紋波計數器中高階觸發器沒有時鍾,只有等到低階觸發器的輸出變化后才能變化,所以當計數器的位寬增大時,這是個線性漸慢器件。在每個時鍾上升沿之后,觸發器的輸出端會出現很多毛刺。然而,各階的進位不會立刻由時鍾傳輸下去,因此和同步計數器相比,功耗和噪聲都減小了。
改進:慢一拍輸出,使用鎖存器將輸出鎖存一拍,再輸出
vcs dump的波形
可見,減少了毛刺,計數正常。
二:同步(超前進位)計數器
1:這類計數器增加了超前進位邏輯,在每個時鍾有效沿對所有寄存器比特進行更新。
同步計數器偶爾會產生極大的瞬時功率,而這種尖峰功率會生成噪聲。
如下圖,每個寄存單元的輸入端口都是由1比特加法器(異或門)驅動;做設計的時候也應該遵循這個原則,組合邏輯后應該跟上寄存器以保證電路的時序。
時鍾連在每個觸發器的時鍾端上,前面寄存器輸出Q'端進行或操作,然后用異或門進行隔離,直到進位溢出該比特。
2:代碼(4bit同步計數器)
vcs dump波形
三:行為級計數器
1:4bit行為級計數器代碼
vcs dump波形
四:使用pll時鍾,將以上三個計數器放在一起,看計數快慢
頂層文件代碼
dump 波形
可見,同步計數器計數最慢