譯碼器的應用

三種基本譯碼器

在譯碼器基礎中,解釋了完全譯碼器(n-2n)的基本工作原理,即:當使能端有效時:

Yi = mi 或者
/Yi = !mi (注:這裏的!表示非號)

除了完全譯碼器之外,還有4-10線譯碼器,七段顯示譯碼器,相對也比較簡單,這裏簡單進行介紹:
- 4-10譯碼器
4-10譯碼器真值表
由真值表可以看出,當A3A2A1A0的取值爲[0000~1001]時,輸出有效,其它情況均爲無效,其對應的邏輯器件圖如下圖所示:

4-10線譯碼器 74LS42

  • 七段顯示譯碼器
    七段顯示譯碼器一般用於液晶或LED顯示屏,顯示0~9數字(十進制)或0~F數字(十六進制)。所謂七段,表示的是0~9或0~F這些數字可用七根數碼管顯示,對應的圖爲:

七段顯示譯碼器圖示
對應的真值表如下圖所示:

74LS49七段顯示譯碼器真值表

譯碼器的應用

譯碼器主要用於地址譯碼、指令譯碼以及邏輯表達式表示。下面重點解釋如何內存尋址以及如何表達邏輯表達式。

內存尋址

組合電路、時序電路在計算機課程中的地位一文中,說明了可執行程序的執行流程,其中的程序計數器(Program Counter,簡稱PC)中保存了CPU將要執行的指令,那如何在內存中定位到那條指令所在的內存地址呢?(重點理解:這是硬件實現,我們要用組合電路尋址)。

下圖描述了早期8086的內存尋址方式。(計算機中用三類總線:數據總線、地址總線、控制總線進行數據傳輸,數據總線用於傳輸數據,地址總線用於傳輸地址,控制總線用於傳輸控制信號。三類總線用於在IO、內存、CPU以及外設之間進行數據傳輸;每一塊內存中有rd、wr、adder、cs和data幾個輸入輸出,其中的rd表示讀內存,wr表示寫內存,adder下文中解釋,cs(chip select)表示片選,data用於內存和總線之間數據的傳輸)

8086尋址方式

在8086機器中,內存只有4KB(受限於當時的生產工藝,4KB內存由4塊1KB的內存塊組成),用12位二進制串表示地址。對於每一塊1KB的內存,其尋址範圍爲[00 0000 0000~11 1111 1111],爲了對4塊內存都進行尋址,一般思路爲:共享低10位(A9A8A7A6A5A4A3A2A1A0)的內存地址,高兩位用A11A10來進行控制,使其滿足:
- 當A11A10 = 00時選擇第一塊內存(從上向下看),此時A11A10A9A8A7A6A5A4A3A2A1A0表述的範圍爲[0000 0000 0000 ~ 0011 1111 1111]
- 當A11A10 = 01時選擇第二塊內存(從上向下看),此時A11A10A9A8A7A6A5A4A3A2A1A0表述的範圍爲[0100 0000 0000 ~ 0111 1111 1111]
- 當A10A10 = 01時選擇第三塊內存(從上向下看),此時A11A10A9A8A7A6A5A4A3A2A1A0表述的範圍爲[1000 0000 0000 ~ 1011 1111 1111]
- 當A11A10 = 11時選擇第四塊內存(從上向下看),此時A11A10A9A8A7A6A5A4A3A2A1A0表述的範圍爲[1100 0000 0000 ~ 1111 1111 1111]
顯然,上面的地址真是我們需要表述的地址,剩下的就是如何用高兩位A11A10來控制選擇那一塊1K的內存塊。很自然的,2-4譯碼器正好能完成,因此,2-4譯碼器的輸出分別接到每一塊1k內存塊上的片選信號,即可實現上述內存尋址功能。(adder用於合成A11A10和A9A8A7A6A5A4A3A2A1A0,使其構成一個12位地址)

譯碼器表達邏輯表達式

在譯碼器中,如果使能端有效,其對應的輸入輸出之間的關係爲:

Yi = mi 或者
/Yi = !mi (注:這裏的!表示非號)

比較敏感的童鞋很容易發現,譯碼器和最小項存在關係。對於任何的邏輯表達式,都可以用最小項表示,如F(A,B,C)=m2+m3+m4+m5+m7

根據/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),其對應的電路圖如下圖所示:

3-8譯碼器表達邏輯表達式

在上例的基礎上,如何用74LS138譯碼器實現一個全減器呢?在設計之前,需要先明確減法器的功能,其真值如下圖所示:

全減器真值表

全減器中,Ci-1表示來自低位的借位,Ci表示向高位的借位,Fi表示本位的計算值。

根據真值表,很容易得到:

Fi = m1 + m2 + m4 + m7
Ci = m1 + m2 + m3 + m7
根據74LS138中的關係:/Yi = !mi,得到:
Fi = !/Y1 + !/Y2 + !/Y4 + !/Y7 = !(/Y1 * /Y2 * /Y4 * /Y7 ) (注:摩根定律)
Ci = !/Y1 + !/Y2 + !/Y3 + !/Y7 = !(/Y1 * /Y2 * /Y3 * /Y7 ) (注:摩根定律)

上述的Fi和Ci已經映射到74LS138的輸出端口,將輸出端口接入與非門,即可完成全減器,其對應的電路圖如下圖所示:

74LS138譯碼器構造全減器

總結

從上面兩個例子看出,譯碼器雖然簡單,但是其用法卻多種多樣,可以從不同的角度靈活使用譯碼器完成特定的功能。總體而言,對於譯碼器級聯用法,通常都是共享低位的數據輸入,用高位的數據輸入控制譯碼器的使能信號(當然,最好分析的時候先就把預期的輸出編號);對於邏輯表達式,要充分認識最小項和譯碼器的輸出之間的關係,通過這種關係,利用譯碼器和少量的其它與、或、非等們組合得到完成預期功能的電路。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章