46--超前进位加法器

module add_ahead(sum,cout,a,b,cin); 

    output[7:0] sum; 

    output cout; 

    input[7:0] a,b; 

    input cin; 

    wire[7:0] G,P; 

    wire[7:0] C,sum; 

    assign G[0]=a[0]&b[0];                        //产生第 0位本位值和进位值 

    assign P[0]=a[0]|b[0]; 

    assign C[0]=cin; 

    assign sum[0]=G[0]^P[0]^C[0]; 

    assign G[1]=a[1]&b[1];                        //产生第 1位本位值和进位值 

    assign P[1]=a[1]|b[1]; 

    assign C[1]=G[0]|(P[0]&cin); 

    assign sum[1]=G[1]^P[1]^C[1]; 

    assign G[2]=a[2]&b[2];                        //产生第 2位本位值和进位值 

    assign P[2]=a[2]|b[2]; 

assign C[2]=G[1]|(P[1]&C[1]); 

assign sum[2]=G[2]^P[2]^C[2]; 

assign G[3]=a[3]&b[3];                    //产生第 3位本位值和进位值 

assign P[3]=a[3]|b[3]; 

assign C[3]=G[2]|(P[2]&C[2]); 

assign sum[3]=G[3]^P[3]^C[3]; 

assign G[4]=a[4]&b[4];                    //产生第 4位本位值和进位值 

assign P[4]=a[4]|b[4]; 

assign C[4]=G[3]|(P[3]&C[3]); 

assign sum[4]=G[2]^P[2]^C[2]; 

assign G[5]=a[5]&b[5];                    //产生第 5位本位值和进位值 

assign P[5]=a[5]|b[5]; 

assign C[5]=G[4]|(P[4]&C[4]); 

assign sum[5]=G[5]^P[5]^C[5]; 

assign G[6]=a[6]&b[6];                    //产生第 6位本位值和进位值 

assign P[6]=a[6]|b[6]; 

assign C[6]=G[5]|(P[5]&C[5]); 

assign sum[6]=G[6]^P[6]^C[6]; 

assign G[7]=a[7]&b[7];                    //产生第 7位本位值和进位值 

assign P[7]=a[7]|b[7]; 

assign C[7]=G[6]|(P[6]&C[6]); 

assign sum[7]=G[7]^P[7]^C[7]; 

assign cout=G[7]|(P[7]&C[7]);             //产生最高位进位输出 

endmodule 


`timescale 1ns/1ns 

module add8_tp;                           //仿真模块无端口列表 

reg[7:0] a,b;                             //输入激励信号定义为 reg型 

reg cin; 

wire[7:0] sum;                            //输出信号定义为wire型 

wire cout; 

parameter DELY = 100; 

add_ahead AD1(.sum(sum),.cout(cout),.a(a),.b(b),.cin(cin));              //调用测试对象 

initial begin                             //激励波形设定 

          a= 8'd0;      b= 8'd0;     cin=1'b0; 

#DELY     a= 8'd10;    b= 8'd20;   cin=1'b1; 

#DELY     a= 8'd200;    b= 8'd88; 



#DELY     a= 8'd255;    b= 8'd255;   cin=1'b1; 

#DELY     $finish; 

end

endmodule 

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值