概述
在譯碼器基礎(chǔ)和譯碼器應(yīng)用中分別對(duì)譯碼器的真值表蕾总、電路圖、邏輯符號(hào)等進(jìn)行了較為詳細(xì)的講解琅捏。編碼可以看成是譯碼的逆過程生百。通常,編碼是將計(jì)算機(jī)無法直接識(shí)別的數(shù)據(jù)柄延,翻譯成二進(jìn)制碼蚀浆。
大家學(xué)習(xí)C語言時(shí),一定對(duì)ASCII碼有所了解搜吧,它用8位二進(jìn)制串表示26個(gè)字母大小寫市俊、數(shù)字以及一些常見的控制符等;coding較多的童鞋肯定也對(duì)UTF-8滤奈,UTF-16等概念比較熟悉摆昧,這些編碼將全球所有的字符(特別是中日韓、阿拉伯等國(guó)家字符)進(jìn)行了統(tǒng)一的編碼蜒程,感興趣的童鞋可以查看相關(guān)的國(guó)際標(biāo)準(zhǔn)绅你。
編碼的原理較為直接簡(jiǎn)單,本文余下部分主要介紹編碼器的基本原理和優(yōu)先權(quán)編碼器搞糕。
基本編碼器
最基本的編碼器勇吊,莫過于十進(jìn)制數(shù)用二進(jìn)制表示,這是我們學(xué)習(xí)數(shù)字邏輯第一章的內(nèi)容窍仰,即0~9這十個(gè)數(shù)字用二進(jìn)制串表示汉规,其真值表如下圖所示:
根據(jù)真值表,輸出與輸入之間的關(guān)系為:
除了我們熟悉的二-十進(jìn)制編碼器驹吮,還有典型的n位二進(jìn)制編碼器针史,即用n位二進(jìn)制串對(duì)m(m <= 2n)個(gè)數(shù)字進(jìn)行編碼,這個(gè)比較容易理解碟狞。
在基本編碼器中啄枕,要求編碼器在任意時(shí)刻,輸入端的m個(gè)輸入族沃,只能有一個(gè)有效频祝;若兩個(gè)輸入(如I1和I2)同時(shí)有效泌参,則基本編碼器就會(huì)犯暈了。于是就有了下面的優(yōu)先權(quán)編碼器常空。
優(yōu)先權(quán)編碼器
在講解優(yōu)先權(quán)編碼器原理之前沽一,先介紹一下它的背景±觳冢基本編碼器的局限在于其一個(gè)時(shí)刻只能有一個(gè)輸入有效铣缠,然而,這種要求太過苛刻昆禽。在現(xiàn)實(shí)世界中蝗蛙,很多事情往往是一起來的,并且通常當(dāng)你越忙的時(shí)候醉鳖,外來的任務(wù)會(huì)越多(個(gè)人感受)捡硅。這個(gè)時(shí)候,我通常會(huì)給事情分一個(gè)優(yōu)先級(jí)辐棒,孰輕孰重評(píng)估一下病曾,列一個(gè)清單,先做什么漾根,后做什么泰涂,這是一個(gè)正常人干活的邏輯。
對(duì)于計(jì)算機(jī)而言辐怕,上面這個(gè)邏輯照樣成立逼蒙。計(jì)算機(jī)分為CPU、存儲(chǔ)器寄疏、IO幾大部件是牢,IO上面掛的外設(shè)如鍵盤、鼠標(biāo)陕截、usb等等驳棱,它們與計(jì)算機(jī)之間的通訊是通過中斷來響應(yīng)的。最簡(jiǎn)單的例子农曲,當(dāng)我們敲擊鍵盤的時(shí)候社搅,鍵盤電路會(huì)向操作系統(tǒng)發(fā)起一個(gè)中斷請(qǐng)求(每一個(gè)中斷請(qǐng)求都對(duì)應(yīng)一個(gè)中斷號(hào)(整數(shù))),操作系統(tǒng)會(huì)暫停當(dāng)前工作乳规,調(diào)用相應(yīng)的中斷處理程序形葬,將我們敲擊的字符顯示在屏幕上。我們的計(jì)算機(jī)上有很多外設(shè)暮的,包括網(wǎng)絡(luò)上的通訊笙以。在很多情況下,操作系統(tǒng)可能同時(shí)接收到多個(gè)中斷請(qǐng)求冻辩,這個(gè)時(shí)候猖腕,操作系統(tǒng)只能根據(jù)中斷請(qǐng)求的優(yōu)先級(jí)別從高到低來處理拆祈。這正是優(yōu)先權(quán)編碼器做的事情。
我們以8-3優(yōu)先權(quán)編碼器進(jìn)行說明谈息,其邏輯功能圖如下所示:
如圖所示缘屹,8-3優(yōu)先權(quán)編碼器由兩部分組成:優(yōu)先權(quán)處理邏輯和基本的8-3編碼器凛剥。其中侠仇,優(yōu)先權(quán)處理邏輯中的輸入與輸出之間的關(guān)系為:
H7 = I7
H6 = I6 * !I7 (*表示邏輯與,犁珠!表示邏輯非逻炊,下同)
H5 = I5 * !I6* !I7
...
H0 = I0 * !I1* !I2...*I7
上面的關(guān)系表達(dá)的意思是:I7的優(yōu)先級(jí)最高,I0的優(yōu)先級(jí)最低犁享。當(dāng)I7輸入有效時(shí)余素,不管其它輸入是否有效,優(yōu)先處理邏輯將其轉(zhuǎn)變?yōu)镠7炊昆;當(dāng)I7無效桨吊,且I6輸入有效,不管其它輸入是否有效凤巨,轉(zhuǎn)換為H6...
回歸到中斷视乐,假設(shè)操作系統(tǒng)處理8個(gè)中斷,依次命名為I0, I1, ..., I7敢茁,佑淀,其優(yōu)先級(jí)如上所述,A0彰檬,A1,A2指示中斷響應(yīng)程序的地址伸刃,當(dāng)同時(shí)有多個(gè)中斷請(qǐng)求時(shí),你應(yīng)該能解釋清楚了逢倍。