74181ALU设计说明.docx

上传人:b****8 文档编号:29903310 上传时间:2023-08-03 格式:DOCX 页数:7 大小:651.43KB
下载 相关 举报
74181ALU设计说明.docx_第1页
第1页 / 共7页
74181ALU设计说明.docx_第2页
第2页 / 共7页
74181ALU设计说明.docx_第3页
第3页 / 共7页
74181ALU设计说明.docx_第4页
第4页 / 共7页
74181ALU设计说明.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

74181ALU设计说明.docx

《74181ALU设计说明.docx》由会员分享,可在线阅读,更多相关《74181ALU设计说明.docx(7页珍藏版)》请在冰豆网上搜索。

74181ALU设计说明.docx

74181ALU设计说明

算术逻辑单元ALU的设计

 

班级:

计科1201班

学号:

1208030113

姓名:

何志强

设计日期:

2014-11-20

西安科技大学计算机科学与技术学院

1.实验题目算数逻辑单元ALU的设计

2.实验目的设计一个简单的算数逻辑单元,并用Verilog实现,得到仿真波形。

3.实验设备

安装有modelsim和Quartus2的PC机一台

4.实验原理

算术逻辑单元ALU集成了各种算术运算和逻辑运算部件的功能,包括加、减、乘、除等数值运算、逻辑运算、移位运算等。

把这些功能集成在一个逻辑部件ALU之中,使得ALU具有算术运算和逻辑运算功能。

这种设计方法可以使得功能比较紧凑,简化对逻辑运算部件和算术运算部件的使用。

同时还能最大限度的复用某些逻辑部件,从而减少逻辑电路的使用。

3.1

设计ALU首先要对各种算数逻辑运算进行编码。

表1为本文设计的处理器实用的ALU功能编码表。

 

表1ALU功能编码表

算术逻辑单元ALU的实现

算术逻辑单元ALU的内部详细设计

 

算术逻辑单元ALU的Verilog的实现

moduleALU181A(S,A,B,F,M,CN,CO,FZ);

input[3:

0]S;

input[7:

0]A,B;

inputM,CN;

output[7:

0]F;

outputCO,FZ;

wire[7:

0]F;

wireCO;

wire[8:

0]A9,B9;

regFZ;

reg[8:

0]F9;

assignA9={1'b0,A};

assignB9={1'b0,B};

always@(MorCNorA9orB9orS)begin

case(S)

4'b0000:

if(M==0)F9<=A9+CN;elseF9<=~A9;

4'b0001:

if(M==0)F9<=(A9|B9)+CN;elseF9<=(~A9)&B9;

4'b0010:

if(M==0)F9<=(A9|(~B9))+CN;elseF9<=~A9;

4'b0011:

if(M==0)F9<=9'b000000000-CN;elseF9<=9'b000000000;

4'b0100:

if(M==0)F9<=A9+(A9&~B9)+CN;elseF9<=~(A9&B9);

4'b0101:

if(M==0)F9<=((A9+B9)+(A9&~B9)+CN);elseF9<=~B9;

4'b0110:

if(M==0)F9<=A9-B9-CN;elseF9<=A9^B9;

4'b0111:

if(M==0)F9<=A9+(~B9)-CN;elseF9<=A9&(~B9);

4'b1000:

if(M==0)F9<=A9+(A9&B9)+CN;elseF9<=(~A9)+B9;

4'b1001:

if(M==0)F9<=A9+B9+CN;elseF9<=~(A9^B9);

4'b1010:

if(M==0)F9<=A9+(~B9)+(A9&B9)+CN;elseF9<=B9;

4'b1011:

if(M==0)F9<=(A9&B9)+CN;elseF9<=(A9&B9);

4'b1100:

if(M==0)F9<=A9+A9+CN;elseF9<=9'b000000001;

4'b1101:

if(M==0)F9<=(A9+B9)+A9+CN;elseF9<=A9+(~B9);

4'b1110:

if(M==0)F9<=A9+(~B9)+A9+CN;elseF9<=A9+B9;

4'b1111:

if(M==0)F9<=A9-CN;elseF9<=A9;

default:

F9<=9'b000000000;

endcase

end

assignF=F9[7:

0];

assignCO=F9[8];

endmodule

//////////////////////////

`include"ALU181.v"

moduleTestA;

reg[7:

0]a,b;

reg[3:

0]s;

regm,cn;

wire[7:

0]f;

wireco,fz;

initial

begin

a=8'b00000001;

b=8'b00000001;

s=4'b1001;

m=0;

cn=0;

#2000a=8'b10001001;

b=8'b00000001;

s=4'b1001;

m=0;

cn=0;

#2000a=8'b00010001;

b=8'b01001011;

s=4'b1001;

m=0;

cn=0;

#2000a=8'b01001001;

b=8'b01001001;

s=4'b1001;

m=0;

cn=0;

#2000a=8'b11000001;

b=8'b10101001;

s=4'b1001;

m=0;

cn=0;

#2000a=8'b01010001;

b=8'b01000011;

s=4'b1001;

m=0;

cn=0;

#2000a=8'b00001101;

b=8'b01001001;

s=4'b1001;

m=0;

cn=0;

end

ALU181Aalu181a1(.S(s),.A(a),.B(b),.F(f),.M(m),.CN(cn),.CO(co),.FZ(fz));

endmodule

6.实验结果分析

实验结果:

在这个实验中,我以74181ALU为设计实例,用verilog实现,在测试时使用的变量值分别为:

a=8'b00001101;b=8'b01001001;s=4'b1001;m=0;cn=0;a,b的值采用了多组进行测试,基本实现了74181ALU的所有功能。

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

当前位置:首页 > 人文社科 > 法律资料

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

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