计算机硬件系统设计——运算器设计

计算机硬件系统设计——运算器设计

文章目录

  • 计算机硬件系统设计——运算器设计
    • 8位可控加减法器
        • 2位加法器:
        • 3位加法器:
        • 串行进位加法器(把n个全加器相连得到的n位加法器)
    • 4位先行进位电路74182
        • 并行进位加法器
    • 4位快速加法器
    • 16位快速加法器设计
    • 32位快速加法器设计
    • 5位无符号阵列乘法器
    • 6位补码阵列乘法器
    • 5位无符号乘法流水线
    • 原码一位乘法器
    • 补码Booth一位乘法器
    • 32位MIPS运算器

8位可控加减法器

实验界面如下:
在这里插入图片描述

上图中的上面部分为电路的控制区域,下面为电路的连线区域。

首先可以看到实验中给我们提供了一片已经封装好的FA全加器电路,在这里我们来回顾一下全加器电路。

在这里插入图片描述

A、B分别为输入的两个一位二进制数,从封装好的FA电路下端进行输入。FA电路的左右两端均为低位向高位的进位,而上端输出的S是本位和。下面是该一位全加器的具体电路图:
在这里插入图片描述

例如:下图将两个一位全法器相连,即可进行2位二进制的加法运算,若A输入为11,B为10,即结果为01,并向高位的进位为1。

2位加法器:

在这里插入图片描述

同理,3位加法器如下:

3位加法器:

在这里插入图片描述

由以上的知识可得,把n个全法器相连可得到n位加法器。而把n个全法器相连得到的n位加法器就称为串行进位加法器,串行进位又称为行波进位,每级进位直接依赖于前一级的进位,即进位信号是逐级形成的。

串行进位加法器(把n个全加器相连得到的n位加法器)

在这里插入图片描述

所以,要实现8位的加法器,我们只需要让8个一位全加器串接起来,就可以实现两个8位二进制数的相加。

理解了加法实现后,我们再来看看计算机中的二进制减法是如何实现的。

二进制数的运算都是用它的补码来参与运算的,正数的原码、反码和补码都是一样的,而负数的补码是其原码从右往左找到第一个1,这个1左边的所有**“数值位”**按位取反得到。

例如:X-Y即[X]补-[Y]补可以转变成[X]补+[-Y]补,所以要实现减法,本质上就是加上一个负数。

[X]补与[-X]补之间的互换规则为:全部位按位取反、末位+1或者从右往左找到第一个1,这个1左边的全部位按位取反。所以当Sub的值为1时,即进行减法运算,此时将Y每位的值与Sub进行异或,就能达到按位取反的操作。
在这里插入图片描述

CF是最高位(符号位)的进位,次高位进位是数据的最高位向符号位的进位。

而OF判断溢出的值等于CF与次高位进位的异或值。

因此8位可控加减法器的电路图如上。

4位先行进位电路74182

实验电路框架如下:
在这里插入图片描述

在第一个实验中做的8位可控加减法器就是一种串行进位加法器,低位运算产生进位所需的时间将影响高位运算的时间。因此,串行进位加法器的最长运算时间主要是由进位信号的传递时间决定的,位数越多延迟时间就越长,而全加器本身的求和延迟只为次要因素,所以加快进位产生和提高传递的速度是关键。

并行进位加法器

在这里插入图片描述

由上面C1~C4的公式,就可以画出下面的电路图:
在这里插入图片描述

实验中的G*为进位产生信号等于G4+P4G3+P4P3G2+P4P3P2P1

P*为进位传递信号等于P4P3P2P1

所以4位先行进位电路74182的电路图如下:
在这里插入图片描述

4位快速加法器

图中的CLA74182为先行进位电路74182(就是把上一个电路图封装起来的样子),然后因为CLA需要输入的是P1 G1 P2 G2 P3 G3 P4 G4,所以把X0和Y0异或后输进去就是P1,X0和Y0与一下就是G1,然后S是和表达式等于X⊕Y⊕Ci-1。依照这些逻辑表达式就能很快将4位快速加法器的电路画好,如下图所示:

