色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鎖存器:組合電路與時序電路的橋梁

sanyue7758 ? 來源:FPGA and ICer ? 2023-08-08 09:55 ? 次閱讀

前言

本系列整理數(shù)字系統(tǒng)設(shè)計的相關(guān)知識體系架構(gòu),為了方便后續(xù)自己查閱與求職準(zhǔn)備。對于FPGAASIC設(shè)計中,避免使用Latch(鎖存器)一直是個繞不開的話題,本文結(jié)合網(wǎng)上的文章,并根據(jù)示例介紹如何在實(shí)際設(shè)計中避免Latch。

鎖存器:組合電路與時序電路的橋梁

在網(wǎng)上看到一個帖子說了這樣一個說辭,我覺得很不錯,分享給大家:鎖存器不就是組合邏輯電路與時序邏輯電路的橋梁么?

其實(shí)仔細(xì)想想也是,之前功利性的學(xué)習(xí)根本沒有仔細(xì)考慮為什么拿到數(shù)電基礎(chǔ)的書后,目錄設(shè)計總是按照組合邏輯、鎖存器、時序邏輯去安排章節(jié)。

現(xiàn)在思考后我覺得很有道理(聽我開始瞎掰)最初數(shù)字電路的組合邏輯解決了很多問題,但是卻沒有很好的解決如何將這個狀態(tài)做存儲,有些設(shè)計情況下不得不將一些信號的狀態(tài)存儲,所以就使用邏輯門構(gòu)建了鎖存器的概念,設(shè)計的靈活性得到進(jìn)一步提升,但是同時又存在了另外一個問題,鎖存器就像一個閥門,但是由于這個閥門打開后內(nèi)部是隨時可以變化的,這也給如何檢驗(yàn)設(shè)計的正確性帶來了難度,所以急需一個器件或者設(shè)計去解決這個問題,進(jìn)而有了時序邏輯電路中觸發(fā)器的概念,觸發(fā)器也就隨著 “需求和發(fā)展” 出現(xiàn)。

因此,組合邏輯、鎖存器、時序邏輯,這樣安排更像說明了數(shù)字電路的發(fā)展和迭代的歷史,雖然鎖存器的一般內(nèi)容比較少,但不可否認(rèn),鎖存器就是組合邏輯電路與時序邏輯電路的橋梁。

鎖存器概念

鎖存器( latch)是電平觸發(fā)的存儲單元,數(shù)據(jù)存儲的狀態(tài)取決于輸入時鐘(或者使能)信號的電平值,僅當(dāng)鎖存器處于使能狀態(tài)時,輸出才會隨著數(shù)據(jù)輸入發(fā)生變化。

鎖存器不同于觸發(fā)器,鎖存器在不鎖存數(shù)據(jù)時,輸出端的信號隨輸入信號變化,就像信號通過一個緩存器一樣;一旦鎖存信號起鎖存作用,則數(shù)據(jù)被鎖住,輸入信號不起作用。因此鎖存器也稱為透明鎖存器, 指的是不鎖存時輸出對輸入是透明的。

鎖存器的分類包括 RS 鎖存器、門控 RS 鎖存器和 D 鎖存器, 此處介紹下 D 鎖存器。

D 鎖存器就是能夠?qū)⑤斎氲膯温窋?shù)據(jù) D 存入到鎖存器中的電路,D鎖存器的電路圖如下圖所示。

c4d6ea08-351f-11ee-9e74-dac502259ad0.pngimage-20220822213310864

從 D 鎖存器的電路圖中可以看出,該電路主要是由兩個部分組成,第一個部分是由 G1、 G2兩個與非門組成的 RS 鎖存器,第二個部分是由 G3、 G4 兩個與非門組成的控制電路。C 為控制信號,用來控制 G3 和 G4 的激勵輸入。

下面來分析下 D 鎖存器的工作原理

當(dāng)控制信號 C=0 時,根據(jù)與非門的邏輯定律,無論 D輸入什么信號, RD 和 SD 信號都會輸出為1。RD 和 SD 都同時等于 1 的話,鎖存器的輸出端 Q 將維持原狀態(tài)不變。

當(dāng)控制端 C=1 時,如果此時 D=0,SD 就等于1, RD 就等于 0,根據(jù) RS 鎖存器的邏輯規(guī)律,電路的結(jié)果就為 0 狀態(tài);如果 D =1,那么 RD 就等于 1,SD 也就等于 0,鎖存器的結(jié)果就為 1 狀態(tài),也就是說,此時鎖存器的狀態(tài)是由激勵輸入端 D 來確定的,D 等于什么,鎖存器的狀態(tài)就是什么。

根據(jù)上面的描述,可以推出 D 鎖存器的特性表, Qn 是指觸發(fā)器當(dāng)前邏輯狀態(tài)也即觸發(fā)前的狀態(tài), Qn+1 是指觸發(fā)后的狀態(tài)。

