函数发生器ALU
(1) 部件功能:
功能:
1从通用寄存器组中读取内容
2在 S3~ S0 和 M 的控制下,实现运算功能
3 ADD 和 SUB 加减法指令影响状态位 Cf和 Zf。
(2) 接口设计:
输入:
S[3…0]为操作类型判断输入
M是总的使能信号
A[7…0]8位数据接入
B[7…0]8位数据接入
输出:
T[7…0]操作的结果
Cf进位标志
Zf结果为0标志
RTL视图
(3) 功能实现:
判断S输入,如果
S=”1001”,执行加法,将R1+R2赋值给R1
S=”0110”,执行减法,将R1-R2赋值给R1
S=”1011”,执行或运算,将(R1)∨(R2)赋值给R1
S=”0101”,执行取反运算,/R1赋值给R1
判断加减法是否有最高位的进位或借位,如果有那就将cf=1,否则为cf=0
判断加减操作的结果是否为0,如果是那就将zf=1,否则zf=0
VHDL设计:
(4)功能仿真验证:
仿真结果:
时钟为11ns:A=11111111,B=11111111,此时S=0110执行减法,结果为0,输出T=00000000,进位zf=1;
时钟15ns:A=11111111,B=11111111,此时S=1001,执行加法,输出为T=1111110,此时cf=1;
时钟为16ns:A=1111111,B=11111111,此时S=1011,执行或运算,结果T=11111111,
Cf=0,zf=0;
时钟25ns:A=11111111,B=11111111,,此时S=0101,执行非运算,T=00000000,cf=0,zf=0;
结论:仿真结果满足功能要求,设计正确