Verilog练习_5_Module addsub

该代码段展示了一个Verilog模块,用于实现加法操作。当输入'sub'为1时,它使用32位宽的异或门来翻转'b'输入。模块包含两个16位的加法器,分别处理输入'a'的高16位和低16位,并将结果组合成最终输出'sum'。'b_in'信号通过异或运算与'sub'重复32次的结果进行异或,以在必要的时候反转输入。
摘要由CSDN通过智能技术生成

在这里插入图片描述

注意:Use a 32-bit wide XOR gate to invert the b input whenever sub is 1. (This can also be viewed as b[31:0] XORed with sub replicated 32 times.

我的代码:

module top_module(
    input [31:0] a,
    input [31:0] b,
    input sub,
    output [31:0] sum
);
    wire [31:0] b_in ;
    wire cout_cin ;
    wire [15:0] sum_1,sum_2;
    
    add16 add1(
        .a(a[15:0]),
        .b(b_in[15:0]),
        .cin(sub),
        .cout(cout_cin),
        .sum(sum_1)
    );
    
    add16 add2(
        .a(a[31:16]),
        .b(b_in[31:16]),
        .cin(cout_cin),
        //.cout(),
        .sum(sum_2)
    );
    assign sum ={sum_2,sum_1} ;
    assign b_in = b^{32{sub}} ;//(~b&sub)|(b& ~sub) ;
    
endmodule

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值