计算机组成原理--运算器实验

2023-10-23 16:41

本文主要是介绍计算机组成原理--运算器实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实验目的

1. 了解运算器的组成结构。

2. 掌握运算器的工作原理。

二、实验设备

PC机一台,TD-CMA实验系统一套,USB线一根,排线若干。

三、实验原理

本实验的原理如图1-1所示。

运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据,各部件对操作数进行何种运算由控制信号S3…S0和CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。

 

                   395c6ea351da4a50933ab0b0756652be.png

 

1-1  运算器原理图

运算器部件由一片CPLD实现。ALU的输入和输出通过三态门74LS245连到CPU内总线上,另外还有指示灯标明进位标志FC和零标志FZ。(请注意:实验箱上凡是印标注有马蹄形标记‘  ’,表示这两根排针之间是连通的)。图中除T4和CLR,其余信号均来自于ALU单元的排线座,实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的T1、T2、T3、T4,CLR都连接至CON单元的CLR按钮。T4由时序单元的TS4提供(时序单元的介绍见附录二),其余控制信号均由CON单元的二进制数据开关模拟给出。控制信号中除T4为脉冲信号外,其余均为电平信号,其中ALU_B为低有效,其余为高有效。

ALU和外围电路的连接如图1-2所示,图中的小方框代表排针座。

运算器的逻辑功能表如表1-1所示,其中S3 S2 S1 S0 CN为控制信号,FC为进位标志,FZ为运算器零标志,表中功能栏内的FC、FZ表示当前运算会影响到该标志。

978d7ce943104f96b0b9b5f22acd250c.png

 

 

图1-2  ALU和外围电路连接原理图

表1-1  运算器逻辑功能表

运算类型

S3 S2 S1 S0 

CN

 

逻辑运算

0000

X

F=A(直通)

0001

X

F=B(直通)

0010

X

F=AB                                   (FZ)

0011

X

F=A+B                                  (FZ)

0100

X

F=/A                                    (FZ)

移位运算

0101

X

F=A不带进位循环右移B(取低3位)位    (FZ)

0110

0

F=A逻辑右移一位                        (FZ)

1

F=A带进位循环右移一位              (FC,FZ)

0111

0

F=A逻辑左移一位                        (FZ)

1

F=A带进位循环左移一位              (FC,FZ)

算术运算

1000

X

置FC=CN                               (FC)

1001

X

F=A加B                            (FC,FZ)

1010

X

F=A加B加FC                       (FC,FZ)

1011

X

F=A减B                            (FC,FZ)

1100

X

F=A减1                             (FC,FZ)

1101

X

F=A加1                             (FC,FZ)

1110

X

(保留)

1111

X

(保留)

*表中“X”为任意态,下同

四、实验连线

1. 按图1-3连接实验电路,并检查无误。图中将用户需要连接的信号用圆圈标明(其它实验相同)。

         6100cb74a8fe46a9bb2f3170028e6183.png

 

图1-3  实验接线图

2. 将时序与操作台单元的开关KK2置为‘单拍’档,开关KK1、KK3置为‘运行’档。

3. 打开电源开关,如果听到有‘嘀’报警声,说明有总线竞争现象,应关闭电源,重新检查接线,直到错误排除。然后按动CON单元的CLR按钮,将运算器的A、B和FC、FZ清零。

4. 用一根USB线连接PC机和实验箱。

五、实验内容及实验步骤

1.用输入开关向暂存器A置数。

① 拨动CON单元的SD27…SD20数据开关,形成二进制数01100101(或其它数值),数据显示亮为‘1’,灭为‘0’。

② 置LDA=1,LDB=0,连续按动时序单元的ST按钮,产生一个T4上沿,则将二进制数01100101置入暂存器A中,暂存器A的值通过ALU单元的A7…A0八位LED灯显示。

