📄 the_6th_alu.v
字号:
// **************************************************************
// ** Revision :1.0
// ** File name :The_6th_ALU.v
// ** Module Name :The_6th_ALU
// ** Discription :本模块描述了算术逻辑运算部件,此部件有20种功能。
// ** PS :对GR的赋值操作在CU中运行。
// **************************************************************
`timescale 1ns / 1ps
module The_6th_ALU(ALU_O,ALU_C,C_in,op,AC_in,GR_in);
parameter width = 8;
output ALU_C; //经过ALU计算后的进位输出端口
output [width-1:0] ALU_O; //经过ALU计算后的结果输出端口
input C_in; //来自C标志寄存器的进位输入
input [4:0] op; //操作码
input [width-1:0] AC_in; //来自累加寄存器AC的数据
input [width-1:0] GR_in; //来自通用寄存器GR的数据
reg [width-1:0] ALU_O;
reg ALU_C;
always @(C_in or op or AC_in or GR_in)
begin
case(op)
5'b00100:
begin
{ALU_C,ALU_O} = {C_in,AC_in}; //传输AC,进位不变
end
5'b00101:
begin
{ALU_C,ALU_O}={C_in,GR_in}; //传输GR,进位不变
end
5'b00110:
begin
{ALU_C,ALU_O}=AC_in+GR_in; //不带进位加法
end
5'b00111:
begin
{ALU_C,ALU_O}=AC_in+GR_in+C_in; //带进位加法
end
5'b01000:
begin
{ALU_C,ALU_O}=AC_in+1; //自增
end
5'b01001:
begin
{ALU_C,ALU_O}=AC_in-GR_in; //不带借位减法
end
5'b01010:
begin
{ALU_C,ALU_O}=AC_in-GR_in-C_in; //带借位减法
end
5'b01011:
begin
{ALU_C,ALU_O}=AC_in-1; //自减
end
5'b01100:
begin
{ALU_C,ALU_O}=~GR_in+1; //求补
end
5'b01101:
begin
{ALU_C,ALU_O}=AC_in-GR_in; //比较
end
5'b01110:
begin
{ALU_C,ALU_O}={C_in,AC_in&GR_in}; //按位与,进位不变
end
5'b01111:
begin
{ALU_C,ALU_O}={C_in,AC_in|GR_in}; //按位或,进位不变
end
5'b10000:
begin
{ALU_C,ALU_O}={C_in,AC_in^GR_in}; //按位异或,进位不变
end
5'b10001:
begin
{ALU_C,ALU_O}={C_in,~GR_in}; //按位取反,进位不变
end
5'b10010:
begin
{ALU_C,ALU_O}={GR_in[7],GR_in[6:0],1'b0}; //逻辑左移,末位补0
end
5'b10011:
begin
{ALU_C,ALU_O}={GR_in[0],1'b0,GR_in[7:1]}; //逻辑右移,最高位补0
end
5'b10100:
begin
{ALU_C,ALU_O}={GR_in,C_in}; //带进(借)位循环左移一位
end
5'b10101:
begin
{ALU_C,ALU_O}={GR_in[0],C_in,GR_in[7:1]}; //带进(借)位循环右移一位
end
5'b10110:
begin
{ALU_C,ALU_O}={GR_in[7],GR_in[6:0],GR_in[7]}; //不带进(借)位循环左移一位
end
5'b10111:
begin
{ALU_C,ALU_O}={GR_in[0],GR_in[0],GR_in[7:1]}; //不带进(借)位循环右移一位
end
default:
begin
{ALU_C,ALU_O}={C_in,8'b0}; //如果操作码不正确,则结果为0,进位不变
end
endcase
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -