组合逻辑电路的分析与设计
目錄
1.組合邏輯電路的分析方法
2.公式化簡(jiǎn)和卡諾圖化簡(jiǎn)
2.1公式化簡(jiǎn)的基本定律和規(guī)則
2.2邏輯函數(shù)的卡諾圖化簡(jiǎn)法
2.3具有無(wú)關(guān)項(xiàng)的化簡(jiǎn)
3.競(jìng)爭(zhēng)與冒險(xiǎn)?
3.1產(chǎn)生競(jìng)爭(zhēng)-冒險(xiǎn)的原因
3.2邏輯競(jìng)爭(zhēng)與邏輯冒險(xiǎn)
3.3邏輯冒險(xiǎn)的識(shí)別與消除
3.3.1代數(shù)法
3.3.2卡諾圖法
3.3.3邏輯冒險(xiǎn)的消除
3.4功能競(jìng)爭(zhēng)與功能冒險(xiǎn)
3.5功能冒險(xiǎn)的識(shí)別與消除
3.5.1功能冒險(xiǎn)的識(shí)別
3.5.2功能冒險(xiǎn)的消除
本文結(jié)合了原鋯石科技文檔資料(截取其中部分圖表),并參考了康華光《 電子技術(shù)基礎(chǔ) 數(shù)字部分》(第六版)。
?
1.組合邏輯電路的分析方法
首先給出組合邏輯電路的一般分析方法,如圖1.1所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1.1 組合邏輯電路的一般分析方法
以下圖的組合邏輯電路為例。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1.2 組合邏輯電路圖
?
(1)根據(jù)電路圖寫(xiě)出邏輯表達(dá)式。由于現(xiàn)實(shí)中的電路圖可能比較復(fù)雜,可以采取級(jí)聯(lián)的分時(shí)分別寫(xiě)出各子模塊的邏輯表達(dá)式。分別寫(xiě)出P1、P2、P3、P4的表達(dá)式。
得到最終的表達(dá)式:
(2)根據(jù)邏輯表達(dá)式寫(xiě)出真值表。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表1.1 真值表
(3)根據(jù)真值表分析電路的功能。如表1.1所示,當(dāng)且僅當(dāng)此電路當(dāng)輸入變量A、B、C全為0或全為1時(shí),L輸出為1;否則,L輸出為0。
?
2.公式化簡(jiǎn)和卡諾圖化簡(jiǎn)
2.1公式化簡(jiǎn)的基本定律和規(guī)則
表2.1.1是公式化簡(jiǎn)的九條基本定律。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表2.1.1 公式化簡(jiǎn)的九條基本定律
?
邏輯代數(shù)除了上面的九條基本定律,還有三條重要的規(guī)則。分別是:代入規(guī)則、反演規(guī)則和對(duì)偶規(guī)則。
(1)所謂代入規(guī)則就是每個(gè)模塊的輸出都可以作其他模塊的輸入。已知等式,有函數(shù),將代入前式中的,得到。
(2)反演規(guī)則就是邏輯表達(dá)式中的運(yùn)算符、常量和變量作如下變換:、、、。例如,,則。
(3)對(duì)偶規(guī)則。設(shè)是一個(gè)邏輯表達(dá)式,若把中的“與、或互換,0、1互換”,那么就得到一個(gè)新的邏輯表達(dá)式,這就是的對(duì)偶式,記作。例如,,則。變換時(shí)需注意保持原式中"先括號(hào)、然后與、然后或"的運(yùn)算順序。可以發(fā)現(xiàn),公式化簡(jiǎn)的九條基本定律右邊一列都可以由左邊等式作對(duì)偶得到。將該規(guī)則概括為:當(dāng)某個(gè)邏輯表達(dá)式相等,則它們的對(duì)偶式也相當(dāng)。
除了上述的九條基本定律和三條重要規(guī)則,還有一些公式化簡(jiǎn)的方法:
(1)并項(xiàng)法:利用公式,將兩項(xiàng)合并成一項(xiàng),并消去一個(gè)變量。例如,
(2)吸收法:利用公式,消去多余的項(xiàng)。根據(jù)代入規(guī)則,、可以是任何一個(gè)復(fù)雜的邏輯式。例如,
(3)消去法:利用公式,消去多余的因子。例如,
(4)配項(xiàng)法:先利用,增加必要的乘積項(xiàng),再用并項(xiàng)或吸收的辦法使項(xiàng)數(shù)減少。例如,
2.2邏輯函數(shù)的卡諾圖化簡(jiǎn)法
關(guān)于卡諾圖的引出以及卡諾圖化簡(jiǎn)的依據(jù)這里不再贅述(感興趣的可以參考電子技術(shù)書(shū)籍),這里僅討論卡諾圖化簡(jiǎn)的一般步驟和實(shí)例。
在給出卡諾圖化簡(jiǎn)得方法前,首先給出卡諾圖的表示方法及其化簡(jiǎn)形式(以四變量為例)。
將上述兩幅卡諾圖的表示方法對(duì)比可以發(fā)現(xiàn),0000代表(表示次序依次為00,01,11,10,不要顛倒)?????。
卡諾圖化簡(jiǎn)的一般步驟如下:
(1)將邏輯函數(shù)寫(xiě)成最小項(xiàng)表達(dá)式;
(2)按最小項(xiàng)表達(dá)式填卡諾圖(包含在式中的填1,其余填0);
(3)圈出為1的相鄰最小項(xiàng),每個(gè)圈必須包含個(gè);
(4)將所有包圍圈對(duì)應(yīng)的乘積項(xiàng)相加(每個(gè)包圍圈的乘積項(xiàng)為變量的相同部分)。
注:在已知真值表的情況下,可將上述步驟的(1)(2)合并為一步。
?
這里重點(diǎn)對(duì)畫(huà)圈的原則進(jìn)行說(shuō)明:
(1)包圍圈內(nèi)的方格數(shù)必定是個(gè);
(2)相鄰方格包括上下底相鄰,左右邊相鄰和四個(gè)角兩兩相鄰;
(3)同一個(gè)方格可以被不同的包圍圈重復(fù)包圍,但新增包圍圈中一定要有新的方格(已有圈中的子集不可重新劃定為圈,例如已圈定的4個(gè)方格大小的圈中的兩個(gè)方格不可圈定為新圈);
(4)包圍圈內(nèi)的方格要盡可能多(也就是說(shuō)包圍圈的數(shù)目要盡量少),這決定了采用卡諾圖化簡(jiǎn)后的表達(dá)式是否最簡(jiǎn)。
?
例1 用卡諾圖法化簡(jiǎn)下列邏輯函數(shù),求的最簡(jiǎn)與-或表達(dá)式。
解:
(1)根據(jù)邏輯函數(shù)畫(huà)出卡諾圖
?(2)找出1的相鄰最小項(xiàng),圈出包圍圈,合并最小項(xiàng),得到最簡(jiǎn)與-或表達(dá)式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
得到這兩個(gè)乘積項(xiàng)的過(guò)程,這里再贅述一下(以中間的四格圈為例)。AB部分01和11中‘1’為共同元素,對(duì)應(yīng)著B(niǎo);CD部分01和11中‘1’為共同元素,對(duì)應(yīng)著D,得到項(xiàng)。因此只需要先按行找他們的共同元素,再按列找共同元素。
?
例2?化簡(jiǎn)下列邏輯函數(shù)。
解:
(1)由畫(huà)出卡諾圖
(2)?卡諾圖化簡(jiǎn)(這里由于1比較多,提供第二種思路)
?
法一(圈1)?:
法二(圈0):,從而
2.3具有無(wú)關(guān)項(xiàng)的化簡(jiǎn)
除了上述這些具有確定邏輯表達(dá)式的卡諾圖化簡(jiǎn),在實(shí)際工作中,邏輯變量意味著特殊的現(xiàn)實(shí)意義,因此某些變量的取值組合并不會(huì)出現(xiàn),也就是函數(shù)值可以是任意的(可以是0,也可以是1),變量取這些值所對(duì)應(yīng)的最小項(xiàng)稱為無(wú)關(guān)項(xiàng)或任意項(xiàng)。這點(diǎn)在由真值表進(jìn)行卡諾圖化簡(jiǎn)中體現(xiàn)得尤為明顯。
注:引入無(wú)關(guān)項(xiàng)的目的主要是為了化簡(jiǎn)原有的函數(shù)表達(dá)式,切勿畫(huà)蛇添足,將額外的無(wú)關(guān)項(xiàng)圈出來(lái)(也就是說(shuō),例如把本來(lái)只可以圈畫(huà)4個(gè)方格,引入無(wú)關(guān)項(xiàng)后可以圈畫(huà)8個(gè)方格,但是不要單獨(dú)將無(wú)關(guān)項(xiàng)直接圈畫(huà)起來(lái))
?
例:要求設(shè)計(jì)一個(gè)邏輯電路,能夠判斷1位十進(jìn)制數(shù)是奇書(shū)還是偶數(shù),當(dāng)十進(jìn)制為奇數(shù)時(shí),電路輸出為1;當(dāng)十進(jìn)制數(shù)為偶數(shù)時(shí),電路輸出為0。
解:
(1)寫(xiě)出真值表。用8421 BCD碼表示十進(jìn)制數(shù),輸入變量用A、B、C、D表示。1表示對(duì)應(yīng)的十進(jìn)制數(shù)為奇數(shù),0表示對(duì)應(yīng)的十進(jìn)制數(shù)為0
注:下面出現(xiàn)的無(wú)關(guān)項(xiàng)是由于8421 BCD碼只有十個(gè)數(shù),表中的后六種組合式無(wú)關(guān)的。
(2)根據(jù)真值表,填寫(xiě)四變量卡諾圖
(3)畫(huà)包圍圈,利用無(wú)關(guān)項(xiàng),將最小項(xiàng)、、?對(duì)應(yīng)的方格視為1,可以得到最大的包圍圈,由此得到邏輯表達(dá)式?
?
3.競(jìng)爭(zhēng)與冒險(xiǎn)?
3.1產(chǎn)生競(jìng)爭(zhēng)-冒險(xiǎn)的原因
前面進(jìn)行組合邏輯電路的分析與設(shè)計(jì)時(shí),都沒(méi)有考慮邏輯門(mén)的延遲時(shí)間對(duì)電路產(chǎn)生的影響(把門(mén)電路看成是理想門(mén)電路),并且認(rèn)為電路的輸入和輸出均處于穩(wěn)定的邏輯電平。實(shí)際上,信號(hào)經(jīng)過(guò)邏輯門(mén)電路都需要一定的時(shí)間。由于不同路徑上門(mén)的級(jí)數(shù)不同,信號(hào)經(jīng)過(guò)不同路徑傳輸?shù)臅r(shí)間不同。或者門(mén)的級(jí)數(shù)相同,而各個(gè)門(mén)延遲時(shí)間的差異,也會(huì)造成傳輸時(shí)間的不同。因此,電路在信號(hào)電平變化瞬間,可能與穩(wěn)態(tài)下的邏輯功能不一致,產(chǎn)生錯(cuò)誤輸出,這種現(xiàn)象就是電路中的競(jìng)爭(zhēng)-冒險(xiǎn)。
根據(jù)其產(chǎn)生的原因不同,又可分為邏輯競(jìng)爭(zhēng)、邏輯冒險(xiǎn)和功能競(jìng)爭(zhēng)、功能冒險(xiǎn)。
?
3.2邏輯競(jìng)爭(zhēng)與邏輯冒險(xiǎn)
會(huì)導(dǎo)致"1型冒險(xiǎn)",會(huì)導(dǎo)致"0型冒險(xiǎn)"。
競(jìng)爭(zhēng)就是在一個(gè)組合電路中,當(dāng)某一個(gè)變量經(jīng)過(guò)兩個(gè)以上的路徑到達(dá)輸出端時(shí),由于每條路徑上的延遲時(shí)間不同,到達(dá)終點(diǎn)的時(shí)間有先后,這一現(xiàn)象被稱為競(jìng)爭(zhēng),這里的競(jìng)爭(zhēng)又可以稱之為邏輯競(jìng)爭(zhēng)。如下圖所示:
?輸入端A的一端經(jīng)過(guò)G1門(mén),延遲了一個(gè)時(shí)間后到達(dá)G2門(mén);而另一端直接連接在了G2門(mén)的輸入端。因此,可以說(shuō)同一個(gè)信號(hào)A,經(jīng)過(guò)兩條不同的路徑分別到達(dá)G2門(mén),并且由于它經(jīng)過(guò)的兩個(gè)路徑的延遲時(shí)間不同,這兩個(gè)信號(hào)到達(dá)輸入端有先后關(guān)系,這樣的現(xiàn)象稱之為邏輯競(jìng)爭(zhēng)。
冒險(xiǎn),就是在具有競(jìng)爭(zhēng)現(xiàn)象的組合電路中,當(dāng)某個(gè)變量發(fā)生變化時(shí)(0到1,1到0),如果真指標(biāo)所描述的邏輯關(guān)系或者功能受到短暫的破壞,在輸出端出現(xiàn)一個(gè)本不該有的尖脈沖(毛刺),這一現(xiàn)象稱為邏輯冒險(xiǎn)。邏輯冒險(xiǎn)是一個(gè)錯(cuò)誤的輸出。
由上圖的電路圖寫(xiě)出表達(dá)式,,然后再根據(jù)表達(dá)式寫(xiě)出真值表,如下圖所示:
從真值表可知,輸出變量恒等于0,如下是其對(duì)應(yīng)的理想波形圖:
然而,由于實(shí)際電路中門(mén)電路有延遲時(shí)間,將延遲時(shí)間記作,根據(jù)延遲時(shí)間畫(huà)出實(shí)際狀態(tài)的波形圖,如下圖所示:
?從上圖可以看出,信號(hào)經(jīng)過(guò)一個(gè)G1非門(mén),由于非門(mén)有一個(gè)延遲時(shí)間,所以不是另可變?yōu)?,而是經(jīng)過(guò)一個(gè)延遲時(shí)間后才變?yōu)?。按照與邏輯功能,當(dāng)=1,=0時(shí),才等于1,但是不會(huì)直接立刻輸出1,因?yàn)榕c還要經(jīng)過(guò)G2與門(mén)才會(huì)輸出1。因此,這個(gè)電路的輸出端也經(jīng)過(guò)了一個(gè)延遲時(shí)間后才輸出1(輸出是由與經(jīng)過(guò)非門(mén)得到的相與之后再經(jīng)過(guò)一個(gè)非門(mén)的延遲時(shí)間后得到的,并且默認(rèn)與門(mén)、非門(mén)延遲時(shí)間一致)。
在實(shí)際狀態(tài)波形圖中,出現(xiàn)這種短暫變?yōu)?的波形,相當(dāng)于在電路中產(chǎn)生了一個(gè)尖脈沖,是不符合邏輯表達(dá)式要求的,是一個(gè)錯(cuò)誤的波形。因此,將這種出現(xiàn)錯(cuò)誤波形的現(xiàn)象稱為邏輯冒險(xiǎn)(邏輯冒險(xiǎn)是由邏輯競(jìng)爭(zhēng)導(dǎo)致的)。又因?yàn)楫a(chǎn)生的是一個(gè)正的尖脈沖,所以通常稱這種邏輯冒險(xiǎn)為"1型冒險(xiǎn)"。在波形的后部分,當(dāng)變?yōu)?以后,不是立刻變?yōu)?,它要經(jīng)過(guò)一個(gè)延遲時(shí)間后才會(huì)變成1,盡管在后面三條虛線內(nèi)也出現(xiàn)了邏輯競(jìng)爭(zhēng),但是并沒(méi)有出現(xiàn)邏輯冒險(xiǎn)。由此說(shuō)明,邏輯競(jìng)爭(zhēng)并一定會(huì)導(dǎo)致邏輯冒險(xiǎn)。
"0型冒險(xiǎn)"僅依次給出電路圖、真值表和波形圖,不再詳細(xì)分析,如下圖所示:
?
?
3.3邏輯冒險(xiǎn)的識(shí)別與消除
想要識(shí)別一個(gè)電路中是否存在邏輯冒險(xiǎn),通過(guò)有兩種方法判別,一種是代數(shù)法,另一種是卡諾圖法。
3.3.1代數(shù)法
代數(shù)法是根據(jù)電路圖寫(xiě)出其邏輯表達(dá)式,在該邏輯表達(dá)式中某些邏輯變量取特定值0或1時(shí),如果邏輯表達(dá)式能轉(zhuǎn)換成,則該電路存在"1型冒險(xiǎn)";如果邏輯表達(dá)式能轉(zhuǎn)換成,則該電路存在"0型冒險(xiǎn)"。
以下圖中的"0型冒險(xiǎn)"為例:
由電路圖可知,該電路的邏輯表達(dá)式為。在該邏輯表達(dá)式中,若輸入變量,則有,因此可以斷定該電路中存為"0型冒險(xiǎn)"(識(shí)別"0型冒險(xiǎn)"就是看能不能找到一個(gè)變量與其反變量進(jìn)行"或操作","1型冒險(xiǎn)"就是看能不能找到一個(gè)變量與其反變量進(jìn)行"與操作")。
3.3.2卡諾圖法
卡諾圖法是根據(jù)邏輯表達(dá)式畫(huà)出卡諾圖,在該卡諾圖中,若輸入變量在卡諾圖圈內(nèi)改變時(shí),輸出不會(huì)有冒險(xiǎn)現(xiàn)象;若輸入變量是在相鄰卡諾圈內(nèi)的相鄰處發(fā)生變化,并且是從一個(gè)卡諾圖進(jìn)入另一個(gè)卡諾圈,則可能產(chǎn)生邏輯冒險(xiǎn)現(xiàn)象。
以為例進(jìn)行說(shuō)明,直接給出如下的卡諾圖:
?從卡諾圖可以看出,當(dāng)、,由0→1時(shí),此時(shí)的變化是在卡諾圈內(nèi)變化,所以不會(huì)發(fā)生冒險(xiǎn)。同理,當(dāng)時(shí),也是在卡諾圈內(nèi)變化,因此不會(huì)出現(xiàn)冒險(xiǎn)。但是,當(dāng),由0→1時(shí),相當(dāng)于輸出變量、、從110變化到111,此時(shí)的變化是從一個(gè)卡諾圈進(jìn)入另一個(gè)卡諾圈,所以該電路存在冒險(xiǎn)現(xiàn)象。
3.3.3邏輯冒險(xiǎn)的消除
邏輯冒險(xiǎn)可以通過(guò)電路的重新設(shè)計(jì)來(lái)消除,若在函數(shù)表達(dá)式中增加冗余項(xiàng)(相當(dāng)于在卡諾圖中增加多余的卡諾圈),既不改變函數(shù)的邏輯功能,又可消除邏輯冒險(xiǎn),缺點(diǎn)是電路復(fù)雜度提高。以上述出現(xiàn)邏輯冒險(xiǎn)的函數(shù)表達(dá)式為例,前面已經(jīng)分析過(guò),當(dāng)時(shí),出現(xiàn)邏輯冒險(xiǎn),因此只需要在原表達(dá)式中增加一個(gè)乘積項(xiàng),表達(dá)式變?yōu)?#xff0c;將不再產(chǎn)生冒險(xiǎn)。由于在添加乘積項(xiàng)就,表達(dá)式不再是最簡(jiǎn)式,因此增加的乘積項(xiàng)也叫冗余項(xiàng)。通過(guò)卡諾圖消除邏輯冒險(xiǎn)的方法如下(增加卡諾圈):
3.4功能競(jìng)爭(zhēng)與功能冒險(xiǎn)
前面描述的邏輯競(jìng)爭(zhēng)中輸入變量只有1個(gè),當(dāng)多個(gè)變量經(jīng)過(guò)兩個(gè)以上的路徑到達(dá)輸出端時(shí),同樣會(huì)產(chǎn)生競(jìng)爭(zhēng),將這種競(jìng)爭(zhēng)稱為功能競(jìng)爭(zhēng),在具有功能競(jìng)爭(zhēng)的組合電路中,也同樣會(huì)產(chǎn)生冒險(xiǎn),將這種冒險(xiǎn)稱為功能冒險(xiǎn)。
對(duì)于與門(mén),若穩(wěn)態(tài)=1,=0或=0,=時(shí)1,輸出?恒為0。但是在信號(hào)的傳輸過(guò)程中,由于傳輸時(shí)間的不同,造成在時(shí)間內(nèi),出現(xiàn)了一個(gè)錯(cuò)誤的波形,將這種錯(cuò)誤波形的現(xiàn)象稱為功能冒險(xiǎn)。又因?yàn)楫a(chǎn)生的是一個(gè)正的尖脈沖,所以稱這種功能冒險(xiǎn)為"1型冒險(xiǎn)"。"0型冒險(xiǎn)"類似,如下圖:
注:邏輯競(jìng)爭(zhēng)和功能競(jìng)爭(zhēng)更多只是概念上的差別,邏輯冒險(xiǎn)是由于同一個(gè)信號(hào)經(jīng)過(guò)不同路徑造成的,功能冒險(xiǎn)是由于多個(gè)信號(hào)經(jīng)過(guò)兩個(gè)路徑并最終形成的,本質(zhì)上是一樣的。
3.5功能冒險(xiǎn)的識(shí)別與消除
3.5.1功能冒險(xiǎn)的識(shí)別
功能冒險(xiǎn)的識(shí)別通常采用卡諾圖來(lái)進(jìn)行判別,以下圖為例:
根據(jù)卡諾圖,可以知道時(shí),;若由→,即由→且由→(在這個(gè)過(guò)程中和未發(fā)生變化),則變化后函數(shù)的為穩(wěn)定值也為1,由于輸入變量、實(shí)際上不可能同時(shí)變化,他們的變化總是有先有后的,若先變,則變化途徑為→→,相應(yīng)的輸出變化為→→(圖中紅色箭頭1變化過(guò)程),此時(shí)沒(méi)有發(fā)生冒險(xiǎn)現(xiàn)象;但當(dāng)先變時(shí),的變化途徑為→→,相應(yīng)的輸出變化為→→(圖中紅色箭頭2變化過(guò)程),因此出現(xiàn)了"0型冒險(xiǎn)"(功能冒險(xiǎn)產(chǎn)生于多變量發(fā)生變化,也就是它們不是左右、上下相鄰關(guān)系)。
電路具有下列三個(gè)特點(diǎn),則其輸出可能產(chǎn)生功能冒險(xiǎn):
(1)有兩個(gè)以上變量同時(shí)發(fā)生變化(如果僅有一個(gè)輸出變量發(fā)生變化,則無(wú)功能冒險(xiǎn));
(2)變化前后,輸出穩(wěn)態(tài)值不變;
(3)在由n(n≥2)個(gè)變量發(fā)生變化的個(gè)方格中,既要有0,又要有1(如果對(duì)應(yīng)個(gè)變量取值組合的輸出值全為1或全為0,電路時(shí)不會(huì)產(chǎn)生功能冒險(xiǎn)的)。
3.5.2功能冒險(xiǎn)的消除
功能冒險(xiǎn)時(shí)由于在輸入n個(gè)變量同時(shí)變化時(shí),它們的實(shí)際變化在時(shí)間上有先有后引起的,因此改變電路的邏輯設(shè)計(jì)并不能消除功能冒險(xiǎn)。對(duì)待功能冒險(xiǎn)常用的方法是增加選通信號(hào)或者在輸出端并聯(lián)放置濾波電容(電容能對(duì)窄脈沖起到平波的作用,消除輸出端出現(xiàn)的邏輯錯(cuò)誤,但同時(shí)也使輸出波形上升或下降沿變得緩慢)。
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的组合逻辑电路的分析与设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端学习(2735):重读vue电商网站
- 下一篇: 数据结构课程设计-(三)哈夫曼编码器