2.用输入开关向暂存器B置数。

  ① 拨动CON单元的SD27…SD20数据开关,形成二进制数10100111(或其它数值)。

  ② 置LDA=0,LDB=1,连续按动时序单元的ST按钮,产生一个T4上沿,则将二进制数10100111置入暂存器B中,暂存器B的值通过ALU单元的B7…B0八位LED灯显示。                         

3.改变运算器的功能设置,观察运算器的输出。

在给定暂存器A、B的情况下,置ALU_B=0、LDA=0、LDB=0,然后按表1-1改变运算器的功能设置即S3、S2、S1、S0和Cn的数值(状态),并观察数据总线LED显示灯显示的结果,填入运算结果表1-2中。并与运算器逻辑功能表1-1的理论值进行比较分析。

4.通过软件中的数据通路图来观测实验结果

如果实验箱和PC联机,则可通过软件中的数据通路图来观测实验结果。     

表1-2  运算结果表

运算类型

A

B

S3 S2 S1 S0

CN

F理论值

F实测值

FC

FZ

逻辑运算

65

A7

0  0  0  0

X

01100101

01100101

0

0

65

A7

0  0  0  1

X

10100111

10100111

0

0

65

A7

0  0  1  0

X

00100101

00100101

0

0

65

A7

0  0  1  1

X

11100111

11100111

0

0

65

A7

0  1  0  0

X

10011010

10011010

0

0

移位运算

65

A7

0  1  0  1

X

11001010

11001010

0

0

65

65

A7

A7

0  1  1  0

0

11001010

11001010

0

0

1

00110010

00110010

0

0

65

65

A7

A7

0  1  1  1

0

10110010

10110010

1

0

1

11001010

11001010

1

0

算术运算

65

A7

1  0  0  0

X

11001010

11001010

0

0

65

A7

1  0  0  1

X

01100101

01100101

1

0

65

65

A7

A7

1  0  1  0(FC=0)

X

00000011

00000011

0

0

1  0  1  0(FC=1)

X

00001100

00001100

1

0

65

A7

1  0  1  1

X

00001101

00001101

1

0

65

A7

1  1  0  0

X

10111110

10111110

1

0

65

A7

1  1  0  1

X

01100100

01100100

0

0

 

六、思考题

1.CON 单元的控制信号 LDA 和 S0 有区别吗?

 

是有区别的。LDA是将地址单元中的数据内容加载到累加器中,而S0是将累加器中的数据内容送给地址单元。

 LDA 和 S0 是两个不同的控制信号。LDA(Load A)通常用于指示将数据加载到寄存器 A,而 S0 是一个更通用的控制信号,它可以用于控制多个操作,如选择输入或输出设备、控制数据传输方向等。具体的功能取决于电路设计和上下文。

 

2.实验电路中数据开关设置的数据可以同时送暂存器 A 和 B 两个寄存器吗?如果可以,该如

何操作?

 

可以同时送到A和B寄存器。需要在数据开关的控制下,将数据同时送到A和B寄存器中

a. 将数据开关设置为所需的数据值。
b. 为寄存器 A 和 B 同时提供一个加载信号(例如,将 LDA 和 LDB 信号设置为高电平)。
c. 在适当的时钟边沿(例如上升沿或下降沿),数据将同时加载到寄存器 A 和 B。

 

七、实验分析和心得体会

在实验过程中,首先要学会看懂电路的每个单元代表的区域名称,接着要学会看懂电路图以及按着步骤一步一步来,实验要完整无误的进行,确保实验接线图连接的正确性。这样才能够保证在进行实验时数据通路的流向以及数据的准确性,从而达到实验目的。并且要在实验过程中理解每一步骤的原因,也加强自己的理解性和掌握程度。

 

这篇关于计算机组成原理--运算器实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269106

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu4407容斥原理

题意: 有一个元素为 1~n 的数列{An},有2种操作(1000次): 1、求某段区间 [a,b] 中与 p 互质的数的和。 2、将数列中某个位置元素的值改变。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.Inpu

hdu4059容斥原理

求1-n中与n互质的数的4次方之和 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWrit