实验目的:
- 理解掌握算术逻辑单元(ALU)的基本构成;
- 掌握Logisim中各种运算组件的使用方法;
- 熟悉多路选择器的使用
- 通过实验自行设计实现8位可控加减法器
- 通过实验自行设计8位串行加法器的逻辑实现
- 通过实验完成实现4位先行进位74LS182
- 通过实验设计实现4位快速加法器
- 通过实验设计实现16位先行进位加法器
- 通过实验设计实现32位快速加法器
实验内容:
-
了解8位可控加减法器:
我们知道一位全加器电路逻辑实现:
Si = Xi ⊕ Yi ⊕ Ci
Ci+1 = Xi Yi + (Xi ⊕ Yi )Ci
既然我们知道一位全加器的工作原理,那么我们只需要将n个全加器的进位链串联即可得到n位穿行加法器,也成为行波进位器。如下图所示:
-
通过实验自行设计实现8位可控加减法器
由于补码运算的特殊性质,减法可以通过特殊性变成减法来实现,只需要将减数Y的补码进行适当的变化,然后送入加法器中即可实现减法运算,具体公式如下:
[X] 补 –[Y] 补 =[X−Y]补= [X]补 + [Y]补
因此在这里引入一个sub控制信号,操作数Y的所有未Yi均于sub信号进行异或后被送入n位串行加法器。具体实现如下:
- 通过实验完成实现4位先行进位74LS182
N位串行加法电路中高位的运算依赖地位进位输入Ci,所以所有全加器不能并行运行,存在关键延迟(2n+4)T,与位数成线性关系,党位数较大时存在很大延迟。因此我们需要打破这种依赖,这就需要提前得到所需的仅为输入信号,南无所有的全加器可以正常运行,从而达到提高运算性能的目的。
N位串行加法电路中和数与仅为输出的关系逻辑表达式:
Si = Xi⊕Yi⊕Ci Ci+1 = XiYi+(Xi⊕Yi)Ci
Gi = XiYi (生成函数) Pi = Xi⊕Yi (进位函数) Ci+1 = Gi + PiCi
我们利用这个原理提前产生各位加法运算需要的所有进位输入,再利用
Si = Xi⊕Yi⊕Ci 进行一级异或门运算即可得到最终的荷属,这就是先行进位的基本原理。经过分析我们得到一下规律:
C1=G1+P1 Cin
C2=G2+P2 G1+P2 P1 Cin
C3=G3+P3 G2+P3 P2 G1+P3P2 P1 Cin
C4=G4+P4 G3+P4 P3 G2+P4P3P2G1+P4P3P2P1Cin
Cn = Gn-1+Pn-1Gn-2+Pn-1Pn-2Gn-3+ …+Pn-1Pn-2…P1P0C0
我们得到规律:进位输出仅与最低位进位输入C0有关,位数越长,进位链电路复杂度越高,通常按照4位一组进行分组运算,并且得到:
成组进位生成函数: G* =G3+P3G2+P3P2G1+P3P2P1G0
成组进位传递函数: P* =P3P2P1P0
具体实现如下:
-
通过实验设计实现4位快速加法器
由4位先行进位74182实现4位快速加法器,
S3 = X3⊕Y3⊕C3 = P3⊕C3
S2 = X2⊕Y2⊕C2 = P2⊕C2
S1 = X1⊕Y1⊕C1 = P1⊕C1
S0 = X0⊕Y0⊕C0 = P0⊕C0
进位信号得到后,求和只需一级异或门3T即可完成,具体实现如下:
-
通过实验设计实现16位先行进位加法器
实现16位先行进位加法器最简单的方法是将4个快速加法器的进位链进行串联,但是这种方法智能实现4位一组的组内并行加法,组间仍然是串行运算。具体实现如下图所示:
-
通过实验设计实现32位快速加法器
1)2个16位加法器直接串联,C16 信号采用下层的进位输出;(2))2个16位加法器直接串联,C16 进位输入采用上层的进位输出;(3)在16位快速加法器的基础上再增加一级组间先行进位电路,类似64位快速加法器的方法;分别分析3种不同方案可能的总延迟,选择速度最快的方案实现32位快速加法器,并分析其时间延迟。具体实现如下:
思考与体会:
1、片选信号可以不连接即不做处理,或者接常量1,或者接译码器验证都是正确的。
2、可以通过电路中线的颜色判断哪里除了问题。常见的颜色判断:蓝色表示位置状态;红色表示信号冲突;亮绿色表示高电平布线时,蓝色表示该点值未知,灰色表示未连接到任何东西。在布线过程中,出现蓝色和灰色都是正常的。但是布线完成后就不应该出现了。
3、仿真时,不应出现蓝灰,戳工具点Pin使其值改变。值为1的线浅绿,0为深绿。如果多位线路传输,则为黑色。出现绿色黑色都是正常的。但是出现红色代表:布线错误,产生冲突。
4、解复用器有一个输入、选择(定义哪个输出端输出输入数据)、输出,而译码器只有选择(选择哪个输出为1)和输出。
电路资源在这里:
https://download.youkuaiyun.com/download/qq_46037206/87340299