天天看點

鎖存器(latch)、觸發器(flip-flop)、寄存器(register)的差別

文章整理于網絡:

(一)

觸發器:flipflop,鎖存器:latch,寄存器:register鎖存器是電平觸發的存儲單元,資料存儲的動作取決于輸入時鐘(或者使能)信号的電平值,盡當鎖存器處于使能狀态時,輸出才會随着資料輸入發生變化。

觸發器是邊沿敏感的存儲單元,資料存儲的動作有某一信号的上升或者下降沿進行同步的。

寄存器用來存放資料的一些小型存儲區域,用來暫時存放參與運算的資料和運算結果。其實寄存器就是一種常用的時序邏輯電路,但這種時序邏輯電路隻包含存儲電路。寄存器的存儲電路是由鎖存器或觸發器構成的,因為一個鎖存器或觸發器能存儲1位二進制數,是以由N個鎖存器或觸發器可以構成N位寄存器。 觸發器是在時鐘的沿進行資料的鎖存的,而鎖存器是用電平使能來鎖存資料的。是以觸發器的Q輸出端在每一個時鐘沿都會被更新,而鎖存器隻能在使能電平有效器件才會被更新。 有一些教科書裡的觸發器實際是鎖存器。在FPGA設計中建議如果不是必須那麼應該盡量使用觸發器而不是鎖存器。

鐘控D觸發器其實就是D鎖存器,邊沿D觸發器才是真正的D觸發器,鐘控D觸發器在使能情況下輸出随輸入變化,邊沿觸發器隻有在邊沿跳變的情況下輸出才變化。

20、D 觸發器和D 鎖存器的差別。

兩 個鎖存器可以構成一個觸發器,歸根到底還是dff是邊沿觸發的,而latch是電平觸發的。鎖存器的輸出對輸入透明的,輸入是什麼,輸出就是什麼,這就是 鎖存器不穩定的原因,而觸發器是由兩個鎖存器構成的一個主從觸發器,輸出對輸入是不透明的,必須在時鐘的上升/下降沿才會将輸入展現到輸出,是以能夠消除 輸入的毛刺信号。

21、latch和filp-flop的異同

都 是時序邏輯,但latch受所有的輸入信号控制,隻要輸入信号變化,latch就變化。也正因為如此,latch很容易出毛刺。flip-flop是觸發 器,隻有在被時鐘觸發時才采樣目前的輸入,産生輸出。如果使用門電路來搭建latch和ff,則latch消耗的門資源比ff要少。但是你用的如果是 fpga,那麼内部一般帶DFF單元,反而用觸發器更好。

22、latch與register的差別,為什麼現在多用register.行為級描述中latch如何産生的

行為級描述中latch一般是由于if貨case邏輯表述不完全産生的。

異同:

1、latch由電平觸發,非同步控制。在使能信号有效時latch相當于通路,在使能信号無效時latch保持輸出狀态。DFF由時鐘沿觸發,同步控制。

2、latch容易産生毛刺(glitch),DFF則不易産生毛刺。

3、 如果使用門電路來搭建latch和DFF,則latch消耗的門資源比DFF要少,這是latch比DFF優越的地方。是以,在ASIC中使用 latch的內建度比DFF高,但在FPGA中正好相反,因為FPGA中沒有标準的latch單元,但有DFF單元,一個LATCH需要多個LE才能實 現。

4、latch将靜态時序分析變得極為複雜。

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

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

關 于latch的讨論 latch和flip-flop都是時序邏輯,差別為:latch同其所有的輸入信号相關,當輸入信号變化時latch就變化,沒有時鐘端;flip- flop受時鐘控制,隻有在時鐘觸發時才采樣目前的輸入,産生輸出。當然因為二者都是時序邏輯,是以輸出不但同目前的輸入相關還同上一時間的輸出相關。

latch缺點:

1、沒有時鐘端,不受系統同步時鐘的控制,無法實作同步操作;

2、對輸入電平敏感,受布線延遲影響較大,很難保證輸出沒有毛刺産生;

