FPGA学习篇——Verilog学习之全加器的实现

跟着野火的视频学习了一下全加器的实现~

1 半加器和全加器原理

 

 首先,解释一下为什么全加器的C_{out} 公式还可以写成以下形式:

                                                        C_{out} =( A \oplus B) C_{in} + AB

 (1)首先我们要明白:

                                                                A \oplus B \neq A+B

           因为由真值表来看,他们是不相同的(当a=b=1时)

aba+b (OR)a⊕b (XOR)
0000
0111
1011
1110

(2)但在这里为什么能进行替换呢?

                                                    C_{out} =( A + B) C_{in} + AB 

其中, ( A + B) C_{in}  这一项是通过上图中真值表的第四行和第六行得来的,这两行,AB的值只有其中一个为1的情况,而这种情况下,A + B  和  A \oplus B在真值表中是一样的(上表中黄色两行),因此就可以进行替换。

2 实现半加器到全加器

(借用野火老师的图~)

两个半加器加一个或门用以上方式就能得到一个全加器。

其实可以用公式推导得来:

sum = A \oplus B \oplus C_{in} = sum_1 \oplus C_{in}

C_{out} = (A \oplus B) C_{in} +AB= sum_1 \oplus C_{in} +C_{out1}

 全加器的sum输出很容易理解,就是 A B C_{in} 信号一起作为输入,那么将第一个半加器的sum_1(=AB)连接到第二个半加器作为其中一个输入,C_{in} 直接作为第二个半加器的另一个输入即可。

全加器的 C_{out} 由公式可知,AB可由第一个半加器的 C_{out1} 得到,而 ( A \oplus B) C_{in} 这一项中可变成 sum_1 \oplus C_{in} ,前面我们提到了将第一个半加器的sum_1(=AB)连接到第二个半加器作为其中一个输入,那么第二个半加器的 C_{out2} = ( A \oplus B) C_{in},则将C_{out1} 和 C_{out2}  通过或门相连就恰好是 全加器 C_{out} 的公式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值