当前位置: 首页 > news >正文

加法器 以及ALU(逻辑算术单元)

加法器

框架,首先介绍原理,然后引入一位加法器最后再引入多位加法器最后引入带符号的加法器

这一节涉及到的硬件电路的知识理解就好,实在看不懂就跳过,但是封装以后的功能必须看懂。

这是一个一般的加法过程涉及到的必要元素图中已经给出,加数与被加数的本位以及相加以后的本为和,低位的进位和高位的进位

主要就是上面这五部分,首先对于加数与被加数的本位以及低位的进位是输入的内容我们不需要管

接下来我们看本为和,因为二进制加法满二进一的特性使得我们可以采用异或来算本位和。。可以采用 下面的电路来实现

对于向高位的进位来说需要考虑的元素就比较多了。需要考虑加数被加数低位的进位这三个因素,同时结合二进制数的加法规则来看。

高位的进位有以下图片的情形,图片中采用了或运算来求值,或运算的法则全0为0

第一部分采用与运算当两个都为1时才为1

第二部分先用AB异或(同0异1)再与地位进位相与

满足任意一部分进位为1

电路表示如下图

最后结合一下电路图

再封装一下

需要记住一下逻辑表达式

把n 个一位全加器串接起来,就可进行两个n bit数的相加。

但是由于可知每一位的高位进位都依赖于低位的信号产出这就使得需要等待低位的运算结束才能进行高位的运算,这样的操作我们理解为串行操作,与之对应的时并行操作(需要CLA部件)。并行的加法器稍后讲解。

这里需要知道串行的加法器速率较慢

下图是并行进位的加法器

多出的CLA部件可以并行的计算出高位的进位但是电路较为复杂。一般就扩展到4位。

接下来我们的目光放到带标志位的加法器

为什么要带标志位?一般带哪些标志位?

首先解释为什么要带标志位?带标志位可以很快的得出此次加法的相关信息例如是否溢出是否借位运算结果的正负性。

一般带下面四个标志位

of溢出    1溢出0未溢出

sf符号标志   1负0正

zf零标志位  1为零 0不为零

cf无符号溢出  1溢出 0 未溢出

接下来介绍一下这几个常见标志位的运算逻辑表达式

有关于OF CF后面会详细讲解,这里解释一下sf它只需要取计算的最高位即可 zf需要采用或非电路,当全部为都为0时或电路输出0然后再非就输出1此时zf=1表示运算结果为0.

接下来介绍一下并位加法器

前面介绍过本为和采用异或来计算

而高位的进位采用AB先与,或上AB异或与上低位进位,这里包括了进位的两种情况,本位都为1相加后需要进位,以及AB其中一个为1但是低位进位为1相加后也要进位。或者当AB都为0时不进位。

这里时串行进位加法器,我们可以采用一个电器电路CLA一下得出所有的进位然后直接就可以进行并行的加法计算

具体的逻辑推导如下

注意这里的每一个算术表达式都需要一个电路来实现,所以说就不太方便进行更深层次的套娃因为这样会非常耗费硬件。对应计算机成本也更高。

一般最多采取4为的CLA加法器。

算术逻辑单元ALU

主要了解其功能,

其实ALU更像是一个集合体加一个多路选择器

他这里里面所包含的操作一般都有其对印的电路或者代替电路,就比如前面所说的加法器

就如图所示它封装了好多功能在里面对外只暴露出少量的引脚。

其中最重要的一个考点就是多路选择器的位数,他需要曼满足对应的操作类型。

再有就是前面提到的几个常见的标志位

OF有符号溢出位  1表示溢出 

SF正负标志位 1表示负

ZF零标志位 1表示结果为0  采用了或非门

CF 无符号溢出位 1表示溢出

http://www.dtcms.com/a/303036.html

相关文章:

  • 深入解析 Spring 获取 XML 验证模式的过程
  • redis数据库的四种取得 shell方法
  • C++模板进阶:从基础到实战的深度探索
  • python生成 requirement.txt 文件
  • 一个高效的阿里云漏洞库爬虫工具,用于自动化爬取和处理CVE数据
  • ROS2入门之开发环境搭建
  • AI-调查研究-40-多模态大模型量化 格局重塑:五大开源模型横评与技术对比
  • Navicat 17 教程:Windows 和 Mac 系统适用
  • 【运维】Smartctl安装及使用指南
  • Python爬虫实战:快速采集教育政策数据(附官网工具库API)
  • 设计模式实战:自定义SpringIOC(亲手实践)
  • 常见依赖于TCP/IP的应用层协议
  • Taro 网络请求相关 API 全面解析
  • 初识opencv05——图像预处理4
  • 【Linux系统】Ext2文件系统 | 软硬链接
  • 接口测试核心概念与实践指南
  • 分享一个脚本,从mysql导出数据csv到hdfs临时目录
  • Vue中Computed与Watch的深度解析:缓存机制与适用场景
  • LeetCode 214:最短回文串
  • Leetcode148. 排序链表 中遇到的错误
  • 【LeetCode 热题 100】(一)哈希
  • 设计模式(十七)行为型:迭代器模式详解
  • c/c++ 函数返回指针和引用所引发的问题
  • Linux系统Centos7 安装mysql5.7教程 和mysql的简单指令
  • JVM 内存模型深度解析:原子性、可见性与有序性的实现
  • FFmpeg 安装与使用
  • 从JPEG到SER:小波+CNN如何横扫CVPR/ICASSP?
  • C#_索引器
  • 最新!Polkadot 更新 2025 路线图
  • 【C++】priority_queue的模拟实现