【计算机组成原理】实验二

news2024/11/17 16:40:34

文章目录

  • 实验二 运算器实验
    • 一、实验目的
    • 二、实验原理
    • 三、运算器功能编码
    • 四、设置初始状态
    • 任务一 算术运算
    • 任务二 逻辑运算
    • 任务三 移位运算
    • 任务四 进位控制与零标志


实验二 运算器实验

一、实验目的

  • 完成算术、逻辑、移位运算实验,熟悉ALU运算类型的控制位运用。
  • 实验仪器:JTHS-A 计算机组成原理同步互动教学系统

二、实验原理

  • 实验中所用的运算器数据通路如图2-4-1所示。
  • ALU运算器由CPLD描述。运算器的输出经过2片74LS245三态门与数据总线相连,2个运算寄存器AX、BX的数据输入端分别由4个74LS574锁存器锁存,锁存器的输入端与数据总线相连,准双向I/O输入输出端口用来给出参与运算的数据,经2片74LS245三态门与数据总线相连。
    在这里插入图片描述
    图中AX、BX的写控制由O2~O0编码定义,通过按【单拍】钮完成运算源的数据打入。

三、运算器功能编码

  • 表2.4.1 ALU运算器编码表
    在这里插入图片描述

四、设置初始状态

K23 ~ K0置“0”,灭M23~M0控位显示灯。

任务一 算术运算

1.字算术运算

  • (1)字写操作(置数操作)
    • 通过“I/O单元”二进制开关向寄存器AX和BX置数,操作步骤如下:
      在这里插入图片描述
  • (2)字读操作(运算寄存器AX和BX内容送总线)其中FUN为运算器输出;M为运算控制位:1=算术运算,0=逻辑运算
    在这里插入图片描述
  • (3)字算术运算(不带进位加)
    • 令M S2 S1 S0(K15 K13~K11=1011),FUN及总线单元显示AX+BX的结果。
      在这里插入图片描述
    • 令M S2 S1 S0(K15 K13~K11=1010),FUN及总线单元显示AX-BX的结果。
      在这里插入图片描述

2.字节算术运算

  • (1)偶字节写(置数操作)
    • 拨动“I/O输入输出单元”开关向寄存器AL和BL置数,操作步骤如下:
      在这里插入图片描述
  • (2)偶字节读操作(运算寄存器AL和BL内容送总线)
    在这里插入图片描述
  • (3)偶字节减法运算(不带进位加)
    • 令M S2 S1 S0(K15 K13~K11=1011),FUN及总线单元显示AL+BL的结果。
    • 令M S2 S1 S0(K15 K13~K11=1010),FUN及总线单元显示AL-BL的结果。

任务二 逻辑运算

1.字逻辑运算

  • (1)字写操作(置数操作)
    • 拨动“I/O输入输出单元”开关向寄存器AX和BX置数,操作步骤如下:
      在这里插入图片描述
  • (2)字读操作(运算寄存器AX和BX内容送总线)
    在这里插入图片描述
  • (3)字逻辑运算
    • 令M S2 S1 S0(K15 K13~K11=0010),为逻辑与,FUN及总线显示AX逻辑与BX的结果。
    • 令M S2 S1 S0(K15 K13~K11=0011),为逻辑或,FUN及总线显示AX逻辑或BX的结果。

2.字节逻辑运算

  • (1)偶字节写操作(置数操作)

    • 拨动“I/O输入输出单元”开关向寄存器AL和BL置数,具体操作步骤如下:
      在这里插入图片描述
  • (2)偶字节读操作(运算寄存器AL和BL内容送数据总线)
    在这里插入图片描述

    • ①若运算控制位设为(M S2 S1 S0=0000)则F=AL,即AL内容送到数据总线。
    • ②若运算控制位设为(M S2 S1 S0=0111)则F=BL,即BL内容送到数据总线。
  • (3)偶字节逻辑运算

    • 令M S2 S1 S0(K15 K13~K11=0010),为逻辑与,FUN及总线显示AL逻辑与BL的结果。
    • 令M S2 S1 S0(K15 K13~K11=0011),为逻辑或,FUN及总线显示AL逻辑或BL的结果。
  • (4)奇字写操作(置数操作)

    • 拨动“I/O输入输出单元”开关向寄存器AH和BH置数,操作步骤如下:
      在这里插入图片描述
  • (5)奇字节读操作(运算寄存器AH和BH内容送总线)

    • 关闭AH、BH写使能,令K17=K18=1,按下流程分别读AH、BH。
      在这里插入图片描述
      • ①若运算控制位设为(M S2 S1 S0=0000)则F=AH,即AH内容送到数据总线。
      • ②若运算控制位设为(M S2 S1 S0=0111)则F=BH,即BH内容送到数据总线。
  • (6)奇字节逻辑运算

    • 令M S2 S1 S0(K15 K13~K11=0010),为逻辑与,FUN及总线显示AH逻辑与BH的结果。
    • 令M S2 S1 S0(K15 K13~K11=0011),为逻辑或,FUN及总线显示AH逻辑或BH的结果。

