浅谈“数字电路”的学习(7)- 一切数字计算的核心功能、被教程忽略的加法器

原创 电子森林 2021-09-27 22:17

我们每个人从小最先学的数学就是1+1=2,然后就是小九九,因为这是我们长大以后混世界的最基本的能力,加、减、乘、除是人脑“数字逻辑”的基础。作为替代人脑进行运算的数字计算机,无论是控制器还是处理器,无论是简单的单片机还是大型的服务器,以加、减法为基础的算术单元自然是最重要的核心部件。


虽然我们对十进制的加减乘除都已经熟悉到了本能的地步,如何让晶体管构建的、以二进制为基础的数字电路来实现我们人类需要的加、减、乘、除?


著名科普专家“冬瓜哥”在其定价为600元的巨著《大话计算机》开篇就对这个问题进行了阐述:


十余年的困惑,自然是上升到了常人不可达的层面才想明白的一些道理,有兴趣的同学可以跟着他的思路绕一绕,苏老师读了半个小时就已经感觉到脑细胞严重疲劳。


他切入计算机的入口就是加法器,准确地讲就是在我们的数字电路中一带而过的Adder - 半加器、全加器以及超前进位加法器(很多教程仅给出了半页的篇幅)。冬瓜哥得出的结论是“CPU内部就是个加法器”。可见它的重要性,也可见我们对它真的是严重忽略了,就像1+1=2一样,它重要得实在太平凡了。


但,它确实是我们数字计算的基础,理解了它才能够理解整个的数字逻辑世界。


我们先通过硬禾学堂制作的一个7分钟的视频教程来看一下加法器最基本的两个示例:

第一个案例 - 1位半加器


根据我们人类在十进制领域定义的加法规则,来操作2个1位的数据相加,从最基本的门的功能以及加法的规则需求,我们得到来实现它的电路 - 通过一个“异或门”得到加法以后的1位的结果,以及通过一个“与门”得到一个“进位”位的值,就像我们十进制的加法,如果两个数字相加超过了一个“位”(十进制的位)能够表达的范围,就要生成一个进位信号。通过真值表能够比较直观地看出反映2个输入位同经过加法操作以后得到的输出位的关系。


