概述
選擇器和分配器是組合電路中十分重要的邏輯元件。選擇器用於從多個輸入數據中選擇一個輸出;而分配器則剛好做相反的工作,將多個輸入端輸出到指定的輸出端。
按照慣例,本文首先介紹相應的應用背景,然後講解選擇器和分配器的工作原理。
背景
選擇器和分配器是電路中不可或缺的兩個器件。童鞋們都知道,CPU中存在數量有限的寄存器(MIPS結構中一般是32個),CPU的ALU計算時,從寄存器中取數據進行計算。所有的寄存器都與ALU有電路連接,當我們進行計算時,如:
addi $t2, $t1, $0 // 表示計算
t0和 t1寄存器中的數之和
怎麼從32個寄存器中選擇$t0, $t1和$t2???
答案:選擇器
對應的圖示如下:
另外,我們在寫C語言中的if…else…分支結構時,程序計數器PC是加4(32位,一個字寬)順序執行(if語句中的條件成立,執行if分支)還是加其它數(if語句中的條件不成立,執行else分支),也需要選擇器來選擇。
再想另一個場景,當兩個計算機通訊時,假設通訊的位寬爲1位,我們要傳輸一個字節,即8位,要保證兩端的數據的時序(假設發送端A傳送的數據爲‘0101 1101’,接收端如何保證收到的也是‘0101 1101’)?(現實的場景更可能是:用64/32位寬的總線傳輸64N/32N位的數據,N爲正整數)
答案:一位位寬一次只能傳送一個二進制,分時傳送,用選擇器和分配器保證順序
對應的圖示如下:
選擇器
選擇器(通常用MUX表示)的抽象功能圖如下所示:
一般情況下,選擇器包括m個數據輸入端、一個使能控制端,n個(地址)控制端,和一個輸出端。圖中也展示了輸出與輸入之間的關係,其中的mi對應的是n個控制端的最小項。熟悉譯碼器的童鞋應該能發現什麼?如果令Di = 1 (0<= i <= m),可以發現什麼?
列出真值表跟容易理解,下圖顯示了8選1選擇器的真值表:
常見的8選1選擇器74LS151的邏輯符號如下圖所示:
這裏要注意:74LS151提供了原變量輸出和反變量輸出兩個輸出
有了基本的8選1選擇器,如何構造16選1選擇器和32選1選擇器?套路其實是一樣的,重點是地址控制端,與譯碼器的級聯一樣,低位共享,高位控制使能端。下面將16選1和32選1的選擇器電路圖列出,童鞋們可以自己進行分析。
分配器
分配器(通常用DEMUX表示),其抽象圖如下所示:
同樣,如果我們令D=1,會有什麼結論?
下面僅列出1-4分配器的真值表和電路圖,具體原理就不再分析了。
總結
觀察選擇器和分配器,其實都和譯碼器有關係,如果我們將選擇器和分配器控制地址端看成譯碼器的輸入,輸入數據令其爲1,就可以得到一些有趣的結果。另外,在計算機組成中,分配器通常和選擇器聯合使用。
如有錯誤,請大家批評指正!謝謝!