Hust计算机组成原理实验

news2024/11/18 0:18:13

文章目录

  • logisim的使用
    • 1.添加门电路
    • 2.添加引脚
    • 3.添加导线
    • 4.添加文本
    • 5.测试电路
    • 补充工具
  • 实验一,运算器实验
    • 8位串行可控加减法器
      • 分析一位全加器
      • 八位串行加法器即可给出
      • 8位串行可控加减法器
      • 回答问题
    • CLA74182(先行进位加法器)
      • 参数
      • 公式
      • 问题
    • 位快速加法器
    • 16位快速加法器
    • 32位快速加法器
    • ALU
      • 实现功能

logisim的使用

1.添加门电路

点击资源栏-Gates选项中的门电路,即可在右边画布添加
在这里插入图片描述
添加成功后如下:
在这里插入图片描述

2.添加引脚

引脚可在菜单栏中找到
在这里插入图片描述
也可在资源栏-Wiring中找到
在这里插入图片描述
添加入画板后,可在属性表中修改面向方向
在这里插入图片描述
最后得到如下图
注:方形为输出,圆形为输入。
在这里插入图片描述

3.添加导线

使用光标连接两个结点即可
在这里插入图片描述

  • 灰色:线的位宽未知。发生这种情况是因为导线未连接到任何组件的输入和输出。(所有输入和输出都有一个定义的位宽。)
  • 蓝色:导线带有一位值,但没有任何东西将特定值驱动到导线上。我们称之为浮动位; 有人称之为高阻抗值。在此示例中,将值放置到导线上的组件是三态引脚,因此它可以发出此浮动值。深绿色:电线带有一位0值。
  • 亮绿色:导线带有一位1值。
  • 黑色:电线带有多位值。可能未指定部分或全部位。
  • 红色:电线带有错误值。这通常是因为门无法确定正确的输出,可能是因为它没有输入。它也可能因为两个组件试图将不同的值发送到线路上而产生; 这就是上面的例子中发生的情况,其中一个输入引脚将0置于线上,而另一个输入引脚将1置于同一线上,从而导致冲突。当任何携带的位是错误值时,多位线将变为红色。
  • 橙色:连接到导线的元件的位宽不一致。橙色线有效地“断开”:它不承载组件之间的值。在这里,我们将一个两位组件附加到一位组件,因此它们是不兼容的。

若出现橙色线缆,修改门电路的Data Bits值,使之组件位数一致。

连接完成后,电缆都为绿色,表示连接完成。
在这里插入图片描述

4.添加文本

选择文本工具在这里插入图片描述
点击引脚,输入标签。对引脚注释
或点击任意未知,进行注释。
在这里插入图片描述

5.测试电路

选择戳工具在这里插入图片描述,点击输入引脚,即可改变它的输入值。
在这里插入图片描述
可以看到,当线缆表示1时,为亮绿色;线缆表示0时,为深绿色。

补充工具

在这里插入图片描述

实验一,运算器实验

同学们需要在视频中对于你所实现的8位串行可控加减法器CLA741824位快速加法器16位快速加法器32位快速加法器以及ALU的进行介绍并回答相应问题。

  1. 依次比照你所实现的各个电路,口述你对该电路的实现思路以及你是如何从头构建起这个电路并使其正常工作的。
  2. 对于每一个电路,你可以回顾并介绍你在实现该电路过程中遇到的问题,以及你是如何解决这个问题的(加分项)
  3. 此外,我们对每个电路,也都准备了相应的问题和演示要求,同学们在视频演示中演示到了相应的电路时,除了上述两条,还需要在视频中对如下问题进行回答。同学们如果不知道从什么角度来介绍电路,也可以从这些问题中获得思路启发。

8位串行可控加减法器

  1. 对于加减法的控制,你是采取何种方式实现的?
  2. 你是怎样实现溢出检测的?其数学原理是什么?

分析一位全加器

P 65 P_{65} P65

设输入为x,y,进位为c。
则该位为x^y^c
进位当且仅当x,y都为1,或z为1,且x,y有一个为1。用符号表示为
(x&y) | (x^y)&z

用电路表示为
在这里插入图片描述
已在一位全加器FA中给出。

八位串行加法器即可给出

P 65 P_{65} P65
在这里插入图片描述

8位串行可控加减法器

P 66 P_{66} P66

