最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

小伙伴们好,又见面了,小编今天要讲的是基于硬件描述语言的半加器以及全加器的原理以及二者的区别。

那么,还是原来那样,我们首先来介绍一下半加器和全加器的基本概念:

根据百度百科对于半加器的定义,半加器电路(half-adder)其实就是指对两个输入数据位a和b相加,然后输出一个结果位s和进位c,是没有进位输入的加法器电路(如果存在进位输入的话那么就是全加器电路了)。

而全加器电路(full-adder)是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。但是我们通俗地讲,全加器电路其实就是指对两个输入数据位a和b和一个进位数据Cin相加,然后输出一个结果位Sum和进位Cout,是有进位输入的加法器电路。

最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

我们再来说明一下半加器和全加器的区别:

1.相加时进位的有无的区别:半加器没有接收进位的输入端,而全加器有进位输入端

2.相加二进制数位数的区别:全加器在将两个多位二进制数相加时,除了最低位外,每一位都要考虑来自低位的进位,而半加器则不用考虑,只需要考虑两个输入端相加即可,是实现两个一位二进制数的加法运算电路。

3.真值表和逻辑函数的区别:

最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

半加器真值表中,输出的逻辑函数为:s=a’b+ab’;c=ab;

最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

全加器真值表中,输出的逻辑函数为:s=a⊕b⊕Cin;Cout=ab+Cin(a+b);

所以,其实,全加器和半加器也就多了那么一个相加的输入位,全加器就是三位相加,半加器就是二位相加,这样理解其实就够了。

接下来,我们通过Verilog的设计代码来更好地了解半加器的原理吧

最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

Code

最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

TestBench

很明显,五行最简单的代码以及一个公式,就把全加器的原理通过Verilog语言设计勾勒出来了,足以证明Verilog语言是如此得方便与神奇!

这里,“{}”符号表示的是“拼接位”,即先计算a与b的值,当a与b为“0”和“1”时,它们之和为1,那么就是{01},对应c和s;当a与b为“1”和“1”时,它们之和为2,那么就是转换为二进制就是{10},同样对应c和s等等。下面是其仿真时序图,可以看出,完全符合半加器的真值表,说明该设计的成功!

最经典的Verilog学习案例:半加器和全加器的原理以及二者的区别

Simulatioin

至于加法器的代码呢,小编也就不重复添加了,跟半加器的代码差不了多少,用到的依旧是“{}”位拼接符号会比较简便一些,大家可以自行编写设计。对于半加器以及加法器的应用呢,依旧是很广泛的,但是需要依赖于其它的设计,单独设计半加器,可能在现实中起不到什么很有效的作用。一般是作为加法器的基本模块,当多个加法器组合在一起的时候,就可以作为“计算器”来计算了,早期的大型计算机就是利用了无数的加法器来实现复杂的运算的。所以说,复杂的工程,缺少不了许许多多的基本的知识模块,现代如此高智能的新科技的发明依旧是站在前人的肩膀上的,而不是因为现代人比前人聪明,这个道理,大家应该要懂得。

小伙伴们如果在学习的时候遇到一些问题的话,欢迎留言讨论,小编会一一回复的~


分享到:


相關文章: