在數(shù)字系統(tǒng)里,常常需要將某一信息(輸入)變換為某一特定的代碼(輸出)。把二進(jìn)制碼按一定的規(guī)律編排,例如8421碼、格雷碼等,使每組代碼具有一特定的含義(代表某個數(shù)字或控制信號)稱為編碼。具有編碼功能的邏輯電路稱為編碼器。編碼器有若干個輸入,在某一時刻只有一個輸入信號被轉(zhuǎn)換成為二進(jìn)制碼。如果一個編碼器有n個輸入端和n個輸出端,則輸出端與輸入端之間應(yīng)滿足關(guān)系n≤2n。 例如8線—3線編碼器和10線—4線編碼器分別有8輸入、3位二進(jìn)制碼輸出和10輸入、4位二進(jìn)制碼輸出。
1.4線—2線編碼器
下面分析4輸入、2位二進(jìn)制輸出的編碼器的工作原理。4線—2線編碼器的功能如表1所示。
表1 4線—2線編碼器功能表
輸 入
輸 出
i0
i1
i2
i3
y1
y0
1
0
0
0
0
0
0
1
0
0
0
1
0
0
1
0
1
0
0
0
0
1
1
1
表1所示的編碼器為高電平輸入有效,因而可由功能表得到如下邏輯表達(dá)式:
y1= i0i1i2i3+ i0i1i2i3
y0= i0i1i2i3+ i0i1i2i3
根據(jù)邏輯表達(dá)式畫出邏輯圖如圖1所示。該邏輯電路可以實現(xiàn)如表5.2.1所示的功能,即當(dāng)i0~i3中某一個輸入為1,輸出 y1y0即為相對應(yīng)的代碼,例如當(dāng)i1為1時,y1y0為01。這里還有一個問題請讀者注意。當(dāng)i0為1,i1~i3都為0和i0~i3均為0時y1y0 都是00,而這兩種情況在實際中是必須加以區(qū)分的,這個問題留待后面加以解決。當(dāng)然,編碼器也可以設(shè)計為低電平有效。
圖1 4線—2線編碼器邏輯圖
2.鍵盤輸入8421bcd碼編碼器
計算機(jī)的鍵盤輸入邏輯電路就是由編碼器組成。圖2是用十個按鍵和門電路組成的8421碼編碼器,其功能如表2所示, 其中s0~s9代表十個按鍵,即對應(yīng)十進(jìn)制數(shù)0~9的輸入鍵,它們對應(yīng)的輸出代碼正好是8421bcd碼,同時也把它們作為邏輯變量,abcd 為輸出代碼(a為最高位),gs為控制使能標(biāo)志。
對功能表和邏輯電路進(jìn)行分析,都可得知:①該編碼器為輸入低電平有效;②在按下s0~s9中任意一個鍵時,即輸入信號中有一個為有效電平時,gs=1,代表有信號輸入,而只有s0~s9均為高電平時gs=0,代表無信號輸入,此時的輸出代碼0000為無效代碼。由此解決了前面提出的如何區(qū)分兩種情況下輸出都是全0的問題。
圖2 用十個按鍵和門電路組成的8421bcd碼編碼器
表2 十個按鍵8421bcd碼編碼器功能表
3.優(yōu)先編碼器
上述機(jī)械式按鍵編碼電路雖然比較簡單,但當(dāng)同時按下兩個或更多個鍵時,其輸出將是混亂的。在數(shù)字系統(tǒng)中,特別是在計算機(jī)系統(tǒng)中,常常要控制幾個工作對象,例如微型計算機(jī)主機(jī)要控制打印機(jī)、磁盤驅(qū)動器、輸入鍵盤等。當(dāng)某個部件需要實行操作時,必須先送一個信號給主機(jī)(稱為服務(wù)請求),經(jīng)主機(jī)識別后再發(fā)出允許操作信號(稱為服務(wù)響應(yīng)),這里會有幾個部件同時發(fā)出服務(wù)請求的可能,而在同一時刻只能給其中一個部件發(fā)出允許操作信號。因此,必須根據(jù)輕重緩急,規(guī)定好這些控制對象允許操作的先后次序,即優(yōu)先級別。識別這類請求信號的優(yōu)先級別并進(jìn)行編碼的邏輯部件稱為優(yōu)先編碼器。4線—2線優(yōu)先編碼器的功能表如表3所示。
表3 4線—2線優(yōu)先編碼器的功能表
輸入
輸出
i0
i1
i2
i3
y1
y0
1
0
0
0
0
0
×
1
0
0
0
1
×
×
1
0
1
0
×
×
×
1
1
1
分析表3中i0~i3的優(yōu)先級別。例如,對于i0,只有當(dāng)i1、i2、i3均為0,即均無有效電平輸入,且i0為1時,輸出為00。對于i3,無論其他3個輸入是否為有效電平輸入,輸出均為11。由此可知i3的優(yōu)先級別高于i0的優(yōu)先級別,且這4個輸入的優(yōu)先級別的高低次序依次為i3、i2、i1、i0。
由表3可以得出該優(yōu)先編碼器的邏輯表達(dá)式為
y1=i2i3+i3=i2+i3
y0=i1i2i3+i3=i1i2+i3
由于這里包括了無關(guān)項,邏輯表達(dá)式比前面介紹的非優(yōu)先編碼器簡單些。