实验要求
通过 Logisim 平台上的实验,掌握 ALU 的基本原理与实现。
实验结果与分析
在 Logisim 上实现一位 ALU 的电路设计,并测试不同输入的输出,列出一位 ALU 的真值表
本实验中设计了两种一位ALU电路,均包括输入a、b、Binvert、Operation和输出Result、CarryOut。具体地,最低位ALU将反转信号(Binvert)作为Cin输入加法器,构造补码(取反后最低位加1);其他位ALU反转信号和Cin进位信号单独输入。
图表 SEQ 图表 \*ARABIC 1最低位ALU
a | b | Operation | Binvert | CarryOut | Result |
0 | 0 | 00 (AND) |
|
| 0 |
0 | 1 |
|
| 0 | |
1 | 0 |
|
| 0 | |
1 | 1 |
|
| 1 | |
0 | 0 | 01 (OR) |
|
| 0 |
0 | 1 |
|
| 1 | |
1 | 0 |
|
| 1 | |
1 | 1 |
|
| 1 | |
0 | 0 | 10 (ADD) | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 1 | |
1 | 0 | 0 | 0 | 1 | |
1 | 1 | 0 | 1 | 0 | |
0 | 0 | 10 (SUB) | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | |
1 | 0 | 1 | 1 | 1 | |
1 | 1 | 1 | 1 | 0 |
图表 2最低位ALU真值表
图表 3其他位ALU
a | b | Operation | Binvert | Cin | CarryOut | Result |
0 | 0 | 00 (AND) |
|
|
| 0 |
0 | 1 |
|
|
| 0 | |
1 | 0 |
|
|
| 0 | |
1 | 1 |
|
|
| 1 | |
0 | 0 | 01 (OR) |
|
|
| 0 |
0 | 1 |
|
|
| 1 | |
1 | 0 |
|
|
| 1 | |
1 | 1 |
|
|
| 1 | |
0 | 0 | 10 (ADD) | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | |||
1 | 0 | 0 | 1 | |||
1 | 1 | 1 | 0 | |||
0 | 0 | 10 (ADD) | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 | |||
1 | 0 | 1 | 0 | |||
1 | 1 | 1 | 1 | |||
0 | 0 | 10 (SUB) | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | |||
1 | 0 | 1 | 1 | |||
1 | 1 | 1 | 0 | |||
0 | 0 | 10 (SUB) | 1 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | |||
1 | 0 | 1 | 1 | |||
1 | 1 | 1 | 0 |
图表 4其他位ALU真值表
在一位 ALU 电路的基础上,设计实现八位 ALU,使其能够进行按位与、按位或、补码加法、补码减法运算
封装ALU如下图。
图表 5分别封装最低位ALU(上)和其他位ALU(下)
设计实现8位ALU,如下图所示(从上到下,数位由低到高,上方第一个1位ALU为最低位ALU,其余1位ALU为其他位ALU)。
图表 6 8位ALU电路图
实验小结
本实验中设计的8位ALU能够实现基本的按位与、按位或、补码加法和补码减法运算,其中按位与、或操作直接按位独立进行即可,加法利用加法器不同输入及进位对应不同输出,补码减法需要取反后最低位加1。但如果要进行负数加负数的操作需要将其中一位提前处理为补码再进行运算。
完成实验要求后,考虑如何判断溢出,带符号运算时利用单符号法进行判断即可,无符号运算时需要单独考虑,因为总位数相同,有符号数运算的正溢出情况之一(“Cf=0,C0=1”)在无符号运算中是正常运算。