在这里插入图片描述

16位快速加法器设计

在这里插入图片描述
在这里插入图片描述

32位快速加法器设计

32位快速加法器设计原理与16位快速加法器设计原理一样,只需要把两块16位快速加法器串在一起即可,如下图:

在这里插入图片描述

5位无符号阵列乘法器

先上电路图:
在这里插入图片描述
在这里插入图片描述
对于这个电路,我们只需要搞清楚其中的一个就行。上面图中的X1Y0和X0Y1是什么?看下面这张图就很容易理解了。
在这里插入图片描述

其实就是乘数的每一位与被乘数的每一位相乘。所以就只需要把竖着对应的乘积相加就完事了。

6位补码阵列乘法器

在这里插入图片描述

X5和Y5是两个数的最高位,也就是符号位,上面乘法的计算是将两个数的符号位与数值位分开来算的,数值位的绝对值输入5位阵列乘法器进行运算,而下面将X5和Y5进行异或操作,若X5与Y5同号,即最终结果为正,则MUX多路选择器的输入控制信号sel=0,则直接输出多路选择器的0路。若异或结果为1,则X5与Y5是异号的,即最终结果为负。此时MUX多路选择器的输入控制信号sel=1,将运算的结果求补(标有-x的是求补器)后从MUX的1路输出。

5位无符号乘法流水线

在这里插入图片描述
在这里插入图片描述

原码一位乘法器

原码一位乘法流程:

在这里插入图片描述

原码一位乘法的硬件逻辑:

在这里插入图片描述

具体课程可参考b站王道计算机组成原理P22

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

补码Booth一位乘法器

具体课程可参考b站王道计算机组成原理P23
在这里插入图片描述
在这里插入图片描述

再结合手算过程来理解一下补码乘法的过程
在这里插入图片描述

补码一位乘法流程:
在这里插入图片描述

补码一位乘法的硬件逻辑:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

32位MIPS运算器

先上电路图,如下:
在这里插入图片描述

电路引脚及ALU的op功能表

