多功能ALU设计实验
一、实验目的与要求
-
实验目的:
(1)学习多功能ALU的工作原理,掌握运算器的设计方法
(2)掌握运用Verilog HDL 进行行为描述与建模的技巧和方法 -
实验要求:本实验要求设计一个具有8种运算功能的32位ALU,并能够产生运算结果的标志:结果为零标志ZF(Zero Flag)、溢出标志OF(Overflow Flag)。ALU通过3根控制线ALU_OP[2:0]来选择其8种功能。
功能表:
ALU_OP[2:0] | ALU_OP[2:0] | 功能说明 |
---|---|---|
0000 | and | 按位与运算 |
0001 | or | 按位或运 |
0010 | xor | 按位异或运算 |
0011 | nor | 按位或非运算 |
0100 | add | 算术加运算 |
0101 | sub | 算术减运算 |
0110 | slt | 若A<B,则输出1;否则输出0 |
0111 | sll | B逻辑左移A所指定的位数 |
二、实验设计与程序代码
module ALU(OP,A,B,F,ZF,CF,OF,SF,PF);
parameter SIZE = 32;//运算位数
input [3:0] OP;//运算操作
input [SIZE:1] A;//左运算数
input [SIZE:1] B;//右运算数
output [SIZE:1] F;//运算结果
output ZF, //0标志位, 运算结果为0(全零)则置1, 否则置0
CF, //进借位标志位, 取最高位进位C,加法时C=1则CF=1表示有进位,减法时C=0则CF=1表示有借位
OF, //溢出标志位,对有符号数运算有意义,溢出则OF=1,否则为0
SF, //符号标志位,与F的最高位相同
PF; //奇偶标志位,F有奇数个1,则PF=1,否则为0
reg [SIZE:1] F;
reg C,ZF,CF,OF,SF,PF