任务三 移位运算

  • 本示例以累加器AX为移位的源与目的寄存器,也就是说移位是通过累加器AX实现的,
  • 这种规范的设计理念使我们的运算器能够与通用计算机指令系统相吻合。

1.移位执行过程

在这里插入图片描述

  • 所谓循环移位,就是指移位时数据的首尾相连进行移位,即最高(最低)位的移出位又移入数据的最低(最高)位。
  • 根据循环移位时进位位是否一起参加循环,可将循环移位分为不带进位循环和带进位循环两类。
  • 其中不带进位循环是指进位“CY”的内容不与数据部分一起循环移位,也称小循环。
  • 带进位循环是指进位 “CY”中的内容与数据部分一起循环移位,也称大循环。
    ◆不带进位循环左移:各位按位左移,最高位移入最低位。
    ◆不带进位循环右移:各位按位右移,最低位移入最高位。
    ◆带进位循环左移:各位按位左移,最高位移入C中,C中内容移入最低位。
    ◆带进位循环右:各位按位右移,最低位移入C中,C中内容移入最高位。
  • 循环移位一般用于实现循环式控制、高低字节的互换,还可以用于实现多倍字长数据的算术移位或逻辑移位。

2.移位运算实例

  • ①K23 ~ K0全置“0”,灭M23 ~ M0灯。
  • ②累加器AX置数与移位流程
    在这里插入图片描述
  • ③字移位:完成上流程,按下表改变S2(K13)-S0(K11)的状态,再按【单拍】钮,观察AX的移位变化。
  • ④字节移位:完成字移位后,改变字长宽度,令W(K6)=0,然后根据下表设置S2(K13)、S0(K11)的电位,再按【单拍】钮,AX进入字节移位状态,观察AL的移位变化。
    在这里插入图片描述

任务四 进位控制与零标志

1.标志控制原理

图2-4-2 标志位锁存原理图

(1)进位标志CY
运算标志CY是带复位可预置的进位标志,在运算时由M信号控制,当M=1时,按【单拍】按钮,在T4上升沿把当前运算进位或借位打入CY的锁存输出端Q2;当M=0时,由CN位控制CY的“位操作”。当CN=1,按【单拍】按钮,在T4上升沿执行CY的置位、当CN=0,按【单拍】按钮,在T4上升沿执行CY的清零,当M=1,CN、W=00时,每按一次[单拍],执行取反操作;遇M=0、CN=0时,CY保持原始状态。CY的复位端由管理CPU直接控制。

(2)零标志Z
零标志Z是带复位端的运算结果判零标志,取源于运算器输出FUN。当运算输出FUN为0时,zd为“1”,反之为“0”;零标志由M信号控制,当M=1时,按【单拍】按钮,在T4上升沿把当前zd打入Z(零标志)的锁存输出端Q1;当M=0时,零标志Z保持原始状态。

(3)标志位的初始化
标志位的清零端由系统掌控与控位无关,在手动实验中需要清标志时,通过按动【返回】键来实现标志位的初始化。
系统提供CY与Z的状态灯,其显示特征为:进位标志CY=“1”时,灯“亮”反之灯“灭”;零标志Z=“1”时,灯“亮”反之灯“灭”。

2.进位控制实验
①进位控制流程

②进位控制实验
置位操作:当M、CN、XP、W=0100时,按【单拍】按钮,CY=1(灯亮);
清零操作:当M、CN、XP、W=0110时,按【单拍】按钮,CY=0(灯灭);
取反操作:当M、CN、W=100时,每按一次【单拍】按钮,CY=/CY(取反)。(不成工)

3.进位运算实验
①按【返回】键,实现进位及零标志清零。通过“I/O单元”向AX、BX置数。

②进位标志锁存
K23K0置全“0”,关闭M23M0控位灯。令X0、W=11,运算控位M、S2、S1、S0 =1111,按【单拍】按钮,FUN显示带进位加结果,进位标志灯CY亮,表示有进位。

完成上流程,按【单拍】钮,ALU执行A+B+CY的操作,FUN=0002、CY=1(灯亮)。
令S0为0,按【单拍】钮,ALU执行A-B-CY的操作,FUN=FFFB、CY=0(灯灭)。

1.零标志实验
①K23~K0置全“0”,通过“I/O单元”向AX、BX均置数0001h,操作步骤如下:

②零标志锁存
K23K0置全“0”,灭M23M0控位灯。令X0=1,运算控位M、S1=11,按【单拍】按钮,FUN显示算术减结果,其零标志Z的灯亮,表示运算结果为零。

2.标志位的字节运算
令W(K6)=“0”,参照进位与零标志运算流程,ALU按字节方式建立和锁存CY及Z标志。

实验思考
验证表2.4.2 ALU运算器编码表所列的运算功能。
在给定AX=6655h、BX=AA77h的情况下,改变运算器的功能设置,观察运算器的输出,填入下页表格中,并和理论分析进行比较、验证。

表2.4.2 ALU运算器真值表
运算控制 运算表达式 K15 K13 K12 K11 AX BX 运算结果
M S2 S1 S0
带进位算术加 A+B+C 1 1 1 1 6655 AA77 FUN=( 10CC )
带借位算术减 A-B-C 1 1 1 0 6655 AA77 FUN=( BBDE )
带进位左移 RLC A 1 1 0 1 6655 AA77 FUN=( CCAA )
带进位右移 RRC A 1 1 0 0 FUN=( )
算术加 A+B 1 0 1 1 FUN=( )
算术减 A-B 1 0 1 0 FUN=( )
左移 RL A 1 0 0 1 FUN=( )
右移 RR A 1 0 0 0 FUN=( )
取BX值 B 0 1 1 1 6655 AA77 FUN=( AA77 )
AX取反 NOT A 0 1 1 0 6655 AA77 FUN=( 99AA )
AX减1 A-1 0 1 0 1 6655 AA77 FUN=( 6654 )
清零 0 0 1 0 0 FUN=( )
逻辑或 A OR B 0 0 1 1 FUN=( )
逻辑与 A AND B 0 0 1 0 FUN=( )
AX加1 A+1 0 0 0 1 FUN=( )
取AX值 A 0 0 0 0 FUN=( )

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

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

相关文章

华为OD机试真题 Java 实现【硬件产品销售方案】【2023Q1 200分】

一、题目描述 某公司目前推出了AI开发者套件、AI加速卡、AI加速模块、AI服务器、智能边缘多种硬件产品,每种产品包含若干个型号。 现某合作厂商要采购金额为amount元的硬件产品搭建自己的AI基座。 假设当前库存有N种产品,每种产品的库存量充足&#x…

Python爬虫urllib的基础使用详解

文章目录 1、urllib的使用response 服务器返回的数据:一个类型,六个方法urllib.request.urlretrieve(url,filename) 请求下载网页 请求下载图片 请求下载视频 2、请求对象的定制3.编解码post请求方式ajax的get请求ajax的post请求cookie模拟登录使用handl…

策略模式+单例模式(go)

《设计模式:可复用面向对象软件的基础》 策略允许算法独立于使用它的客户端而变化。 算法可以互相替换,不影响客户端 一个类定义多种行为,并且这些行为在这个类操作中以多个条件形式出现。将相关的条件移入它们各自的Strategy类中以替代这些…

Tomcat 的maxConnections、maxThreads、acceptCount 之间的关系

1. 在springboot 项目配置方式 server:port: 8081servlet:context-path: "/account"tomcat:threads:max: 200min-spare: 10max-connections: 8192accept-count: 100connection-timeout: 10000min-spare :最小线程数 最小工作空闲线程数,默认1…

ChatGPT 自定义提示词模板提升使用效率

相关文章推荐: 《提问的艺术:如何通过提示词让 ChatGPT 更准确地理解你的问题?》 《这些免费插件,让你的 ChatGPT 效率爆炸》 一、背景 现在 ChatGPT 异常火爆,很多人都在体验甚至购买 ChatGPT Plus。 现在使用 ChatG…

ProtoBuf之启航

"How do we do we do go refarming~" 如何理解序列化和反序列化? 序列化: 把 对象 转换为 字节序列 的过程 称为对象的序列化。 反序列化: 把 字节序列 恢复为 对象 的过程 称为对象的反序列化。 这两对反义词从概念上来说并不难理解,但是为什么有事没…

Xcode 14.3 和 iOS 16.4 为 SwiftUI 带来了哪些新的功能?

0. 概览 今年年初,Apple 推出了最新的 Xcode 14.3 以及对应的 iOS 16.4 。 与此同时,它们对目前最新的 SwiftUI 4.0 也添加了一些新功能: sheet 弹窗后部视图(Interact with a view Behind a sheet)可交互&#xff…