在 xilinx和altera器件的slice和LE中都能夠同時支援生産d-latch和d-ff,在這一層面上二者有什麼差別暫時沒有想到。如果使用門 電路來搭建latch和ff,則latch消耗的門資源比ff要少,這是latch比ff優越的地方。 latch的最大缺點就是沒有時鐘端,和目前我們盡可能采用時序電路的設計思路不符。 latch是電平觸發,相當于有一個使能端,且在激活之後(在使能電平的時候)相當于導線了,随輸出而變化,在非使能狀态下是保持原來的信号,這就可以看 出和flip-flop的差别,其實很多時候latch是不能代替ff的 1.latch對毛刺敏感

2.在ASIC中使用latch的內建度比DFF高,但在FPGA中正好相反,因為FPGA中沒有标準的latch單元,但有DFF單元,一個LATCH需要多個LE才能實作

3.latch将靜态時序分析變得極為複雜

4. 目前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借的時間也是有限的.

對latch進行STA的分析其實也是可以,但是要對工具相當熟悉才行.不過很容易出錯.目前PrimeTime,是支援進行latch分析的.現在一些綜合工具内置的STA分析功能也支援,比如RTL compiler, Design Compiler.

除了ASIC裡可以節省資源以外。

我感覺latch這個東西在同步設計裡出現的可能還是挺小的吧,

現在處理過程中大都放在ff裡打一下,

影響不太大吧

标簽: 無标簽latch與DFF的差別 收集了一下網上資源,總結如下:1、latch由電平觸發,非同步控制。在使能信号有效時latch相當于通路,在使能信号無效時latch保持輸出狀 态。DFF由時鐘沿觸發,同步控制。2、latch容易産生毛刺(glitch),DFF則不易産生毛刺。3、如果使用門電路來搭建latch和DFF, 則latch消耗的門資源比DFF要少,這是latch比DFF優越的地方。是以,在ASIC中使用latch的內建度比DFF高,但在FPGA中正好相 反,因為FPGA中沒有标準的latch單元,但有DFF單元,一個LATCH需要多個LE才能實作。4、latch将靜态時序分析變得極為複雜。 一般的設計規則是:在絕大多數設計中避免産生latch。它會讓您設計的時序完蛋,并且它的隐蔽性很強,非老手不能查出。latch最大的危害在于不能過 濾毛刺。這對于下一級電路是極其危險的。是以,隻要能用D觸發器的地方,就不用latch。 有些地方沒有時鐘,也隻能用latch了。比如現在用一個clk接到latch的使能端(假設是高電平使能),這樣需要的setup時間,就是資料在時鐘 的下降沿之前需要的時間,但是如果是一個DFF,那麼setup時間就是在時鐘的上升沿需要的時間。這就說明如果資料晚于控制信号的情況下,隻能用 latch,這種情況就是,前面所提到的latch timing borrow。基本上相當于借了一個高電平時間。也就是說,latch借的時間也是有限的。 在if語句和case不全很容易産生latch,需要注意。VIA題目這兩個代碼哪個綜合更容易産生latch:

代碼1

[email protected](enable or ina or inb)

begin

if(enable)

begin

data_out = ina;

end

else

begin

data_out = inb;

end

end

代碼2

input[3:0] data_in;

[email protected](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)、觸發器(flip-flop)、寄存器(register)的差別

(三)

FPGA設計中總是講到要避免使用latch,那麼使用latch到底有什麼壞處呢?這個問題想了很久也沒有得到一個令自己滿意的答案,這裡我先把自己的一些看法表述一下,請大家就這個問題讨論讨論。

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

latch缺點:

1、沒有時鐘端,不受系統同步時鐘的控制,無法實作同步操作;

2、對輸入電平敏感,受布線延遲影響較大,很難保證輸出沒有毛刺産生;

在xilinx和altera器件的slice和LE中都能夠同時支援生産d-latch和d-ff,在這一層面上二者有什麼差別暫時沒有想到。如果使用門電路來搭建latch和ff,則latch消耗的門資源比ff要少,這是latch比ff優越的地方。

------------------------------------------------

簡單回答就是Latch是異步電路,flip-flop是同步電路

既然是同步電路,肯定有clock端了,而latch就沒有

但是在IC設計中,latch相對flip-flop隻占用其三分之一的矽

面積。

register一般是由Latch or flip-flop實作的