作者 IC_learner 在此特別鳴謝
主要內(nèi)容:
·雙穩(wěn)態(tài)器件
·鎖存器常見結(jié)構(gòu)
·鎖存器的應(yīng)用
·觸發(fā)器
·觸發(fā)器的建立時間和保持時間
1、雙穩(wěn)態(tài)器件
**雙穩(wěn)態(tài)器件**是指穩(wěn)定狀態(tài)有兩種,一種是0,一種是1的器件;雙穩(wěn)態(tài)器件是存儲器件的基本模塊,雙穩(wěn)器件的的一種電路結(jié)構(gòu)是:交叉耦合反相器 結(jié)構(gòu),如下圖所示:
連個反相器連在一起,這就構(gòu)成了一個雙穩(wěn)態(tài)器件,為什么是雙穩(wěn)態(tài)呢?我們現(xiàn)在就來分析一下:
由于沒有輸入,于是我們就假設(shè)I1的輸出先為1,即Q=1;那么I2的輸入為1,Q’就為0,于是反饋給Q的輸入,導(dǎo)致Q的輸出為1,也就是使得Q的狀態(tài)穩(wěn)定為1,因此這個器件有一個穩(wěn)定的狀態(tài)為1.如下圖所示:
我們再假設(shè)I1的輸出先為0,即Q=0;那么I2的輸入為0,Q’就為1,于是反饋給Q的輸入,導(dǎo)致Q的輸出為0,也就是使得Q的狀態(tài)穩(wěn)定為0,因此這個器件還有一個穩(wěn)定的狀態(tài)為0.如下圖所示:
由此可見,這種交叉耦合反相器的器件是雙穩(wěn)態(tài)器件。但是需要注意的是,電路有可能存在第三種狀態(tài),稱為 亞穩(wěn)態(tài) ,它不是一種穩(wěn)定的狀態(tài),關(guān)于亞穩(wěn)態(tài)我們后面會進(jìn)行介紹。
為什么介紹雙穩(wěn)態(tài)器件呢?那是因為鎖存器、寄存器都是雙穩(wěn)態(tài)器件,它們都有兩個穩(wěn)定狀態(tài)1和0。正是因為它們有兩個穩(wěn)定的狀態(tài),因此才可以拿它們來存儲數(shù)據(jù),也就是說雙穩(wěn)態(tài)電路(比如交叉耦合反相器、鎖存器和寄存器)可以存儲數(shù)據(jù)。下面我們就來看看鎖存器和寄存器吧。
2、常見的鎖存器結(jié)構(gòu)
很顯然,上面的那種交叉耦合反相器沒有輸入,是存儲不了輸入的數(shù)據(jù)的了,因此就需要有輸入的類似“ 交叉耦合反相器 ”結(jié)構(gòu)的雙穩(wěn)態(tài)電路,鎖存器應(yīng)運而生了,最常見最基本的鎖存器是S-R鎖存器,然后常見常用的鎖存器是D鎖存器,下面就逐步看看他們的結(jié)構(gòu)和工作原理吧。
①SR鎖存器
在數(shù)字電路里面,SR鎖存器是最簡單的時序單元,它由一對交叉耦合的或非門構(gòu)成,如下所示:
主要功能就是通過輸入的S、R端分別控制Q進(jìn)行置位(set)和復(fù)位(reset)。下面我們就對這個電路的分析:
二輸入或非門的功能是,只要有一個輸入為1,輸出就為了0。這SR鎖存電路在正常情況下,輸入RS的組合之一4種可能,即00、01、10和11,下面我們就來看看這4種輸入對輸出Q的影響:
· 輸入R=0,S=0時:對于或非門N1,輸入是0和Q’,由于Q’不知道是0還是1,因此Q的輸出不能確定;對于或非門N2,輸入是0和Q,由于不知道Q的值,因此Q’也不能確定...這就無限循環(huán)下去了,于是我們像**交叉耦合反相器**那樣進(jìn)行輸出假設(shè):
**A** ,假設(shè)原來的狀態(tài)Q=0時,對應(yīng)的原來狀態(tài)就是Q’=1;那么N2的輸入就是0和0,輸出Q’=1,這樣子就鞏固了原來的狀態(tài)Q’=1;Q’=1,對于N2,輸入就是0和1,輸出Q=0,也鞏固了原來的狀態(tài),也就是與原來的假設(shè)一致。所以這個狀態(tài)可以穩(wěn)定下來,也就是當(dāng)輸入SR=00時,輸出Q=1,Q’=0是可以存在的,如下圖所示:
B ,假設(shè)原來的狀態(tài)Q=1時,對應(yīng)的原來狀態(tài)就是Q’=0;那么N2的輸入就是0和1,輸出Q’=0,這樣子就鞏固了原來的狀態(tài)Q’=0;Q’=0,對于N2,輸入就是0和0,輸出Q=1,也鞏固了原來的狀態(tài),也就是與原來的假設(shè)一致。所以這個狀態(tài)可以穩(wěn)定下來,也就是當(dāng)輸入SR=00時,輸出Q=0,Q’=1是也是可以存在的,如下圖所示:
由此可見,只要原來的狀態(tài)一定了,那么輸入SR=00時,輸出也就是原來的狀態(tài)。
·輸入S=1,R=0時,根據(jù)或非門的功能,由于S=1,N2的輸出Q’= 0;于是N1的輸入就是00,輸出Q就等于1;然后Q=1反饋回N2的輸入,讓N2的輸出穩(wěn)定為0,從而讓Q的輸出穩(wěn)定為1;輸入SR=10時,輸出Q=1,稱為置位功能。(這里我們看一下,在SR=10時,S的信號穩(wěn)定多久輸出Q和Q’才穩(wěn)定下來:S=1到來,首先經(jīng)過N2的門延時t1,然后是Q’反饋回N1的線延時t2,接著是N1的門延時t3,再然后是Q反饋回N2的門延時t4,也就是有2個門延時和兩個線延時,這是對于Q’的;對于Q還有增加一個N2門延時和一個Q’反饋回N1輸入的線延時)如下圖所示:
從上面的分析中,我們知道輸入S=1,R=0時,輸出Q=1,也就是置位的功能。
·當(dāng)S=0,R=1時,這種情況跟SR=10類似,只不過是輸出Q=0,也就是復(fù)位的功能。
·當(dāng)S=1,R=1時,根據(jù)或非門的功能知道,輸出Q=0,Q’=0。很顯然這時候Q=Q’了,這跟我們給輸出取值的字面意義是相反的,我們把這種狀態(tài)稱為**錯誤**輸出,這是要注意的。這里需要說明的是,S和R都有效是沒有意義的,鎖存器不能同時被復(fù)位和置位,這樣會引起輸出都是0的混亂電路反應(yīng)。
通過上面的分析,我們知道,SR鎖存器可以具有鎖存數(shù)據(jù)的功能:在S有效時,復(fù)位輸出Q=1;在R有效時,輸出復(fù)位Q=0;當(dāng)S和R都無效時,就會保持前一個狀態(tài)的輸出。
②D鎖存器
雖然SR鎖存器可以鎖存數(shù)據(jù),電路結(jié)構(gòu)也簡單,但是有一個毛病就是S和R同時有效時,輸出錯誤,使用不夠方便;還有一個問題就是某個時候存某個數(shù)據(jù)分不開,相當(dāng)于時間和內(nèi)容不夠清晰。因此就因此了D鎖存器,D鎖存的功能是在時鐘高/低電平的時候通過數(shù)據(jù),在時鐘低/高電平的時候鎖存數(shù)據(jù)(這樣就明確地說明了什么時候鎖存什么數(shù)據(jù),而不是像SR鎖存器一樣,不知道鎖存什么數(shù)據(jù)),具體的結(jié)構(gòu)圖和分析如下所示:
D鎖存器常見結(jié)構(gòu)和電路符號圖如下所示:
可以看到,D鎖存器可以分為前級門電路(兩個與門和一個非門)和后級SR鎖存器組成,(PS:反相器2個晶體管,兩個與門共12個晶體管,兩個或非門共8個晶體管,D鎖存器一個22個晶體管)下面我們就來分析一下它的功能:
輸入是Clk和D,也就是輸入有四種可能:
·當(dāng)clk=0時,紅S紅R都為0,也就是SR鎖存器的輸入為00,根據(jù)SR鎖存器的功能,輸出Q和Q’將保持原來的狀態(tài);因此clk=0時,不管D是什么,輸出Q和Q’都不隨D變化,只與原來的狀態(tài)有關(guān),也就是保持。
·當(dāng)clk=1時,R=(1·D’)=D’;S=(1·D)=D。
也就是說,當(dāng)clk=1的時候,SR鎖存的輸入是互補(bǔ)的,不會出現(xiàn)S和R同時有效的情況。當(dāng)D=1時,S=1,置位有效,輸出Q=1;當(dāng)D=0時,R=1,復(fù)位有效,輸出Q=0;因此就可以知道,在clk=1時,輸出Q=D,也就是輸出等于輸入。
通過上面的分析,上面的D鎖存器結(jié)構(gòu)功能為:在clk=1時,數(shù)據(jù)通過D鎖存器流到了Q;在Clk=0時,Q保持原來的值不變。這樣的鎖存器也稱為透明鎖存器或者**電平**敏感鎖存器(這里需要注意的是,上面結(jié)構(gòu)中 **電平敏感鎖存器是高電平敏感** ,**也是就是高電平有效,這里的有效不是指“鎖存”的這個功能有效,而是指輸出發(fā)生變化即輸入信號得以傳送到輸出,方便后面的鎖存操作**)。然后低電平敏感的D鎖存器的電路結(jié)構(gòu)這里就不介紹了。
3、D鎖存器的應(yīng)用
鎖存器用來鎖存數(shù)據(jù),這是初始的功能應(yīng)用,這里來聊聊鎖存的其他的簡單應(yīng)用吧。
①鎖存器的常用應(yīng)用就是用來防電路毛刺了,具體的應(yīng)用就是門控時鐘了,這里請查看我的另外一篇博文,那里有較為詳細(xì)的關(guān)于門控電路的描述。
②此外,鎖存器可以用來構(gòu)造觸發(fā)器,這個我們在后面的觸發(fā)器中進(jìn)行介紹。
③鎖存器的一種叫做鎖定鎖存器( lockup latch)的玩意用于修復(fù)掃描鏈插入時引起的時鐘偏移問題,幫助修復(fù)保持時間違規(guī)
④類似通過修復(fù)保持時間來增強(qiáng)性能、鎖存器流水線的應(yīng)用,這些應(yīng)用很難三言兩語的說明,有些我也不是完全掌握,以后有時間再進(jìn)行撰寫。
4、(D)觸發(fā)器
觸發(fā)器有很多類型,比如J-K觸發(fā)器、T觸發(fā)器、D觸發(fā)。前面我們也說了,鎖存器的應(yīng)用之一就是構(gòu)成觸發(fā)器,這里我們只聊最簡單的觸發(fā)器——D觸發(fā)器,D觸發(fā)器的結(jié)構(gòu)和電路符號圖如下所示:
D觸發(fā)器可以由兩個D鎖存器構(gòu)成,驅(qū)動時鐘的相位相反(也就是),前面的D鎖存器稱為主鎖存器,后面的D鎖存器稱為從鎖存器,因此D觸發(fā)器也可以稱為主從觸發(fā)器(PS:兩個D鎖存器共44個晶體管,非門2個晶體管,因此D觸發(fā)器46個晶體管)。下面我們分析一下D觸發(fā)的功能:
假設(shè)要傳輸?shù)臄?shù)據(jù)D=D1:在(clock簡稱clk)**clk=0**的時候,主鎖存打開進(jìn)行傳輸數(shù)據(jù),把輸入傳送到從到從鎖存器的輸入端,即Qm = D1。然后**clk從0→1**的時候,主鎖存器準(zhǔn)備關(guān)閉,保持原來的值D1,與此同時從鎖存器準(zhǔn)備打開,把Qm的值傳輸?shù)捷敵鯭s,也就是Qs=Qm=D1。在**clk=1**的時候,主鎖存器是關(guān)閉的,Qm保持D1不變,即Qm=D1;從鎖存器是打開的,Qs=Qm=D1。接著**clk從1→0**的時候,主鎖存器準(zhǔn)備打開,準(zhǔn)備傳輸數(shù)據(jù);而從鎖存器準(zhǔn)備關(guān)閉。在clk=0的時候,主鎖存打開進(jìn)行傳輸數(shù)據(jù),把輸入傳送到從到從鎖存器的輸入端,即Qm *= D2;與此 **同時** ,從鎖存器關(guān)閉,由于新的Qm即Qm*還沒有到達(dá)從鎖存器的D端,因此在從鎖存器關(guān)閉的時候,從鎖存器鎖存的是原來的值即D1,因此輸出Qs =D1。然后接下來上升沿就傳輸D2....
從上面的分析可以找到,D觸發(fā)器在時鐘上升沿的時候鎖存在時鐘上升沿采到的值,并且保持一個時鐘周期。這種在時鐘上升沿鎖存數(shù)據(jù)的觸發(fā)器稱為正邊沿觸發(fā)器,與此對應(yīng)的還有負(fù)邊沿觸發(fā)的觸發(fā)器,這里就不進(jìn)行介紹了。
由D觸發(fā)器延伸出去的知識點還有很多,比如寄存器,寄存器由多個D觸發(fā)器構(gòu)成(一個D觸發(fā)器可以看做1位的寄存器);比如帶使能的觸發(fā)器:
帶復(fù)位的觸發(fā)器:
OK,觸發(fā)器的結(jié)果和功能就聊到這里,接下來我們來聊聊觸發(fā)器的建立時間(setup time)和保持時間(hold time).
5、(D)觸發(fā)器的建立時間和保持時間
首先我們來看看建立時間和保持時間的定義,然后再看看為什么會這樣。
**建立時間** :時鐘有效沿到來之前的某段時間內(nèi),數(shù)據(jù)必須穩(wěn)定,否則觸發(fā)器鎖存不住數(shù)據(jù),這段時間成為建立時間,用Tsetup或者Tsu表示,也就是說要鎖存的數(shù)據(jù)必須比上升沿早來時間必須大于建立時間。
**保持時間** :時鐘有效沿到來之后的某段時間內(nèi),數(shù)據(jù)也必須穩(wěn)定,否則觸發(fā)器鎖存不住數(shù)據(jù),這段時間成為保持時間,用Thold或者Th表示。也就是說,要鎖存的數(shù)據(jù),在上升沿到來之后,還要停留比保持時間大的時間。
如下圖所示:
在第二個時鐘上升沿的時候,要鎖存住輸入端D的高電平,D1是滿足了建立時間和保持時間的情況;而D2則是建立時間沒有滿足,因此不能成功鎖存住輸入的高電平;D3保持時間不滿足,也不能成功鎖存輸入的高電平。
下面我們就來探討一下為什么會會有建立時間和保持時間的要求(別跟我說不滿足要求就不能鎖存正確數(shù)據(jù),我要的是根本原因,不是后果,也就是為什么不滿足建立/保持時間會導(dǎo)致不能捕獲正確鎖存數(shù)據(jù)的原因):
首先D觸發(fā)器的門級結(jié)果如下所示:
我們知道D觸發(fā)器是在(上升)邊沿進(jìn)行鎖存數(shù)據(jù)的,也就是clk從在0→1的時候鎖存數(shù)據(jù),那我們就看看這個上升沿的時候發(fā)生了什么:
假設(shè)原來的數(shù)據(jù)是1(也就是從鎖存器鎖存的數(shù)據(jù)是1),然后我們要鎖存的數(shù)據(jù)是0。我是這么理解建立時間和保持時間的:
首先,要讓時鐘上升沿之后Q輸出為了,就是要讓從鎖存器輸出為0,即是要主鎖存器在時鐘上升沿之后穩(wěn)定地鎖存住0,換個角度看就是:在上升沿到來以及到來之后,主鎖存器負(fù)責(zé)鎖存數(shù)據(jù),而從鎖存器則是負(fù)責(zé)傳輸 主鎖存器所鎖存好的 數(shù)據(jù);這樣一來,我們的研究重點就放在了 主鎖存器 。
對于主鎖存器,我們可以看這個圖:
在時鐘上升沿到來后,我們要讓 Q輸出0 。假如數(shù)據(jù)的建立時間不足,會發(fā)生什么呢,也就是數(shù)據(jù)(0)相對于時鐘上升沿來得太晚了會怎么樣呢?
假設(shè)在T=0ns的時候,clk從0變成1(為方便分析,假設(shè)時鐘是理想的,沒有跳變延時)。我們假設(shè)一個數(shù)據(jù)D1=0在 **T=-0.7ns(即比時鐘上升沿提前0.7s)** 的時候到達(dá)數(shù)據(jù)的端口,然后另一個數(shù)據(jù)D2=0在**T=-0.3ns**的時候才來到數(shù)據(jù)端口(也就是說,D1來得早,而D2來得比較晚即建立時間不足)。然后D1這個0翻山越嶺越過了反相器,變成1,經(jīng)過了與門(由于與門的另一個輸入為1)變成了1,經(jīng)過或非門之后,使輸出Q變成了0,也就是變成了從鎖存器要鎖存的0值。然后主鎖存器Q剛輸出0的時候,還不穩(wěn)定,需要通過反饋使得自己的或非門的輸入為1就是需要t1+t2+t3的時間(如下圖所示)進(jìn)行維持Q的穩(wěn)定。
然后我們再看看D2數(shù)據(jù)翻山越嶺,剛剛翻到與門那里,時鐘沿就來了,它都 沒有成功到達(dá)或非門輸入 。于是D2就肯定達(dá)不到目標(biāo)了,也就是變不成了從鎖存器要鎖存的0值,這就是建立時間不足的引起鎖存不住值的問題。
接著我們看一下 保持時間 ,還是從主鎖存器這邊看。加入0時刻時鐘clk發(fā)生0→1的上升沿跳變時候,clk的1信號首先需要經(jīng)過反相器(inst10)變成0信號后傳到后面的與門(inst13和inst14)。信號從時鐘端口到達(dá)與門需要經(jīng)過t1的延遲時間(如下圖所示)即他t1時刻與門的輸入就為低電平0。那么在這個t1時刻之前,與門的輸入端clk始終保持高電平1; 在t1時刻之前 ,如果輸入端D發(fā)生跳變,也就是從0變成1(也就是低電平0這個信號保持得不夠久,由于某些原因被沖成了高電平1),變換后的數(shù)據(jù)端高電平1經(jīng)過t2延時之后,到達(dá)與門的另一個輸入端。當(dāng)t2 因此我們需要輸入D在時鐘沿跳變之后保持不變,這個保持時間的實質(zhì)就是這個t1與t2的差值,即數(shù)據(jù)到達(dá)之后,要保持t1-t2。假如這跟導(dǎo)線很長,即t2的延遲很長,比t1還長,那么保持時間就是一個負(fù)值,這時候就完全沒有必要關(guān)注保持時間了,而是關(guān)注建立時間了。 從上面的分析可以知道,保持時間一般情況下會比建立時間小。
-
CMOS
+關(guān)注
關(guān)注
58文章
6094瀏覽量
240652 -
時鐘
+關(guān)注
關(guān)注
11文章
1946瀏覽量
134127 -
鎖存器
+關(guān)注
關(guān)注
8文章
947瀏覽量
43309 -
D觸發(fā)器
+關(guān)注
關(guān)注
3文章
180瀏覽量
49361 -
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2047瀏覽量
62791
發(fā)布評論請先 登錄
評論