高级树结构

二叉排序树 左子树中所有结点的值,均小于其根结点的值。 右子树中所有结点的值,均大于其根结点的值。 二叉搜索树的子树也是二叉搜索树。 注意: 1.二叉查找树不能插入重复元素 2.中序遍历是一个递增的数列 3.高度越小查询效率越高 二叉排序…

RK3568平台开发系列讲解(驱动基础篇)RK 看门狗的使用

🚀返回专栏总目录 文章目录 一、简介二、DTS配置三、使用沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将对RK 看门狗的使用进行学习。 文章目录 一、简介二、DTS配置三、使用一、简介 看门狗(watchdog)是一个定时器,启动之后会开始计时。系统或者软件需要…

一个非常sb的报错……idea创建项目初始化失败……

今天在用idea创建项目时报错项目初始化失败; 一开始以为是配置原因,但后面尝试创建空项目都失败…… 觉得可能跟版本什么的无关,尝试重启、更新系统后,试着以管理员身份运行idea,问题解决了……………… 如果有报错信…

C语言——结构体初阶

哈喽,大家好,今天我们来学习C语言中的结构体,今天主要学习初阶结构体,后期我们将继续学习结构体进阶。 目录 1.结构体类型的声明 1.1 结构体的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. …

Cannot resolve plugin com.spotify:docker-maven-plugin:1.2.2 not found

问题 遇到这个错误是按照ruoyi-clou-plus把插件复制过来的,开始没有版本号,一直爆红,自己随便试了几个版本号,还是提示Cannot resolve plugin com.spotify:docker-maven-plugin not found 过程分析 百度了很多都说在settings.xml中加上 …

Tomcat安装与使用

Tomcat 是HTTP服务器,用于使用HTTP协议。 1、下载Tomcat 下载链接:https://tomcat.apache.org/ 进入官网后,根据自己想要下载的版本进行下载,我这里选择下载的版本是Tomcat 8. 点击选择自己想要下载的对应版本,下载Z…

基于Kruskal和Prim的最小生成树算法[matlab版本]

Kruskal算法 ------------------------------------ Kruskal算法为顺序取边的算法,复杂度与边的数量m有关, 为o(m log2 m).步骤如下: (1)初始化:最小生成树的边集A = ∅,对于图G中每个节点v ∈ V,生成 一个仅包含该节点的子树; (2)将图G中所有的边按照非降序方式排列; (…

YOLOv5、YOLOv7独家原创改进:独家首发最新EfficiCLNMS改进点,改进有效可以直接当做自己的原创改进点来写,新的增强预测帧

💡该教程为属于《芒果书》📚系列,包含大量的原创首发改进方式, 所有文章都是全网首发原创改进内容🚀 💡本篇文章为YOLOv5、YOLOv7改进:独家首发最新EfficiCL-NMS改进点,新的增强预测帧率。 💡对自己数据集改进有效的话,可以直接当做自己的原创改进点来写!!!改…

Trace32 SRST和TRST、system.attach 和 system.up的区别

目录 TRST-Resets the JTAG TAP controller and the CPU internal debug logic SRST- Resets the CPU core and peripherals SYStem.Mode Down SYStem.Mode Nodebug SYStem.Mode Prepare SYStem.Mode Go SYStem.Mode Attach SYStem.Mode StandBy SYStem.Mode Up 下图为…

HLS入门-LED闪烁仿真

什么是HLS HLS(High-Level Synthesis)是一种硬件描述语言编程技术,它可以将高级语言(如C/C)转换为硬件描述语言(如VHDL或Verilog),以便将其用于FPGA设计中。 HLS有什么核心技术&am…

《嵌入式系统开发实践》实验二 进程与线程

一、 实验目的 了解Linux中进程和线程的概念; 了解多线程程序的基本原理; 了解pthread库; 掌握用system、exec函数族、fork函数创建进程; 掌握使用pthread库中的函数编写多线程程序。 二、 实验任务与要求 应用fork函数创建子进…

行云流水| CI 3.0 云原生构建全新上线

研发过程中,如何直观且准确地获悉代码提交后的质量状态? 引入持续集成,可以自动化的对代码进行代码检查、单元测试、编译构建、甚至部署与发布,大幅提升开发人员的效率。 腾讯云 CODING 推出 CI 3.0 ——云原生构建,是…

LabVIEW:强大的图形化编程工具

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(National Instruments)开发的一种直观而强大的工程软件,被广泛应用于各个领域的工程师和科学家之中。 与传统的编程语言相比&…