当前位置:网站首页>ALU逻辑运算单元

ALU逻辑运算单元

2022-07-05 05:27:00 李峻枫

ALU逻辑运算单元

根据(二)中对单周期 CPU 的定义,该模块需要实现以下 4 类运算:加、减、按位与、按位或。因此需要 2 bit 的控制信号 Aluc 来控制 ALU 的运算类型。
信号的对应关系:
表 4 1 Aluc编码及对应功能
Aluc 编码 实现功能 运算类型
00 加 算数运算
01 减 算术运算
10 按位与 逻辑运算
11 按位或 逻辑运算
加减法可以使用 32 位全加器ADDSUB_32实现,按位与使用了AND32,按位或使用了OR32,对功能的选择使用了32位二选一多路选择器MUX2X32实现,返回了结果R,以及ALU的运算结果是否为0的判断Z(若R=0,Z=1;),Z主要是用于beq、bne指令。

代码

  	module ALU(X,Y,Aluc,R,Z);  
  	    input [31:0]X,Y;  
  	    input [1:0] Aluc;  
  	    output [31:0]R;  
  	    output Z;  
  	    wire [31:0]d_as,d_and,d_or,d_and_or;  
  	    ADDSUB_32 as32(X,Y,Aluc[0],d_as);  
  	    AND32 a32(X,Y,d_and);  
  	    OR32 o32(X,Y,d_or);  
  	    MUX2X32 select1(d_and,d_or,Aluc[0],d_and_or);  
  	    MUX2X32 select2(d_as,d_and_or,Aluc[1],R);  
  	    isZero i1(R,Z);  
    	endmodule  

原网站

版权声明
本文为[李峻枫]所创,转载请带上原文链接,感谢
https://blog.csdn.net/lijf2001/article/details/125586337