FPGA系列9——鎖存器、觸發器和寄存器的區別

鎖存器(latch):電平觸發的存儲單元,數據存儲的動作(狀態轉換)取決於輸入鎖存信號的電平值,當鎖存信號有效時,輸出纔會隨着數據輸入發生變化;當鎖存信號無效時,輸出信號保持不變。下面列舉了SR和D鎖存器的功能表:

鎖存器特點:

  • 鎖存器在控制信號有效時,輸出信號等於輸入信號。 所以,輸入信號的任何變化, 都將直接引起鎖存器輸出狀態的改變。這時輸入信號若發生多次變化,輸出狀態也可能發生多次變化,這一現象稱爲鎖存器的空翻。
  • 鎖存器的控制信號有效時,鎖存器就變成了一個組合電路,時序邏輯電路的模型就等效爲兩個各組合電路互爲反饋的反饋系統,因此,系統有可能會因爲瞬態特性不穩定而產生振盪現象。

觸發器(flip-flop):邊沿敏感的存儲單元,數據存儲的動作(狀態轉換)由某一信號的上升或者下降沿進行同步的(限制存儲單元狀態轉換在一個很短的時間內) 。(鍾控 D 觸發器其實就是 D 鎖存器,邊沿 D 觸發器纔是真正的 D 觸發器)觸發器分爲兩種,一種是主從觸發器和邊沿觸發器。主從觸發器在時鐘有效期內 (主觸發器) 接收數據,在時鐘邊沿輸出狀態轉換。邊沿觸發器在時鐘邊沿期間, 觸發器才接收數據並使輸出狀態轉換。現在基本上都是用邊沿D觸發器。

寄存器(register):用來暫時存放參與運算的數據和運算結果。在實際的數字系統中,通常把能夠用來存儲一組二進制代碼的同步時序邏輯電路稱爲寄存器。

三者的區別對比:

觸發器和寄存器區別與聯繫:由於觸發器內有記憶功能,因此利用觸發器可以方便地構成寄存器。由於一個觸發器能夠存儲一位二進制碼,所以把 n 個觸發器的時鐘端口連接起來就能構成一個存儲 n 位二進制碼的寄存器。
寄存器和鎖存器的區別與聯繫:寄存器和鎖存器的功能是相同的;它們的區別在於寄存器是同步時鐘控制,而鎖存器是電位信號控制。 
一般的設計規則:在絕大多數設計中避免產生鎖存器。鎖存器最大的危害在於不能過濾毛刺 (使能信號有效時,輸出狀態可能隨輸入多次變化,產生空翻) 。這對於下一級電路是極其危險的。所以,只要能用 D 觸發器的地方,就不用鎖存器。

舉例:在基於 always 的組合邏輯描述語句中容易綜合出鎖存器的地方:1:if 語句的使用中缺少 else 語句(前提是不是始終邊沿觸發);2:case 語句中沒有給出全部的情況。

從上圖可以看出綜合出來的是鎖存器。針對這種情路可以採用一些措施來防止生成鎖存器:給輸出變量幅初值;增加 else 語
句;將鎖存器改爲帶使能的觸發器。如下:

此時綜合出來的就是選擇器。

參考文章鏈接: https://mp.weixin.qq.com/s/5VPWqgq2G9zFFxTZ0R5_ow

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章