1. 程式人生 > >verilog學習(11)實戰之計數器

verilog學習(11)實戰之計數器

ril 輸入 異或 寄存器 [1] 噪聲 沒有 狀態 image

一:紋波計數器

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時鐘,將以上三個計數器放在一起,看計數快慢

  技術分享圖片

verilog學習(11)實戰之計數器