Verilog设计_全加器

一种全加器的设计。


一、全加器

全加器是用门电路实现两个二进制数相加并求和的组合线路,也称为一位全加器,是一种常用的设计。全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器,例如常用的二进制四位全加器74LS283。

真值表:

输入

输出

C(i-1)

Ai

Bi

Si

Ci

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1

Ai和Bi为相加数,低位进位C(i-1),输出本位和为Si,向高位进位Ci。

表达式:

Si = Ai⊕Bi⊕C(i-1)

Ci = Ai&Bi + C(i-1) & (Ai+Bi)

二、代码实现

上代码:

module full_adder #(parameter N=8)(
    input clk,
    input rst_n,
    input [N-1:0]ain,
    input [N-1:0]bin,
    input cin,
    output reg [N:0] sum
);

    reg [N:0] c;
    integer i;

    always@(posedge clk or negedge rst_n)begin
        if(!rst_n)begin
	        c   <= 0;
	        sum <= 0;
        end
    end

    always@(*)begin
	    c[0] = cin;
	    for(i=0;i<N;i=i+1)begin
		    sum[i] = ain[i] ^ bin[i] ^ c[i];
		    c[i+1] = (ain[i] & bin[i]) | (ain[i] & c[i]) | (bin[i] & c[i]);
	    end
	    sum[N] = c[N]; // 进位
    end

endmodule

总体使用了参数化设计。cin是接收到的进位,输出的sum最高位是本位的进位,与低位共同组成和。

测试波形:

为了更直观的观察,采用十进制显示。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Clock_926

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

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

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

打赏作者

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

抵扣说明:

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

余额充值