计算机组成原理与体系结构-实验二 ALU(Proteus 8.15)

目录

一、实验目的

二、实验内容

三、实验器件

四、实验原理

五、实验步骤

六、思考题


一、实验目的

1、了解算术逻辑运算器(74LS181)的组成和功能。

2、掌握基本算术和逻辑运算的实现方法。

二、实验内容

设计算数逻辑运算器系统的通路;运用算术逻辑运算器74LS181进行有符号数/无符号数的算术运算和逻辑运算。

三、实验器件

1. 算术逻辑运算器(74LS181)。

2. 三态门(74LS244)及寄存器(74LS273、74LS373)。

3. RESPACK-8:排阻

4. DIPSWC_8:拨码开关

5. 7SEG-BCD:显示一位数字

6. 7SEG-BCD-GRN:显示一位数字

7. 4078:8输入端的或门

8. 74LS04 :反相器,非门

9. BUS:总线

10. SW-SPDT:单刀双掷开关

11. LED-GREEN:用来表示ZF/CF/SF的值

12. LED-RED:用来表示ZF/CF/SF的值

13. LED-YELLOW:用来表示ZF/CF/SF的值。

四、实验原理

说明:由于笔者能力有限,加上觉得实验指导的描述专业性、条理性较强,所以摘抄到下文。

本实验的算术逻辑运算器电路:输入单元(拨码开关)用来提供参与运算的数据,输出单元(数码显示管7SEG-BCD/7SEG-BCD-GRN)显示总线BUS的内容。运算器则由两个集成电路芯片74LS181以串行进位形式构成8位运算器(ALU):ALU_L4B为低 4 位运算芯片, ALU_H4B 为高4位运算芯片。ALU_L4B 的进位输出端 CN+4与 ALU_H4B 的进位输入端CN相连,使低4位运算产生的进位送进高 4位运算中。 ALU_L4B 的进位输入端CN连接到外来进位端开关ALU_CN,ALU_H4B的进位输出端 CN+4 经过反相器74LS04,通过三态门接到溢出标志位CF指示灯(CF=1,即ALU运算结果溢出)。

ALU 有三个标志位:溢出标志位CF(最高位产生进位),零标志位ZF(ZF=1,ALU 运算结果为0)和符号标志位SF(SF=1,运算结果为负数;SF=0,运算结果为正数或0)。

ALU 的工作方式可通过设置两个74LS181芯片的控制信号(ALU_S0、S1、S2、 S3、 M及CN)来实现, 其逻辑功能表如表2-1所示,表中“A”和“B”分别表示参与运算的操作数,“+”表示逻辑或,“加”表示算术求和。

图 6       74LS181逻辑功能表

注意:+表示或,加表示算数加法,0表示00000000,1表示00000001.

也就是说CN其实控制的是ALU算数器件输入的,CN=0代表,CN=1代表

运算器ALU的输出经过三态门(74LS244)和数据总线BUS相连。当运算器使能开关低电平有效(ALU_OE=0)的时候,运算器三个部位的三态门 244状态为直通:74LS181的控制信号(S0~S3、M、CN)全部连通;74LS181的运算标志位(CF、ZF和 SF)的指示灯全部连通;以及 74LS181 的运算结果输出到数据总BUS。当 ALU_OE=1 的时候,74LS181停止工作,此时74LS181的输出端数据为无效数据,与数据总线BUS隔断。

运算器ALU的两个数据输入端分别由两个数据锁存器(74LS273)DRA、DRB锁存,74LS181 将DRA、DRB内的数据作为上述图6中参与运算的数A和B。由于 DRA、DRB已经把数据暂存,只要74LS181的控制信号不变,那么74LS181的输出数据也不会发生改变。数据锁存器 DRA、DRB 的输入连至数据总线 BUS,在 DRA_CLK、DRB_CLK 端开关出现上升沿跳变的时候,总线 BUS的数据分别打入 DRA、DRB锁存。

五、实验步骤

1、放置RESPACK-8和DIPSWC_8,通过总线将这两个器件连接起来,注意接电源 和接地。 2、放置多个单刀双掷开关,用来控制S0,S1,S2,S3,CN,M,还有ALU输出 (低电平有效),DIPSWC_8(低电平有效)输出和两个存储A和B的寄存器,并且都 高电平连接电源,低电平接地。

3、放置两个74LS244 和 74LS273,DIPSWC_8 与两个 74LS244 通过总线相连, 74LS244 与 74LS273通过总线相连,74LS244的作用为控制总线上DIPSWC_8的数据流 通,避免与结果数据冲突,74LS273的作用为储存进行运算的两个数值。

