设计并实现一个简单的ALU().doc
文本预览下载声明
设计并实现一个简单的ALU
集成13-3 刘璐瑶 1314020314
一、实验目的
掌握ALU的工作原理,ALU集多种运算功能于一身,可以实现多种简单的算术运算和逻辑运算 ;
进一步掌握Verilog HDL语言的编程方法,理解分支结构的用法 ;
二、实验内容
用Verilog HDL编写一个字长6位的ALU,其能实现的功能和结构框图如下:
其中的加减运算均为补码加减,运算的过程中要考虑溢出,溢出判断采用双符号为的方式。
在执行逻辑运算的过程中不考虑溢出。
运算的功能由输入信号F(2..0)决定。
三 、实验要求
通过对操作性实验的练习,自行完成设计实例。
熟悉Quartus II的设计流程。
在实验报告中写出完整的设计过程。
程序代码:
module alu(input [5:0]x,
input [5:0]y,
input [2:0]F,
output reg overflow,
output reg [5:0]result);
reg [6:0]xr,yr,resultr;
parameter NULL=3b000,
ADD=3b001,
SUB=3b010,
AND=3b011,
OR=3b100,
XOR=3b101,
SRL=3b110,
SLL=3b111;
always@(x or y)
begin
xr={x[5],x};
yr={y[5],y};
case(F)
NULL:
begin
result=6b000000;
overflow=1b0;
end
ADD:
begin
resultr=xr+yr;
result=resultr[5:0];
overflow=xr[6]^yr[6];
end
SUB:
begin
resultr=xr+~yr+1b1;
result=resultr[5:0];
overflow=xr[6]^yr[6];
end
AND:
begin
result=xy;
overflow=1b0;
end
OR:
begin
result=x|y;
overflow=1b0;
end
XOR:
begin
result=x^y;
overflow=1b0;
end
SRL:
begin
result={1b0,x[5:1]};
overflow=1b0;
end
SLL:
begin
result={x[4:0],1b0};
overflow=1b0;
end
endcase
end
endmodule
波形仿真图:
引脚配置:
结果图:
(手机图片)
显示全部