HDLbits 刷题 -- Adder100

本文详细描述了一个创建100位二进制加法器的过程,使用了模块化方法,通过逐位相加并处理进位,展示了如何在Verilog中设计一个加法器。作者还讨论了使用简单直接计算的方法以及可能的扩展性问题。
摘要由CSDN通过智能技术生成

Create a 100-bit binary adder. The adder adds two 100-bit numbers and a carry-in to produce a 100-bit sum and carry out.

译:

创建一个100位二进制加法器。加法器将两个100位的数字和一个进位相加,产生一个100位的和并执行。

个人解法: 

module top_module( 
    input [99:0] a, b,
    input cin,
    output cout,
    output [99:0] sum );
	
    wire [99:0]cout_buf;
    genvar i;
    generate
        add(a[0],b[0],cin,cout_buf[0],sum[0]);
        for(i=1;i<100;i++)begin: add_100
            add(a[i],b[i],cout_buf[i-1],cout_buf[i],sum[i]);
        end:add_100
        assign cout = cout_buf[99];
    endgenerate
    
endmodule

module add(input a,input b,input cin,output cout,output sum);
    assign {cout,sum}=a+b+cin;
endmodule



官方解法:

module top_module (
	input [99:0] a,
	input [99:0] b,
	input cin,
	output cout,
	output [99:0] sum
);

	// The concatenation {cout, sum} is a 101-bit vector.
	assign {cout, sum} = a+b+cin;

endmodule

分析:

        脑子没转过来  还是用了之前实例化一百遍;直接计算,简直不要太简单,但是应该仅限于cout 为一位的时候吧,这个以后再分析吧;

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刚及格的陆拾伍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值