在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

硬件中常見的基本存儲元件的定義

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-07-03 10:11 ? 次閱讀

說說latch與verilog的聯系。

還是照慣例,首先必須放上關于latch的定義和解釋。ALTERArecommended HDL coding中提到:

A latch is a small combinational loop that holds the value of a signal until a new value is assigned.

從上可以看出,latch是一個記憶元件或者說是存儲單元,他能保持信號的值

同時在網上找了找關于latch的中文定義。

鎖存器是電平觸發的存儲單元,數據存儲的動作取決于輸入時鐘(或者使能)信號的電平值,僅當鎖存器處于使能狀態時,輸出才會隨著數據輸入發生變化。

從一般情況來看,鎖存器多數是有電平鎖存的。當電平無效時,輸出信號隨輸入信號變化,就像通過了緩沖器;當電平有效時,輸出信號被鎖存。

看了很多關于verilog的語法資料,大多其中并沒有談到latch,latch和verilog發生聯系是在用verilog進行FPGA或者ASIC設計時。而在此由于本人正式學習用verilog進行FPGA設計,

而涉及到的書中均提到要采用同步設計,避免采用latch。從網上找了找為什么不使用latch的原因:

不要鎖存器的原因有二:1、鎖存器容易產生毛刺,2、鎖存器在ASIC設計中應該說比ff要簡單,但是在FPGA的資源中,大部分器件沒有鎖存器這個東西,所以需要用一個邏輯門和ff來組成鎖存器,這樣就浪費了資源。3、鎖存器的出現使得靜態時序分析變得更加復雜

所以又可以得出一條指導性的原則:

在能使用DFF或者寄存器的時候,堅決不使用latch

說了latch的定義和latch的危害,現在要來說說latch的產生和避免

查閱資料,結合自己的理解,總結出無意生成latch的三大原因:

1、不完整的if或者case結構

2、不完整的敏感信號列表

latch的出現總是與不完整有關,組合電路本應該是完整的,最理想的寫法可能是一個輸入對應一個輸出,當一個輸入沒有相應的輸出或者引起輸出的信號沒有作為輸入的時候,Latch產生了!

先解釋第一點不完整的if結構,例如:

if(a)

begin

out = 1'b1;

end

當a為1時輸出為1,當a為0時由于沒有相應的譯碼語句,所以輸出將保持,此時將生成latch而不是原來想要的組合電路。

而對于不完整的case語句,例如:

always@( * )

case(a)

3'b000: b = 8'd1;

3'b001: b = 8'd5;

3'b010: b = 8'd8;

3'b011: b = 8'd17;

endcase

此時語句中沒有default,當a為4、5、6、7時沒有響應的譯碼語句,輸出將保持,此時將生成latch。

對于第二點不完整的敏感信號表,夏雨聞老師的書中有提到:

如是說道:在賦值表達式右邊參與賦值的信號都必須在always@(敏感電平列表)中列出。

如果在賦值表達式右端引用了敏感電平列表中沒有列出的信號,那么在綜合時,將會為該沒有列出的信號隱含地產生一個透明鎖存器。

所以得出指導性的原則:

務必寫好if和case所有的分支,務必寫全敏感信號列表!

關于硬件中常見的基本存儲元件的定義、中英文對應的名字會模糊,今天特地查明具體定義。

0d86f950-f9bc-11ec-ba43-dac502259ad0.png

觸發器: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受時鐘控制,只有在時鐘觸發時才采樣當前的輸入,產生輸出。當然因為二者都是時序邏輯,所以輸出不但同當前的輸入相關還同上一時間的輸出相關。


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了。

對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
always@(enableorinaorinb)
begin
if(enable)begin
data_out=ina;
end
elsebegin
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在綜合時更容易產生latch。

使用條件語句不當在設計中生成了原本沒有想到的鎖存器:、

例1:在一個always語句中不正確使用if語句

Always@(alord)always@(alord)

begin begin

if(al)q<=?d;??????????????????????????????????? if(al)?q?<=?d;

end elseq<=?0;

end

在這個always塊中,if語句只保證了當al=1時q才取d的值。這段程序并沒有給出當al=0時q的取值,那么當al=0時q取何值?在always塊中在給定的條件下變量沒有被賦值,那么變量將保持原值,也就是說將會生成一個鎖存器。

