四位ALU算术逻辑单元设计实验.docx
- 文档编号:7944072
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:9
- 大小:139.81KB
四位ALU算术逻辑单元设计实验.docx
《四位ALU算术逻辑单元设计实验.docx》由会员分享,可在线阅读,更多相关《四位ALU算术逻辑单元设计实验.docx(9页珍藏版)》请在冰豆网上搜索。
四位ALU算术逻辑单元设计实验
实验报告
实验人:
学号:
日期:
2010-03-20
院(系):
软件学院
专业(班级):
实验题目:
四位ALU算术逻辑单元设计实验
一.实验目的
1.了解ALU(算术逻辑单元)的功能和使用方法;
2.认识和掌握超前(并行)进位的设计方法;
3.认识和掌握ALU的逻辑电路组成;
4.认识和掌握ALU的设计方法。
二.实验原理
从结构原理图上可推知,本实验中的ALU运算逻辑单元由4个一位的ALU运算逻辑单元所组成。
每一位的AKU电路由全加器和函数发生器所组成。
事实上,ALU的设计是在全加器的基础上,对全加器功能的扩展来实现符合要求的多种算术/逻辑运算的功能。
为了实现多种功能的运算,An、Bn数据是不能直接与全加器相连接的,它们受到功能变量F3~F1的制约,因此,可由An、Bn数据和功能变量F3~F1组合成新的函数Xn、Yn,然后,再将Xn、Yn和下一位进位Cn-1通过全加器进行全加运算以实现所需的运算功能。
ALU中,C0为最低位的进位输入端,C4为最高位的进位输出端,Sn为每一位运算结果。
一位算术/逻辑运算单元的逻辑表达式(n=1、2、3、4)如下:
Sn=Xn⊕Yn⊕Cn-1
Cn=XnYn+(Xn+Yn)Cn-1
令Pn=Xn+Yn
Gn=XnYn
则Cn=Gn+PnCn-1
ALU的逻辑结构原理图
实验要求进位位采用超前(先行、并行)进位实现。
超前进位电路同时形成各位进位,因此实现快速进位,达到快速加法的目的。
这种加法器称为超前进位加法器。
各超前(先行)进位位的形成根据表达式Cn=XnYn+(Xn+Yn)Cn-1来确定,其中n=1、2、3、4。
后产生的进位与前进位有关,最终每个进位也只和Xn、Yn、C0有关,而Xn、Yn又是An、Bn的函数。
如,
C1=G1+P1C0=X1Y1+(X1+Y1)C0
C2=G2+P2C1=G2+P2G1+P2P1C0=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0
C3、C4依此类推。
一些控制信号如F3~F1为功能控制信号,控制着4位ALU运算逻辑单元的八种功能操作;A4~A1和B4~B1为ALU的两组数据输入端;S4~S1位4位ALU的4个输入端,S表示为S=S4S3S2S1;
C4为4位ALU的最高位进位输出端,依次还有C3、C2、C1。
考虑级联关系时,如有必要可增加级联控制端G。
三.实验内容
4位ALU的八种功能操作表
F3F2F1
S
功能描述
000
B’
求反
001
B’+1*
求补
010
B
传送B
011
B+1*
加1传送
100
A+B’
加反
101
A+B’+1*
减
110
A+B
加
111
A⊕B
异或
注:
“1*”为加1操作
依照ALU的原理与逻辑结构原理图,用超前进位的方法设计能实现以上八种功能操作的4位ALU,并将其电路封装。
为了能实现4位ALU到8位ALU、16位ALU等的扩展需要,设计时必须考虑级联关系,并实现4位ALU到8位ALU的扩展电路。
四.实验分析与设计
1.电脑一台
2.MAX+PLUSⅡ电路设计软件一套
3.根据需要选用器件,但以基本逻辑门电路器件为主
五.实验分析与设计
分析:
此实验要求我们完成一个四位ALU算术逻辑单元设计,根据我们上学期所学的数
字电路与逻辑设计的基本知识,我们已经非常熟悉全加器的设计以及如何实现并行进位全加器方法。
然而,此实验的难点在于如何设计出一个具有逻辑功能的ALU,若能实现,则主要问题迎刃而解。
设计:
已知需要实现的逻辑功能如上述的功能操作表所示。
仔细观察后可以发现,前七种功能只需要将原输入An、Bn进行相应的逻辑电路后变为Xn、Yn再经过全加器相加,即Xn+Yn得到需要实现的功能。
而对于最后一项A⊕B,我们可以把它看作A+B,然后屏蔽当它们均为1时的进位,也就是说该功能的核心还是全加器的实现。
根据上述的设计,我们可以先找出F1,F2,F3,Xn,Yn,An,Bn和1*的逻辑关系。
F3F2F1
0
1
00
0
0
01
0
0
11
An
An
10
An
An
根据卡诺图可得,X=AF3
同理:
F3F2F1
0
1
00
B’
B’
01
B
B
11
B
B
10
B’
B’
根据卡诺图可得,Y=BF2+B’F2’=(F2+B)’
F3F2F1
0
1
00
0
1
01
0
1
11
0
0
10
0
1
根据卡诺图可得,Cn=F1F3’+F1F2’=F1(F3’+F2’)=F1(F2+F3)’
所以根据上述的关系表达式,我们可以利用软件得出函数发生器的逻辑电路,如下图:
封装后如下图:
此外,我们利用软件也可以得出全加器的逻辑电路,如下图:
封装后如下图:
当我把函数发生器和全加器逻辑电路设计出来后,我利用软件的函数仿真功能进行了测试,测试结果如下:
函数发生器:
全加器:
下面我们需要考虑设计并行进位以及级联的ALU设计需要注意的问题。
由于需要实现级联,我们需要增加一个级联控制端G,该控制端控制了第二级ALU使其不再具有+1*功能。
在我设计的电路图中,G=1时,ALU实现+1*功能;G=0时,屏蔽+1*功能。
此外,为了实现第一级ALU最高位产生的进位进位到第二级ALU的第一级进位中,我将ALU的最高位的进位作为输出。
注意了以上问题后,我们再根据
n=Xn⊕Yn⊕Cn-1
Cn=XnYn+(Xn+Yn)Cn-1
令Pn=Xn+Yn
Gn=XnYn
则Cn=Gn+PnCn-1
C1=G1+P1C0=X1Y1+(X1+Y1)C0
C2=G2+P2C1=G2+P2G1+P2P1C0=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)C0
C3、C4依此类推。
得出我们需要的并行全加器电路(四位ALU算术逻辑单元),缩略图如下所示:
测试结果为:
我设计完上述的单个四位ALU算术逻辑单元后,将其封装,为下面实现级联ALU算术逻辑单元作准备,最后得到如下的电路图:
六.思考题
七.实验心得
做完此实验可谓感慨良多,收获丰硕。
首先,为了完成此实验,我必须搞清楚实验的ALU是如何实现算术与逻辑运算。
虽然我能设计出并行加法器,但是我却没有立即理解实验中逻辑功能的实现的核心也是靠加法器实现,在这个问题上,我花费了大量的时间去图书馆查阅相关的资料。
当我知道了其实验原理后,可以说是松了一口气。
然而,在MAX+PLUSII软件
实现自己的想法,又成为了我的另外一个难题。
同样,我花费了大量时间去熟悉,实用该软件,只是,时不利我,我的软件似乎出现了一些不应该出现的问题,暂且称其为BUG。
当我完成单独的ALU后,进行了测试,其测试结果与我的预期一致。
但是,当我将其应用到级联ALU时,错误的结果出现了,其中一个是低4位的两个数相加结果居然是错误答案。
为此,我用了大量时间寻找“错误根源“,又向几位“高手”请教,无奈最终还是未能解决。
是在是百思而不得其解!
由于本人能力有限,所以只能交上未完成测试的级联ALU电路,希望老师您见谅!
虽然觉得很郁闷,但是通过这次的实验,我学到了很多。
首先,当自己以为很了解一个原理时,并代表自己已经具有熟练应用其能力,这是我应该多多加强的方面。
其次,遇到困难时,跟同学一起讨论是一个很好的方法。
就像我遇到的BUG问题,我找来找去,总以为自己错了,跟同学讨论后,大家一致认为应该是软件出问题了。
若不是这样,我可能还要浪费大量的时间在这个问题上。
由于种种原因,该次实验的遗憾是未能完成思考题,不过我会课后补回的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ALU 算术 逻辑 单元 设计 实验