ALU的设计与实现Word格式文档下载.doc

上传人:b****3 文档编号:15403325 上传时间:2022-10-30 格式:DOC 页数:5 大小:46.50KB
下载 相关 举报
ALU的设计与实现Word格式文档下载.doc_第1页
第1页 / 共5页
ALU的设计与实现Word格式文档下载.doc_第2页
第2页 / 共5页
ALU的设计与实现Word格式文档下载.doc_第3页
第3页 / 共5页
ALU的设计与实现Word格式文档下载.doc_第4页
第4页 / 共5页
ALU的设计与实现Word格式文档下载.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ALU的设计与实现Word格式文档下载.doc

《ALU的设计与实现Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《ALU的设计与实现Word格式文档下载.doc(5页珍藏版)》请在冰豆网上搜索。

ALU的设计与实现Word格式文档下载.doc

3、用Verilog语言采用结构描述的方法完成74181的逻辑设计。

4、学习用宏模块的方法定制并调用ALU。

三、实验仪器及设备:

PC机+QuartusⅡ9.0+DE2-70

四、实验步骤:

1.打开Quartus软件,新建工程,并新建一个verilog文件。

2.编写verilog程序。

首先,查找74181的功能表,用always模块和case语句实现其功能。

然后,设计ALU的过程中,利用p函数和g函数实现超前进位功能。

3.附程序代码如下:

moduleALU_74181

input[3:

0]a,

0]b,

0]s,//选择信号

inputm,//m=1执行逻辑运算,反之执行算术运算

inputcn,//低位的进位或者是高位的借位

output[3:

0]f,

outputaeqb,//输出,当a=b时输出1,当a!

=b时,输出0

outputc4,//对应74181的Cn+4

outputp,//p函数

outputg//g函数

);

reg[3:

0]result;

//定义中间变量result存放结果

wire[4:

0]temp;

//定义中间变量temp存放选择变量s和m

wirep0,p1,p2,p3;

//进位产生信号

wireg0,g1,g2,g3;

//进位传递信号

assigntemp={s,m};

always@(temporaorb)

begin

case(temp)//case语句实现74181的32种功能

5'

b00000:

result=a;

b00001:

result=!

a;

b00010:

result=a|b;

b00011:

result=(!

a|b);

b00100:

result=(a|!

b);

b00101:

a&

b;

b00110:

result=4'

b1111;

//补码运算,-1的补码是1111

b00111:

result=0;

b01000:

result=a+(a&

!

b01001:

(a&

b01010:

b01011:

b)+(a&

b01100:

result=a^b;

b01101:

result=a-b+4'

b01110:

result=a&

(!

(b+4'

b1111));

b01111:

b10000:

result=a+a&

b10001:

a)|b;

b10010:

result=a+b;

b10011:

(a^b);

b10100:

b)+a&

b10101:

result=b;

b10110:

b+4'

b10111:

b11000:

result=a+a;

b11001:

result=1;

b11010:

result=(a|b)+a;

b11011:

b11100:

b)+a;

b11101:

result=(a|b);

b11110:

result=a+4'

b11111:

default:

result=4'

b0000;

//默认情况,给result赋值为0

endcase

end

assignf=result;

//将中间变量result的值赋给f

//片与片之间的超前进位

assigng0=a[0]&

b[0];

//g函数是a与b的与

assigng1=a[1]&

b[1];

assigng2=a[2]&

assigng3=a[3]&

assignp0=a[0]^b[0];

//p函数是a和b的异或

assignp1=a[1]^b[1];

assignp2=a[2]^b[2];

assignp3=a[3]^b[3];

assignc4=g3|(g2&

p3)|(g1&

p2&

p3)|(g0&

p0&

p1&

p2)|(cn&

p3);

//g3+p3g2+p3p2g1+p3p2p1g0+p3p2p1p0cn

assignp=p0&

p3;

assigng=g3+g2&

p3+g1&

p3+g0&

assignaeqb=(a==b)?

1'

b1:

b0;

endmodule

4.编译并仿真得出结果。

仿真结果如下图:

五、实验思考。

1.ALU的功能是什么,它在整机系统中的地位如何?

答:

ALU是多功能算数逻辑运算单元,不仅能进行多种算术运算和逻辑运算,如与、或、非、异或循环、移位、求补、清零、加、减、乘、除等,而且具有先行进位逻辑,从而能实现高速运算。

ALU是CPU的核心部分,也是CPU的重要组成部分。

一台计算机最主要的功能就是指向运算的功能,而ALU恰恰具有这样的功能,可以说多功能运算时据算计的灵魂,没有运算,计算机将不会具有如此强大的功能。

2.ALU是典型的组合逻辑,为什么在P157的实现中要加入时钟信号,其目的是什么?

处于整机同步的需要,这样可以保证ALU产生的结果能够适时的送到总线,以便数据进行正确的读写。

3.74181ALU内部加法运算用的是超前进位算法吗?

是。

74181的设计在内部的实现是通过超前进位,而后又利用了p函数和g函数实现了片与片之间的超前进位功能。

4位之间采用先行进位公式,每一位的进位公式可递推如下:

  G=AandBP=AxorB

c1 =g0+p0c0

c2 =g1+p1c1

=g1+p1(g0+p0c0)

=g1+p1g0+p1p0c0

c3 =g2+p2c2

=g2+p2(g1+p1g0+p1p0c0)

=g2+p2g1+p2p1g0+p2p1p0c0

c4 =g3+p3c3=g3+p3(g2+p2g1+p2p1g0+p2p1p0c0)

=g3+p3g2+p3p2g1+p3p2p1g0+p3p2p1p0c0

  其中G称为进位发生输出,P称为进位传送输出。

这样,对一片ALU来说,可有三个进位输出。

C4是本片(组)的最后进位输出。

逻辑表达式表明,这是一个先行进位逻辑,可以实现高速运算。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1