FPGA重點(diǎn)知識13條,助你構(gòu)建完整“邏輯觀”之三
六、鎖存器與觸發(fā)器的區(qū)別
本文引用地址:http://m.butianyuan.cn/article/201802/375720.htm鎖存器和觸發(fā)器是具有記憶功能的二進(jìn)制存貯器件,是組成各種時序邏輯電路的基本器件之一。區(qū)別為:latch同其所有的輸入信號相關(guān),當(dāng)輸入信號變化時latch就變化,沒有時鐘端;flip-flop受時鐘控制,只有在時鐘觸發(fā)時才采樣當(dāng)前的輸入,產(chǎn)生輸出。當(dāng)然因為latch和flip-flop二者都是時序邏輯,所以輸出不但同當(dāng)前的輸入相關(guān)還同上一時間的輸出相關(guān)。
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)圖。其它型號和廠家的FPGA沒有去查證?!獋€人認(rèn)為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è)計的時序完蛋,并且它的隱蔽性很強(qiáng),非老手不能查出。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借的時間也是有限的。
在if語句和case不全很容易產(chǎn)生latch,需要注意。VIA題目這兩個代碼哪個綜合更容易產(chǎn)生latch:
代碼1
答案是代碼2在綜合時更容易產(chǎn)生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里打一下。
鎖存器電平觸發(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ā)信號。
鎖存器是異步的,就是說在輸入信號改變后,輸出信號也隨之很快做出改變非???。而另外一方面,今天許多計算機(jī)是同步的,這就意味著所有的時序電路的輸出信號隨著全局的時鐘信號同時做出改變。觸發(fā)器是一個同步版鎖存器。
觸發(fā)器泛指一類電路結(jié)構(gòu),它可以由觸發(fā)信號 (如: 時鐘、置位、復(fù)位等) 改變輸出狀態(tài), 并保持這個狀態(tài)直到下一個或另一個觸發(fā)信號來到時。觸發(fā)信號可以用電平或邊沿操作,鎖存器是觸發(fā)器的一種應(yīng)用類型。
七、D觸發(fā)器和D鎖存器的區(qū)別
鐘控D觸發(fā)器其實就是D鎖存器,邊沿D觸發(fā)器才是真正的D觸發(fā)器,鐘控D觸發(fā)器在使能情況下輸出隨輸入變化,邊沿觸發(fā)器只有在邊沿跳變的情況下輸出才變化。
兩個鎖存器可以構(gòu)成一個觸發(fā)器,歸根到底還是dff是邊沿觸發(fā)的,而latch是電平觸發(fā)的。鎖存器的輸出對輸入透明的,輸入是什么,輸出就是什么,這就是鎖存器不穩(wěn)定的原因,而觸發(fā)器是由兩個鎖存器構(gòu)成的一個主從觸發(fā)器,輸出對輸入是不透明的,必須在時鐘的上升/下降沿才會將輸入體現(xiàn)到輸出,所以能夠消除輸入的毛刺信號。
八、寄存器與鎖存器的區(qū)別
寄存器與鎖存器的功能是提供數(shù)據(jù)寄存和鎖存。
寄存功能是指把數(shù)據(jù)暫時保存,需要時取出。鎖存功能是指總線電路中,鎖定數(shù)據(jù)輸出,使輸出端不隨輸入端變化。
13、流水線
流水線設(shè)計是經(jīng)常用于提高所設(shè)計系統(tǒng)運(yùn)行速度的一種有效的方法。
為了保障數(shù)據(jù)的快速傳輸,必須使系統(tǒng)運(yùn)行在盡可能高的頻率上,但如果某些復(fù)雜邏輯功能的完成需要較長的延時,就會使系統(tǒng)難以運(yùn)行在高的頻率上,在這種情況下,可使用流水線技術(shù),即在長延時的邏輯功能塊中插入觸發(fā)器,使復(fù)雜的邏輯操作分步完成,減小每個部分的延時,從而使系統(tǒng)的運(yùn)行頻率得以提高。流水線設(shè)計的代價是增加了寄存器邏輯,增加了芯片資源的耗用。
如某個復(fù)雜邏輯功能的實現(xiàn)需較長的延時,可將其分解為幾個(如3個)步驟來實現(xiàn),每一步的延時變小,在各步間加入寄存器,以暫存中間結(jié)果,這樣可大大提高整個系統(tǒng)的最高工作頻率。
設(shè)計綜合到不同器件的最高工作頻率
流水線設(shè)計的關(guān)鍵在于整個設(shè)計時序的合理安排,前后級接口間數(shù)據(jù)流速的匹配。如果前后級流量相等,前級輸出直接可作為后級輸入,前級流量大于后級時,則需要增加緩存,前級流量小于后級時,則需要通過邏輯復(fù)制,串并轉(zhuǎn)換等方式將數(shù)據(jù)分流,或者前級存儲后輸出到后級進(jìn)行處理。
評論