算术电路

//1.半加器
module top_module( 
    input a, b,
    output cout, sum );
    assign {cout,sum} = a + b;
endmodule
//2.全加器
module top_module( 
    input a, b, cin,
    output cout, sum );
    assign {cout,sum} = a + b + cin;
endmodule
//3.3bit的全加器
module top_module( 
    input [2:0] a, b,
    input cin,
    output [2:0] cout,
    output [2:0] sum );
    assign {cout[0],sum[0]} = a[0] + b[0] + cin;
    assign {cout[1],sum[1]} = a[1] + b[1] + cout[0];
    assign {cout[2],sum[2]} = a[2] + b[2] + cout[1];
endmodule
//4.加法器
module top_module (
    input [3:0] x,
    input [3:0] y, 
    output [4:0] sum);
    assign sum = x + y;
endmodule
//5.原理是如果两个数都为负数,那个相加一定为负数,但是最终s的最高位不是1,那就证明溢出了,两个数都是正数同理。
module top_module (
    input [7:0] a,
    input [7:0] b,
    output [7:0] s,
    output overflow
); //
    
    assign s = a + b;
    assign overflow = a[7] & b[7] & ~s[7] | ~a[7] & ~b[7] & s[7];
 
endmodule
//6.
module top_module( 
    input [99:0] a, b,
    input cin,
    output cout,
    output [99:0] sum );
    assign {cout,sum} = a + b + cin;
endmodule
//7.
module top_module( 
    input [15:0] a, b,
    input cin,
    output cout,
    output [15:0] sum );
    
    wire[2:0]    cout_1;
    
    bcd_fadd u1_bcd_fadd(
        .a      (a[3:0]        ),
        .b      (b[3:0]        ),
        .cin    (cin        ),
        .cout    (cout_1[0]    ),
        .sum    (sum[3:0]    )
    );
    bcd_fadd u2_bcd_fadd(
        .a      (a[7:4]        ),
        .b      (b[7:4]        ),
        .cin    (cout_1[0]    ),
        .cout    (cout_1[1]    ),
        .sum    (sum[7:4]    )
    );
    bcd_fadd u3_bcd_fadd(
        .a      (a[11:8]    ),
        .b      (b[11:8]    ),
        .cin    (cout_1[1]    ),
        .cout    (cout_1[2]    ),
        .sum    (sum[11:8]    )
    );
    bcd_fadd u4_bcd_fadd(
        .a      (a[15:12]    ),
        .b      (b[15:12]    ),
        .cin    (cout_1[2]    ),
        .cout    (cout        ),
        .sum    (sum[15:12]    )
    );
 
endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值