如果當設計人員希望當al=0時,q的值為0,則else項就必不可少了。請注意看右邊的always塊,整個verilog程序模塊綜合出來后,always塊對應的部分不會生成鎖存器。

Verilog HDL程序的另一種偶然生成鎖存器是在使用case語句時缺少default項的情況下發生的。

Case語句的功能是:在某個信號取不同的值時,給另一個信號賦不同的值。如下,如果sel=00,q取a值,而sel=11,q取b值。這個例子不清楚的是:如果sel取00和11以外的值時q將賦予什么值?在這個例子中,默認q保持原值,這就會自動生成鎖存器。

always@(sel[1:0]oraorb)always@(sel[1:0]oraorb)

case(sel[1:0])case(sel[1:0])

2’b00:q<=?a;????????????????????????????2’b00:??q?<=?a;

2’b11:q<=?b;????????????????????????????2’b11:??q?<=?b;

endcase default:q<=?‘b0;???????

endcase

有鎖存器無鎖存器

避免生成鎖存器的方法:如果用到if語句,最好寫上sles項;如果用case語句,最好寫上default項。遵循上面兩條原則,就可以避免發生這種錯誤,使設計者更加明確設計目標,同時也增強了verilog程序的可讀性。

原文標題:FPGA學習-verilog(flipflop和latch以及register的區別)

文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21769

    瀏覽量

    604648
  • 寄存器
    +關注

    關注

    31

    文章

    5359

    瀏覽量

    120792
  • 硬件
    +關注

    關注

    11

    文章

    3354

    瀏覽量

    66338
  • 鎖存器
    +關注

    關注

    8

    文章

    906

    瀏覽量

    41563

