实 验 报 告
实验人: 郑博
学号: 07303156
日期: 2009-04-05
院(系): 软件学院
专业(班级): 07软件工程(数字媒体)
实验题目:四位ALU算术逻辑单元设计实验
一. 实验目的
1. 了解ALU(算术逻辑单元)的功能和使用方法;
2. 认识和掌握超前(并行)进位的设计方法;
3. 认识和掌握ALU的逻辑电路组成;
4. 认识和掌握ALU的设计方法。
二. 实验原理
由结构原理图可知,An、Bn数据是不能直接与全加器连接,它们受到功能变量F3—F1
的制约,因此,可由An、Bn数据和功能变量F3-F1组合产生成新的函数Xn、Yn,然后,再将
Xn、Yn和下一位Cn-1通过全加器进行全加运算以实现所需的运算功能。
图 9.1.1 ALU 的逻辑结构原理图
Sn=Xn○+ Yn○+ Cn-1;
Cn=XnYn+(Xn+Yn)Cn-1
令Pn=Xn+Yn
Gn=XnYn
则Cn=Gn+Pn-1
实验要求进位采用超前进位实现。超前进位电路同时形成各位进位,因此实现快速进
位,达到快速加法的目的。
各超前进位的形成根据表达式Cn=XnYn+(Xn+Yn)Cn-1来确定,其中n=1、2、3、4。后
产生的进位与前进位有关,最终每个进位也只和Xn、Yn、C0有关,而Xn、Yn又是An、Bn的函
数。
三. 实验内容
表 9.1.1 4 位 ALU 的八种功能操作表
F3 F2 F1
0
0
0
1
0
0
1
0
1
0
1
1
0
1
1
1
0
0
1
1
0
0
1
1
注:“1*”为加 1 操作
Sn
功能描述
/B
/B + 1*
B
B + 1*
A + /B
A + /B + 1*
A + B
A ⊕ B
求反
求补
传送 B
加 1 传送
加反
减
加
异或
依照ALU的原理与逻辑结构原理图,用超前进位的方法设计能实现以上八种功能操作
的4位ALU。为了能实现4位ALU到8位ALU、16位ALU等的扩展需要,设计时
必须考虑级联关系,并实现4位ALU到8位ALU的扩展电路。
四. 实验器材
1. 电脑一台;
2. MAX+PLUSII电路设计软件一套;
3. 根据需要选用器件,但以基本逻辑门电路器件为主。
五. 实验分析与设计
全加器的逻辑表达式如下:
S1=X1○+ Y1○+ C0
C1=G1+P1C0=X1Y1+(X1+Y1)C0
S2=X2○+ Y2○+ C1= X2○+ Y2○+ ( X1Y1+(X1+Y1)C0)
C2=G2+P2C1=G2+P2G1+P2P1C0=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0
S3= X3○+ Y3○+ C2= X3○+ Y3○+ ( X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0)
C3 = X3Y3 + (X3+Y3)C2
= X3Y3 + (X3+Y3)X2Y2 + (X3+Y3)(X2+Y2)X1Y1 +(X3+Y3)(X2+Y2)(X1+Y1)C0
S4=X4○+ Y4○+ C3
=X4○+ Y4○+ ( X3Y3 + (X3+Y3)X2Y2 + (X3+Y3)(X2+Y2)X1Y1 +(X3+Y3)(X2+Y2)(X1+Y1)C0)
C4 = X4Y4 + (X4+Y4)C3
= X4Y4 + (X4+Y4) X3Y3 + (X4+Y4)(X3+Y3)X2Y2 + (X4+Y4)(X3+Y3)(X2+Y2)X1Y1
+(X4+Y4)(X3+Y3)(X2+Y2)(X1+Y1)C0
由函数发生器的功能表知,F3控制A的输入,F2控制B取反操作,F1控制加1操作。
但当F3 = F2 = F1 = 1时,功能是异或,也即An对Bn进行半加,所以在这种情况下必须
把进位输入屏蔽掉。这样我们有:
Xn = F3An;
Yn = F2○· Bn;
C0 = F1;
Cn’ = Cn(F3F2F1)’;
考虑级联关系,我们观察一下用两个四位ALU组合成8位ALU的情况,不难发现,需
要修改的就是加1操作,除了低位的ALU外,高位的ALU的F1不能加到其进位C0端,所以
我们设一个控制端G来控制F1对C0的影响:
C0 = GF1 + C(C为低位的ALU的进位端);
那么当要扩展ALU时,除了低位的ALU接入1外,其它的控制端必须接入0.
电路图:
波形图:
实验结果及分析:
由ALU的功能操作表知,当F3F2F1为000时,ALU对B进行求反,观察以上波形图,B此时
为0000,输出结果为1111,进位为0,满足要求;当F3F2F1为001时,ALU对B进行求补,观察
以上波形图,B此时为0001,输出结果为1111,进位为0,满足要求;当F3F2F1为010时,ALU
传送B,观察以上波形图,B此时为0010,输出结果为0010,进位为0,满足要求;当F3F2F1
为011时,ALU对B加1传送,观察以上波形图,B此时为0011,输出结果为0100,进位为0,满
足要求;当F3F2F1为100时,ALU对A和B进行加反运算,观察以上波形图,A此时为1000,B
此时为0100,输出结果为0011,进位为1,满足要求;当F3F2F1为101时,ALU对A和B进行减
运算,观察以上波形图,A此时为1010,B此时为0101,输出结果为0001,进位为1,满足要
求;当F3F2F1为110时,ALU对A和B进行加运算,观察以上波形图,A此时为1100,B此时为0110,
输出结果为0010,进位为1,满足要求;当F3F2F1为111时,ALU对A和B进行异或功能,观察
以上波形图,A此时为1110,B此时为0111,输出结果为1001,进位为0,满足要求;以下类
同。
六. 实验心得
1.由于这是第一次使用 max-plus 做实验,对 max-plus 的操作还是相当生疏。比如,当编译
新的文件时,发现了错误,但一直找不到错误的源头,考虑了很久才发现是因为忘记了把待
编译的文件设为当前工程文件后就开始编译文件,而错误的源头是原工程文件。
2.要充分理解题意,比如实验中 4 位 ALU 的第八个功能“异或”,一开始我只是屏蔽了最低
位的进位而已,而没有考虑其他进位,因此只有最低位进行异或功能,其他位进行加功能。