使用Verilog代码的1位半加器:

  module halfadder    (      input a,             //第一个加数a      input b,             //第二个加数b      output sum,          //显示和的led      output cout          //显示进位的led    );     assign sum=a ^ b;     //sum=a⊕b    assign cout=a & b;    //cout=ab  endmodule


第二个案例 - 1位全加器

毕竟2个1位的数相加只是基础,太局限,我们扩展一下,如果需要有超过1位的数字相加,该如何操作?那就需要将“进位”的值考虑进来,作为一个输入,有了进位输入、进位输出的加法器被称之为“全加器”,全了,谁都不缺了。


使用Verilog代码的1位全加器的Verilog代码:

  module adder1    (      input wire a,           //输入的低位进位及两个加数cin、a、b      input wire b,      input wire cin,      output wire sum,        //输出的和与进位      output wire cout    );      wire     s1,s2,s3;   //定义中间变量    xor (s1,a,b);                 //调用基本异或门    xor (sum,s1,cin);    nand (s2,a,b);    //调用基本与非门    nand (s3,s1,cin);    nand  (cout,s2,s3);   endmodule

通过上面的两段Verilog代码,可以看出用Verilog这种硬件描述语言的一些特点,这个在后面的文章中会专门介绍。


多数的“数字电路”教程关于加法器也基本上点到此为止了。


但上述的基本单元能用来做啥的?如果不做扩展,同学们很难有进一步的理解,因此我建议大家可以自行做一些扩展:


支持多位二进制数相加的并行二进制加法器


比如2个4位二进制的加法器,它可以由3个全加器和1个半加器构成,低位的加法进位可以作为相邻高位加法的一个输入端,最低位仅用一个半加器,最高位生成的进位信号作为后续电路的输入。


是不是像极了我们的十进制加法?原理是一样的,只是采用的进制不同,而二进制可以通过数字电路的0、1比较容易地实现。


了解了加法器,减法器也就不难理解,就像我们十进制中的加和减的关系一样。它的基本规则:

  • 0 - 0 = 0

  • 0 - 1 = (借)1 1

  • 1 - 0 = 1

  • 1 - 1 = 0

对应的也有:


1位半减器

一位半减器的符号、电路构成以及真值表

1位全减器

用半减器构成的全减器


并行二进制减法

用三个全减器和一个半减器构成的4位并行减法器


用4个全加器也可以构成一个4位并行减法器


既然多位的全减器也可以用全加器来实现,是不是可以有一种统一的结构能够实现加、减的功能?毕竟减和加是对偶的,减法也可以看作是+(-)的操作。


统一结构的并行加、减法


从前面的加减法构成可以看出,加法器和减法器都可以用共同的加法器来实现,如果我们添加一个控制信号M,最低位也使用一个全加器,将这个M值连接到该全加器的进位输入端,就可以通过这个M是0或1来决定此电路时加法电路还是减法电路:

  • M=1的时候为减法器

  • M=0的时候行使加法器的功能。


如果你需要将更多的位数的二进制数字相加或相减,你可以使用更多个加法器级联即可得到。细心和动脑的同学会发现,如果任何操作需要哪怕一丁点的时间(有了时间的概念也就意味着 - 因果之间有了先后,有了“时延”,我们生存的世界时间是一个客观存在的维度),那么图中的操作在每个位上的输出就会产生时间上的差异,最高位的值和进位依赖于低位的值和每一位加法操作的时间(也就是构成加法器的门的响应时间)。就像绿灯亮起,并不是所有等待的车同时启动前行,而是从第一辆车逐级传递过来的一样。


用上述方法构建的加法器、减法器,位数越多,由于电路门时延带来的计算结果会越慢出现,聪明的前辈大神们竟然通过一系列的逻辑运算发明了“超前进位加法器”的结构,即便实际的电路上每个操作都有先后带来的时延,我们也可以不需要考虑每个进位的逐级传递,而是一次性地根据各个输入端的位上的值直接得出运算以后的结果。


是不是很不可思议?

为啥需要逐级传递的信息可以提前预知?为什么在布尔表达式中的一些变量经过逻辑化简以后发现它们只是打酱油的可有可无?


我们的生活中是否也是如此?每当绿灯亮起的时候所有的车是否也能同步启动前行?


这些问题留给大家思考。


有了加法器、减法器,也就很容易构建乘法器 - 重复多次的加,和除法器 - 重复多次的减。


因此加法器是构成整个数字计算的基础,是最重要的一个部件,它的设计好坏直接影响了处理器/控制器的性能、性价比等。


比如在电子森林“电路仿真”中的Brent-Kung树形加法器就是一种最小化芯片面积和成本的结构。有兴趣的同学可以点击https://www.eetree.cn/war/circuitjs.html?lang=zh 来体验一下。



正如前面文章所述,在FPGA没有大面积普及应用的年代,曾经有一系列的中等规模的集成电路模块推出,最著名的就是74系列的器件,其中74HC283就是一种4位超前进位的全加器器件。很多高校可能还在拿它做数电的实验,

外形长这样


内部功能这样


最后,给大家介绍一款国外公司制作的4位加法器的训练套件


我们平时在面包板上做是这样的


这个公司画成了电路板,就卖55美元了 - 想不想学习一下自己设计PCB?也是很重要的一个技能。

功能框图


为了方便大家实验,这个产品中包含了如下的一些器件:

  • 1个多路选择器(CD74HC157E)

  • 2个寄存器 /4个D触发器 (CD74HC173E)

  • 1个4位全加器 (CD74HC283E)

  • 1个6通道具有施密特触发器输入的反相器 (CD74HC14E)

  • 1个4位幅度比较器 (CD74HC85E)

  • 1个双4输入异或门 (CD74HC4002E)

  • 1个4组 2输入异或门 (CD74HC86E)

得说,这个套件的文档写得特别的棒,有兴趣的老师和同学可以自己搜一下。


这个套件用了8颗中等规模的集成电路,加上很多连线连线。其实呢,用小脚丫FPGA内部的不到1%的资源就能实现,而且只需要写很短的几行Verilog代码


要不您试一下?


前期与数电相关的文章:

浅谈“数字电路”的学习(1)- 我们身处的“数字逻辑”世界

浅谈“数字电路”的学习(2)- 在兴趣和体验中高效学习

浅谈“数字电路”的学习(3)- 不需要安装软件、人人一学就会的FPGA学习板

浅谈"数字电路"的学习 (4) - 学用FPGA从点灯开始

浅谈“数字电路”的学习(5) -  “组合逻辑”的学习逻辑。

浅谈“数字电路”的学习(6) - 看视频了解什么是FPGA?

电子森林 讲述电子工程师需要掌握的重要技能: PCB设计、FPGA应用、模拟信号链路、电源管理等等;不断刷新的行业新技术 - 树莓派、ESP32、Arduino等开源系统;随时代演进的热点应用 - 物联网、无人驾驶、人工智能....
评论 (0)
  •   安全生产预警系统作为现代工业与安全管理的重要组成部分,正以前所未有的技术引领力,创新性地塑造着未来的安全管理模式。这一系统通过集成多种先进技术,如物联网、大数据、人工智能、云计算等,实现了对生产环境中潜在危险因素的实时监测、智能分析与及时预警,为企业的安全生产提供了坚实的技术保障。   技术引领:   物联网技术:物联网技术使得各类安全监测设备能够互联互通,形成一张覆盖全生产区域的安全感知网络。传感器、摄像头等终端设备实时采集温度、压力、气体浓度、人员位置等关键数据,为预警系统提供丰富的
    北京华盛恒辉软件开发 2025-04-05 22:18 44浏览
  • 在影像软的发展历程中,美图曾凭借着美图秀秀等一系列产品,在“颜值经济”的赛道上占据了领先地位,成为了人们日常生活中不可或缺的一部分,也曾在资本市场上风光无限,2016 年上市时,市值一度超过46亿美元,备受瞩目。 然而,随着市场的不断发展和竞争的日益激烈,美图逐渐陷入了困境。商业模式单一,过度依赖在线广告收入,使得其在市场波动面前显得脆弱不堪;多元化尝试,涉足手机、电商、短视频、医美等多个领域,但大多以失败告终,不仅未能带来新的增长点,反而消耗了大量的资源。更为严峻的是,用户流失问题日
    用户1742991715177 2025-04-05 22:24 52浏览
  • 在追求环境质量升级与产业效能突破的当下,温湿度控制正成为横跨多个行业领域的核心命题。作为环境参数中的关键指标,温湿度的精准调控不仅承载着人们对舒适人居环境的期待,更深度关联着工业生产、科研实验及仓储物流等场景的运营效率与安全标准。从应用场景上看,智能家居领域要求温湿度系统实现与人体节律的协同调节,半导体洁净车间要求控制温湿度范围及其波动以保障良品率,而现代化仓储物流体系则依赖温湿度的实时监测预防各种产品的腐损与锈化。温湿度传感器作为实现温湿度监测的关键元器件,其重要性正在各行各业中凸显而出。温湿
    华普微HOPERF 2025-04-07 10:05 65浏览
  • 【拆解】+沈月同款CCD相机SONY DSC-P8拆解 这个清明假期,闲来无事,给大伙带来一个老古董物品的拆解--索尼SONY DSC-P8 CCD相机。这个产品是老婆好几年前在海鲜市场淘来的,由于显示屏老化,无法正常显示界面了,只有显示背光。但是这也无法阻止爱人的拍照。一顿盲操作依旧可以拍出CCD古董相机的质感。如下实拍: 由于这个相机目前都在吃灰。我就拿过来拆解,看看里面都是怎样个设计,满足下电子爱好者的探索。 首先给大伙展示下这台老相机的全貌。正视图  后视图 
    zhusx123 2025-04-06 17:38 75浏览
  • 及时生产 JIT(Just In Time)的起源JIT 起源于 20 世纪 70 年代爆发的全球石油危机和由此引发的自然资源短缺,这对仰赖进口原物料发展经济的日本冲击最大。当时日本的生产企业为了增强竞争力、提高产品利润,在原物料成本难以降低的情况下,只能从生产和流通过程中寻找利润源,降低库存、库存和运输等方面的生产性费用。根据这种思想,日本丰田汽车公司创立的一种具有特色的现代化生产方式,即 JIT,并由此取得了意想不到的成果。由于它不断地用于汽车生产,随后被越来越多的许多行业和企业所采用,为日
    优思学院 2025-04-07 11:56 77浏览
  • 在科技浪潮奔涌的当下,云计算领域的竞争可谓是如火如荼。百度智能云作为其中的重要参与者,近年来成绩斐然。2024年,百度智能云在第四季度营收同比增长26%,这样的增速在行业内十分惹眼。回顾全年,智能云业务的强劲增长势头也十分明显,2024年第一季度,其收入达到47亿元,同比增长12%;第二季度营收51亿元,同比增长14%。从数据来看,百度智能云在营收方面一路高歌猛进,展现出强大的发展潜力。然而,市场对百度智能云的表现似乎并不完全买账。2024年,尽管百度智能云数据亮眼,但百度股价却在震荡中下行。在
    用户1742991715177 2025-04-06 20:25 52浏览
  • 【拆解】+南孚测电器拆解 之前在天猫上买了一盒南孚电池,他给我送了一个小东西—测电器。今天我们就来拆解一下这个小东西,看看它是怎么设计和工作的。 三颗指示灯显示电池剩余电量。当点亮3颗LED时,则表示点亮充足。当点亮2颗LED时,则表示还能用。当点亮1颗LED时,表示点亮地建议更换,当无法点亮LED时,则表示没电了。外壳上还印有正负极,以免用户将电池放反。 这个小东西拆解也很方便,一个螺丝刀稍微撬几下。外壳就下来了,它是通过卡扣连接。 开盖后,测电线路板清晰呈现在眼前。 让我们看看小小的线路板有
    zhusx123 2025-04-05 15:41 44浏览
  • 引言:POPO声的成因与影响在语音芯片应用中,WT588F08A作为一款支持DAC+功放输出的高集成方案,常因电路设计或信号处理不当,在音频播放结束后出现POPO声(瞬态噪声)。这种噪声不仅影响用户体验,还可能暴露电路设计缺陷。本文将基于实际案例,解析POPO声的成因并提供系统化的解决方案。一、POPO声的根源分析1. 功放电路状态切换的瞬态冲击当DAC输出的音频信号突然停止时,功放芯片的输入端若处于高阻态或无信号状态,其内部放大电路会因电源电压突变产生瞬态电流,通过喇叭表现为POPO声。关键因
    广州唯创电子 2025-04-07 09:01 60浏览
  • 引言:小型化趋势下的语音芯片需求随着消费电子、物联网及便携式设备的快速发展,产品设计对芯片的小型化、高集成度和低功耗提出了更高要求。厂家凭借其创新的QFN封装技术,推出WTV系列(如WTV380)及WT2003H系列语音芯片,以超小体积、高性能和成本优势,为紧凑型设备提供理想解决方案。产品核心亮点1. QFN封装技术赋能超小体积极致尺寸:WTV380采用QFN32封装,尺寸仅4×4毫米,WT2003H系列同样基于QFN工艺,可满足智能穿戴、微型传感器等对空间严苛的场景需求。高密度集成:QFN封装
    广州唯创电子 2025-04-07 08:47 48浏览
  • 医疗影像设备(如CT、MRI、超声诊断仪等)对PCB的精度、可靠性和信号完整性要求极高。这类设备需要处理微伏级信号、高频数据传输,同时需通过严格的EMC/EMI测试。制造此类PCB需从材料选择、层叠设计、工艺控制等多维度优化。以下是关键技术与经验分享。 1. 材料选择:高频与生物兼容性优先医疗影像设备PCB常采用 Rogers RO4000系列 或 Isola FR4高速材料,以降低介电损耗并保证信号稳定性。例如,捷多邦在客户案例中曾为某超声探头厂商推荐 Rogers RO4350B
    捷多邦 2025-04-07 10:22 64浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