第 1 8 章 算術運算電路
具有累積器之串列加法器 Chap 18 2
具有累積器之串列加法器 X 暫存器被當做累積器, 而 Y 暫存器被視為被加數暫存器, 加法動作完成之後,X, 暫存器的內容值就被 X 及 Y 的和所取代 被加數暫存器被接成為循環移位暫存器的型式, 因此移位四次後, 它將還原成原來的數值 移位暫存器盒的最左邊標示著輸入符號 : Sh(shift register),si(serial input) 及時脈 當 Sh=1 且一個有效的時脈邊緣發生時, 暫存器的內容值將向右移一位, 同時 SI 將進入 x3( 或 y3) 因為 Sh 被連接至 D 正反器的 CE, 因此進位只有在移位發生時才會被更改 Chap 18 3
串列加法器的動作情形 Chap 18 4
串列加法器的動作情形 在圖中,t0, 是第一個移位前的時間 t1 是第一個移位後的時間 t2 是第二移位後的時間 等! 在 t0 時, 累積器之內含值為 X, 而被加數暫存器之值為 Y; 因為全加器是組合邏輯電路, 因此 x0 y0 及 c0 完成相加和從總和 s0 及進位 c1 來的時脈完全無關 當第一個下降的時脈邊緣發生時,s0, 被移入累積器中, 而在累積器中的數字則向右移動一個位置 在相同的時脈邊緣 c1 則儲存至進位正反器, 且將被加數暫存器向右旋轉一個位置 下一對位元, 也就是 x1 y1 在此時已接至全加器之輸入端, 如圖 18-2(b) 所示, 加法器將產生和 s1 及進位 c2 Chap 18 5
第二個下降的時脈邊緣發生時,s1, 將移入累積器中,c2, 則儲存至進位正反器, 再將被加數暫存器整個向右移位一次 如圖 18-2(c) 所示, 位元 x2 及 y2 已接至全加器之輸入端, 此過程將一直繼續, 直到所有的位元對都相加過為止, 如圖 18-2(e) 所示 Chap 18 6
實際的數值說明操作的情形 起初, 累積器之內容值為 0101,, 且被加數暫存器之值為 0111 在 t0 時, 全加器計算 1+1+0=10,, 故 si=0 且 =1 在第一個下降的時脈邊緣 (t1) 之後, 和的第一個位元已被移入累積器, 而進位則被存入至進位正反器, 同時被加數暫存器向右循環移位一次 Chap 18 7
加法器控制電路的狀態圖及狀態表 Chap 18 8
在未收到起始信號之前, 電路一直停留在 S0 的狀態 任何的時間, 只要電路輸出 Sh=1, 那麼就進入 S1 的狀態 連續的幾個時脈中, 它將會輸出其餘的三個移位信號 假設起始信號在電路回到狀態 S0 之前就已經結束, 如此便可以確保在收到下一個起始信號之前, 不會再產生其他的輸出信號 短橫線, 是因為電路一旦進入 S1 之後, 不管 St 的值為多少, 它都將持續的運作 Chap 18 9
控制電路方程式的推導 Chap 18 10
串列處理單元 一個串列處理單元就如同一個具有累積器的串列加法器, 一次只能處理一個位元資料 它有兩個移位暫存器, 而移位暫存器的輸出位元則連接至組合邏輯網路的輸入 此組合邏輯網路至少產生一個位元的輸出 Chap 18 11
串列處理單元的狀態圖 Chap 18 12
串列處理單元的控制電路最主要就是產生一連串的移位信號, 當起始信號 (St( St) ) 為 1 時, 就產生第一個移位信號 (Sh( Sh) ) 如果此移位暫存器有 n 個位元, 那麼就必須產生 n 個移位信號 如果 St 為 1 的時間只維持了一個時脈, 則控制狀態圖 ( 圖 18-6(a)) 將會在回到狀態 S0 之後停止 無論如何, 假使 St 為 1 能持續維持到移位完成之後, 那麼一個單獨的停止狀態則是必要的, 如圖 18-6(b) 所示, 此控制將停留在停止狀態直到 St 返回 0 的狀態 Chap 18 13
二進制乘法的運算 整個乘法運算是一項一項的將部份乘積求出並逐一相加的方式 Chap 18 14
並列二進位乘法器的方塊圖 Chap 18 15
操作說明 兩組 4 位元數值的相乘, 須要一個 4 位元的被乘數暫存器 (4-Bit Multiplicand Register): 一個 4 位元乘數暫存器 (Multiplier Register) 一個用來存放乘積的 8 位元暫存器 乘積暫存器 (Product Register) 則扮演累積器的功能, 主要是將部份乘積之和逐一累加起來 Chap 18 16
操作說明 來自累積器的 4 個位元與來自被乘數暫存器的 4 個位元都被連接到加法器的輸入端, 而加法器所輸出的 4 位元的和及進位則再接回至累積器 加法器計算它的輸入的和, 同時, 當相加信號 (Add Signal;Ad Ad) 產生時, 加法器的輸出會在下一個上升的時脈邊緣儲存至累積器, 如此將使得被乘數與累積器之值相加 在乘積暫存器中最左端的一個額外的位元, 是用來暫時儲存由被乘數與累積器相加時所產生之進位信號 (C4( C4) ) Chap 18 17
操作說明 乘積暫存器低的 4 位元在剛開始時並未用到, 所以我們先將乘數存放於此, 如此就不需要使用另外的暫存器 載入信號將乘數載入到 ACC 的最低 4 個位元, 同時清除高的 5 個位元 移位信號 (Sh) 在下一個上升的時脈邊緣發生時, 將使得乘積暫存器之值 ( 包含乘數 ) 向右移位一次 控制電路在接收到起始信號 (St=1) 之後, 必須產生一系列適當的相加及移位信號 Chap 18 18
乘法例子 (13 11) 11) Chap 18 19
乘法器控制狀態圖 Chap 18 20
S0 為重置狀態, 電路在接收到起始信號 (St=1) 之前, 將一直停留在 S0, 這時產生一個載入信號, 使得在下一個上升的時脈邊緣發生時, 乘數被載入到累積器 (ACC) 的最低 4 個位元, 同時清除高的 5 個位元 在 S1 的狀態下, 乘數 (M) 的低位元將會被測試, 假使 M=1, 則會產生一個相加的信號然後在 S2 的狀態下, 則會產生一個移位的信號 M=0, 則只會產生一個移位的信號, 因為加 0 的動作可以被省略 Chap 18 21
在狀態 S3 S5 及 S7 中,M, 被用來測試是應該產生相加信號後接著產生移位信號或是只產生移位信號 在下一個時脈的時候, 移位信號之產生總是跟隨在相加信號 ( 狀態 S2 S4 S6 及 S8) 之後, 在產生四個移位信號之後, 乘數的 4 個位元都被處理過, 同時控制電路回到起始狀態, 同時結束相乘之程序 此控制電路執行了兩項功能 當需要時會產生相加及移位信號並計算移位的次數 Chap 18 22
一個計數器及一個相加 移位控制 Chap 18 23
相加 移位的功能 圖 18-9(b) 會測試 M 及 St, 並產生適當的相加及移位信號 再由計數器中拉出一個完成信號 (Completion Signal;K) K), 在產生適當數目的移位信號之後, 它將被用來停止乘法器之動作 圖 18-9(b) S0 狀態開始, 當收到起始信號 (St=1) 之後, 便產生一個載入信號 狀態 S1 下, 若 M=0, 則產生移位信號同時電路仍停留在狀態 S1; ; 若 M=1, 則產生相加信號且電路進入狀態 S2 狀態 S2 下, 移位信號的產生是因為移位信號總是緊跟在相加信號之後 未提供停止乘法器動作之功能 Chap 18 24
計數器的功能 若乘法器有 n 個位元, 則共需要移位 n 次 我們將設計該計數器, 使其在完成 n-1 個移位信號後, 產生一個完成信號 (K) 當 K=1 時, 若有需要的話電路應該完成一次或更多的相加動作, 然後完成最後的移位 當 K=0 時, 圖 18-9(c) 之操作情形與圖 18-9(b) 是一樣的 在狀態 S1 中, 若 K=1 若 M=0, 就將最後的移位信號輸出然後停止動作 ; 若 M=1, 則在移位之前必須先做相加的動作並進入狀態 S2 Chap 18 25
在 S2 狀態中 若 K=1, 我們將再輸出一個移位信號然後進入 S3 最後一次的移位信號將會使計數器清除為 0,, 同時, 相加 - 移位控制電路將回到停止狀態 Chap 18 26
計數器的乘法器之操作情形 Chap 18 27
操作說明 t0 時, 控制電路處於重置狀態, 並等待起始信號的輸入 在 t1 時, 起始信號 St =1, 且產生載入信號 在 t2 時,M=1, M=1, 故產生 Ad 信號 當次一時脈出現時, 加法器的輸出被載入累積器中, 同時控制電路進入 S2 在 t3 時, 則產生 Sh 信號, 因此下一個時脈的出現將會造成移位, 同時計數器加一 在 t4 時,M=1, M=1,, 故 Ad=1 =1, 所以在下一個時脈出現時, 加法器之輸出將會載入至累積器 Chap 18 28
操作說明 在時間 t5 及 t6 時, 將會有移位及計數的發生 在 t7 時, 因為已經發生了三次移位, 而且計數器之狀態為 11,, 所以 K=1; 由於 M=1, 在完成相加之後, 控制電路回至狀態 S2 在 T8 時,Sh, Sh=K=1, 所以下個時脈出現時將會完成最後一次移位, 同時計數器將回到狀態 00 在 T9 時, 則將產生停止信號 Chap 18 29
二進位數並列除法器 以一個 8 位元除 4 位元而獲得 4 位元商數 (Quotient) 的例子來說明電路的設計方式 Chap 18 30
二進位除法器方塊圖 Chap 18 31
除法器的建立 除法也可以用一連串的相減與移位來實現 除法器的建立, 我們使用了一個 9 位元的被除數暫存器 (Dividend Register) 及一個 4 位元的除數暫存器 (Divisor Register) 除法運算的過程當中, 我們通常是將被除數向左移以取代先前在例子裡每次相減之前先將除數向右移的動作 Chap 18 32
除法器的建立 在被除數暫存器最左端必須額外保留一個位元, 如此方可避免在被除數左移時而造成位元的流失 商數, 我們並不需要利用另一個商數暫存器來儲存, 而是在被除數左移的同時, 我們將商數一位元一位元的存入被除數暫存器的右端 Chap 18 33
135 除以 13 以下為每次時脈信號到達時, 被除數與除數在暫存器中位元放置的情形 若有負數的情形出現, 就不能夠做相減的動作, 所以在做減法之前要先做移位的動作 1 被除數與除數的輸入方式如下所示 : Chap 18 34
操作 2 將被除數向左移 1 個位置, 而不是把除數向右移 3 相減之後, 商數的第 1 個位元 "1" 是存放在被除數暫存器中沒有被用到的位置上 Chap 18 35
操作 4 再將被除數向左移 1 個位元.. 5 相減的結果會產生一個負數, 所以再度將被除數向左移位 1 次, 而商數的第 2 個位元為 0 Chap 18 36
操作 6 相減的動作可以執行了, 商數的第 3 個位元為 1,, 它被存放在被除數暫存器中沒有被用到的位置上 7 完成最後一次移位, 而商數的第 4 個位元為 0 Chap 18 37
溢位 (overflow) 的發生 除法運算所獲得的結果, 商數之位元數超過所能存放的個數時, 則稱為溢位 (overflow) 的發生 在除法運算剛開始時, 藉由被除數與除數的比較, 就可以得知商數是否會太大 例如 135 除以 7,, 此時暫存器之初值為 0 1 0 0 0 0 1 1 1 0 1 1 1 Chap 18 38
相減的結果不為負值, 因此可以執行相減的動作 先將被除數減去除數, 並且將所得的商數 1 這個位元輸入至被除數暫存器之最右邊的位置上 但最右邊的位置上含有被除數的最低有效位元 (LSB), 若是將商數輸入, 則被除數該位元就會被破壞 商數大到無法存入所預留的 4 位元空間, 同時我們也已偵測出溢位的情形發生 Chap 18 39
起初 X8 X7 X6 X5 X4 Y3 Y2 Y1Y0( 亦即, 被除數暫存器最左邊的五個位元值大於或等於除數 ),, 則商數將會大於 15 而產生溢位 若 X8 X7 X6 X5 X4 Y3 Y2 Y1Y0, 則商數為 Chap 18 40
除法動作之說明 移位信號 (Sh) 在下一個上升邊緣時, 將會促使被除數向左移動 1 個位置 減法器是一個組合邏輯電路, 它會計算 X8 X7 X6 X5 X4-Y3 Y2 Y1Y 0 的值, 在經過一個傳輸延遲時間之後, 它的差值將會出現在減法器的輸出 相減信號 (Su) 在下一個上升的時脈邊緣時, 將會把減法器的輸出 載入到 X8 X7 X6 X5 X4, 同時設定商數位元為 1 ( 在被除數暫存器最右邊的位元 ) Chap 18 41
除法動作之說明 為了完成這個動作,Su, 同時連接到移位暫存器的 Ld 輸入端及正反器的資料輸入端 如果, 除數大於被除數最左邊的 5 個位元, 那麼比較器的輸出 C=0; 否則 C=1 控制電路則產生所需要的移位及相減的信號序 列 C=0 時, 因為結果為負數, 所以無法做相減的動作, 此時只產生移位信號 若 C=1, 則產生相減信號, 同時商數的位元被設定為 1 Chap 18 42
除法器控制電路的狀態圖 Chap 18 43
除法器控制電路的操作 起始信號 (St) 發生時,8, 位元的被除數和 4 位元的除數分別被載入到適當的暫存器中 假使 C 的值為 1,, 則表示商數需要五個或五個以上的位元來儲存 因為電路僅提供 4 位元商數的空間, 因此這種狀況將使得溢位發生 故除法器停止動作 且溢位指示由 V 的輸出來設定 Chap 18 44
除法器控制電路的操作 一般而言, C 之初值為 0,, 所以會先產生移位, 接著控制電路將進入狀態 S2 其次,C=1, C=1, 則做相減動作 相減完之後,C, 將會變為 0,, 所以當下一次有作用的時脈邊緣時則會產生移位 此一過程將一直重複, 直到完成四次的移位為止, 同時控制電路在狀態 S5 若 C=1, 將會完成最後一次的相減,C=0, C=0, 則不會有相減動作發生, 也不需要再做移位, 且控制電路回到停止狀態 在本例中, 我們假設起始信號 (St) 到達, 則其值為 1,, 且會維持一個時脈時間, 然後在控制電路回到狀態 S0 之前,St, 將一直維持在 0 因此,St, 在狀態 S1 到狀態 S5 時, 均保持為 0 Chap 18 45
次一狀態及輸出的方程式 Chap 18 46
5 位元減法器的邏輯圖 減法器是一個組合邏輯網路 借位信號將會在減法輸出轉移到被除數暫存器之前通過每一個全減法器 最後一個借位信號 (b9( b9) ) 為 1,, 這代表說相減的結果是負值, 因此, 如果 b9 為 1,, 則除數 (Y3 Y2 Y1Y0) 大於被除數 (X8 X7 X6 X5 X4), Chap 18 47
且 C=0, 因此 C=b9' 同時也不再需要另一個比較器電路 除法器若在正常的操作情形之下 ( 無溢位 ), 我們同樣可以看出 C=d8' 若 d8=1, 則不需要移位就可以做第二次的減法動作, 此情形是不會發生的, 因為商的位元數不會超過 1,, 因此, 假如相減的動作有可能發生, 那麼在相減完成之後 d8 的值將會是 0 Chap 18 48
使用匯流排符號的除法器方塊圖 Chap 18 49
可藉由增加一個 MUX 在 X 暫存器的輸入端來完成 圖中使用匯流排 (bus( bus) 的記號以避免重複畫多條的連接線 匯流排合併器 (bus( merger) Chap 18 50
匯流排分離器 (bus( splitter), 它主要是將在 X 暫存器裡的 9 個位元分離成 X8 X7 X6 X5 X4 及 X3 X2 X1 還有未被使用的 X0 匯流排合併器及匯流排分離器並不需要真實的硬體, 它們只是利用符號來代表匯流排的連接 Chap 18 51
操作說明 X 暫存器是一個具有並列載入功能的左移暫存器, 相似於圖 12-10 10 所示的暫存器 在時脈的上升邊緣時, 當 Ld=1 時, 它將做載入的動作, 同時若 Sh=1, 將做左移的動作 當 Load=1 時, 此暫存器必須與被除數一起載入, 或是 Su=1 時此暫存器必須與減法器的輸出一起載入, 因此, 我們利用一個 OR 閘將 Load 及 Su 連接起來且將它的輸出接到 Ld 輸入 Chap 18 52
操作說明 當 Load=1 時, 此 MUX 選擇被除數 ( 在前面加上一個 0); 當 Load=0 時, 它將選擇匯流排合併器的輸出, 此輸出是由減法器的輸出 X3 X2 X1 及邏輯 1 所組成的 當 Su=1 且時脈是在上升的時候, 此 MUX 的輸出將會被載入至 X 暫存器, 這整個執行結果是, 減法器的輸出在 X8 X7 X6 X5 X4,, 而 X3 X2 X1 未改變, 且 X0 被設定為 1 Chap 18 53