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 + YSub=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 從左側的欄目中拖到運算器測試電路上,完成運算器測試電路
---------------------
作者: migeater
來源:CNBLOGS
原文:https://www.cnblogs.com/migeater/p/9102195.html
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件