當前位置:生活全書館 >

IT科技

> 觸發器和鎖存器的區別

觸發器和鎖存器的區別

觸發器和鎖存器的區別

區別為:latch同其所有的輸入訊號相關,當輸入訊號變化時latch就變化,沒有時鐘端;flip-flop受時鐘控制,只有在時鐘觸發時才取樣當前的輸入,產生輸出。當然因為latch和flip-flop二者都是時序邏輯,所以輸出不但同當前的輸入相關還同上一時間的輸出相關。

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的結構圖。其它型號和廠家的FPGA沒有去查證。——個人認為xilinx是能直接配的而altera或許比較麻煩,要幾個LE才行,然而也非xilinx的器件每個slice都可以這樣配置,altera的只有DDR介面中有專門的latch單元,一般也只有高速電路中會採用latch的設計。altera的LE是沒有latch的結構的,又查了sp3和sp2e,別的不查了,手冊上說支援這種配置。有關altera的表述wangdian說的對,altera的ff不能配置成latch,它使用查詢表來實現latch。

一般的設計規則是:在絕大多數設計中避免產生latch。它會讓您設計的時序完蛋,並且它的隱蔽性很強,非老手不能查出。latch最大的危害在於不能過濾毛刺。這對於下一級電路是極其危險的。所以,只要能用D觸發器的地方,就不用latch。

有些地方沒有時鐘,也只能用latch了。比如現在用一個clk接到latch的使能端(假設是高電平使能),這樣需要的setup時間,就是資料在時鐘的下降沿之前需要的時間,但是如果是一個DFF,那麼setup時間就是在時鐘的上升沿需要的時間。這就說明如果資料晚於控制訊號的情況下,只能用latch,這種情況就是,前面所提到的latch TIming borrow。基本上相當於借了一個高電平時間。也就是說,latch借的時間也是有限的。

在if語句和case不全很容易產生latch,需要注意。VIA題目這兩個程式碼哪個綜合更容易產生latch: 程式碼1

always@(enable or ina or inb)

begin

begin

data_out = ina;

end

else

begin

data_out = inb;

end

end

程式碼2

input[3:0] data_in;

always@(data_in)

begin

case(data_in)

0 : out1 = 1‘b1;

1,3 : out2 = 1’b1;

2,4,5,6,7 : out3 = 1‘b1;

default: out4 = 1’b1;

endcase

end

答案是程式碼2在綜合時更容易產生latch。

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

鎖存器電平觸發會把輸入端的毛刺帶入輸出;而觸發器由於邊沿作用可以有效抑制輸入端干擾。

在 CMOS 晶片內部經常使用鎖存器, 但是在PCB板級結構上, 建議用觸發器在時鐘邊沿上鎖存資料。這是因為在鎖存器閘門開啟期間資料的變化會直接反映到輸出端, 所以要注意控制閘門訊號的脈衝寬度,而對於觸發器,只考慮時鐘的邊沿。

閘電路是構建組合邏輯電路的基礎,而鎖存器和觸發器是構建時序邏輯電路的基礎。閘電路是由電晶體構成的,鎖存器是由閘電路構成的,而觸發器是由鎖存器構成的。也就是電晶體-》閘電路-》鎖存器-》觸發器,前一級是後一級的基礎。鎖存器和觸發器它們的輸出都不僅僅取決於目前的輸入,而且和之前的輸入和輸出都有關係。

它們之間的不同在於:鎖存器沒有時鐘訊號,而觸發器常常有時鐘觸發訊號。 鎖存器是非同步的,就是說在輸入訊號改變後,輸出訊號也隨之很快做出改變非常快。而另外一方面,今天許多計算機是同步的,這就意味著所有的時序電路的輸出訊號隨著全域性的時鐘訊號同時做出改變。觸發器是一個同步版鎖存器。 觸發器泛指一類電路結構,它可以由觸發訊號 (如: 時鐘、置位、復位等) 改變輸出狀態, 並保持這個狀態直到下一個或另一個觸發訊號來到時。觸發訊號可以用電平或邊沿操作,鎖存器是觸發器的一種應用型別。

暫存器與鎖存器的功能是提供資料寄存和鎖存。

寄存功能是指把資料暫時儲存,需要時取出。鎖存功能是指匯流排電路中,鎖定資料輸出,使輸出端不隨輸入端變化。

以上就是觸發器和鎖存器的區別了,希望大家對此能有更加深入的瞭解。

標籤: 觸發器 存器
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/2opv14.html