C D Qn Qn+1
0 X 0 0
0 X 1 1
1 0 X 0
1 1 X 1

通過這個表格,可以看出,當(dāng) C 為 1 時, D 的狀態(tài)和 Qn+1 的狀態(tài)完全一樣,當(dāng) D=0 時, Qn+1=0,當(dāng) D=1 時, Qn+1=1。進(jìn)一步畫出 D 鎖存器的波形圖。

c5027722-351f-11ee-9e74-dac502259ad0.pngimage-20220822213545151

從 D 鎖存器的波形圖可以看出, D 是鎖存器的輸入信號, C 是鎖存器的控制信號,Q 是鎖存器的輸出信號。當(dāng)控制信號 C 為高電平時,輸出信號 Q 將跟隨輸入信號 D 的變化而變化。

為什么要避免鎖存器?(Latch的危害)

前面雖然提到鎖存器是組合邏輯電路與時序電路的橋梁,但是其靈活性很難保證在設(shè)計中進(jìn)行精準(zhǔn)分析。在實(shí)際使用中,Latch 多用于門控時鐘(clock gating)的控制,在絕大多數(shù)設(shè)計中我們要避免產(chǎn)生鎖存器。它會讓設(shè)計的時序出問題,并且它的隱蔽性很強(qiáng), 新人很難查出問題。

毛刺敏感:鎖存器最大的危害在于不能過濾毛刺和影響工具進(jìn)行時序分析。這對于下一級電路是極其危險的。這也就是為什么寄存器不用電平觸發(fā)而選擇使用邊沿觸發(fā)的原因。所以,只要能用觸發(fā)器的地方,就不用鎖存器。

不能異步復(fù)位: 由于其能夠儲存上次狀態(tài)的原因,上電后Latch處于不定態(tài)。

占用更多資源: 對于絕大多數(shù)當(dāng)前主流的FPGA架構(gòu)資源中,基本是不包含Latch,這也就意味著需要更多的資源去實(shí)現(xiàn)搭建Latch。在早些版本的某些FPGA內(nèi)部包含了Latch。

使時序分析變得復(fù)雜: 鎖存器沒有時鐘信號,只有數(shù)據(jù)輸入和使能以及輸出 q 端,沒有時鐘信號也就說明沒有辦法對這種器件進(jìn)行時序分析, 這個在時序電路里面是非常危險的行為,因?yàn)榭赡芤饡r序不滿足導(dǎo)致電路功能實(shí)現(xiàn)有問題。

額外的延時: 在ASIC設(shè)計中,鎖存器也會帶來額外的延時和DFT,并不利于提高系統(tǒng)的工作頻率。

結(jié)構(gòu)完整就能避免Latch?

關(guān)于如何避免,可能大多數(shù)的人首先想到的是組合邏輯電路中,在if-else結(jié)構(gòu)中缺少else或case結(jié)構(gòu)中缺少default所導(dǎo)致,所以中要求if-else結(jié)構(gòu)和case結(jié)構(gòu)要寫完整。但結(jié)構(gòu)完整就真能完全避免Latch的產(chǎn)生嗎?

moduledemo(
inputwire[1:0]en,
outputreg[3:0]latchtest
);

always@(*)begin
if(en==1)begin
latchtest='d6;
end
elseif(en==2)begin
latchtest='d3;
end
elsebegin
latchtest=latchtest;
end
end
endmodule

圖上示例這種情況,雖然邏輯完整但也會生成latch,其原因是針對該邏輯信號進(jìn)行了保持,構(gòu)成了邏輯環(huán)路。

c52bd48c-351f-11ee-9e74-dac502259ad0.pnglatch測試

同樣下圖中的設(shè)計也會產(chǎn)生鎖存器,原因是雖然邏輯完備但是沒有針對單一信號進(jìn)行完備邏輯的處理,在部分邏輯信號進(jìn)行了保持,所以邏輯仍生成了latch。

//demo1
reglatchtest1,latchtest2;
always@(*)begin
if(enable)
latchtest1=in;
else
latchtest2=in;
end

下面的設(shè)計是我認(rèn)為比較隱晦的latch。乍一看,分支完備,case語句也有default,但在EDA工具進(jìn)行分析后仍出現(xiàn)latch

moduledemo(
inputwire[1:0]en,
outputreg[3:0]latchtest
);

always@(*)begin
case(en)
0:latchtest[0]='d1;
1:latchtest[1]='d1;
2:latchtest[2]='d1;
3:latchtest[3]='d1;
default:latchtest='d1;
endcase
end

分析其根本原因仍然是,針對相關(guān)的分支條件該信號的部分bit位進(jìn)行了保持。