4、放置两个74LS181和74LS244,74LS273通过总线与74LS181相连,依次连接单 刀双掷开关(S0,S1...)和74LS244和74LS181。

5、放置3个74LS244,一个4078,一个74LS04,三个LED,其中一个74LS244与三个LED相连。

6、放置一个7SEG-BCD,一个7SEG-BCD-GRN,用来显示数字与总线相连。每一个总线都必须命名,总线的命名格式为:name[0..n],name为总线的名字,n为总线数量,与总线相连的每一条线都要命名,格式为:namei,name为相连的总线的名字, i=0,1,2,3.....n

7、启动仿真前,令(S3,S2,S1,S0,M,CN) = (1,1,1,1,1,1),DRA_CLK = DRB_CLK = 0,SW_BUS=ALU_OE=1;

8、启动仿真后,SW_BUS=0,使用拨码开关,选择一个8位的二进制值0xAA,将 DRA-CLK置为1,将值存进锁存器DRA,再将DRA-CLK置为0,再次使用拨码开关, 选择一个8位的二进制值0x55,将DRB-CLK置为1,将值存进锁存器DRB,再将 DRB-CLK置为0,再令SW_BUS=1。

说明:本实验的两个操作数对于48组操作保持固定,同时0xAA和0x55具有特殊性,能够体现泛华计算中更多的特殊情况,比如条件信号输出零标志位ZF=1。

图 7       0xAA/0x55操作数预装载,手动产生上升沿信号

9、设置ALU_OE=0,然后改变运算器的控制信号(S3,S2,S1,S0,M,CN),观察运算器的输出F和标志位CF、SF、ZF,并且把输出F填入下表。

图 8       M=0算术运算,CN=0有进位,4/16种s3s2s1s0运算控制

图 9       M=0算术运算,CN=1无进位,五种细分控制

图 10      0xAA XOR 0x55 (逐位)

六、思考题

1.74LS181 运算器可以区分有符号数运算和无符号数运算么?可以执行无符号数的加法和减法运算么?对于有符号数的运算,74LS181运算器是补码运算器还是原码运算器?

这个问题可以参考实验1思考题1和2的回答。74LS181运算器是可以区分有符号和无符号数的运算的,只需要根据SF和CF进行(组合)判别,就可以实现8位有符号输入(1)-8位有符号输出、8位无符号输入(2)-8位无符号输出或者9位有符号输出。

在实验一中使用M表示加法减法控制,实验二中 对应减法运算,对应加法运算,因为ALU的功能更加强大,控制信号也从实验一简单的加减法单位控制信号变成了6位控制信号,最多可以对应64种控制情况;再结合条件信号输出CF位和SF位就可以校验溢出情况了。结合实验1的思考题,情况(1)只需要用到SF位、控制信号和操作数的MSB,而情况(2)需要用到控制信号和CF位。

2.在74LS181 运算器的通路中,输入锁存器DRA、DRB的作用是什么?假设去掉其中一个输入锁存器,使得 74LS181 的输入直连总线,运算器还能正常工作么?运算结果输出端连接的74LS244缓冲器的作用是什么?假设去掉输出端74LS244 缓冲器,使得74LS181 运算器的输出直连总线,运算器还能正常工作么?

DRA和DRB的作用可能属于信号边沿有效型的寄存器而非高低电平有效型的锁存器,其作用有两个,一是缓存输入数据,并确保数据的稳定性和准确性,没有这两个寄存器两个操作数永远相同,第二点更重要,如果没有寄存器,ALU输出使能之后结果会作为操作数再次参与运算,会出现无限计算循环的致命问题。

具有三态门结构的74LS244缓冲器的作用很重要,从电路结构图可以发现数据输入和数据输出总线是同一条,因此在数据输入端和数据输出端都需要连接缓冲器;

如果去掉输入端的缓冲器,由于DRA和DRB的存在,ALU(74LS181)的工作不会受到影响,但是一旦输出使能之后,数据会通过总线“反流”到拨码开关处,造成信号冲突——一个在硬件电路设计过程中很忌讳的问题。

而如果去掉的是题目问到的输出端的缓冲器,同样会产生信号冲突,因为输入电路的三态门缓冲器输出端一定存在高低电平,虽然在断开左右连接后软件显示的是灰色信号,但是实际上数据输入电路74LS244的输出端的0-1高低电平,会直接通过总线“反流”到ALU输出端,和ALU产生的计算输出相互冲突,直接导致结果不稳定。

