ALU的设计与实现_第1页
ALU的设计与实现_第2页
ALU的设计与实现_第3页
ALU的设计与实现_第4页
ALU的设计与实现_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机组成原理实验实验四ALU 的设计与实现专业班级:计算机科学与技术学号:0936008姓名:冯帆学号:0936036姓名:张琪实验地点:理工楼 901input 3:0 a, input 3:0 b, input 3:0 s, input m, input cn, output 3:0 f, output aeqb, output c4, output p, output g);reg 3:0 result; wire 4:0temp;wire p0,p1,p2,p3; wire g0,g1,g2,g3;实验四ALU的设计与实现一、实验目的1、理解ALU的功能和其在处理器中的地位。2、掌握

2、ALU的结构化(分模块、分层次)的设计方法。3、掌握ALU的Verilog语言描述方法。二、实验内容1、学习ALU的设计方法。2、用Verilog 语言采用行为描述的方法完成74181 的逻辑设计。3、用Verilog 语言采用结构描述的方法完成74181 的逻辑设计。4、学习用宏模块的方法定制并调用ALU 。三、实验仪器及设备:PC机 + Quartus n 9.0 + DE2-70四、实验步骤:1 .打开Quartus软件,新建工程,并新建一个verilog文件。2 .编写verilog程序。首先,查找 74181的功能表,用always模块和case语句实现其功能。然后,设计ALU 的过

3、程中,利用p 函数和 g 函数实现超前进位功能。3附程序代码如下:module ALU_74181 (/选择信号/m=1 执行逻辑运算,反之执行算术运算/低位的进位或者是高位的借位输出,当a=b时输出1,当a! =b时,输出0/对应74181 的 Cn+4/p 函数/g 函数/定义中间变量result存放结果/定义中间变量temp存放选择变量s和m/进位产生信号/进位传递信号assigntemp=s,m;always(tempor aorb)begincase (temp) /case语句实现74181的32种功能5'b00000: result=a;5'b00001: res

4、ult=!a;5'b00010: result=a|b;5'b00011:result=(!a|b);5'b00100: result=(a|!b);5'b00101: result=!a&b;5'b00110:result=4'b1111;/朴码运算,-1 的补码是 11115'b00111:result=0;5'b01000: result=a+(a&!b);5'b01001: result=!(a&b);5'b01010: result=!b;5'b01011: result=

5、(a|!b)+(a&!b);5'b01100:result=aAb;5'b01101: result=a-b+4'b1111;5'b01110:result=a&(!(b+4'b1111);5'b01111:result=a&!b;5'b10000: result=a+a&b;5'b10001: result=(!a)|b;5'b10010: result=a+b;5'b10011: result=!(aAb);5'b10100: result=(a|!b)+a&b;

6、5'b10101: result=b;5'b10110: result=a&b+4'b1111;5'b10111:result=a&b;5'b11000: result=a+a;5'b11001: result=1;5'b11010: result=(a|b)+a;5'b11011:result=(a|!b);5'b11100:result=(a|!b)+a;5'b11101:result=(a|b);5'b11110:result=a+4'b1111;5'b11111:re

7、sult=a;default: result = 4'b0000;/默认情况,给result赋值为0 endcaseendassignf=result;/将中间变量result的值赋给f/片与片之间的超前进位assigng0=a0&b0; /g 函数是 a与 b 的与assigng1=a1&b1;assigng2=a2&b0;assigng3=a3&b0;assignp0=a0Ab0; /p 函数是 a和 b 的异或assignp1=a1Ab1;assignp2=a2Ab2;assignp3=a3Ab3;assign c4=g3Kg2&p3)|(

8、g1&p2&p3)Kg0&p0&p1&p2)|(cn&p0&p1&p2&p3);/g3 + p3g2+ p3P2g1 + p3P2p1g0+ p3P2p1p0cn assign p=p0&p1&p2&p3;assign g=g3+g2&p3+g1&p2&p3+g0&p1&p2&p3;endmodule4.编译并仿真得出结果。仿真结果如下图:assignaeqb=(a=b)?1'b1:1'b0;五、实验思考。1. ALU的功能是什么,它在

9、整机系统中的地位如何?答:ALU是多功能算数逻辑运算单元,不仅能进行多种算术运算和逻辑运算,如与、或、非、异或循环、移位、求补、清零、加、减、乘、除等,而且具有先行进位逻辑,从而能实现高速运算。ALU是CPU的核心部分,也是 CPU的重要组成部分。一台计算机最主要的 功能就是指向运算的功能,而 ALU恰恰具有这样的功能,可以说多功能运算时据算计的灵 魂,没有运算,计算机将不会具有如此强大的功能。2. ALU是典型的组合逻辑,为什么在P157的实现中要加入时钟信号,其目的是什么?答:处于整机同步的需要,这样可以保证ALU产生的结果能够适时的送到总线,以便数据进行正确的读写。3. 74181 ALU内部加法运算用的是超前进位算法吗?答:是。74181 的设计在内部的实现是通过超前进位,而后又利用了p 函数和 g 函数实现了片与片之间的超前进位功能。4 位之间采用先行进位公式,每一位的进位公式可递推如下: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 +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论