引言
加法器是非常重要的,它不仅是其它复杂算术运算的基础,也是 CPU 中 ALU 的核心部件(全加器)。两个二进制数之间的算术逻辑运算例如加减乘除,在数字计算机中都是化为若干步加法操作进行的,因此,学好数字电路,从学好加法器开始。
加法器分为半加器和全加器。全加器和半加器相比也就多了那么一个相加的进位输入,全加器就是三位相加,半加器就是二位相加。例如,我们在做加法运算的时候,总是需要进行低位进位的判断,从而再进行下一位的计算,这就是全加器的由来。详细的也可以参考百度百科。
一、半加器的 Verilog 代码实现和 RTL 电路实现
module Half_Adder(
input wire a, // 加数
input wire b, // 加数
output reg sum, // 和
output reg cout // 进位输出
);
// 行为描述
always @(a or b) begin
sum = a ^ b; // 实践证明,这里 <= 和 = 的结果都一样;都是纯粹的组合逻辑;
cout = a & b;
end
// 数据流描述
// assign sum = a ^ b;
// assign cout = a & b;
// 门级描述
// and(cout,a,b);
// xor(sum,a,b);
endmodule
基于多种方式描述的一个全加器电路的 RTL 电路图如下所示:

半加器的 RTL 电路实现
二、全加器的 Verilog 代码实现和 RTL 电路实现
module Full_Adder(
input wire a, // 加数
input wire b, // 加数
input wire cin,// 进位输入
output reg sum, // 和
output reg cout // 进位输出
);
// 行为描述
always @(a or b or cin) begin
{cout,sum} <= a + b + cin;
end
// 行为描述
// always @(a or b or cin) begin
// sum = a ^ b ^ cin; // 实践证明,这里 <= 和 = 的结果都一样;都是纯粹的组合逻辑;
// cout = a & b | b & cin | a & cin;
// end
// 数据流描述
// assign {cout,sum} = a + b + cin;
endmodule
这里,“{}” 符号表示的是 “拼接位”,即先计算 a 与 b 的值,当 a 与 b 为 “0” 和 “1” 时,它们之和为 1,那么就是{01},对应 cout 和 sum ;当 a 与 b 为 “1” 和 “1” 时,它们之和为 2,那么就是转换为二进制就是{10},同样对应 cout 和 sum 等等。
基于多种方式描述的一个全加器电路的 RTL 电路图如下所示:

全加器的 RTL 电路实现
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
加法器
+关注
关注
6文章
183浏览量
31606 -
RTL
+关注
关注
1文章
395浏览量
62955 -
半加器
+关注
关注
1文章
29浏览量
9145 -
Verilog设计
+关注
关注
0文章
20浏览量
6757 -
全加器电路
+关注
关注
0文章
3浏览量
1756
发布评论请先 登录
相关推荐
热点推荐
加法器工作原理_加法器逻辑电路图
。在电子学中,加法器是一种数位电路,其可进行数字的加法计算。三码,主要的加法器是以二进制作运算。由于负数可用二的补数来表示,所以加减器也就不
发表于 02-18 14:40
•3.5w次阅读
加法器的原理及采用加法器的原因
有关加法器的知识,加法器是用来做什么的,故名思义,加法器是为了实现加法的,它是一种产生数的和的装置,那么加法器的工作原理是什么,为什么要采用
同相加法器和反相加法器的区别是什么
同相加法器和反相加法器是运算放大器在模拟电路设计中常用的两种基本电路结构,它们在信号处理方面有着不同的特性和应用场景。
串行加法器和并行加法器的区别?
串行加法器和并行加法器是两种基本的数字电路设计,用于执行二进制数的加法运算。它们在设计哲学、性能特点以及应用场景上有着明显的区别。
基于Verilog的经典数字电路设计(1)加法器
评论