5 組合邏輯電路設計 算術運算電路 hpter hpter hpter hpter hpter hpter hpter hpter
概述 加 減 乘與除等四種算術運算在我們日常生活中, 用來處理數值運算之基本方法, 因此數位電路 (Dgtl rcut) 亦應具有這些基本算術運算功能, 才能用來幫助人類處理各種繁瑣之數值運算問題 數位電路僅能用來處理二進位 ( 二元性 ) 資料, 若引入補數 (omplement) 之觀念, 則減法運算可用加法來取代, 又乘法運算可用連續加法運算代替, 而除法運算亦可用連續減法運算來取代, 故加法器可為算術運算之基本電路 本章首先將討論 位元加法器 (Adder) 之設計方法, 再進一步說明如何串接 n 個 位元加法器來設計 n 位元二進位數並行加法電路 接下來討論使用補數之觀念, 使用加法器來取代減法電路之設計方法 接著討論如何直接設計減法器 (ubtrctor) 與乘法器 (ultpler), 以提所高算術運算電路之運算速度 最後討論將算術運算 (Arthmetc Operton) 與邏輯運算 (Logc Operton) 合併在同一個邏輯電路, 稱為算術邏輯單元 (Arthmetc Logc Unt; ALU), 以實現多功能之組合邏輯函數
加法器 ( 概述 ) 在數位系統中, 加法器 (Adder) 可用來執行兩組二進位數之加法運算 首先討論一種沒有考慮到進位傳輸 (rr Propgton) 問題之加法電路, 因此種加法器僅可執行兩個 位元之二進位數相加, 故被稱為半加法器 (Hlf Adder) 若有考慮進位傳輸之問題, 便可將加法器串接起來, 以便執行更多位元加法運算, 故這種加法器被冠以全加法器 (Full Adder) 之名稱 全加法器亦僅能執行兩個 位元之二進位數相加, 接著討論全加器串接方法, 以設計可執行兩組兩個位元以上相加之加法電路, 稱為並行加法器 (Prllel Adder) 若使用並行加法器直接執行 n 位元之加法運算, 雖此種加法電路具構造簡單之優點, 但運算速度較慢為最大缺點, 故本節將提出前視進位加法器 (Look Ahed rr Adder), 以改善並行加法器因進位造成運算速度延遲之缺點 因人類習慣使用十進位執行算數運算, 因此亦將於本節討論十進位加法器之設計方法, 最後提出採用補數之觀念, 以設計出可同時執行加 減法運算之組合邏輯電路
半加法器 半加法器 (Hlf Adder) 是一種組合邏輯電路, 此電路僅可執行兩組 位元之二進位數的加法運算 接著列出兩個二進位數相加之運算規則如下 : 被加數加數 進位 和 半加法器有加數與被加數等兩個輸入變數, 分別用 與 來標示, 而兩數相加後會產生一個 和 (um) 與可能產生之進位 (rr) 等兩個輸出變數, 分別標示為 與 半加法器 HA () 方塊圖 (b) 真值表
利用卡諾圖法對以上真值表進行邏輯化簡, 可得化簡後之布林函數式為 最後使用邏輯閘來實現半加法器之邏輯電路, 如下圖所示 5
全加法器 因半加法器沒有考慮進位傳輸的問題, 故無法執行兩組 位元以上的二進位數相加, 即半加法器缺少一個進位輸入端, 當兩個較低位元之二進位數相加後, 若有進位產生時, 進位輸入可作為傳送進位與上一位元相加之用 若在半加法器上多加一個輸入變數, 就便成了全加法器 (Full Adder), 故全加法器有加數 被加數與進位輸入等 個輸入變數, 分別標示為 與, 而此 個二進位數相加後, 亦 會產生一個和 (um) 與可能的進位 (rr) 等 個輸出變數, 分別標示為 與 o o o 全加法器 FA o () 方塊圖 (b) 真值表 6
7 利用卡諾圖法對以上真值表進行邏輯化簡, 可得簡化後之布林函數式為 o ) ( 最後將化簡所得之布林函數, 使用邏輯閘來實現全加法器之邏輯電路, 如下圖 () 所示 o () o (b) 註 : 上圖 () 與 (b) 皆可用來執行全法加器運算功能之邏輯電路圖, 而這兩個電路之輸出 皆為, 而為使全加法器之邏輯電路圖有不同的表示方式, 進位輸出 o 採用邏輯功能相同, 但表示形式不同之布林函數式, 即圖 () 之進位輸出 o, 而圖 (b) 之進位輸出 o ) (
二進位並行加法器 欲對兩組 n 位元之二進位數相加, 必須串接 n 個全加器才能完成 若欲將兩組 位元之二進位數, 被加數 執行加法運算規則如下 : 與加數 進位被加數加數 和 根據上面之運算式可知, 並行加法電路之原理是將較低位元之加數與被加數相加所得之進位, 直接傳送至較高位元之進位輸入端, 再與較高位元之加數與被加數相加所得之進位, 再直接傳送至更高位元之進位輸入端, 依此類推, 便可執行 n 個位元之加法運算, 此種加法器稱漣波進位加法器 (Rpple rr Adder), 亦可稱為並行加法器 (Prllel Adder) FA o FA o FA o FA o 8
二進位前視進位加法器 並行加法器在進行加法運算時, 雖然所有加數與被加數皆為已知, 但較高位元之加法運算, 必須等較低位元相加, 得到穩定的進位訊號後, 才能得到正確之結果, 即加數與被加數通過邏輯閘之層數與加數 被加數之位元數成正比關係, 因此會造成嚴重進位傳輸延遲之問題 雖然並行加法器之電路構造較為簡單, 但運算速度會受到進位傳輸時間的限制而變慢 為了加快算術運算速度 ( 假設每個邏輯閘之傳輸延遲時間皆相同之條件下 ), 可從改良電路著手, 以減少等待進位所造成之傳輸延遲時間 而目前於減少進位傳輸延遲之方法非常多, 其中最廣範使用之方法為前視進位加法 (Look-Ahed rr) 原理 首先根據下圖 ( 全加法器 ) 來定義與進位 (rr) 有關的兩個變數, 分別為進位產生 (rr Genertor) 和進位傳輸 P (rr Propgton) 於下 : G P G 觀察左圖可得, 全加法器之輸出 與 之 P G 布林函數式於下 : P G P 若以設計 位元加法器為例, 將每一級的進位 用被加數 9 加數 與進位 表示如下 :
P P P P G P P P G P P G P G P G P P P G P P G P G P G P P G P G P G P G P G P G P G P G 若被加數 與加數 分別為 位元之二進位數, 觀察上面之進位 ( 表示加數 被加數或進位位元之權位 ) 之布林函數式, 僅與被加數 加數 與 o 有關 對兩數之加法運算而言, 加數與被加數應為已知數值, 藉由較複雜之邏輯運算, 先將每一級之進位 計算出來, 便可省掉執行加法運算時, 等待進位之時間, 故可加快電路之運算速度 接著利用基本邏輯閘, 配合上述之布林函數式, 即可繪出 位元之前視進位產生器之邏輯電路, 如右圖所示
若組合進位產生 G 和進位傳輸 P 之邏輯電路, 即可繪出 位元前視進位加法器之方塊圖與邏輯電路, 分別如下 右圖所示 P G P G P G P G 位元前視進位產生器 位元前視進位加法器 () 方塊圖 雖此右圖之加法電路看起來相當複雜, 在執行二進位數加法運算時, 較高位元之相加, 不必再等較低位元相加後之進位, 便能得到正確相加結果, 故可大大提高執行多位元加法電路之運算速度
十進位加法器 一種以 個位元的二進位數來代表 個位元的十進位數之數碼稱為 BD 碼 (Bnr ode Decml), 首先說明 BD 碼與二進位碼間之差異, 如下表所示 十進位數 二進位碼 BD 碼 5 6 7 8 9 5 因人類習慣用十進位數 (Decml) 來做算術運算, 且大多數的數字顯示裝置, 亦是以十進位數來顯示, 以方便大眾閱讀 觀察左表可知, 當十進位數小於或等於 9 時,BD 碼和二進位碼完全相同, 而當十進位數大於 9 時,BD 碼和二進位碼便不相同了 本節所討論之十進位加法器 (Decml Adder) ( 亦可稱為 BD 加法器 ) 是直接將兩個十進位數 (BD 碼 ) 做加法運算, 且相加後之結果亦直接以十進位數 (BD 碼 ) 來表示, 故兩 BD 數相加後之和若超過 9, 必須進行進位修正, 才不會產生錯誤之 BD 和
A 部份 B 部份 部份 十進位數 二進位和 BD 和 K T 8 T T T 8 5 6 7 8 9 5 6 7 8 9 每一個位元之十進位數值不會超過 9, 所以兩個十進位數相加, 再加上可能的進位輸入值, 可能之最大值為 9 9 9 如果利用 位元之二進位加法器來執行兩個十進位數字相加, 所得十進數之範圍為 ~9, 如左表所示 一個完整的 BD 加法器, 必須考慮 9 個輸入變數 ( 包括兩組 位元之 BD 碼與 位元之進位輸入 ) 與 5 個輸出變數 ( 包括 個位元之和與 個進位輸出 ), 若採用組合邏輯電路之設計步驟, 以設計十進位加法器, 則會變得相當複雜且不可行, 故必須尋找兩組 BD 數碼之加法規則, 以演算法 (Algorthm) 來設計電路, 才能簡化 BD 加法器之設計問題
根據 BD 碼與二進位碼之關係, 分成 個部份來說明設計十進位加法器之演算法如下 :. 當二組 BD 和 T T T ) 小於或等於 9 時,BD 碼與二進位碼相同, 故所得之二進位和不必 ( 8 T 做任何進位修正. 當二組 BD 和 T T T ) 大於 9, 且小於或等於 5 時, 因這部分之 BD 碼與二進位碼不同, ( 8 T 必須將所得之二進位和再加十進位數之 6 ( 二進位數之 ), 以跳過 6 個 BD 碼沒有使用之二進位數, 以做為進位修正之用 而需要進行進位修正之情況, 可經由右邊之卡諾圖 ( 即將 ~ 方格設定為邏輯 ) 化簡得到之布林函數式為 T T T 8 T f T8 T T8 T. 當二組 BD 和 T T T ) ( 8 T 大於 5 時, 因此部分之 BD 碼亦與二進位碼不同, 故亦必須將 相加所得之二進位和再加十進位數之 6 ( 二進位數之 ), 來跳過 6 個 BD 碼沒有使用 之二進位碼, 以做為進位修正之用 觀察上表可知, 當 K ( 二進位和大於 5 之部分 ) 時, 需要進行進位修正, 故可得布林函數式為 f K
綜合以上 點之討論可得需要進位修正之布林函數式為 K T8T T8T 經由以上之討論, 即可繪出十進位加法器之方塊圖與邏輯電路, 如下圖所示 k 四位元加法器 I-7L8 n T8 T T T BD 加法器 四位元加法器 I-7L8 8 () 方塊圖 (b) 邏輯電路圖 5
上圖僅能執行兩組 位元之十進位數的加法運算, 而需要執行兩個位元以上之十進位數加法 運算時, 常常需串接兩個或兩個以上之十進位加法器, 以便執行更多十進位數加法運算 將兩個以上之十進位加法器進行串接時, 可將較低位元相加後之進位輸出, 直接傳輸至較高 位元加法器的進位數入, 即可完成串接工作 而下圖的十進位加法電路, 便可用來執行兩組 百位以下之十進位數的加法運算 依此類推, 便可得到更多位數之十進位加法運算電路 個位數 十位數 百位數 n 十進位加法器 十進位加法器 十進位加法器 out 8 8 8 6
二進位加 / 減法器 ( 單一位元 ) 對兩組二進位數 ( 與 ) 執行加法 ( ) 或減法 ) 算, 故全加法器 (Full Adder) 為必要使用之邏輯元件 ( ' 運算, 皆需使用到加法運 設計之二進位加 / 減法算術運算電路, 欲執行加法運算時, 則加數亦須保持不變, 直接使用加法器將被加數 與加數 相加 ; 當欲執行減法運算時必須對減數取 的補數 ( ' s ' s, 可使用 XOR 閘來取得 的補數 ) 後, 再使用被加數 與加輸 之 的補數相加 根據以上之討論, 即可實現執行兩個 位元之二進位加 / 減法運算電路, 如下圖所示 被加數 / 被減數 加數 / 減數 位元之二進位加 / 減法運算電路之邏輯功能如下 :. 當控制 時, 全加法器之輸入端 ( 與 n ) 分 別為 與, 則此電路將執行 ( 當 時, ) 之算術運算. 當控制 時, 全加法器之輸入端 ( 與 n ) 分 全加法器 out n 別為 與, 則此電路將執行 ( 當 時,, 再加上進位輸入 n, 即 ' ) 之算術運算, 即此時電路將執行 之算術運算 ' 7
二進位加 / 減法器 ( 多位元 ) 前面所討論之 位元加 / 減法算術運算電路, 亦可擴充至 n 位元加 / 減法算術運算電路 假設某兩組二進位數分別為 ) 加 / 減法算術運電路, 如下圖所示 被加數 / 被減數加數 / 減數 與, 則可執行兩組 位元 ( 與 觀察右圖可知, 位元 ( 與 ) 加 / 減法算術運電路之邏輯功能如下 : 四位元加法器. 當控制 時, 位元加法器之輸入端 ( 與 ) 分別為 與, 則此電路將執行 ( 當 時, ) 之算術運 算 n. 當控制 時, 位元加法器之輸入端 ( 與 n ) 分別為, 則此電路將執行 ' ( 當 時,, 再加上進位輸入 n, 即 ' 術運算, 此時電路將執行 之算術運算 與 ) 算 8
減法器 ( 半減法器 ) 減法器可用來執行兩個二進位數相減之算術運算, 而沒有考慮到借位傳輸 (Borrow Propgton) 問題之減法電路, 因這種減法器僅可執行 位元之二進位數相減, 故被稱為半減器 (Hlf ubtrctor) 而兩組二進位數相減之運算規則如下: 被減數減數 借位 差 半減法器有減數與被減數等兩個輸入變數, 分別用 與 來標示, 兩數相減後會產生一個差 (Dfference) 與可能產生之借位 (Borrow) 等兩個輸出變數, 分別標示為 D 與 B B D 半減法器 H D B () 方塊圖 (b) 真值表 9
利用卡諾圖法對半減器之真值表進行邏輯化簡, 可得簡化後之布林函數式如下 : D B 使用邏輯閘來實現半減法器之邏輯電路, 如下圖所示 D B
減法器 ( 全減法器 ) 因考慮借位傳輸的問題, 全減法器有被減數 減數與借位輸入等 個輸入變數, 分別標示為 與 B, 而這 個輸入之二進位數相減後, 會產生一個差 (Dfference) 與可能產生一個借位 (Borrow) 等兩個輸出變數, 分別標示為 D 與 減法器之方塊圖與真值表, 如下圖所示 B o 當得知輸入與輸出之變數後, 即可繪出全 B D B o B 全減法器 F D B o () 方塊圖 (b) 真值表
利用卡諾圖法對上圖之真值表進行邏輯化簡, 可得簡化後之布林函數式為 B B B B B B B B B D o ) ( 使用邏輯閘來實現全加法器之邏輯電路, 如下圖所示 B B o D () B B o D (b) 註 : 上圖 () 與 (b) 皆可用來執行全減器運算功能之邏輯電路圖, 而這兩個電路之輸出 D 皆為 B D, 而為使全減法器之邏輯電路圖有不同之表示方式, 輸出 o B 採用邏輯功能相同, 但表示形式不同之布林函數式, 即圖 () 之輸出 o B B B, 而圖 (b) 之輸出 B B o ) (
十進位加減法器 (9 的補數產生器 ) 使用 的補數之運算規則, 以設計使用十進位加法器來取代十進位減法運算之方法 假設被減數 與減數 均為 位元之 BD 碼, 欲使用十進位加法器來取代 十進位減法運算須對減數 取 的補數後, 再與被減數 相加, 即可執行 ' 之 算術運算 為實現十進位加 / 減法運算電路, 首先應設計 9 的補數產生器, 因 9 的補數產生器是一種組 合邏輯電路, 故其設計步驟如下 :. 因電路之輸入為 BD 碼, 故所設計之電路有 個輸入變數, 分別標示為 與 等 個符號 ; 而輸出為輸入之 9 的補數, 故輸出亦應有 個輸出變數, 分別以 z z z 與 z 等 符號來標示. 因輸出為輸入之 9 的補數, 故可用真值表表來定義輸出與輸入之關係
. 利用卡諾圖化簡所得之真值表, 以求得 z z z 與 z 之最簡布林函數式如下 : z z z z. 最後使用邏輯閘來實現 z z z 與 z 之布林函數式, 即可得 9 的補數產生器之組合邏輯電 路, 如下圖所示 z z z z
十進位加 / 減法器 設計之十進位加 / 減法算術運算電路, 欲執行加法運算時, 則被加數 與加數 必須保持不變 ; 而欲執行減法運算時, 被減數 必須保持不變, 而對減數 取 的補數 根據以上之討論, 即可得執行兩個 BD 碼 ( 與 ) 之十進位加 / 減法算術運算電路, 如下圖所示 被加數 / 被減數 加數 / 減數 觀察左圖可知, 十進位加 / 減法算術運算電路之邏輯運算功能如下 : 9 的補數產生器 組 對 之多工器線多工器. 當選擇 時,BD 加法器之輸入端 ( z 與 n ) 分別為 與, 則此電路將執行 之十進位 (BD 碼 ) 算術運算 out BD 加法器 z z z z n. 當選擇 時,BD 加法器之輸入 ( 與 ' n ) 分別為 9 與, 則此電路將執行 ' ( 當 時, z 9' 再加上進位輸入 n, 即 ' 9' ) 算術運算, 此時電路將執行 之十進位 (BD 碼 ) 算術 運算 5
二進位乘法器 由於積體電路製造技術的持續進步, 目前算術電路中之乘法運算, 皆直接用乘法器 (ultpler) 來完成, 而不再使用加法器來代替, 以加快算術電路之運算速度 二進位數之乘法原理與十進位相同, 必須考慮各個位元相乘後之加權位置, 因乘法可視為連續之加法, 二進位乘法器亦是依此原理設計出來的 乘法器 (ultpler) 是一種組合邏輯電路, 而兩個 位元之二進位數 與 之乘法運算規則如下 : 觀察上面之乘法運算規則, 兩個 位元之二進位數乘法運算與兩個輸入的 AND 閘之邏輯運算 ( 真值表 ) 完全相同, 故兩個 位元之二進位 ( 分別標示為 與 之符號 ) 乘法電路, 可用 AND 閘來實現, 且兩數相乘後之輸出僅有 個, 使用 之符號來標示, 如下圖所示 6
位元與 位元之乘法器 兩組 n 個位元之二進位數相乘的運算規則與兩組十進位數相乘一樣, 欲執行被乘數 與乘數 b b b 之 bt bt 乘法運算, 依二進位乘法之運算規則, 可得以下之計算式 : b b b b b b 被乘數乘數 乘積 其中 b b b b 觀察 ~ 之乘積可知, 欲執行 bt bt 乘法器之邏輯電路, 至少需 個 AND 閘與 個全 加法器, 故可用 位元加法器來實現較為簡單, 如下圖所示 b 四位元加法器 b 7 註 : 上面之方程式為數學運算式, 而非布林函數式, 其中 之符號為算術運算之加法, 而非 OR 之邏輯運算註 : 位元加法器之電路, 已經考慮進位傳輸之問題, 故在設計乘法電路時, 可省去考慮進位傳輸之困擾
位元與 位元之乘法器 被乘數 與乘數 b bbbb, 依乘法之運算規則, 可得以下之計算式 : 8 b 7 b b 6 b b b 5 b b b b b b b b b b b b b b 被乘數乘數 乘積 b b b 四位元加法器 b 四 位 元 加 法 器 四位元加法器 8 7 6 5 8
算術邏輯單元 ( 概述 ) 將算術運算 (Arthmetc Operton) 與邏輯運算 (Logc Operton) 合併在同一個邏輯電路, 稱為算術邏輯單元 (Arthmetc Logc Unt; ALU), 藉著選擇變數之改變, 不但可用來執行各種加 減法之算術運算, 亦可用來實現一些 AND OR NOT 與 XOR 等基本邏輯運算 設計算術邏輯單元需遵循一定的設計步驟 : 先考慮算術運算電路 藉由改變算術運算之邏輯功能, 以實現所需之邏輯運算 若尚有未能實現之邏輯運算, 則再修正算術運算電路, 以得到符合實際所需之算術邏輯運算單元 9
算術運算電路之設計 實現算術運算電路的基本元件為全加法器 (FA), 首先假設 FA 之被加數與加數分別為 與 b, 當給予 FA 之被加數 加數 b 與進位輸入端 不同之邏輯值時, 便可得到各種不同功能之 算術運算電路, 如下圖所示 全加法器 o 全加法器 o () 通過 (b) 遞增 b b 全加法器 o 全加法器 o b (c) 加法運算 b (d) 有進位輸入之加法運算
全加法器 o 全加法器 o (e) 遞減 (f) 通過 b b 全加法器 o 全加法器 o b (g) 加 b 之 的補數 b (h) 減法運算 藉由兩個選擇變數 與, 即可用來控制輸入變數 b 之真 / 補 / (True/omplement One/Zero Element) 之組合邏輯電路, 如下圖所示
b f 輸出 f b b () 邏輯電路圖 (b) 邏輯運算功能表 若分別加入被加數 加數 b 之輸入端與進位輸入 電路, 而此電路圖與功能表如下圖所示 n, 便可結合算術運算功能在同一個邏輯 n 輸出 f 算術運算功能 n 通過 遞增 b b 加法運算 b b 有進位輸入之加法運算 遞減 通過 b 全加法器 o f b b 加 b 之 的補數 b b 減法運算 b ) ( ' b out
邏輯運算單元之設計 若再增加一條選擇線 與部分組合邏輯電路, 便可將上圖改變為可產生 OR AND XOR 與 NOT 等 個邏輯運算之算術邏輯電路, 如下圖所示 n b 全加法器 o f out
當選擇線 與 具不同值, 且 n 時, 產生下列邏輯運算功能 :. 當 時, 全加法器之輸入端 b f b) b (, 故此時電路便可執行 OR 之邏輯運算, 則全加法器之輸出 n b 全加法器 o f out
. 當 時, 全加法器之輸入端 故此時電路便可執行 XOR 之邏輯運算 b, 則全加法器之輸出 f b, n b 全加法器 o f out 5
. 當 時, 全加法器之輸入端 f, 故此時電路便可執行 NOT 之邏輯運算, 則全加法器之輸出 n b 全加法器 o f out 6
. 當 時, 全加法器之輸入端 b b, 則全加法器之輸出 f ( b) b [( b) b] [( b) b ] b, 故此時電路便可執行 AND 之邏輯運 算 n b 全加法器 o f out 7
算術邏輯單元之設計 若分別結合算術運算與邏輯運算功能, 便可實現 位元算術邏輯單元之設計, 如上圖所示, 而結合後之整體算術邏輯運算功能表, 如下表所示 n 輸出 f 算術邏輯運算功能 通過 遞增 b b 加法運算 b b 有進位輸入之加法運算 遞減 通過 b b 加 b 之 的補數 b b 減法運算 ( b' b) b b OR b b XOR b NOT b b AND 8
數值比較器 ( 位元之數值比較器 ) 數值比較器 (gntude omprtor) 是一種組合邏輯電路, 它可決定一數值大於 等於或小 於另一數值 首先討論一位元之比較器設計步驟列述如下 :. 欲比較兩個 位元之二進位數之邏輯電路應有 個輸入變數, 分別標示為 與 之符號 ; 而兩數值比較結果, 可指出兩數值間大於 等於或小於之關係, 故此電路應有 個輸出變數, 分別 標示為 f ( > ) f ( ) 與 f ( < ) 之符號. 因輸出可指出兩數值 ( 與 ) 間之大於 等於或小於之關係, 且兩個數值比較大小之結果, 亦僅有一個輸出成立 ( 此情況可設定為邏輯 ), 其它兩個輸出不成立 ( 此情況可設定為邏輯 ), 故可用下面之真值表來定義輸出與輸入間的關係 輸入 輸出 ( ) f > f ( ) f ( < ) 9
. 利用卡諾圖對上面之真值表進行邏輯化簡, 以求得輸出之最簡布林函數式 f f f < > ) ( ) ( ) ( ) ( ) (. 使用邏輯閘來實現以上 個輸出布林函數式, 即可繪出 位元數值比較器之邏輯電路, 如右圖所示 ) ( f < ) ( f ) ( f >
n 位元之數值比較器 n 欲設計 n 位元之數值比較器, 若使用真值表來表示, 則可產生 種組合, 所以用傳統組合邏輯設計方法, 則會變得相當不實用 因此必須法展一套直接 有效之程序 (Procedure) 來解決此類問題, 而此種解決問題之程序稱為演算法 (Algorthm) 與 以比較 兩組二進位數之大小為例, 以說明使用演算法來設計 位元數值比較器之方法 首先使用演算法來發展出兩組 位元之二進位 ( 與 ) 數值比較器的真值表, 如下表所示 輸入輸出 f ( > ) f ( ) f ( < ) > < > < > < > <
比較兩組多位元之二進位數之大小, 需由兩個最高有效位元 (B) 開始比較, 若此對位元不相等, 則兩數值之大小立刻可以決定, 而不必理會比 B 低之二進位數 ; 若兩個 B 相等, 再比較下一對權位較低之有效位元, 直到有一對有效位元不相等為止 若 個有效位元皆相等, 則表示 與 相等 根據以上之說明, 即可設計出 位元數值比較器之邏輯電路, 如下圖所示
f ( < ) f ( > ) f ( )
I-7L85 除了提供 位元比較器之所有輸入與輸出接腳外, 另外增加 A > B ( 第 腳 ) A B ( 第 腳 ) 與 A < B ( 第 腳 ) 等 個串級 (scde) 接腳, 利用此 個接腳, 可用串接多個 I-7L85, 以實現超過 個位元之數值比較器, 如下圖所示 V A B A DATA INPUT A B A B 6 5 9 A B A A B A B A < IN B A IN B A > IN B A > B OUT A B OUT B A < B OUT 5 6 7 8 B A < B A B A > B A > B A B A < B GND DATA IN PU T AADE INPUT OUTPUT 5 6 7 8 9 A > B A B A < B A A A I-7L85 B B B A A > B A B A < B B A > B A B A < B A A A I-7L85 B B B A A > B A B A < B B A > B A B A < B A A A I-7L85 B B B A A > B A B A < B B > < 5 6 7 8 9
問題討論 試分別說明半加法器 (Hlf Adder) 與全加法器 (Full Adder) 在執行二進位加法運算時, 並討論兩者之 功能有何不同 解 : () 半加法器 : 未考慮進位傳送之運算, 僅可對兩個 個位元之 進位數進行加法運算 (b) 全加法器 : 有考慮進位傳送之運算, 因此可用串接之方式對超過兩個 個位元之 進位數進行加法運算 5
試討論串接 個全加法器所設計之 位元並行加法器的缺點, 並請說明改善之方法 解 : () 使用並行加法器來執行二進位數的加法運算時, 雖然所有加數與被加數之信號皆為已知, 但較高位元之加法運算, 必須等較低位元相加, 得到穩定的進位訊號後, 才能得到正確之結果, 即加數與被加數通過邏輯閘之層數與加數 被加數之位元數成正比關係, 因訊號通過邏輯閘會造成時間延遲之關係, 因此會造成嚴重進位傳輸延遲之問題 (b) 為了加快算術運算速度 ( 假設每個邏輯閘之傳輸延遲時間皆相同之條件下 ), 可從改良電路著手, 以減少等待進位所造成之傳輸延遲時間 而目前於減少進位傳輸延遲之方法非常多, 其中最廣泛使用之方法為前視進位加法 (Look-Ahed rr) 原理 6
試分別說明半減法器(Hlf ubtrctor) 與全減法器 (Full ubtrctor) 在執行二進位加法運算時, 並討論兩者之功能有何不同 解 : () 半減法器 : 未考慮借位傳送之運算, 僅可對兩個 個位元之 進位數進行減法運算 (b) 全減法器 : 有考慮借位傳送之運算, 因此可用串接之方式對超過兩個 個位元之 進位數進行減法運算 7
試討論算術邏輯單元(ALU) 之基本定義 解 : 將算術運算 (Arthmetc Operton) 與邏輯運算 (Logc Operton) 合併在同一個邏輯電路, 此種電路稱為算術邏輯單元 (Arthmetc Logc Unt; ALU), 它可實現多種功能之組合邏輯函數, 即藉著選擇變數之改變, 不但可用來執行各種加 減法之算術運算, 亦可用來實現一些 AND OR NOT 與 XOR 等基本邏輯運算 8
5 試繪出十進位加法器 (Decml Adder) 之邏輯電路圖, 並說明電路進行 6 加 9 之運算過程 ( 請 解 : 在邏輯電路上標示出每個邏輯閘輸入與輸出端之邏輯值 ) k I-7L8 T8 T T T I-7L8 9