文档介绍:实验四 ALU的设计与实现实验报告
姓名:阿迪兰 13053004
余乐 13052044
班级:计算机2班
实验四 ALU的设计与实现
一、实验目的
1、理解ALU的功能和其在处理器中的地位
2、掌握ALU的结构化(分模块、分层次)的设计方法
3、掌握ALU的Verilog 语言描述方法
二、实验任务
1、学习ALU的设计方法。
2、用Verilog语言采用行为描述的方法完成74181的逻辑设计。
3、用Verilog语言采用结构描述的方法完成74181的逻辑设计。
4、学习用宏模块的方法定制并调用 ALU 。
74181功能表
注意:“+”表示逻辑或,“加”表示数学加;
逻辑非(!)与(按位)取反(~)的区别。
module ALU_74181
(
input [3:0] a,
input [3:0] b,
input [3:0] s,
input m,
,
output [3:0] f,
output aeqb,
output c4,
output p,
output g ,
);
reg [3:0] result;
wire [4:0]temp;
wire p0,p1,p2,p3;
wire g0,g1,g2,g3;
assign temp={s,m};
always@(temp or a or b)
begin
case (temp)
5'b00000: result=a;
5'b00001: result=!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;
5'b00111: result=0;
5'b01000: result=a+(a&!b);
5'b01001: result=!(a&b);
5'b01010: result=!b;
5'b01011: result=(a|!b)+(a&!b);
5'b01100: result=a^b;
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=!(a^b);
5'b10100: result=(a|!b)+a&b;
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;