什么是三態(tài)電路
一般來(lái)說(shuō),我們認(rèn)為CMOS數(shù)字電路的輸出的穩(wěn)定狀態(tài)只有2種,就是邏輯0和邏輯1,從模擬信號(hào)量來(lái)說(shuō),就是0V和VDD。
那么有些小伙伴會(huì)說(shuō)了,實(shí)際上輸出狀態(tài)還有Z態(tài)和X態(tài)。
Z態(tài)表示沒(méi)有驅(qū)動(dòng)時(shí)信號(hào)的輸出,又被表示為高阻狀態(tài)High-Z,在仿真波形上,喜歡用一條處于中間位置的線條表示,有的工具用黃色線條,有些工具用紅色線條。
而X態(tài),則表示輸出狀態(tài)不是邏輯0,也不是邏輯1,在仿真波形上,往往用一種紅色塊表示。如下圖所示:
從仿真信號(hào)來(lái)看,這樣的描述是為了區(qū)分穩(wěn)定輸出的信號(hào)邏輯狀態(tài),但客觀世界里,并不存在X態(tài)以及Z態(tài)這兩種信號(hào)狀態(tài)。只是在不穩(wěn)定的情況下,由于外界不確定的驅(qū)動(dòng)因素,會(huì)使得輸出狀態(tài)向邏輯0或邏輯1漂移。
一般來(lái)說(shuō)如果想避免這種Z態(tài)或X態(tài),那么就必須確保信號(hào)有,且只有一個(gè)驅(qū)動(dòng)源在驅(qū)動(dòng)。(亞穩(wěn)態(tài)也是導(dǎo)致Z態(tài)或X態(tài)的一種原因,但在那個(gè)時(shí)候,其實(shí)就是存在多個(gè)驅(qū)動(dòng),或沒(méi)有驅(qū)動(dòng)的情況)
峰回路轉(zhuǎn),那么這里想說(shuō)的三態(tài)電路,又是一個(gè)什么鬼呢?我們看下面這個(gè)電路結(jié)構(gòu)。
上圖所示,就是一種三態(tài)輸出電路,當(dāng)Enable為VDD的時(shí)候,輸出電壓Vout與A端輸入電壓保持一個(gè)邏輯電平轉(zhuǎn)換。但是當(dāng)Enable控制信號(hào)為0V,也就是邏輯0時(shí),無(wú)論輸入電壓A端怎么變化,輸出反相器的PMOS和NMOS都處于關(guān)閉狀態(tài),Vout就沒(méi)有驅(qū)動(dòng)了。
剛才我們說(shuō)過(guò),如果信號(hào)沒(méi)有驅(qū)動(dòng),就是輸出高阻態(tài)High-Z,那么Enable為邏輯0的時(shí)候,Vout就是High-Z。
這種可以輸出第三種邏輯狀態(tài)的電路,我們稱之為三態(tài)電路。在數(shù)字邏輯設(shè)計(jì)中,原則上只有IO電路上可以使用,常規(guī)的RTL設(shè)計(jì),是不允許使用的。
如何讓High-Z從不穩(wěn)定走向穩(wěn)定
既然High-Z是一種因?yàn)闆](méi)有驅(qū)動(dòng)而導(dǎo)致無(wú)法使用的不穩(wěn)定信號(hào)邏輯,那么又怎樣去使用呢?
因?yàn)槿龖B(tài)電路常被用于IO Buffer的電路中,因此一般來(lái)說(shuō),我們會(huì)在Vout輸出上加一個(gè)上拉電路或下拉電路。當(dāng)Enable無(wú)效時(shí),Vout通過(guò)一個(gè)弱上拉或弱下拉連接到VDD或地上,使其穩(wěn)定到VDD或0V。
如下所示,是某工藝下數(shù)字邏輯IO Cell的電路示意圖,當(dāng)OEN為1'b1的時(shí)候,A端數(shù)據(jù)是無(wú)法送到P(即PAD)端的,但通過(guò)配置PUN為邏輯0的時(shí)候,則P端被拉到了VDD,即邏輯1上,確保了穩(wěn)定的輸出:
FPGA上如何使用三態(tài)電路作為IO
一般來(lái)說(shuō),ASIC設(shè)計(jì)時(shí),有專門的IO Buffer可以實(shí)現(xiàn)三態(tài)IO電路,實(shí)例化在電路中即可。但FPGA沒(méi)有,可以使用以下Verilog HDL實(shí)現(xiàn):
注意這只適用于FPGA,同時(shí)要在IO約束文件里設(shè)置PULLUP或PULLDOWN可配置上拉或下拉。
使用BUSKEEPER對(duì)三態(tài)輸出做保持
有些早期設(shè)計(jì)的片內(nèi)嵌入式存儲(chǔ)電路,其輸出口仍然會(huì)使用三態(tài)輸出,原本是為了降低功耗(還沒(méi)輸出時(shí),關(guān)閉輸出驅(qū)動(dòng)管),但這也導(dǎo)致輸出端出現(xiàn)High-Z,無(wú)法直接連接到數(shù)字邏輯上。
這個(gè)時(shí)候就可以在每個(gè)可能出現(xiàn)三態(tài)邏輯的輸出信號(hào)上,接一個(gè)叫做buskeeper的電路邏輯,有時(shí)候又叫busholder。
Buskeeper用了一對(duì)驅(qū)動(dòng)力大體一致的反相器組成反饋,當(dāng)內(nèi)部關(guān)閉輸出后,原本在信號(hào)上的邏輯1或邏輯0,就可以被保持住。確保數(shù)字邏輯中不存在高阻或不定態(tài)。
注意驅(qū)動(dòng)能力
無(wú)論上拉或下拉,我們都會(huì)說(shuō) 弱上拉 ,或 弱下拉 ,這是什么原因呢?
我們看下面這個(gè)IO,當(dāng)輸出使能關(guān)閉后,DRVP以及DRVN都處于OFF狀態(tài),VDDPST通過(guò)上拉PMOS,PUMOS,為電容充電,使得PAD達(dá)到VDDPST的電壓值,也就是邏輯1。
如果打開輸出使能,并想輸出邏輯1,如下圖所示,因?yàn)轵?qū)動(dòng)管DRVN關(guān)閉,因此VDDPST通過(guò)DRVP以及PUMOS同時(shí)向電容充電,時(shí)PAD達(dá)到邏輯1。這個(gè)還是比較好理解的。
但是如果我們想輸出邏輯0呢?由于上拉管PUMOS與驅(qū)動(dòng)管DRVN同時(shí)打開,那么同時(shí)會(huì)有VDDPST通過(guò)PUMOS向電容充電,以及電容通過(guò)DRVN向地放電的兩條通路。如果想讓PAD達(dá)到邏輯0,那么必須是放電通路的能力遠(yuǎn)遠(yuǎn)大于充電通路。
由此可見,必須使用較大的上拉或下拉電阻,或者使用驅(qū)動(dòng)能力較弱的上拉或下拉晶體管,才更可能使PAD在輸出邏輯0的時(shí)候,更容易接近于地電平。
所謂驅(qū)動(dòng)力,其實(shí)就是電流,對(duì)于電阻來(lái)說(shuō),電流就是電壓與電阻的比值:
I=(VDDPST-VPAD)/R(I是驅(qū)動(dòng)電流,VDDPST是IO的供電電壓,而VPAD是PAD上的電壓,理想結(jié)果是無(wú)限趨近于0V,R則是電阻的阻值)
由此可見,在假設(shè)VPAD無(wú)限接近于0,則希望電流越?。?qū)動(dòng)力越?。?,則上拉或下拉電阻的阻值就需要越大。
而對(duì)于MOS來(lái)說(shuō),如果假設(shè)VPAD的電壓無(wú)限接近于VDDPST或0V,則上拉或下拉晶體管處于飽和狀態(tài),可以提供電流的公式為下圖中飽和區(qū)的計(jì)算方式:
根據(jù)公式可以看出,如果在一個(gè)特定工藝的芯片內(nèi),想減少電流,就是減小寬長(zhǎng)比W/L的數(shù)值。
需要注意,因?yàn)镻MOS的遷移率只有NMOS大概一半的樣子,因此在設(shè)計(jì)電路時(shí),下拉器件的選擇尤為重要。經(jīng)驗(yàn)不足的工程師,往往會(huì)在下拉驅(qū)動(dòng)選擇上翻跟頭。
給大家一個(gè)問(wèn)題思考,如果芯片內(nèi)的下拉驅(qū)動(dòng)能力比較強(qiáng),后期芯片無(wú)法輸出穩(wěn)定的邏輯1,我們能不能通過(guò)板級(jí)設(shè)計(jì)解決這個(gè)問(wèn)題呢?
電平適配電路
我們一般都認(rèn)為IO的輸出電壓就是芯片供電的Post-Drive電壓,如果驅(qū)動(dòng)芯片A的Post-Drive電壓VDDPSTA是2.5V,則VOH為2.5V,但接收芯片B的Post-Drive電壓VDDPSTB是3.3V,VIL為2.7V。如何讓接收信號(hào)穩(wěn)定的接收到驅(qū)動(dòng)邏輯電平呢?
這里可以巧用三態(tài)IO,當(dāng)CHIPA要輸出邏輯1的時(shí)候,不是通過(guò)驅(qū)動(dòng)管輸出邏輯1,而是輸出一個(gè)High-Z狀態(tài),這個(gè)時(shí)候PAD上的信號(hào)就沒(méi)有驅(qū)動(dòng)了。在片外增加一個(gè)上拉電阻,并連接到VDDPSTB上,則此時(shí)PAD上的電壓VPAD就會(huì)因?yàn)閂DDPSTB通過(guò)板級(jí)上拉電阻向電容充電而上升到VDDPSTB上,并穩(wěn)定為CHIPB提供邏輯1。
但也要注意一個(gè)問(wèn)題,就是如果VDDPSTB比VDDPSTA高的太多,那么就要注意會(huì)不會(huì)因?yàn)閂DDPSTB到地的電壓過(guò)大,或者VDDPSTB到VDDPSTA的電壓差過(guò)大燒壞了DRVN或DRVP。
通過(guò)上拉電阻輸出邏輯1,或者通過(guò)下拉電阻輸出邏輯0的三態(tài)IO Buffer,在GPIO以及I2C等通訊接口上是經(jīng)常被用到的。具體電路,具體分析。
-
上拉電阻
+關(guān)注
關(guān)注
5文章
357瀏覽量
30543 -
VDD
+關(guān)注
關(guān)注
1文章
311瀏覽量
33052 -
三態(tài)電路
+關(guān)注
關(guān)注
0文章
4瀏覽量
5565 -
FPGA開發(fā)板
+關(guān)注
關(guān)注
10文章
121瀏覽量
31469 -
CMOS數(shù)字電路
+關(guān)注
關(guān)注
0文章
3瀏覽量
6146
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論