c54d36f4-351f-11ee-9e74-dac502259ad0.png隱晦的latch設(shè)計

此外,三目運(yùn)算符在組合邏輯設(shè)計時進(jìn)行邏輯保持,同樣會引入latch。

鎖存器產(chǎn)生的根本原因

生成latch的例子很多,從例子來看不論是單個信號或者是一個信號某些位,只要在組合邏輯設(shè)計時他存在邏輯保持都有可能生成latch,但說鎖存器產(chǎn)生的根本原因,即為代碼設(shè)計時的邏輯:需要在組合邏輯中避免保持的操作。當(dāng)組合邏輯需要保持時,就會綜合出鎖存器。

避免Latch的解決方法

整理常見出現(xiàn)組合邏輯保持的情況,也即能得到避免生成latch的相關(guān)方法。

if else分支結(jié)構(gòu)不完整

組合邏輯中case結(jié)構(gòu)不完整

組合邏輯設(shè)計時使用三目運(yùn)算符存在邏輯保持

使用原信號進(jìn)行賦值或者使用原信號進(jìn)行條件判斷

敏感信號列表不完整

所以避免latch的方法就是,要對以上或者其他未列舉的組合邏輯中存在邏輯保持的情況進(jìn)行改寫和規(guī)避,即可避免頭疼的latch生成。簡單來說就是:優(yōu)化代碼邏輯,避免組合邏輯的邏輯保持。 當(dāng)遇到邏輯保持的情況時,要對存在邏輯保持的分支進(jìn)行補(bǔ)全,或者使用賦初值的方法進(jìn)行覆蓋邏輯保持時的情況。

//補(bǔ)全條件分支結(jié)構(gòu)
always@(*)begin
if(en)
dout=in;
else
dout='d0;
end

//賦初值
always@(*)begin
dout='d0;
if(en)
dout=data;//如果en有效,改寫q的值,否則q會保持為0
end

必要的邏輯保持怎么處理?

可能對于有些情況無法完全避免掉組合邏輯設(shè)計的邏輯保持,對于這種情況,可以在這個組合邏輯路徑中插入一級寄存器,寄存器的輸出替代原來邏輯保持的部分,示例如下:

wire[DATA_WIDTH-1:0]accsum_in=(ab_sum_valid)?sum_in:dout;
always@(posedgeclkornegedgerst_n)begin
if(rst_n=='d0)begin
dout<=?'d0;
?????end
?????else?if(adder1_outvld?==?1)begin
???????dout?<=?sum_in?;
?????end
???end

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    603010
  • asic
    +關(guān)注

    關(guān)注

    34

    文章

    1199

    瀏覽量

    120438
  • 時序電路
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    21696
  • 鎖存器
    +關(guān)注

    關(guān)注

    8

    文章

    906

    瀏覽量

    41496
  • 組合電路
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6691

原文標(biāo)題:Reference

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RS和D電路結(jié)構(gòu)及工作原理

    1(b)給出了其邏輯符號。 圖1 或非門SR 2、SR狀態(tài)真值表 3、SR
    的頭像 發(fā)表于 10-07 15:24 ?5w次閱讀
    RS<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>和D<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>的<b class='flag-5'>電路</b>結(jié)構(gòu)及工作原理

    電路中的控制信號實(shí)現(xiàn)方案 時序電路如何組成處理

    時序電路 首先來看兩個問題: 1.為什么CPU要用時序電路時序電路與普通邏輯電路有什么區(qū)別。 2.觸發(fā)
    的頭像 發(fā)表于 11-20 14:27 ?4400次閱讀
    <b class='flag-5'>電路</b>中的控制信號實(shí)現(xiàn)方案 <b class='flag-5'>時序電路</b>如何組成處理<b class='flag-5'>器</b>

    基本時序電路設(shè)計實(shí)驗(yàn)

    實(shí)驗(yàn)二 基本時序電路設(shè)計(1)實(shí)驗(yàn)?zāi)康模菏煜uartusⅡ的VHDL文本設(shè)計過程,學(xué)習(xí)簡單時序電路的設(shè)計、仿真和硬件測試。(2)實(shí)驗(yàn)內(nèi)容:Ⅰ.用VHDL設(shè)計一個帶異步復(fù)位的D觸發(fā),并利用
    發(fā)表于 10-11 09:21

    時序電路的分析與設(shè)計方法

    邏輯功能,若電路存在問題,并提出改進(jìn)方法。在分析同步時序電路時分為以下幾個步驟:分清時序電路的組成.列出方程. 根據(jù)時序電路組合部分,寫出
    發(fā)表于 08-23 10:28

    什么是時序電路

    什么是時序電路時序電路核心部件觸發(fā)的工作原理
    發(fā)表于 03-04 06:32

    同步時序電路

    同步時序電路 4.2.1 同步時序電路的結(jié)構(gòu)和代數(shù)法描述
    發(fā)表于 01-12 13:31 ?5249次閱讀
    同步<b class='flag-5'>時序電路</b>

    組合電路時序電路的講解

    組合電路時序電路是計算機(jī)原理的基礎(chǔ)課,組合電路描述的是單一的函數(shù)功能,函數(shù)輸出只與當(dāng)前的函數(shù)輸入相關(guān);
    的頭像 發(fā)表于 09-25 09:50 ?2.5w次閱讀

    時序電路基本介紹

    組合邏輯和時序邏輯電路是數(shù)字系統(tǒng)設(shè)計的奠基石,其中組合電路包括多路復(fù)用器、解復(fù)用器、編碼、解碼
    的頭像 發(fā)表于 09-12 16:44 ?9315次閱讀
    <b class='flag-5'>時序電路</b>基本介紹

    基本邏輯電路時序電路組合電路設(shè)計

    從今天開始新的一章-Circuits,包括基本邏輯電路時序電路組合電路等。
    的頭像 發(fā)表于 10-10 15:39 ?1317次閱讀

    什么是同步時序電路和異步時序電路,同步和異步電路的區(qū)別?

    同步和異步時序電路都是使用反饋來產(chǎn)生下一代輸出的時序電路。根據(jù)這種反饋的類型,可以區(qū)分這兩種電路時序電路的輸出取決于當(dāng)前和過去的輸入。時序電路
    的頭像 發(fā)表于 03-25 17:29 ?2.5w次閱讀
    什么是同步<b class='flag-5'>時序電路</b>和異步<b class='flag-5'>時序電路</b>,同步和異步<b class='flag-5'>電路</b>的區(qū)別?

    時序邏輯電路有哪些 時序邏輯電路組合邏輯電路區(qū)別

    產(chǎn)生相應(yīng)的輸出信號。本文將詳細(xì)介紹時序邏輯電路的分類、基本原理、設(shè)計方法以及與組合邏輯電路的區(qū)別。 一、時序邏輯
    的頭像 發(fā)表于 02-06 11:18 ?9773次閱讀

    時序電路包括兩種類型 時序電路必然存在狀態(tài)循環(huán)對不對

    探討時序電路中可能存在的狀態(tài)循環(huán)。 首先,同步時序電路是指時序元件按照整個系統(tǒng)的時鐘信號進(jìn)行同步操作的時序電路。常見的同步時序元件有
    的頭像 發(fā)表于 02-06 11:22 ?1428次閱讀

    時序電路的分類 時序電路的基本單元電路有哪些

    時序電路可以分為同步時序電路和異步時序電路。接下來,我們將詳細(xì)討論時序電路的分類以及其基本單元電路。 一、同步
    的頭像 發(fā)表于 02-06 11:25 ?2543次閱讀

    時序電路基本原理是什么 時序電路由什么組成

    時序電路基本原理是指電路中的輸出信號與輸入信號的時間相關(guān)性。簡單來說,就是電路的輸出信號要依賴于其輸入信號的順序和時間間隔。 時序電路由時鐘信號、觸發(fā)
    的頭像 發(fā)表于 02-06 11:30 ?2032次閱讀

    時序邏輯會產(chǎn)生

    時序邏輯電路本身并不直接“產(chǎn)生”,但
    的頭像 發(fā)表于 08-28 11:03 ?392次閱讀
    主站蜘蛛池模板: 狠狠插综合| 色播播电影| 亚洲国产综合另类视频 | 在线不卡日本v二区到六区| 成年免费三级视频| 久久永久影院免费| 亚洲成人精品久久| 成人毛片手机版免费看| 两百磅美女| 亚洲一在线| 国产一区二区青青精品久久| 欧美日韩中文在线字幕视频 | 最新高清无码专区在线视频| 国产人妻人伦精品1国产| 任你躁国语自产二区在线播放| 在线一本码道高清| 果冻传媒 在线播放观看| 色欲AV精品人妻一二三区| 99视频精品全部免费免费观| 久久99国产精品自在自在| 亚洲AV无码国产精品午夜久久| 出租屋交换人妻 全文| 欧美gay老头互吃| 中文字幕乱码一区AV久久| 韩国伦理电影在线神马网| 神马影院在线eecss伦理片| wwwwxxxx欧美| 年轻夫妇韩剧中文版免费观看 | 国产A级毛片久久久久久久| 破苞流血哭泣 magnet| 99精品中文字幕在线观看| 久热久热精品在线观看| 亚洲偷偷自拍免费视频在线| 国产精品无码人妻在线| 沈阳熟女露脸对白视频| 成年人视频免费在线观看| 欧美另类摘花hd| gogo亚洲肉体艺术照片9090| 免费亚洲视频| 97视频在线免费播放| 免费精品一区二区三区AA片 |