初级数字IC设计-加法器

加法器(adder) 是非常重要的,它不仅是其它复杂算术运算的基础,也是** cpu 中 alu **的核心部件(全加器)。
在数字计算机中,两个二进制数之间的算术逻辑运算(加、减、乘、除),基本上都是化成若干步加法操作进行的。因此,学好数字电路,数字 ic 设计的入门,从学好加法器开始。
加法器分为 半加器 (half adder)**** 和 全加器 (full adder)**** 。全加器和半加器相比,只是 多了一个来自低位的单比特信号相加的进位输入 ,
全加器就是 3 位相加,半加器就是 2 位相加。例如,我们在做加法运算的时候,总是需要进行低位进位的判断,接着进行下一位的计算,这就是全加器的由来。
此外,下文的 rtl 代码中的 **{} 符号表示的是 ** “拼接位” ,即先计算 a 与 b 的值,当 a 与 b 分别为 “0” 和 “1” 时,它们之和为 1,那么就是{01},对应 cout 和 sum ;当 a 与 b 为 “1” 和 “1” 时,它们之和为 2,那么就是转换为二进制就是{10},同样对应 cout 和 sum 等等。
说太多,都不如底层硬件代码和设计电路看一看、学一学!!!
可基于多种方式描述的半加器的 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
可基于多种方式描述的全加器的 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

工业机器人对机器视觉技术的依赖有多大
无线传感器辅助工业智能化累积
厦门的人工智能超算平台正式启动
vifa City便携音箱的性能评测
爱尔兰开发出一种新型人工智能处理芯片 或将在太空中使用
初级数字IC设计-加法器
C语言代码优化的一些技巧
BBC虚拟现实工作室发布VR新品,成功地解决了尼罗河上建造水坝这一难题
中科曙光增持天津海光,加码国产X86处理器
TSMaster图形模块功能详解(三)—— 以CAN信号为例
推荐几个小封装的应广单片机
FHP540C场效应管是IRF540型号参数的平替
实现无线电传输范围和可靠性的RF增益模块介绍
自动驾驶前端软件DreamView的使用介绍
氩弧焊的危害_氩弧焊的危害怎么防护
高压放大器基于干涉仪的设计与优化中的应用
能量收集技术如何为边缘电池供电系统“续命”
终于有人把RISC-V讲明白了
医疗+VR能够精确操作手术 真正造福于全世界的患者
软磁材料种类有哪些