在實際的數(shù)字系統(tǒng)中,通常把能夠用來存儲一組二進(jìn)制代碼的同步時序邏輯電路稱為寄存器.由于觸發(fā)器內(nèi)有記憶功能,因此利用觸發(fā)器可以方便地構(gòu)成寄存器。由于一個觸發(fā)器能夠存儲一位二進(jìn)制碼,所以把n個觸發(fā)器的時鐘端口連接起來就能構(gòu)成一個存儲n位二進(jìn)制碼的寄存器。鎖存器是電平觸發(fā)的存儲單元,數(shù)據(jù)存儲的動作取決于輸入時鐘(或者使能)信號的電平值,盡當(dāng)鎖存器處于使能狀態(tài)時,輸出才會隨著數(shù)據(jù)輸入發(fā)生變化。
觸發(fā)器
觸發(fā)器是邊沿敏感的存儲單元,數(shù)據(jù)存儲的動作有某一信號的上升或者下降沿進(jìn)行同步的。在實際的數(shù)字系統(tǒng)中,通常把能夠用來存儲一組二進(jìn)制代碼的同步時序邏輯電路稱為寄存器.由于觸發(fā)器內(nèi)有記憶功能,因此利用觸發(fā)器可以方便地構(gòu)成寄存器。由于一個觸發(fā)器能夠存儲一位二進(jìn)制碼,所以把n個觸發(fā)器的時鐘端口連接起來就能構(gòu)成一個存儲n位二進(jìn)制碼的寄存器。寄存器用來存放數(shù)據(jù)的一些小型存儲區(qū)域,用來暫時存放參與運算的數(shù)據(jù)和運算結(jié)果。其實寄存器就是一種常用的時序邏輯電路,但這種時序邏輯電路只包含存儲電路。寄存器的存儲電路是由鎖存器或觸發(fā)器構(gòu)成的,因為一個鎖存器或觸發(fā)器能存儲1位二進(jìn)制數(shù),所以由N個鎖存器或觸發(fā)器可以構(gòu)成N位寄存器。 觸發(fā)器是在時鐘的沿進(jìn)行數(shù)據(jù)的鎖存的,而鎖存器是用電平使能來鎖存數(shù)據(jù)的。所以觸發(fā)器的Q輸出端在每一個時鐘沿都會被更新,而鎖存器只能在使能電平有效器件才會被更新。有一些教科書里的觸發(fā)器實際是鎖存器。在FPGA設(shè)計中建議如果不是必須那么應(yīng)該盡量使用觸發(fā)器而不是鎖存器。
鐘控D觸發(fā)器其實就是D鎖存器,邊沿D觸發(fā)器才是真正的D觸發(fā)器,鐘控D觸發(fā)器在使能情況下輸出隨輸入變化,邊沿觸發(fā)器只有在邊沿跳變的情況下輸出才變化。兩個D鎖存器可以構(gòu)成一個D觸發(fā)器,歸根到底還是dff是邊沿觸發(fā)的,而latch是電平觸發(fā)的。鎖存器的輸出對輸入透明的,輸入是什么,輸出就是什么,這就是鎖存器不穩(wěn)定的原因,而觸發(fā)器是由兩個鎖存器構(gòu)成的一個主從觸發(fā)器,輸出對輸入是不透明的,必須在時鐘的上升/下降沿才會將輸入體現(xiàn)到輸出,所以能夠消除輸入的毛刺信號。
觸發(fā)器與鎖存器的比較:
1、latch由電平觸發(fā),非同步控制。在使能信號有效時latch相當(dāng)于通路,在使能信號無效時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中沒有標(biāo)準(zhǔn)的latch單元,但有DFF單元,一個LATCH需要多個LE才能實現(xiàn)。latch是電平觸發(fā),相當(dāng)于有一個使能端,且在激活之后(在使能電平的時候)相當(dāng)于導(dǎo)線了,隨輸出而變化。在非使能狀態(tài)下是保持原來的信號,這就可以看出和flip-flop的差別,其實很多時候latch是不能代替ff的。
4、latch將靜態(tài)時序分析變得極為復(fù)雜。
5、目前l(fā)atch只在極高端電的路中使用,如intel 的P4等CPU。FPGA中有l(wèi)atch單元,寄存器單元就可以配置成latch單元,在xilinx v2p的手冊將該單元成為register/latch單元,附件是xilinx半個slice的結(jié)構(gòu)圖。
一般的設(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。基本上相當(dāng)于借了一個高電平時間。也就是說,latch借的時間也是有限的。
對latch進(jìn)行STA的分析其實也是可以,但是要對工具相當(dāng)熟悉才行.不過很容易出錯.當(dāng)前PrimeTime,是支持進(jìn)行l(wèi)atch分析的.現(xiàn)在一些綜合工具內(nèi)置的STA分析功能也支持,比如RTL compiler, Design Compiler.除了ASIC里可以節(jié)省資源以外。latch在同步設(shè)計里出現(xiàn)的可能還是挺小的,現(xiàn)在處理過程中大都放在ff里打一下。
1、鎖存器(Latch)
①作用:鎖存器是一種具有兩個穩(wěn)定狀態(tài)(0或1)的存儲元件,它能夠根據(jù)輸入信號保持其輸出狀態(tài)不變,直到另一個輸入信號到來改變其狀態(tài)。
②原理:鎖存器通常由兩個交叉耦合的晶體管或邏輯門組成,形成一個正反饋環(huán)。當(dāng)輸入信號滿足特定條件時,正反饋環(huán)被激活,使輸出狀態(tài)鎖定。
③特點:鎖存器具有速度快、功耗低的特點,但通常需要外部信號來重置其狀態(tài)。
2、寄存器(Register)
①作用:寄存器是一種能夠存儲多個二進(jìn)制位的數(shù)字電路,通常用于暫存數(shù)據(jù)或作為CPU與內(nèi)存之間的數(shù)據(jù)緩沖。
②原理:寄存器由多個鎖存器組成,每個鎖存器負(fù)責(zé)存儲一位二進(jìn)制數(shù)。通過控制不同的輸入信號,可以實現(xiàn)對寄存器中各個位的讀寫操作。
③特點:寄存器具有存儲容量大、可并行操作的特點,能夠?qū)崿F(xiàn)數(shù)據(jù)的快速讀寫。
3、觸發(fā)器(Flip-Flop)
①作用:觸發(fā)器是一種具有兩個穩(wěn)定狀態(tài)的電子開關(guān),能夠根據(jù)輸入信號改變其輸出狀態(tài),并在輸入信號消失后保持輸出狀態(tài)不變。
②原理:觸發(fā)器通常由兩個互補的輸出端和一組控制輸入端組成。當(dāng)控制輸入端滿足特定條件時,觸發(fā)器的輸出狀態(tài)會發(fā)生翻轉(zhuǎn)。
③特點:觸發(fā)器具有穩(wěn)定性好、抗干擾能力強的特點,常用于時序邏輯電路和計數(shù)器中。
4、三寶在數(shù)字電路中的作用
鎖存器、寄存器和觸發(fā)器作為數(shù)字電路中的基本元素,它們共同實現(xiàn)了數(shù)據(jù)的存儲、傳輸和處理。在復(fù)雜的數(shù)字系統(tǒng)中,它們相互配合,使電路更加穩(wěn)定、可靠和高效。
例如,在時序邏輯電路中,觸發(fā)器可以用來存儲每個時鐘周期的狀態(tài)信息,從而實現(xiàn)復(fù)雜的邏輯功能。而在數(shù)據(jù)傳輸過程中,寄存器則起到了緩沖和暫存數(shù)據(jù)的作用,確保數(shù)據(jù)能夠在不同模塊之間可靠地傳輸。