3.当74LS181运算器进行无符号数运算的过程中,运算结果的标志位SF有无意义?在有符号数运算过程中,标志位CF的含义是一致的么?如果做两个有符号数加法“A+0”,标志位CF会置位么?如果做两个有符号数减法“A-0”,标志位CF会置位么?在什么情况下有符号数的加法会出现标志位CF置位?

这个问题很有意思,和实验一的思考题、实验二的思考题1本质是一个问题。把操作数当成无符号类型是,只需要考虑CF位而不需要考虑SF位,因此并无意义,SF就是一个普通的位而非符号位。同理,操作数作为有符号类型输入时,CF位是没有意义的,甚至对于溢出的判断都没有帮助(除非在内部有使用,并向外部提供专门的溢出标志位),由于74LS181包括前述加法器的封装特性,和外界不连通,所以也没有办法直接使用这种办法判断溢出。

笔者认为,A+0和A-0都不会使CF=1;CF=1可能出现在同符号的两个有符号数相加或者不同符号的两个有符号数相减时,后者转化成前者,最终因为两个操作数的绝对值之和超过了当前位数有符号数的表示范围而产生溢出(下溢或上溢),8位的表示范围是[-128,127]。

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

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

相关文章

ubuntu下免sudo执行docker

前言 在ubuntu中,默认是无法使用root账号的,安装完docker后,不可避免的要使用sudo来执行docker命令,这就让运维变得很麻烦 避免sudo # 添加当前用户到 docker 组 sudo usermod -aG docker $USER# 刷新组权限 newgrp docker# 验…

微处理原理与应用篇---STM32寄存器控制GPIO