在8为串行加法器的基础上加入可控符号Sign,若为减法,将y的补码修改为(-y)的补码(取反+1)。

若有 S 补 = x 补 − y 补 S_补 = x_补 - y_补 S=xy,即有
S 补 = x 补 + ( 反 码 ( y 补 ) + 1 ) = ( x 补 + 反 码 ( y 补 ) ) + 1 S_补 = x_补 + (反码(y_补)+1) = (x_补 + 反码(y_补)) + 1 S=x+(y)+1)=(x+(y))+1;
可将最低为的Cin设为1,当作减法计算中反码加1的操作。

Sub为1时,y取反;Sub为0时,y不变。有-y = y^Sub
在这里插入图片描述
对于OF溢出,检测方法有两种:

  1. 根据操作数和运算结果的符号位是否一致进行检测(负负得正,正正得负时溢出), S f S_f Sf为运算结果的符号位
    O F = X f Y f S f ‾ + X f ‾   Y f ‾ S f OF = X_fY_f\overline{S_f} + \overline{X_f}\ \overline{Y_f}S_f OF=XfYfSf+Xf YfSf
  2. 根据运算时最高数据位产生的进位信号 C d C_d Cd,符号位产生的进位信号 C f C_f Cf判断,当两个进位不一致时溢出
    O F = C f ⊕ C d OF = C_f \oplus C_d OF=CfCd

显然方法二更容易实现。

对于无符号溢出,Cout为1即可判断溢出。
在这里插入图片描述

回答问题

  1. 对于加减法的控制,你是采取何种方式实现的?
    当Sub为1时,y取反,且在最低位加法器有进位1;
    当Sub为0时,y不变。
    − y = y ⊕ S u b -y = y \oplus Sub y=ySub
    将Sub作为最低一位加法器的进位,Sub=1时,与y的每一位作异或运算。

  2. 你是怎样实现溢出检测的?其数学原理是什么?
    根据运算时最高数据位产生的进位信号 C d C_d Cd,符号位产生的进位信号 C f C_f Cf判断,当两个进位不一致时溢出,有
    O F = C f ⊕ C d OF = C_f \oplus C_d OF=CfCd

CLA74182(先行进位加法器)

P 67 P_{67} P67

  1. CLA74182的作⽤是什么?

参数

低位进位 C 0 C_0 C0
产生进位 C i C_i Ci
进位生成函数 G i G_i Gi
进位传递函数 P i P_i Pi
成组进位生成函数 G ∗ G^* G
成组进位传递函数 P ∗ P^* P

公式

S i = P i ⊕ C i C i + 1 = G i + P i C i ⇒ C 1 = G 0 + P 0 C 0 ⇒ C 2 = G 1 + P 1 C 1 = G 1 + P 1 G 0 + P 1 P 0 C 0 ⇒ C 3 = G 2 + P 2 G 1 + P 2 P 1 G 0 + P 2 P 1 P 0 C 0 ⇒ 以 此 类 推 S_i = P_i \oplus C_i \\ C_{i+1} = G_i + P_iC_i \\ \quad\\ \Rightarrow C_1 = G_0 + P_0C_0 \\ \Rightarrow C_2 = G_1 + P_1C_1 = G_1 + P_1G_0 + P_1P_0C_0\\ \Rightarrow C_3 = G_2+P_2G_1+P_2P_1G_0+P_2P_1P_0C_0 \\ \Rightarrow 以此类推 Si=PiCiCi+1=Gi+PiCiC1=G0+P0C0C2=G1+P1C1=G1+P1G0+P1P0C0C3=G2+P2G1+P2P1G0+P2P1P0C0
G ∗ = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 G 0 P ∗ = P 3 P 2 P 1 P 0 G^* = G_3+P_3G_2+P_3P_2G_1+P_3P_2P_1G_0 \\ P_* = P_3P_2P_1P_0 G=G3+P3G2+P3P2G1+P3P2P1G0P=P3P2P1P0
在这里插入图片描述

问题

  1. CLA74182的作⽤是什么?
    提前得到所有全加器所需的进位输入信号,所有全加器都可以并行计算从而提高运算性能。

位快速加法器

  1. 快速加法器与普通的串⾏加法器的区别是什么?他是通过什么⽅法来实现“快速”的?

16位快速加法器

在这里插入图片描述

32位快速加法器

在这里插入图片描述

  1. 你的溢出检测是如何实现的?这⾥是否可以选择其他的溢出检测⽅法?
    使用利用变形补码的符号位进行检测。
  2. 实现此电路有哪些值得注意的地⽅?

ALU

根据已有工具构造
在这里插入图片描述

实现功能

ALU OP十进制运算功能
00000Result = X << Y 逻辑左移(Y 取低五位)Result2=0
00011Result = X >>>Y 算术右移(Y 取低五位)Result2=0
00102Result = X >> Y 逻辑右移(Y 取低五位)Result2=0
00113Result = (X * Y)[31:0]; Result2 = (X * Y)[63:32] 有符号
01004Result = X/Y; Result2 = X%Y 无符号
01015Result = X + Y (Set OF/UOF)
01106Result = X - Y (Set OF/UOF)
01117Result = X & Y 按位与
10008Result = X | Y 按位或
10019Result = X⊕Y 按位异或
101010Result = ~(X |Y) 按位或非
101111Result = (X < Y) ? 1 : 0 符号比较
110012Result = (X < Y) ? 1 : 0 无符号比较

有关运算器的使用可参考:Logisim元件用法详解四:Arithmetic 运算器

在这里插入图片描述

  1. 怎样实现功能选择?
  2. 依次介绍各个功能的实现⽅式
  3. 重点介绍OF,UOF,加法,减法
  4. 运⾏运算器测试电路检测

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10个最常见的JavaScript问题

如今&#xff0c;JavaScript几乎是所有现代web应用程序的核心。这就是为什么JavaScript问题以及找出导致这些问题的错误是web开发人员的首要任务。 用于单页应用程序&#xff08;SPA&#xff09;开发、图形和动画以及服务器端JavaScript平台的强大的基于JavaScript的库和框架并…

opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值

1、图像定义&#xff1a; 彩色图像 &#xff1a;三通道&#xff0c;像素值一般为0~255&#xff1b; 灰度图像&#xff1a;单通道&#xff0c;像素值一般为0~255&#xff1b; 二值图像&#xff1a;单通道&#xff0c;像素值一般为0&#xff08;黑色&#xff09;、255&#xff08…

Python计算器(包含机制转换)

实现思路&#xff1a; 要优先处理内层括号运算&#xff0d;&#xff0d;外层括号运算&#xff0d;&#xff0d;先乘除后加减的原则&#xff1a; 1、正则处理用户输入的字符串&#xff0c;然后对其进行判断&#xff0c;判断计算公式是否有括号&#xff0c;有就先将计算公式进行…

