ALU Vivado


module ALU(OP,A,B,F,ZF,CF,OF,SF,PF);
    parameter SIZE=32;
    output reg[SIZE-1: 0] F;
    output CF,ZF,OF,SF,PF;
    input[SIZE-1: 0] A,B;
    input[3:0] OP;
    reg C,ZF,CF,OF,SF,PF;
    always@(*)
    begin 
        C=0;
        case(OP)
            4'b0000:begin F=A&B;end
            4'b0001:begin F=A|B;end
            4'b0010:begin F=A^B;end
            4'b0011:begin F=~(A|B);end
            4'b0100:begin {C,F}=A+B;end 
            4'b0101:begin {C,F}=A-B;end 
            4'b0110:begin F=A<B;end
            4'b0111:begin F=B<<A;end
        endcase
        ZF=(F==0);
        CF=C;
        OF=A[SIZE]^B[SIZE]^F[SIZE]^C;
        SF=F[SIZE];
        PF=~^F;
    end
endmodule


module sim_ALU();
    parameter SIZE = 32;
    wire[SIZE-1:0] F;
    wire ZF,OF,SF,PF,CF;
    reg[SIZE-1: 0] A,B;
    reg [3:0] OP;
    integer i;
        initial begin
            OP=0;
            A<=2452;
            B<=12;
            for(i=0;i<8;i=i+1)
                #100 OP=OP+1;
            #100 OP=7;
            while(OP>0)#100 OP=OP-1;
         end
     ALU alu(OP,A,B,F,ZF,CF,OF,SF,PF);
endmodule
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值