現(xiàn)在很多電子器件都會(huì)用到觸發(fā)器和鎖存器,觸發(fā)器or鎖存器這是做什么的,,有何重要意義呢,,不懂的童鞋跟我走一遭就能清楚究竟是做什么的?
鎖存器
在實(shí)際的數(shù)字系統(tǒng)中,通常把能夠用來存儲(chǔ)一組二進(jìn)制代碼的同步時(shí)序邏輯電路稱為寄存器.由于觸發(fā)器內(nèi)有記憶功能,,因此利用觸發(fā)器可以方便地構(gòu)成寄存器,。由于一個(gè)觸發(fā)器能夠存儲(chǔ)一位二進(jìn)制碼,所以把n個(gè)觸發(fā)器的時(shí)鐘端口連接起來就能構(gòu)成一個(gè)存儲(chǔ)n位二進(jìn)制碼的寄存器,。鎖存器是電平觸發(fā)的存儲(chǔ)單元,,數(shù)據(jù)存儲(chǔ)的動(dòng)作取決于輸入時(shí)鐘(或者使能)信號(hào)的電平值,盡當(dāng)鎖存器處于使能狀態(tài)時(shí),,輸出才會(huì)隨著數(shù)據(jù)輸入發(fā)生變化,。
觸發(fā)器
觸發(fā)器是邊沿敏感的存儲(chǔ)單元,數(shù)據(jù)存儲(chǔ)的動(dòng)作有某一信號(hào)的上升或者下降沿進(jìn)行同步的,。在實(shí)際的數(shù)字系統(tǒng)中,,通常把能夠用來存儲(chǔ)一組二進(jìn)制代碼的同步時(shí)序邏輯電路稱為寄存器.由于觸發(fā)器內(nèi)有記憶功能,因此利用觸發(fā)器可以方便地構(gòu)成寄存器,。由于一個(gè)觸發(fā)器能夠存儲(chǔ)一位二進(jìn)制碼,,所以把n個(gè)觸發(fā)器的時(shí)鐘端口連接起來就能構(gòu)成一個(gè)存儲(chǔ)n位二進(jìn)制碼的寄存器。
寄存器用來存放數(shù)據(jù)的一些小型存儲(chǔ)區(qū)域,,用來暫時(shí)存放參與運(yùn)算的數(shù)據(jù)和運(yùn)算結(jié)果,。其實(shí)寄存器就是一種常用的時(shí)序邏輯電路,但這種時(shí)序邏輯電路只包含存儲(chǔ)電路,。寄存器的存儲(chǔ)電路是由鎖存器或觸發(fā)器構(gòu)成的,,因?yàn)橐粋€(gè)鎖存器或觸發(fā)器能存儲(chǔ)1位二進(jìn)制數(shù),,所以由N個(gè)鎖存器或觸發(fā)器可以構(gòu)成N位寄存器。 觸發(fā)器是在時(shí)鐘的沿進(jìn)行數(shù)據(jù)的鎖存的,,而鎖存器是用電平使能來鎖存數(shù)據(jù)的,。所以觸發(fā)器的Q輸出端在每一個(gè)時(shí)鐘沿都會(huì)被更新,而鎖存器只能在使能電平有效器件才會(huì)被更新,。 有一些教科書里的觸發(fā)器實(shí)際是鎖存器,。在FPGA設(shè)計(jì)中建議如果不是必須那么應(yīng)該盡量使用觸發(fā)器而不是鎖存器。
鐘控D觸發(fā)器其實(shí)就是D鎖存器,,邊沿D觸發(fā)器才是真正的D觸發(fā)器,,鐘控D觸發(fā)器在使能情況下輸出隨輸入變化,邊沿觸發(fā)器只有在邊沿跳變的情況下輸出才變化,。兩個(gè)D鎖存器可以構(gòu)成一個(gè)D觸發(fā)器,歸根到底還是dff是邊沿觸發(fā)的,,而latch是電平觸發(fā)的。鎖存器的輸出對(duì)輸入透明的,,輸入是什么,,輸出就是什么,這就是鎖存器不穩(wěn)定的原因,,而觸發(fā)器是由兩個(gè)鎖存器構(gòu)成的一個(gè)主從觸發(fā)器,,輸出對(duì)輸入是不透明的,,必須在時(shí)鐘的上升/下降沿才會(huì)將輸入體現(xiàn)到輸出,,所以能夠消除輸入的毛刺信號(hào)。
觸發(fā)器與鎖存器的比較:
1,、latch由電平觸發(fā),,非同步控制。在使能信號(hào)有效時(shí)latch相當(dāng)于通路,,在使能信號(hào)無效時(shí)latch保持輸出狀態(tài),。DFF由時(shí)鐘沿觸發(fā),同步控制,。
2,、latch對(duì)輸入電平敏感,受布線延遲影響較大,,很難保證輸出沒有毛刺產(chǎn)生;DFF則不易產(chǎn)生毛刺,。
3、如果使用門電路來搭建latch和DFF,,則latch消耗的門資源比DFF要少,,這是latch比DFF優(yōu)越的地方。所以,,在ASIC中使用 latch的集成度比DFF高,,但在FPGA中正好相反,,因?yàn)镕PGA中沒有標(biāo)準(zhǔn)的latch單元,但有DFF單元,,一個(gè)LATCH需要多個(gè)LE才能實(shí)現(xiàn),。latch是電平觸發(fā),相當(dāng)于有一個(gè)使能端,,且在激活之后(在使能電平的時(shí)候)相當(dāng)于導(dǎo)線了,,隨輸出而變化。在非使能狀態(tài)下是保持原來的信號(hào),,這就可以看出和flip-flop的差別,,其實(shí)很多時(shí)候latch是不能代替ff的。
4,、latch將靜態(tài)時(shí)序分析變得極為復(fù)雜,。
5、目前l(fā)atch只在極高端電的路中使用,,如intel 的P4等CPU,。 FPGA中有l(wèi)atch單元,寄存器單元就可以配置成latch單元,,在xilinx v2p的手冊(cè)將該單元成為register/latch單元,,附件是xilinx半個(gè)slice的結(jié)構(gòu)圖。
一般的設(shè)計(jì)規(guī)則是:在絕大多數(shù)設(shè)計(jì)中避免產(chǎn)生latch,。它會(huì)讓您設(shè)計(jì)的時(shí)序完蛋,,并且它的隱蔽性很強(qiáng),非老手不能查出,。latch最大的危害在于不能過濾毛刺,。這對(duì)于下一級(jí)電路是極其危險(xiǎn)的。所以,,只要能用D觸發(fā)器的地方,,就不用latch。
有些地方?jīng)]有時(shí)鐘,,也只能用latch了,。比如現(xiàn)在用一個(gè)clk接到latch的使能端(假設(shè)是高電平使能),這樣需要的setup時(shí)間,就是數(shù)據(jù)在時(shí)鐘的下降沿之前需要的時(shí)間,,但是如果是一個(gè)DFF,,那么setup時(shí)間就是在時(shí)鐘的上升沿需要的時(shí)間。這就說明如果數(shù)據(jù)晚于控制信號(hào)的情況下,,只能用latch,這種情況就是,,前面所提到的latch timing borrow。基本上相當(dāng)于借了一個(gè)高電平時(shí)間,。也就是說,,latch借的時(shí)間也是有限的。
對(duì)latch進(jìn)行STA的分析其實(shí)也是可以,但是要對(duì)工具相當(dāng)熟悉才行.不過很容易出錯(cuò).當(dāng)前PrimeTime,是支持進(jìn)行l(wèi)atch分析的.現(xiàn)在一些綜合工具內(nèi)置的STA分析功能也支持,比如RTL compiler, Design Compiler.除了ASIC里可以節(jié)省資源以外,。latch在同步設(shè)計(jì)里出現(xiàn)的可能還是挺小的,,現(xiàn)在處理過程中大都放在ff里打一下。以上就是觸發(fā)器和鎖存器的工作用途,,希望能給大家?guī)椭?/p>