收藏 分享(赏)

ALU的设计与实现.doc

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

1、计算机组成原理实验实验四 ALU 的设计与实现专业班级:计算机科学与技术学号: 0936008 姓名:冯帆学号: 0936036 姓名:张琪实验地点: 理工楼 901 实验四 ALU 的设计与实现一、实验目的 1、理解 ALU 的功能和其在处理器中的地位。2、掌握 ALU 的结构化(分模块、分层次)的设计方法。 3、掌握 ALU 的 Verilog 语言描述方法。二、实验内容1、学习 ALU 的设计方法。2、用 Verilog 语言采用行为描述的方法完成 74181 的逻辑设计。3、用 Verilog 语言采用结构描述的方法完成 74181 的逻辑设计。4、学习用宏模块的方法定制并调用 ALU

2、 。三、实验仪器及设备:PC 机+ Quartu s 9.0 + DE2-70四、实验步骤:1打开 Quartus 软件,新建工程,并新建一个 verilog 文件。2编写 verilog 程序。首先,查找 74181 的功能表,用 always 模块和 case 语句实现其功能。然后,设计 ALU 的过程中,利用 p 函数和 g 函数实现超前进位功能。3附程序代码如下:module ALU_74181 (input 3:0 a, input 3:0 b, input 3:0 s, /选择信号input m, /m=1 执行逻辑运算,反之执行算术运算input cn, /低位的进位或者是高位的

3、借位output 3:0 f, output aeqb, /输出,当 a=b 时输出 1,当 a!=b 时,输出 0output c4, /对应 74181 的 Cn+4output p, /p 函数output g /g 函数);reg 3:0 result; /定义中间变量 result 存放结果wire 4:0temp; /定义中间变量 temp 存放选择变量 s 和 mwire p0,p1,p2,p3; /进位产生信号wire g0,g1,g2,g3; /进位传递信号assign temp=s,m; always(temp or a or b) begincase (temp) /ca

4、se 语句实现 74181 的 32 种功能5b00000: result=a; 5b00001: result=!a;5b00010: result=a|b;5b00011: result=(!a|b); 5b00100: result=(a|!b);5b00101: result=!a5b00110: result=4b1111;/补码运算,-1 的补码是 11115b00111: result=0;5b01000: result=a+(a5b01001: result=!(a5b01010: result=!b;5b01011: result=(a|!b)+(a5b01100: resu

5、lt=ab;5b01101: result=a-b+4b1111;5b01110: result=a5b01111: result=a5b10000: result=a+a5b10001: result=(!a)|b;5b10010: result=a+b;5b10011: result=!(ab);5b10100: result=(a|!b)+a5b10101: result=b;5b10110: result=a5b10111: result=a5b11000: result=a+a;5b11001: result=1;5b11010: result=(a|b)+a;5b11011: re

6、sult=(a|!b);5b11100: result=(a|!b)+a;5b11101: result=(a|b);5b11110: result=a+4b1111;5b11111: result=a;default : result = 4b0000; /默认情况,给 result 赋值为 0endcase endassign f=result; /将中间变量 result 的值赋给 f/片与片之间的超前进位assign g0=a0 /g 函数是 a 与 b 的与assign g1=a1assign g2=a2assign g3=a3assign p0=a0b0; /p 函数是 a 和 b

7、 的异或assign p1=a1b1;assign p2=a2b2;assign p3=a3b3;assign c4=g3|(g2/g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0cnassign p=p0 assign g=g3+g2assign aeqb=(a=b)?1b1:1b0;endmodule4编译并仿真得出结果。仿真结果如下图:五、实验思考。1. ALU 的功能是什么,它在整机系统中的地位如何?答:ALU 是多功能算数逻辑运算单元,不仅能进行多种算术运算和逻辑运算,如与、或、非、异或循环、移位、求补、清零、加、减、乘、除等,而且具有先行进位逻辑,从

8、而能实现高速运算。ALU 是 CPU 的核心部分,也是 CPU 的重要组成部分。一台计算机最主要的功能就是指向运算的功能,而 ALU 恰恰具有这样的功能,可以说多功能运算时据算计的灵魂,没有运算,计算机将不会具有如此强大的功能。2. ALU 是典型的组合逻辑,为什么在 P157 的实现中要加入时钟信号,其目的是什么?答:处于整机同步的需要,这样可以保证 ALU 产生的结果能够适时的送到总线,以便数据进行正确的读写。3. 74181 ALU 内部加法运算用的是超前进位算法吗?答:是。74181 的设计在内部的实现是通过超前进位,而后又利用了 p 函数和 g 函数实现了片与片之间的超前进位功能。4

9、 位之间采用先行进位公式,每一位的进位公式可递推如下: G = A and B P = A xor Bc1 = g0 + p0c0c2 = g1 + p1c1= g1 + p1(g0 + p0c0)= g1 + p1g0 + p1p0c0c3 = g2 + p2c2= g2 + p2(g1 + p1g0 + p1p0c0)= g2 + p2g1 + p2p1g0 + p2p1p0c0c4 = g3 + p3c3= g3 + p3(g2 + p2g1 + p2p1g0 + p2p1p0c0)= g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c0 其中 G 称为进位发生输出,P 称为进位传送输出。这样,对一片 ALU 来说,可有三个进位输出。C4 是本片(组)的最后进位输出。逻辑表达式表明,这是一个先行进位逻辑,可以实现高速运算。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报