鎖存器(latch)和觸發(fā)器(Flip-Flop,簡寫為 FF)是具有記憶功能的二進制存貯器件,是組成各種時序邏輯電路的基本器件之一。那么它們兩者的區(qū)別在哪里呢?
區(qū)別為:latch同其所有的輸入信號相關(guān),當輸入信號變化時latch就變化,沒有時鐘端;flip-flop受時鐘控制,只有在時鐘觸發(fā)時才采樣當前的輸入,產(chǎn)生輸出。當然因為latch和flip-flop二者都是時序邏輯,所以輸出不但同當前的輸入相關(guān)還同上一時間的輸出相關(guān)。
1、latch由電平觸發(fā),非同步控制。在使能信號有效時latch相當于通路,在使能信號無效時latch保持輸出狀態(tài)。DFF由時鐘沿觸發(fā),同步控制。
2、latch對輸入電平敏感,受布線延遲影響較大,很難保證輸出沒有毛刺產(chǎn)生;DFF則不易產(chǎn)生毛刺。
3、如果使用門電路來搭建latch和DFF,則latch消耗的門資源比DFF要少,這是latch比DFF優(yōu)越的地方。所以,在ASIC中使用 latch的集成度比DFF高,但在FPGA中正好相反,因為FPGA中沒有標準的latch單元,但有DFF單元,一個LATCH需要多個LE才能實現(xiàn)。latch是電平觸發(fā),相當于有一個使能端,且在激活之后(在使能電平的時候)相當于導線了,隨輸出而變化。在非使能狀態(tài)下是保持原來的信號,這就可以看出和flip-flop的差別,其實很多時候latch是不能代替ff的。
4、latch將靜態(tài)時序分析變得極為復雜。
5、目前l(fā)atch只在極高端的電路中使用,如intel 的P4等CPU。 FPGA中有l(wèi)atch單元,寄存器單元就可以配置成latch單元,在xilinx v2p的手冊將該單元配置成為register/latch單元,附件是xilinx半個slice的結(jié)構(gòu)圖。其它型號和廠家的FPGA沒有去查證?!獋€人認為xilinx是能直接配的而altera或許比較麻煩,要幾個LE才行,然而也非xilinx的器件每個slice都可以這樣配置,altera的只有DDR接口中有專門的latch單元,一般也只有高速電路中會采用latch的設(shè)計。altera的LE是沒有l(wèi)atch的結(jié)構(gòu)的,又查了sp3和sp2e,別的不查了,手冊上說支持這種配置。有關(guān)altera的表述wangdian說的對,altera的ff不能配置成latch,它使用查找表來實現(xiàn)latch。
一般的設(shè)計規(guī)則是:在絕大多數(shù)設(shè)計中避免產(chǎn)生latch。它會讓您設(shè)計的時序完蛋,并且它的隱蔽性很強,非老手不能查出。latch最大的危害在于不能過濾毛刺。這對于下一級電路是極其危險的。所以,只要能用D觸發(fā)器的地方,就不用latch。
有些地方?jīng)]有時鐘,也只能用latch了。比如現(xiàn)在用一個clk接到latch的使能端(假設(shè)是高電平使能),這樣需要的setup時間,就是數(shù)據(jù)在時鐘的下降沿之前需要的時間,但是如果是一個DFF,那么setup時間就是在時鐘的上升沿需要的時間。這就說明如果數(shù)據(jù)晚于控制信號的情況下,只能用latch,這種情況就是,前面所提到的latch TIming borrow?;旧舷喈斢诮枇艘粋€高電平時間。也就是說,latch借的時間也是有限的。
在if語句和case不全很容易產(chǎn)生latch,需要注意。VIA題目這兩個代碼哪個綜合更容易產(chǎn)生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在綜合時更容易產(chǎn)生latch。
對latch進行STA的分析其實也是可以,但是要對工具相當熟悉才行,不過很容易出錯。當前PrimeTIme是支持進行l(wèi)atch分析的,現(xiàn)在一些綜合工具內(nèi)置的STA分析功能也支持,比如RTL compiler, Design Compiler。除了ASIC里可以節(jié)省資源以外,latch在同步設(shè)計里出現(xiàn)的可能還是挺小的,現(xiàn)在處理過程中大都放在ff里打一下。
鎖存器電平觸發(fā)會把輸入端的毛刺帶入輸出;而觸發(fā)器由于邊沿作用可以有效抑制輸入端干擾。
在 CMOS 芯片內(nèi)部經(jīng)常使用鎖存器, 但是在PCB板級結(jié)構(gòu)上, 建議用觸發(fā)器在時鐘邊沿上鎖存數(shù)據(jù)。這是因為在鎖存器閘門開啟期間數(shù)據(jù)的變化會直接反映到輸出端, 所以要注意控制閘門信號的脈沖寬度,而對于觸發(fā)器,只考慮時鐘的邊沿。
門電路是構(gòu)建組合邏輯電路的基礎(chǔ),而鎖存器和觸發(fā)器是構(gòu)建時序邏輯電路的基礎(chǔ)。門電路是由晶體管構(gòu)成的,鎖存器是由門電路構(gòu)成的,而觸發(fā)器是由鎖存器構(gòu)成的。也就是晶體管-》門電路-》鎖存器-》觸發(fā)器,前一級是后一級的基礎(chǔ)。鎖存器和觸發(fā)器它們的輸出都不僅僅取決于目前的輸入,而且和之前的輸入和輸出都有關(guān)系。
它們之間的不同在于:鎖存器沒有時鐘信號,而觸發(fā)器常常有時鐘觸發(fā)信號。 鎖存器是異步的,就是說在輸入信號改變后,輸出信號也隨之很快做出改變非???。而另外一方面,今天許多計算機是同步的,這就意味著所有的時序電路的輸出信號隨著全局的時鐘信號同時做出改變。觸發(fā)器是一個同步版鎖存器。 觸發(fā)器泛指一類電路結(jié)構(gòu),它可以由觸發(fā)信號 (如: 時鐘、置位、復位等) 改變輸出狀態(tài), 并保持這個狀態(tài)直到下一個或另一個觸發(fā)信號來到時。觸發(fā)信號可以用電平或邊沿操作,鎖存器是觸發(fā)器的一種應用類型。
寄存器與鎖存器的功能是提供數(shù)據(jù)寄存和鎖存。
寄存功能是指把數(shù)據(jù)暫時保存,需要時取出。鎖存功能是指總線電路中,鎖定數(shù)據(jù)輸出,使輸出端不隨輸入端變化。
以上就是觸發(fā)器和鎖存器的區(qū)別了,希望大家對此能有更加深入的了解。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com