鎖存器、觸發器和寄存器區分

鎖存器

 

在實際的數字系統中,通常把能夠用來存儲一組二進制代碼的同步時序邏輯電路稱爲寄存器.由於觸發器內有記憶功能,因此利用觸發器可以方便地構成寄存器。由於一個觸發器能夠存儲一位二進制碼,所以把n個觸發器的時鐘端口連接起來就能構成一個存儲n位二進制碼的寄存器。鎖存器是電平觸發的存儲單元,數據存儲的動作取決於輸入時鐘(或者使能)信號的電平值,盡當鎖存器處於使能狀態時,輸出纔會隨着數據輸入發生變化。

 

觸發器

觸發器是邊沿敏感的存儲單元,數據存儲的動作有某一信號的上升或者下降沿進行同步的。在實際的數字系統中,通常把能夠用來存儲一組二進制代碼的同步時序邏輯電路稱爲寄存器.由於觸發器內有記憶功能,因此利用觸發器可以方便地構成寄存器。由於一個觸發器能夠存儲一位二進制碼,所以把n個觸發器的時鐘端口連接起來就能構成一個存儲n位二進制碼的寄存器。寄存器用來存放數據的一些小型存儲區域,用來暫時存放參與運算的數據和運算結果。其實寄存器就是一種常用的時序邏輯電路,但這種時序邏輯電路只包含存儲電路。寄存器的存儲電路是由鎖存器或觸發器構成的,因爲一個鎖存器或觸發器能存儲1位二進制數,所以由N個鎖存器或觸發器可以構成N位寄存器。 觸發器是在時鐘的沿進行數據的鎖存的,而鎖存器是用電平使能來鎖存數據的。所以觸發器的Q輸出端在每一個時鐘沿都會被更新,而鎖存器只能在使能電平有效器件纔會被更新。 有一些教科書裏的觸發器實際是鎖存器。在FPGA設計中建議如果不是必須那麼應該儘量使用觸發器而不是鎖存器。

        鍾控D觸發器其實就是D鎖存器,邊沿D觸發器纔是真正的D觸發器,鍾控D觸發器在使能情況下輸出隨輸入變化,邊沿觸發器只有在邊沿跳變的情況下輸出才變化。兩個D鎖存器可以構成一個D觸發器,歸根到底還是dff是邊沿觸發的,而latch是電平觸發的。鎖存器的輸出對輸入透明的,輸入是什麼,輸出就是什麼,這就是鎖存器不穩定的原因,而觸發器是由兩個鎖存器構成的一個主從觸發器,輸出對輸入是不透明的,必須在時鐘的上升/下降沿纔會將輸入體現到輸出,所以能夠消除輸入的毛刺信號。

觸發器與鎖存器的比較:
1、latch由電平觸發,非同步控制。在使能信號有效時latch相當於通路,在使能信號無效時latch保持輸出狀態。DFF由時鐘沿觸發,同步控制。
2、latch對輸入電平敏感,受佈線延遲影響較大,很難保證輸出沒有毛刺產生;DFF則不易產生毛刺。
3、如果使用門電路來搭建latch和DFF,則latch消耗的門資源比DFF要少,這是latch比DFF優越的地方。所以,在ASIC中使用 latch的集成度比DFF高,但在FPGA中正好相反,因爲FPGA中沒有標準的latch單元,但有DFF單元,一個LATCH需要多個LE才能實現。latch是電平觸發,相當於有一個使能端,且在激活之後(在使能電平的時候)相當於導線了,隨輸出而變化。在非使能狀態下是保持原來的信號,這就可以看出和flip-flop的差別,其實很多時候latch是不能代替ff的。
4、latch將靜態時序分析變得極爲複雜。

5、目前latch只在極高端電的路中使用,如intel 的P4等CPU。 FPGA中有latch單元,寄存器單元就可以配置成latch單元,在xilinx v2p的手冊將該單元成爲register/latch單元,附件是xilinx半個slice的結構圖。

        一般的設計規則是:在絕大多數設計中避免產生latch。它會讓您設計的時序完蛋,並且它的隱蔽性很強,非老手不能查出。latch最大的危害在於不能過濾毛刺。這對於下一級電路是極其危險的。所以,只要能用D觸發器的地方,就不用latch。
       有些地方沒有時鐘,也只能用latch了。比如現在用一個clk接到latch的使能端(假設是高電平使能),這樣需要的setup時間,就是數據在時鐘的下降沿之前需要的時間,但是如果是一個DFF,那麼setup時間就是在時鐘的上升沿需要的時間。這就說明如果數據晚於控制信號的情況下,只能用latch,這種情況就是,前面所提到的latch timing borrow。基本上相當於借了一個高電平時間。也就是說,latch借的時間也是有限的。

        對latch進行STA的分析其實也是可以,但是要對工具相當熟悉才行.不過很容易出錯.當前PrimeTime,是支持進行latch分析的.現在一些綜合工具內置的STA分析功能也支持,比如RTL compiler, Design Compiler.除了ASIC裏可以節省資源以外。latch在同步設計裏出現的可能還是挺小的,現在處理過程中大都放在ff裏打一下。

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