原文標題:FPGA學習-verilog(flipflop和latch以及register的區別)

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    棱鏡——機器視覺系統中常見的重要配件

    棱鏡——機器視覺系統中常見的重要配件
    的頭像 發表于 01-15 17:36 ?58次閱讀
    棱鏡——機器視覺系統<b class='flag-5'>中常見</b>的重要配件

    常見手插元件識別

    常見手插元件識別. 長按識別二維碼關注[現代電子裝聯工藝技術]訂閱號,開啟我們共同的學習之旅 end 分享 收藏 點贊 在看????? 原文標題:PCBA丨常見手插元件識別 文章出處:
    的頭像 發表于 11-13 10:39 ?232次閱讀
    <b class='flag-5'>常見</b>手插<b class='flag-5'>元件</b>識別

    emc軟件定義存儲的未來發展

    隨著數字化轉型的加速,數據存儲需求日益增長。EMC(易安信)作為全球領先的數據存儲解決方案提供商,其軟件定義存儲(SDS)技術在滿足企業存儲
    的頭像 發表于 11-01 15:28 ?437次閱讀

    放大電路中常見的噪聲有哪些

    在放大電路中,噪聲是一個不可忽視的問題,它會影響信號的純凈度和系統的性能。放大電路中的噪聲來源廣泛,包括電路元件本身、外部環境以及電路設計等多個方面。以下將詳細闡述放大電路中常見的噪聲類型,并探討其產生原因和特性。
    的頭像 發表于 09-03 14:03 ?862次閱讀

    電感元件的伏安關系是什么

    元件定義 電感元件是一種能夠存儲磁能的元件,其基本結構是導線繞制的線圈。當電流通過線圈時,線圈內部會產生磁場,從而
    的頭像 發表于 08-23 17:26 ?1762次閱讀

    伺服閉環系統中常見的檢測元件包括什么

    伺服閉環系統是一種高精度、高響應速度的控制系統,廣泛應用于工業自動化、機器人、航空航天等領域。在伺服閉環系統中,檢測元件是實現系統控制的關鍵部分,它們負責將系統的輸出量轉換為電信號,以便進行反饋控制
    的頭像 發表于 07-21 08:41 ?503次閱讀
    伺服閉環系統<b class='flag-5'>中常見</b>的檢測<b class='flag-5'>元件</b>包括什么

    一文讀懂常見存儲器類型

    存儲器是計算機系統中用于存儲和讀取數據的硬件組件,根據存儲介質和工作原理的不同,存儲器可以分為多種類型。本文將從易失性
    的頭像 發表于 07-15 15:53 ?4799次閱讀

    甲烷濃度檢測儀中常見的檢測技術及其應用

    甲烷濃度檢測儀中常見的檢測技術及其應用
    的頭像 發表于 07-08 10:47 ?701次閱讀
    甲烷濃度檢測儀<b class='flag-5'>中常見</b>的檢測技術及其應用

    伺服閉環系統中常見的檢測元件不包括什么

    伺服閉環系統是一種高精度、高響應速度的控制系統,廣泛應用于工業自動化、機器人、航空航天等領域。在伺服閉環系統中,檢測元件是實現系統控制的關鍵部分,它們負責將系統的輸出量轉換為電信號,以便進行反饋控制
    的頭像 發表于 06-17 10:13 ?460次閱讀

    儲能元件和耗能元件定義

    在電工和電子學的世界中,儲能元件和耗能元件是兩大基本元素,它們各自在電路中扮演著不同的角色,對電路的功能和性能產生著深遠的影響。本文將對這兩種元件進行詳細的探討,包括它們的定義、特性、
    的頭像 發表于 05-16 18:07 ?2282次閱讀

    存儲器的定義和分類

    存儲器,作為計算機系統中的核心部件之一,扮演著存儲和檢索數據的角色。無論是程序的執行,還是數據的處理,都離不開存儲器的支持。本文將對存儲器進行詳細的介紹,包括其
    的頭像 發表于 05-12 16:56 ?1452次閱讀

    儲能元件是什么?儲能元件與電阻元件的區別是什么?

    儲能元件是指那些能夠在電路中存儲能量并在適當時候釋放能量的電子元件。最常見的儲能元件包括電容器和電感器,它們分別
    的頭像 發表于 04-11 11:31 ?1552次閱讀

    電容器運行中常見故障及預防措施

    電容器運行中常見故障及預防措施 電容器是一種常用的電子元件,廣泛應用于各種電路中,用于存儲和釋放電荷。然而,由于特殊的工作環境和高頻高壓等特性,電容器也容易發生故障。 首先,電容器常見
    的頭像 發表于 03-08 15:26 ?1248次閱讀

    變壓器運行中常見的異常現象應如何處理呢?

    變壓器運行中常見的異常現象應如何處理?
    的頭像 發表于 03-08 09:19 ?629次閱讀
    變壓器運行<b class='flag-5'>中常見</b>的異常現象應如何處理呢?

    筆記本電腦中常見的電子元器件有哪些?

    筆記本電腦中常見的電子元器件有哪些? 筆記本電腦中常見的電子元器件包括以下幾類: 1. 中央處理器(CPU):CPU是筆記本電腦的核心部件,負責執行計算機的指令。常見的CPU品牌有Intel和AMD
    的頭像 發表于 02-02 10:19 ?3047次閱讀
    主站蜘蛛池模板: 午夜快播| 久久人人网| 国产三级在线观看播放| 国产一区二区影院| 国产高清视频在线播放www色| 都市激情 亚洲| 7777sq国产精品| 天天干狠狠| 国产精品久久精品福利网站| 2021精品国产综合久久| 俄罗斯女人69xxx| 男女在线观看视频| 亚洲va久久久久综合| 色网站免费在线观看| 免费一级特黄特色黄大任片| 国产一区二区播放| 亚洲国产成人久久午夜| 日韩一级片免费| 97capcom超频在线| 日本亚洲在线| 五月婷婷激情在线| 欧美69视频在线| www国产永久免费视频看看| 天天爽天天操| 8050网| 欧美做a欧美| 四虎影院在线免费观看视频| 浓厚な接吻と肉体の交在线观看| 国产视频一二| 色天天网| 在线观看免费av网| 一级毛片日韩| 欧美成人免费全部观看天天性色| 国产精品14p| 日日久| 在线视频毛片| 午夜片网站| 久久久久国产精品四虎| 午夜在线观看福利| 四虎东方va私人影库在线观看| 国产激情电影综合在线看|