在 ARM 架构下使用 C 语言控制 32 位寄存器实现 GPIO 操作,需结合芯片手册进行寄存器映射和位操作。以下以 STM32F103(Cortex-M3 内核)为例,详细介绍实现方法: 一、STM32F103 GPIO 控制(标准外设库&#x…

基于OPUS-MT模型的中译英程序实现

这是我的kaggle账号名“fuliuqin” 代码参考如下: nlp.paperflq | KaggleExplore and run machine learning code with Kaggle Notebooks | Using data from [Private Datasource]https://www.kaggle.com/code/fuliuqin/nlp-paperflq 目录 绪论 研究背景与意义 研究…

炸鸡派-定时器基础例程

定时器简介 基本定时器,计数中断、产生DMA请求。 通用定时器,PWM输出、输入捕获、脉冲计数。 高级定时器,输出比较、互补输出带死区控制、PWM输入。 中心对齐的计数模式可以生成对称的PWM波形信号。计数可以先增后减。 这种模式下&#xff…

利用不坑盒子的Copilot,快速排值班表

马上放暑假了,有多少人拼命排值班表的? 今天用我亲身制作值班表的一些Excel操作,给大家分享一些在Excel中的小技巧,需要的及时收藏,有一天用得上~ 值班表全貌 先给大家看看我制作的值班表的样子,应该大家…

Linux 面试知识(附常见命令)

目录结构与重要文件 Linux 中一切皆文件,掌握目录结构有助于理解系统管理与配置。 目录说明/根目录,所有文件起点/bin基本命令的可执行文件,如 ls, cp/sbin系统管理员用的命令,如 shutdown/etc配置文件目录,如 /etc/…

Lua 安装使用教程

一、Lua 简介 Lua 是一门轻量级、高性能的脚本语言,具有简洁语法、嵌入性强、可扩展性高等特点。广泛应用于游戏开发(如 Roblox、World of Warcraft)、嵌入式开发、配置脚本、Nginx 扩展(OpenResty)等领域。 二、Lua …

SPAD像素概念理解

SPAD(Single Photon Avalanche Diode,单光子雪崩二极管)像素是一种能够检测单个光子的超灵敏光电探测器,其核心原理是通过雪崩倍增效应将单个光子产生的微弱电流信号放大到可观测水平。 一、工作原理 雪崩倍增效应 当SPAD反向偏压超过其击穿电压时,进入盖革模式(Geiger M…

SSSSS

#include <iostream> void LineOf(bool** n1, bool** n2, int column, int raw, int* result) { for (int i 0; i < column; i) { int d -1, n -1; // 反向遍历&#xff0c;找最后一个 true for (int j raw - 1; j > 0; j--) { …

【AI智能体】社交娱乐-智能助教

智能助教是扣子官方提供的教育类智能体模板。助教模板分为学习陪伴和作业批改两种场景&#xff0c;分别适用于学生角色和教师角色&#xff0c;你可以根据需求选择对应的模板&#xff0c;并将其改造为其他学科或其他教育阶段的智能助教。 模板介绍 在智能学伴/助教的落地过程中…

自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全

引言 在云原生时代,容器化技术已成为现代应用部署的标准方式。AWS ECS Fargate 作为一种无服务器容器服务,让开发者能够轻松运行容器化应用而无需管理底层基础设施。然而,随着容器技术的普及,安全问题也日益突出。本文将介绍如何通过 Python 脚本自动化地为 ECS Fargate 服…

Kafka Controller 元数据解析与故障恢复实战指南

#作者&#xff1a;张桐瑞 文章目录 1 生产案例&#xff1a;Controller 选举在故障恢复中的关键作用1.1 问题背景1.2 核心操作原理&#xff1a; 2 Controller 元数据全景&#xff1a;从 ZooKeeper 到内存的数据镜像2.1元数据核心载体&#xff1a;ControllerContext 类2.2核心元…

《寻北技术的全面剖析与应用前景研究报告》

一、引言 1.1 研究背景与意义 寻北&#xff0c;作为确定地理北极方向的关键技术&#xff0c;在众多领域中扮演着举足轻重的角色。在军事领域&#xff0c;精确的寻北对于武器系统的瞄准、导弹的精确制导以及部队的战略部署都至关重要。例如&#xff0c;火炮在发射前需要精确寻…

深入比较 Gin 与 Beego:Go Web 框架的两大选择

引言 在 Go 语言生态系统中&#xff0c;Gin 和 Beego 是两个非常受欢迎的 Web 框架。它们各自有着不同的设计理念和目标用户群体。本文将对这两个框架进行深入比较&#xff0c;并帮助你理解它们之间的区别&#xff0c;以便根据项目需求做出合适的选择。 一、Gin 概述 Gin是一…

全新大模型开源,腾讯(int4能打DeepSeek) Vs 谷歌(2GB运行多模态)

大家好&#xff0c;我是 Ai 学习的老章 最近除了阿里 Qwen3 模型更新了图片生成和处理能力&#xff0c;大家都可以玩转吉卜力风格 还有几个最近发布的大模型值得关注 1 是腾讯开源了 80B 混元 A13B 模型&#xff0c;亮点是精度无损的 int4 很能打 2 是谷歌开源的小参数 Gemm…

向量数据库milvus中文全文检索取不到数据的处理办法

​检查中文分词配置​ Milvus 2.5 支持原生中文全文检索&#xff0c;但需显式配置中文分词器&#xff1a; 创建集合时指定分词器类型为 chinese python schema.add_field(field_name"text", datatypeDataType.VARCHAR, max_length65535, enable_analyzerTrue, an…

Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第一篇 打造光影字形的创意秘技

大家好呀,欢迎来到 AI造字工坊! 在这篇文章中,我们将带领你走进一个神奇的世界——ControlNet。你可能听说过它,但可能还没摸清它的深奥之处。 今天,我们就来揭开它神秘的面纱,轻松带你玩转字形设计! 话说回来,相信大家对图片生成、提示词、放大操作、抽卡这些基本操…

从零用java实现 小红书 springboot vue uniapp (12)实现分类筛选与视频笔记功能

移动端演示 http://8.146.211.120:8081/#/ 管理端演示 http://8.146.211.120:8088/#/ 项目整体介绍及演示 前言 在前面的系列文章中&#xff0c;我们已经基本完成了小红书项目的核心框架搭建和图文笔记的发布、展示流程。为了丰富App的功能和用户体验&#xff0c;今天我们将在…

Python与Web3.py库交互实践

目录 Python与Web3.py库交互实践引言:连接Python与区块链的桥梁1. 环境配置与基础连接1.1 安装Web3.py1.2 连接以太坊节点2. 基础区块链交互2.1 账户与余额查询2.2 创建并发送交易3. 智能合约交互3.1 加载和部署合约3.2 与已部署合约交互4. 高级功能实践4.1 事件监听4.2 与ERC…

《汇编语言:基于X86处理器》第6章 条件处理(2)

本章向程序员的汇编语言工具箱中引入一个重要的内容&#xff0c;使得编写出来的程序具备作决策的功能。几乎所有的程序都需要这种能力。首先&#xff0c;介绍布尔操作&#xff0c;由于能影响CPU状态标志&#xff0c;它们是所有条件指令的核心。然后&#xff0c;说明怎样使用演绎…