notice : 這篇文章僅僅具有上機實驗的參考作用,並且需要配套的文件
Logisim學習
隧道
相當於局部變量
復用器-Bit-Selector
把(West edge)輸入數據從最低位開始,平均分成n組,n由輸出位寬決定;
另一個輸入(South egde)決定選擇第i組數據
用到的組件總結
Wiring→Bit Extender,Constant,Tunnel,Probe
Gates→…
Plexers→Multiplexer,Decoder,Bit Selector
Arithmetic→Adder/Substractor*,Multiplier,Divider,Comparator,Shifter
Anchor
構建 32 位運算器。利用封裝好的 32 位加法器以及 logisim 平台中現有運算部件(禁用系統自帶的加法器,減法器)構建一個32 位運算器,可支持算術加、減、乘、除,邏輯與、或、非、異或運算、邏輯左移、邏輯右移,算術右移運算,支持常用程序狀態標志(有符號溢出OF、無符號溢出 CF,結果相等 Equal),運算器功能以及輸入輸出引腳見下表,在主電路中詳細測試自己封裝的運算器,在報告中分析該運算器的優缺點。
8位串行可控加法器
見課本P69,不同之處就是這里有cin
eg. X + Y
Sub=0時,Cin 就是進位
Sub=1時
,Cin=0 時, Sub xor Cin = 1,表示對Y的補碼運算
,Cin=1 時,Sub xor Cin = 0,Cin表示借位,因此Y-1,與補碼的+1抵消

CLA74182先行進位電路
串行進位加法器一級一級的進位延遲大,
所以可以想辦法提前得到當前位的進位輸入
以4位為例,設二進制加法器第i位輸入為xi,yi,輸出為si,進位輸入是ci,進位輸出Ci+1

遞歸的展開有





這里可以發現各級的進位與其他進位無關

G*,P*再按 "文件" 所給提示連接即可
G*,P*作用
到下面會提到
CLA..作用


部分1:由以上產生的Gi,Pi,輸入到CLA,G*,P*
部分2:由Gi,Pi,C0能產快速生各個位的進位

4位快速加法器
這個比較簡單,如果畫好了CLA74182,G*,P*作用仍不明

notice
上面GP index從1開始

作用
輸入Xi,Yi,C0


由以上產生Gi,Pi,輸入到CLA,能產快速生各個位的進位和

得到Si,Ci,G*,P*
| 輸出(需要的)(高亮最后的輸出) |
各結果的產生次序 |
| Xi,Yi,C0 |
0 |
| Gi,Pi(Xi,Yi) |
1 |
| G*P*(Gi,Pi),Ci(Gi,Pi,C0) |
2 |
| Si(Ci,Xi,Yi) |
3 |
notice
這里用了隧道G1,G2,…
16位快速加法器
成組進位






而只把xi,yi丟向4位快速加法器,就能得到G*,P*,輸入CLA74182,得到各個進位,再輸回4位快速加法器,得到Si
| 輸出(需要的)(高亮最后的輸出) |
各結果的產生次序 |
| Xi,Yi,C0 |
0 |
| Gi*,Pi* |
1 |
| Ci(Gi*,Pi*,C0),GAll*,PAll* |
2 |
| Si(Ci,Xi,Yi) |
3 |

32位快速加法器
同16位加法器,只不過多了個溢出檢測↓
_溢出檢測
第一種
相加兩數X,Y符號相同,且與結果S的符號不同

第二種
最高數據位的進位與符號位的進位是否一致,不一致表示溢出
例如 -111+(-110
補碼是1001 + 1010
所以溢出了
這里用第一種溢出檢測即可;可以用復用器-Bit-Selector分離出符號位(比Splitter簡單)
ALU
equal&&op=1011
logisim運算器→比較器
Signed OverFlow
只需要處理有符號加減的
Unsigned Overflow
加法和小於加數,減法差大於被減數
特別的:加法:無符號加法,溢出即是進位,32位加法器的一個輸出cout就是此變量
alu operation
logisim→復用器→數據選擇器multiplexer

| 0 |
自帶移位器 |
| 1 |
自帶移位器 |
| 2 |
自帶移位器 |
| 3 |
自帶乘法器 |
| 4 |
自帶除法器 |
| 5 |
32位加法器 |
| 6 |
32位加法器 |
| 7 |
自帶邏輯門 |
| 8 |
自帶邏輯門 |
| 9 |
自帶邏輯門 |
| 10 |
自帶邏輯門 |
| 11 |
√ |
具體電路不再給出
其他
^運算器測試電路
把☆ALU 從左側的欄目中拖到運算器測試電路上,完成運算器測試電路
