三種基本譯碼器
在譯碼器基礎(chǔ)中,解釋了完全譯碼器(n-2n)的基本工作原理,即:當使能端有效時:
Yi = mi 或者
/Yi = !mi (注:這里的!表示非號)
除了完全譯碼器之外捷绒,還有4-10線譯碼器遏佣,七段顯示譯碼器,相對也比較簡單传泊,這里簡單進行介紹:
- 4-10譯碼器
4-10譯碼器真值表
由真值表可以看出鼠渺,當A3A2A1A0的取值為[0000~1001]時,輸出有效眷细,其它情況均為無效拦盹,其對應(yīng)的邏輯器件圖如下圖所示:
- 七段顯示譯碼器
七段顯示譯碼器一般用于液晶或LED顯示屏,顯示09數(shù)字(十進制)或0F數(shù)字(十六進制)薪鹦。所謂七段掌敬,表示的是09或0F這些數(shù)字可用七根數(shù)碼管顯示,對應(yīng)的圖為:
對應(yīng)的真值表如下圖所示:
譯碼器的應(yīng)用
譯碼器主要用于地址譯碼池磁、指令譯碼以及邏輯表達式表示奔害。下面重點解釋如何內(nèi)存尋址以及如何表達邏輯表達式。
內(nèi)存尋址
在組合電路地熄、時序電路在計算機課程中的地位一文中华临,說明了可執(zhí)行程序的執(zhí)行流程,其中的程序計數(shù)器(Program Counter端考,簡稱PC)中保存了CPU將要執(zhí)行的指令雅潭,那如何在內(nèi)存中定位到那條指令所在的內(nèi)存地址呢?(重點理解:這是硬件實現(xiàn)却特,我們要用組合電路尋址)扶供。
下圖描述了早期8086的內(nèi)存尋址方式。(計算機中用三類總線:數(shù)據(jù)總線裂明、地址總線椿浓、控制總線進行數(shù)據(jù)傳輸,數(shù)據(jù)總線用于傳輸數(shù)據(jù)闽晦,地址總線用于傳輸?shù)刂钒獍刂瓶偩€用于傳輸控制信號。三類總線用于在IO仙蛉、內(nèi)存笋敞、CPU以及外設(shè)之間進行數(shù)據(jù)傳輸;每一塊內(nèi)存中有rd荠瘪、wr夯巷、adder、cs和data幾個輸入輸出哀墓,其中的rd表示讀內(nèi)存鞭莽,wr表示寫內(nèi)存,adder下文中解釋麸祷,cs(chip select)表示片選澎怒,data用于內(nèi)存和總線之間數(shù)據(jù)的傳輸)
在8086機器中,內(nèi)存只有4KB(受限于當時的生產(chǎn)工藝,4KB內(nèi)存由4塊1KB的內(nèi)存塊組成)喷面,用12位二進制串表示地址星瘾。對于每一塊1KB的內(nèi)存,其尋址范圍為[00 0000 0000~11 1111 1111]惧辈,為了對4塊內(nèi)存都進行尋址琳状,一般思路為:共享低10位(A9A8A7A6A5A4A3A2A1A0)的內(nèi)存地址,高兩位用A11A10來進行控制盒齿,使其滿足:
- 當A11A10 = 00時選擇第一塊內(nèi)存(從上向下看)念逞,此時A11A10A9A8A7A6A5A4A3A2A1A0表述的范圍為[0000 0000 0000 ~ 0011 1111 1111]
- 當A11A10 = 01時選擇第二塊內(nèi)存(從上向下看),此時A11A10A9A8A7A6A5A4A3A2A1A0表述的范圍為[0100 0000 0000 ~ 0111 1111 1111]
- 當A10A10 = 01時選擇第三塊內(nèi)存(從上向下看)边翁,此時A11A10A9A8A7A6A5A4A3A2A1A0表述的范圍為[1000 0000 0000 ~ 1011 1111 1111]
- 當A11A10 = 11時選擇第四塊內(nèi)存(從上向下看)翎承,此時A11A10A9A8A7A6A5A4A3A2A1A0表述的范圍為[1100 0000 0000 ~ 1111 1111 1111]
顯然,上面的地址真是我們需要表述的地址符匾,剩下的就是如何用高兩位A11A10來控制選擇那一塊1K的內(nèi)存塊叨咖。很自然的,2-4譯碼器正好能完成啊胶,因此甸各,2-4譯碼器的輸出分別接到每一塊1k內(nèi)存塊上的片選信號,即可實現(xiàn)上述內(nèi)存尋址功能焰坪。(adder用于合成A11A10和A9A8A7A6A5A4A3A2A1A0趣倾,使其構(gòu)成一個12位地址)
譯碼器表達邏輯表達式
在譯碼器中,如果使能端有效某饰,其對應(yīng)的輸入輸出之間的關(guān)系為:
Yi = mi 或者
/Yi = !mi (注:這里的!表示非號)
比較敏感的童鞋很容易發(fā)現(xiàn)儒恋,譯碼器和最小項存在關(guān)系。對于任何的邏輯表達式露乏,都可以用最小項表示碧浊,如F(A,B,C)=m2+m3+m4+m5+m7涂邀。
根據(jù)/Yi = !mi瘟仿,可以進一步將F(A,B,C)表示成:
F(A,B,C) = !(!m2 * !m3 * !m4 * !m5* !m7) (注:摩根定律)
F(A,B,C) = !(/Y2*/Y3*/Y4*/Y5*/Y7)
此時渠旁,將3-8譯碼器的輸出/Y2荤胁,/Y3,/Y4棵红,/Y5和/Y7接入一個與非門浩聋,即可表示上面的邏輯表示式 F(A,B,C)观蜗,其對應(yīng)的電路圖如下圖所示:
在上例的基礎(chǔ)上,如何用74LS138譯碼器實現(xiàn)一個全減器呢衣洁?在設(shè)計之前墓捻,需要先明確減法器的功能,其真值如下圖所示:
全減器中坊夫,Ci-1表示來自低位的借位砖第,Ci表示向高位的借位撤卢,F(xiàn)i表示本位的計算值。
根據(jù)真值表梧兼,很容易得到:
Fi = m1 + m2 + m4 + m7
Ci = m1 + m2 + m3 + m7
根據(jù)74LS138中的關(guān)系:/Yi = !mi放吩,得到:
Fi = !/Y1 + !/Y2 + !/Y4 + !/Y7 = !(/Y1 * /Y2 * /Y4 * /Y7 ) (注:摩根定律)
Ci = !/Y1 + !/Y2 + !/Y3 + !/Y7 = !(/Y1 * /Y2 * /Y3 * /Y7 ) (注:摩根定律)
上述的Fi和Ci已經(jīng)映射到74LS138的輸出端口,將輸出端口接入與非門羽杰,即可完成全減器渡紫,其對應(yīng)的電路圖如下圖所示:
總結(jié)
從上面兩個例子看出,譯碼器雖然簡單考赛,但是其用法卻多種多樣惕澎,可以從不同的角度靈活使用譯碼器完成特定的功能∮椋總體而言集灌,對于譯碼器級聯(lián)用法,通常都是共享低位的數(shù)據(jù)輸入复哆,用高位的數(shù)據(jù)輸入控制譯碼器的使能信號(當然欣喧,最好分析的時候先就把預(yù)期的輸出編號);對于邏輯表達式梯找,要充分認識最小項和譯碼器的輸出之間的關(guān)系唆阿,通過這種關(guān)系,利用譯碼器和少量的其它與锈锤、或驯鳖、非等們組合得到完成預(yù)期功能的電路。