信号输入/输出位宽说明
X输入32位操作数X
Y输入32位操作数Y
ALU_OP输入4位运算器功能码,具体功能见下表
Result输出32位ALU运算结果
Result2输出32位ALU结果第二部分,用于乘法指令结果高位或除法指令的余数位,其它运算时值为零
OF输出1位有符号加减运算溢出标记,其它运算时值为零
UOF输出1位无符号加减运算溢出标记,其它运算时值为零,溢出条件(加法和小于加数,减法差大于被减数)
Equal输出1位Equal=(x==y)?1:0,对所有运算均有效
ALU_OP十进制运算功能
00000Result = X << Y 逻辑左移(Y取最低五位)Result2=0
( Y00011Result = X >>> Y 算数右移(Y取最低五位)Result2=0
00102Result = X >> Y 逻辑右移(Y取最低五位)Result2=0
00113Result = (X * Y)[31:0];Resual2=(X * Y)[63:32] 无符号乘法
01004Result =X/Y;Resual2=X%Y 无符号除法
01015Result =X+Y(Set OF/UOF)
01106Result =X-Y(Set OF/UOF)
01117Result =X & Y 按位与
10008Result =X or Y 按位或
10019Result =X⊕Y 按位异或
101010Result =~(X or Y) 按位或非
101111Result =(X < Y) ? 1 : 0 符号比较
110012Result =(X < Y) ? 1 : 0 无符号比较

电路测试
在这里插入图片描述

设计思路

先构造出每一种功能的输出,再根据OP的值来选择输出:

0~2:分别用一个移位器实现,设置对应的属性;

3~4:分别用自带的乘法器、除法器实现;

5:加法,用封装好的32位加法器,OF判断最高位进位和符号位进位是否一致,UOF判断是否有进位(需一个异或门),C0取0;

6:减法,用封装好的32位加法器,Y取反用一个非门实现,无符号数的减法溢出,带加减功能的ALU的进位取反后表示,有符号数的减法溢出,仍然用最高位和符号位是否相等来判断,C0取1;

7~10:分别用与门、非门、异或门、或非门实现;

11:比较器用补码型,结果0拓展;

12:比较器用无符号型,结果0拓展,还需要一个equal信号;

都构造好之后,根据OP的值输出resualt。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/258886.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣日记12.19-【二叉树篇】二叉搜索树中的搜索

力扣日记&#xff1a;【二叉树篇】二叉搜索树中的搜索 日期&#xff1a;2023.12.19 参考&#xff1a;代码随想录、力扣 700. 二叉搜索树中的搜索 题目描述 难度&#xff1a;简单 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中…

CloudPulse:一款针对AWS云环境的SSL证书搜索与分析引擎

关于CloudPulse CloudPulse是一款针对AWS云环境的SSL证书搜索与分析引擎&#xff0c;广大研究人员可以使用该工具简化并增强针对SSL证书数据的检索和分析过程。 在网络侦查阶段&#xff0c;我们往往需要收集与目标相关的信息&#xff0c;并为目标创建一个专用文档&#xff0c…

解决win10下强制设置web浏览器为microsoft edge的方法

目录 问题场景实现方法禁止edge默认选项设置默认浏览器 反思 问题场景 因为一些特殊的原因&#xff0c;我需要第二个浏览器&#xff0c;我的第一个浏览器是google的chrome浏览器&#xff0c;所以我选择的是windows的默认浏览器&#xff0c;就是microsoft edge浏览器&#xff0…

SpringBoot actuator应用监控

文章目录 引入依赖端点(Endpoints)端点种类端点开启配置暴露端点手动暴露端点 端点保护引入spring security依赖配置security 端点响应缓存访问端点路径修改CORS跨域支持健康信息(/actuator/health)自定义healthInfo 应用信息(/actuator/info) 监控信息可视化引入依赖配置查看配…

fastadmin自定义添加、修改弹窗大小

找到对应的js文件&#xff0c;添加&#xff1a; // 修改添加窗口的大小 $(".btn-add").data("area", ["50%", "60%"]); // 修改编辑窗口的大小 $(".btn-edit").data("area", ["50%", "60%"]…

2024Web自动化测试的技术框架和工具有哪些?

Web 自动化测试是一种自动化测试方式&#xff0c;旨在模拟人工操作对 Web 应用程序进行测试。这种测试方式可以提高测试效率和测试精度&#xff0c;减少人工测试的工作量和测试成本。在 Web 自动化测试中&#xff0c;技术框架和工具起着至关重要的作用。本文将介绍几种常见的 W…

数据库面试题

数据库面试题 Mysql Q&#xff1a;数据库索引有哪些&#xff1f;有什么作用以及优缺点&#xff1f; 普通索引 alter table table_name add index index_name (column) MySQL中基本索引类型&#xff0c;没有什么限制&#xff0c;允许在定义索引的列中插入重复值和空值&…

Swagger升级指南:Swagger2与Swagger3注解差异揭秘

在API开发的世界里&#xff0c;Swagger已经成为了一个不可或缺的工具&#xff0c;它让API的文档化和前后端的协作变得前所未有地简单。随着Swagger的进化&#xff0c;我们迎来了Swagger3&#xff0c;也被称为OpenAPI Specification 3.0。本篇博客将带大家深入了解Swagger2和Swa…

Swagger不显示接口注释

如果 Swagger 不显示接口注释&#xff0c;请检查以下两点&#xff1a; 1、缺少 XML 注释文件&#xff1a;Swagger 默认使用 XML 注释文件中的注释来生成接口文档。确保在项目的生成设置中启用了 XML 文档生成&#xff0c;并将生成的 XML 注释文件放置在与生成的 DLL 文件相同的…

计算机组成原理(复习题)

更多复习详情请见屌丝笔记 一、选择题 计算机系统概述 1、至今为止&#xff0c;计算机中的所有信息仍以二进制方式表示的理由是&#xff08; C &#xff09;。 A.运算速度快 B.信息处理方便 C.物理器件性能所致 D.节约元件 2、运算器的核心功能部件是&#xff08; D &am…

快速入门 — — 在Moonbeam上开发

访问熟悉的以太坊工具是一回事&#xff0c;获得顶级支持、拥有构建突破性跨链应用程序的资源是另一回事。 Moonbeam汇集了通过集成互操作性解决方案访问任何链的能力、具有完全以太坊兼容性的理想开发环境&#xff0c;以及使用Substrate在波卡上安全扩展的能力。 开始在Moonb…

Kafka为什么能高效读写数据

1&#xff09;Kafka 本身是分布式集群&#xff0c;可以采用分区技术&#xff0c;并行度高&#xff08;生产消费方并行度高&#xff09;&#xff1b; 2&#xff09;读数据采用稀疏索引&#xff0c;可以快速定位要消费的数据&#xff1b; 3&#xff09;顺序写磁盘&#xff1b; …

行业追踪,2023-12-20

自动复盘 2023-12-20 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

构建陪诊预约系统:技术实现与用户体验

在医疗服务不断创新的背景下&#xff0c;陪诊预约系统作为一种结合技术与人性化服务的应用&#xff0c;为患者提供了更为便捷和贴心的医疗体验。让我们通过简单的示例代码&#xff0c;了解一下如何构建一个基本的陪诊预约系统。 技术栈选择 在开始构建陪诊预约系统之前&…

蓝牙物联网开发与应用:五大核心应用场景!

蓝牙技术在物联网中的五大核心应用场景 1、智能家居 通过蓝牙连接智能家居设备&#xff0c;如智能灯泡、智能插座、智能恒温器等&#xff0c;可以实现远程控制、语音控制等功能&#xff0c;提高家居的智能化程度和便利性。 2、智能穿戴设备 蓝牙技术可以连接智能手表、智能手…

倒计数器:CountDownLatch

CountDownLatch 是 Java 中用于多线程编程的一个同步工具。 它允许一个或多个线程等待其他线程执行完特定操作后再继续执行。 CountDownLatch 通过一个计数器来实现&#xff0c; 该计数器初始化为一个正整数&#xff0c;每当一个线程完成了指定操作&#xff0c;计数器就会减一。…

MyBatis进行CRUD中添加数据实现主键回填

文章目录 MyBatis进行CRUD中添加数据实现主键回填1、创建一个mybatis项目2、实现添加数据时主键回填在MyBatisTest.java中添加下面方法在UserMapper.java中添加对应的属性在UserMapper.xml中添加sql语句如下运行结果如下(取消commit方法注释后就不会出现Rolling back回滚进行真…

谈思生物医疗直播|“靶向双硫死亡在肿瘤治疗中的应用”

细胞死亡是维持生物发育和内部环境稳态的生理过程。靶向细胞死亡相关通路杀死癌细胞是癌症治疗的一大方向。今年年初&#xff0c;有研究团队发现和鉴定了一种全新的细胞死亡类型——双硫死亡(Disulfidptosis)&#xff0c;为癌治疗开辟了新的可能性。 溶质载体家族成员 SLC7A11…

求奇数的和 C语言xdoj147

题目描述&#xff1a;计算给定一组整数中奇数的和&#xff0c;直到遇到0时结束。 输入格式&#xff1a;共一行&#xff0c;输入一组整数&#xff0c;以空格分隔 输出格式&#xff1a;输出一个整数 示例&#xff1a; 输入&#xff1a;1 2 3 4 5 0 6 7 输出&#xff1a;9 #inclu…

QEMU源码全解析 —— virtio(19)

接前一篇文章&#xff1a; 上回书继续讲解virtio_pci_driver的probe回调函数virtio_pci_probe()&#xff0c;在讲到第5段代码的时候&#xff0c; if (force_legacy) {rc virtio_pci_legacy_probe(vp_dev);/* Also try modern mode if we cant map BAR0 (no IO space). */if (r…
最新文章