判断二叉树是否是平衡二叉树(c#)

问题描述 给定一棵二叉树&#xff0c;判断其是否为平衡二叉树。 示例 示例1 Input: root [3,9,20,null,null,15,7] Output: true 示例2 Input: root [1,2,2,3,3,null,null,4,4] Output: false 解决方案描述 二叉树的每个节点的左子节点和右子节点的高度差小于等于1&#x…

Windows和Linux混合系统通过AD域实现用户集中认证

一、Windows AD域 1、统一认证简介 管理的Linux服务器和Windows服务器如果很多,如果都用本地用户名管理,要管理和记住几十台甚至上百台服务器的不同账号不同密码,这是很难的。但是如果所有服务器账号密码都设置一样,那又完全没有安全性可言。 什么是服务器的集中认证(统…

数据结构(8)树形结构——B树、B+树(含完整建树过程)

目录 8.1.B树 8.1.1.概述 8.1.2.完整建树过程 8.2.B树 8.1.B树 8.1.1.概述 B树存在的意义&#xff1a; 二叉树在存储数据时可能出现向一边倾斜导致查询效率降低的情况&#xff0c;为了防止二叉树的倾斜&#xff0c;出现了平衡二叉树&#xff0c;通过旋转的方式保证二叉树…

[附源码]计算机毕业设计springboot校园商铺

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计Django基于web的羽毛球管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

学生HTML个人网页作业作品 HTML+CSS+JavaScript环保页面设计与实现制作

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【PPT计时器】如何在wps演示PPT中使用定时器、计时器功能?不使用第三方插件,仅仅使用第三方计时器软件

一、问题背景和解决思路 很多人在展示PPT时&#xff0c;有精确的时间要求&#xff0c;比如五分钟&#xff0c;十分钟。 这时候&#xff0c;我们希望在演示的时候&#xff0c;PPT上附带一个小计时器、或者定时器。 网上有很多加定时器动画的教程&#xff0c;大多数停留在动画…

【D3.js】1.15-反转 SVG 元素

title: 【D3.js】1.15-反转 SVG 元素 date: 2022-12-02 14:07 tags: [JavaScript,CSS,HTML,D3.js,SVG] 文章目录一、学习目标二、题目三、通关代码参考更新svg坐标的y轴是在顶部的&#xff0c;即画出来的rect也是底朝上&#xff0c;如何让rect的底处于底部呢&#xff1f;一、学…

【C++初阶】STL-string的使用

文章目录一.string初识1.STL简介a.STL的组成b.STL和string的关系2.basic_string二.构造函数三.三种遍历方式四.容量相关的函数1.size()2.reserve()–调整容量3.resize()–调整size五.字符串的增删查改1.assign2.replace3.find()4.substr()5.insert()6.相关应用a.替换空格:b.取出…

【Redis-08】面试题之Redis数据结构与对象-RedisObject(上篇)

Redis本质上是一个数据结构服务器&#xff0c;使用C语言编写&#xff0c;是基于内存的一种数据结构存储系统&#xff0c;它可以用作数据库、缓存或者消息中间件。 我们经常使用的redis的数据结构有5种&#xff0c;分别是&#xff1a;string(字符串)、list(列表)、hash(哈希)、s…

string类的模拟实现

目录 一、浅拷贝、深拷贝 二、传统版本写法的String类 三、现代版本写法的String类 四、String类的模拟实现 一、浅拷贝、深拷贝 构造 //构造函数String(const char* str ""){if (nullptr str){assert(false);return;}_str new char[strlen(str) 1];strcpy(_s…

使用 Pandas 和 SQL 进行实用数据分析,让我们用 pandas 和 SQL 进行数据分析并实际理解它们(教程含数据csv)

Pandas是一种快速、强大、灵活且易于使用的开源数据分析和操作工具, 构建于 Python 编程语言之上。 SQL代表结构化查询语言。SQL 允许您从 RDBMS(关系数据库管理系统)访问数据,并可用于数据分析。 Pandas 和 SQL 都广泛用于数据分析。 在这篇博客中,我们将使用pandas和…

做好自己安全第一责任人 嘀嗒全面上线安全带智能语音提醒

2022年12月2日是第十一个“全国交通安全日”&#xff0c;今年主题为“文明守法 平安回家”。 当天&#xff0c;嘀嗒出行启动主题为“共建三方安全观&#xff0c;安全要靠你我他”共塑行动&#xff0c;倡导平台、用户、行业各方形成合力&#xff0c;共塑共创安全文明的新出行之路…

简单的PCI总线INTx中断实现流程

一个简单的PCI总线INTx中断实现流程,如下图所示。 1. 首先,PCI设备通过INTx边带信号产生中断请求,经过中断控制器(Interrupt Controller,PIC)后,转换为INTR信号,并直接发送至CPU; 2. CPU收到INTR信号置位后,意识到了中断请求的发生,但是此时并不知道是什么中断请求…

记一次 .NET 某电子厂OA系统 非托管内存泄露分析

一&#xff1a;背景 1.讲故事 这周有个朋友找到我&#xff0c;说他的程序出现了内存缓慢增长&#xff0c;没有回头的趋势&#xff0c;让我帮忙看下到底怎么回事&#xff0c;据朋友说这个问题已经困扰他快一周了&#xff0c;还是没能找到最终的问题&#xff0c;看样子这个问题…

hyper-v 虚拟机与本机之间 sftp实现文件传输

hyper-v 主打安全性&#xff0c;所以跟VMware不一样&#xff0c;不能实现复制粘贴&#xff1a;文字、文件、文件夹&#xff0c;所以采取了折中的办法&#xff0c;在Windows主机端用power shell&#xff0c;sftp命令进行文件传输。 前提 需要安装并能够正常运行ssh&#xff0c;后…

C++实现彩色bmp图片转灰度图

简介 BMP&#xff08;全称Bitmap&#xff09;是Windows操作系统中的标准图像文件格式&#xff0c;可以分成两类&#xff1a;设备相关位图&#xff08;DDB&#xff09;和设备无关位图&#xff08;DIB&#xff09;&#xff0c;使用非常广。它采用位映射存储格式&#xff0c;除了…