西农大计算机组成原理实验报告计算机122SunLian.docx
《西农大计算机组成原理实验报告计算机122SunLian.docx》由会员分享,可在线阅读,更多相关《西农大计算机组成原理实验报告计算机122SunLian.docx(34页珍藏版)》请在冰豆网上搜索。
西农大计算机组成原理实验报告计算机122SunLian
计算机组成原理实验报告
一、实验计算机的组成
1、软件组成
软件系统的组成和实现功能:
软件:
解释BASIC语言
汇编语言支持
监控程序(指令)级模拟
教学机模拟:
运算器、
控制器模拟(微程序级或硬连线控制器级模拟)
主存储器模拟,总线、接口模拟
输入设备/输出设备模拟
运行环境:
PC机,Windows系统
从计算机组成原理课程教学实验的角度看,该计算机软件系统组成也是完整的,支持简单的高级语言BASIC(包括浮点运算指令和基本函数运算功能),汇编语言(支持基本伪指令功能)和二进制的机器语言,配有自己的监控程序,以及PC机仿真终端程序等。
2、硬件组成
硬件系统的组成和实现功能:
软件:
解释BASIC语言
汇编语言支持
监控程序
硬件:
运算器,控制器(多种实现:
微程序或硬连线控制器,中小规模器件或FPGA器件实现)
主存储器,总线,接口
输入设备,输出设备
硬件与电路:
逻辑器件和设备
由以上可知,该计算机硬件系统组成中,功能部件是完整齐备的,运算器、控制器、存储器、输入输出接口、计算机总线等配备齐全,还可以接通PC机仿真终端执行输入输出操作,同时实现了微程序和硬连线两种方案控制器。
从CPU的具体设计和实现技术来说,既支持用中小集成度器件实现CPU的方案,也支持选用高集成度的FPGA门阵列实现CPU的方案,体现了CPU系统设计的最新水平。
运算器与控制器
1)控制器
控制器概述:
控制器分别用微程序方式与硬布线方式两种方案实现,实验者可以方便地选择使用其中任何一种。
这能方便地比较两种控制器各自的优缺点,和设计过程的相同的、不同的步骤与方法。
在选用器件时,微程序方案中选用了美国AMD公司的微程序定序器Am2910芯片,保证微程序设计的规范与实用性;控存体选用唯读存储器(ROM)芯片,通过对该ROM的编程写入方式支持动态微程序设计。
硬布线方案中,节拍逻辑与时序控制信号形成部件(组合逻辑线路)选用了GAL20V8现场可编程器件和MacroArrayCMOSHighdensity(简写为MACH)器件,这对简化控制器的逻辑设计与实现至关重要,也有利于进一步掌握数字系统设计自动化和逻辑模拟的新知识。
控制器部件详细介绍:
组合逻辑的控制器主要由程序计数器PC(选用运算器内的一个通用累加器实现,未明显表示的图中)、指令寄存器IR、节拍发生器Timing、和时序控制信号产生部件MACH435(或MACH5)芯片等组成。
硬布线控制器(又称组合逻辑)的主体部分由程序计数器PC(16位长度,是Am2901的R5),指令寄存器IR(16位长度),节拍发生器(4位触发器的节拍状态)和时序控制信号形成部件(1片100条引脚的现场可编程的CPLD器件)4部分组成。
程序计数器PC用于保存下一条将要执行的指令在内存中的单元地址,有增量功能(PC+1→PC),并可以接受新的指令地址。
在到内存读取指令之前,需要把PC中的内容送到内存地址寄存器,给出被读指令在内存中的单元地址。
在教学计算机中,程序计数器PC选用运算器内部的一个16位的累加器实现。
指令寄存器IR用于保存当前正在执行的指令的主要内容,在读取指令的周期接收从内存中读出来的一条指令,以便提供本指令的操作码和使用的数据或者数据地址。
在教学计算机中,指令寄存器IR选用两片由8位的D触发器构成的寄存器实现。
节拍发生器Timing用于使用几个触发器的不同的编码状态来区分和标示指令的执行步骤,指令执行步骤的衔接是通过节拍发生器的编码状态转换完成的。
在教学计算机中,节拍发生器Timing选用一片简单PLD器件GAL20V8芯片实现。
时序控制信号产生部件用于产生并提供每一条指令的每一个执行步骤使用的全部时序控制信号,它要依据指令寄存器的操作码和节拍发生器的状态编码信号,可能还有运算器运算产生的标志位信号(C、Z、S)等,通过由与_或两级门电路产生并提供出一条指令的一个执行步骤使用的全部控制信号,这些信号可以直接送到每个被控制对象,或者经过译码器送到被控制对象。
在教学计算机中,时序控制信号产生部件选用一片有100个引脚的CPLD器件实现,两个译码器选用三八译码器74LS138芯片实现。
教学计算机的硬布线控制器组成框图
2)运算器
运算器概述:
运算器中配置了两组独立的8位字长的运算器,各自由2片位片结构的运算器器件组成;还有四位的状态标志寄存器和教学实验所需的相关逻辑部件。
全部的算术与逻辑运算均在这里完成;还完成几种寻址方式的实际地址计算;它也是主要的数据、地址传送的通路。
要特别说明的一点是,堆栈指针SP和控制器中的程序计数器PC,都是用这里的几个通用寄存器来实现的,以节省器件与简化实验机的实现。
运算器部件详细介绍:
教学计算机的运算器部件的主体由4片4位的运算器芯片Am2901彼此串接构成。
它输出16位的数据运算的结果(用Y表示)和4个结果特征位(用Cy、F=0000、OVER、F15标志),它的输入(用D表示)只能来自于内部总线。
确定运算器运算的数据来源、运算功能、结果处置方案,需要使用控制器提供的I8~I0、B3~B0、A3~A0共17个信号。
运算器的输出直接连接到地址寄存器AR的输入引脚,用于提供地址总线的信息来源。
运算器的输出还经过两个8位的244器件的控制(使用DCI译码器的/YTOIB信号)被送到内部总线IB,用于把运算器中的数据或者运算结果写入内存储器或者输入输出接口芯片。
运算器产生的4个结果特征位的信息需要保存,为此必须设置一个4位的标志寄存器FLAG,用于保存这4位结果特征信息,标志寄存器的输出分别用C、Z、V、S表示。
控制标志寄存器何时和如何接收送给它的信息,需要使用控制器提供的SST2~SST0三位信号。
运算器还需要按照指令执行的要求,正确地得到最低位的进位输入信号,最低位和最高位的移位输入信号,为此还需要配置另外一个标示为SHIFT的线路,在控制器提供的SSH和SCI1~SCI0三位信号的控制下,产生运算器最低位的进位输入信号,最低位和最高位的移位输入信号。
运算器主要芯片及功能介绍:
Am2901芯片是一个4位的位片结构的、完整的运算器器件,其内部组成如下图所示,作为教学内容的实例具有很好的典型性。
Am2901芯片的内部组成框图
1).Am2901的内部组成
从图上可以看到,该芯片的第一个组成成分是一个4位的算逻运算部件ALU,它的输出为F,两路输入分别用R和S标记,还有送入ALU最低位的进位信号Cn。
它能实现R+S、S-R、R-S三种算术运算功能,和R∨S、R∧S、R∧S、R⊕S、R⊕S五种逻辑运算功能。
在给出运算结果的同时,还送出向高位的进位输出信号Cn+4,溢出标志信号OVR,最高位的状态信号F3(可能用作符号位),以及运算结果为零的标志信号F=0000。
该芯片的第二个组成成分是由16个4位的通用寄存器组成的寄存器组。
它是一个用双端口(A口和B口)控制读出、单端口(B口)控制写入的部件。
为了对其进行读写,需通过A地址(寄存器编号)、B地址(寄存器编号)指定被读写的寄存器。
两路读出数据分别用A、B标记,经锁存器线路可以送到ALU的R、S输入端的多路选择器,A口读出数据还可以用作该芯片的可选输出信号之一。
寄存器组的写入数据由一组多路选择器给出,并由B地址选择写入的寄存器。
该芯片的第三个组成成分是一个4位的Q寄存器,主要用于实现硬件的乘法、除法指令,能对本身的内容完成左、右移位的功能,能接收ALU的输出,输出送到ALU的S输入端。
该芯片的其余组成成分是5组多路数据选择器电路,每组都由4套电路组成,一套电路对应一个数据位,通过它们,实现芯片内部上述三个组成成分之间的联系,也实现该芯片和其外界信息的输入与输出操作,这包括:
一组4位的二选一器件控制把运算器内的两路4位输出数据(A口数据、ALU的运算结果数据)送出芯片,标记为Y;
一组4位的二选一和
一组4位的三选一器件,分别用于组合外部送来信息D,通用寄存器组的双路读出信息A和B,乘商寄存器Q的信息,以决定ALU的两路输入R和S的数据来源;
一组4位的三选一器件,完成从ALU的输出结果,ALU输出结果左移一位的值,ALU输出结果右移一位的值中选择其一,作为通用寄存器的写入信息,实现的是通用接存器接收及移位功能。
在左右移位时,其最高位和最低位可以送出或接收相应位的信息,图中用RAM3和RAM0标记,它们都是由能进行双向传送的三态门电路实现的;
一组4位的三选一器件,用于完成Q寄存器内容的左右移位,或接收ALU的输出结果的操作功能。
在进行左右移位操作时,与通用寄存器移位类似的是,这里存在Q3和Q0的双向传送问题。
2)AR由什么芯片构成,引脚,读写工作原理
结构型式,其主要电器特性的典型值如下(不同厂家具体值有差别):
型号TPD PD
读写工作原理:
输出端Q0~Q7可直接与总线相连。
当三态允许控制端OE为低电平时,Q0~Q7为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,Q0~Q7呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端LE为高电平时,Q随数据D而变。
当LE为低电平时,D被锁存在已建立的数据电平。
当LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mV。
74Ls373内部结构图如下所示:
引脚:
D0~D7数据输入端
OE三态允许控制端(低电平有效)
LE锁存允许端
Q0~Q7输出端
真值表:
Dn
LE
OE
Qn
H
H
L
H
L
H
L
L
X
L
L
Q0
X
X
H
高阻
3)查找送往AR的PC是2901中的R几?
R5
4)74LS244及74LS245的内部结构、功能
74LS244为3态8位缓冲器,一般用作总线驱动器。
74LS244没有锁存的功能。
地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。
8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。
当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。
它主要用于三态输出,作为地址驱动器、时钟驱动器、总线驱动器和定向发送器等。
其真值表如下:
74Ls244真值表
74LS244真值表
L表示低电平
H表示高电平
X表示不定状态
Z表示高阻态
74ls245
74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)
DIR=“1”,信号由A向B传输;(发送)当CE为高电平时,A、B均为高阻态。
由于P2口始终输出地址的高8位,接口时74LS245的三态控制端1G和2G接地,P2口与驱动器输入线对应相连。
P0口与74LS245输入端相连,E端接地,保证数据线畅通。
8051的/RD和/PSEN相与后接DIR,使得RD和PSEN有效时,74LS245输入(P0.1←D1),其它时间处于输出(P0.1→D1)。
5)138译码器与139译码器比较
139译码器内部
138译码器内部为38译码器,139是两个独立的24译码器。
二、实验机工作原理
2.1、TEC-XP计算机组成原理实验箱简介
1.教学机系统配置了两个不同实现方案的CPU系统,一个CPU沿袭传统的设计思路,由中小规模的器件组成;另一个CPU参考国外著名大学的设计思路用大规模的FPGA器件设计实现。
2.教学机的机器字长16位,即运算器、主存、数据总线、地址总线都是16位。
3.指令系统支持多种基本寻址方式。
其中一部分指令已实现,用于设计监控程序和用户的常规汇编程序,尚保留多条指令供实验者自己实现。
4.主存最大寻址空间是18K字,由基本容量为8K(字节或16位的字)的ROM和2K(字节或16位的字)的RAM存储区域组成。
还可以进一步完成存储器扩展的教学实验。
5.原理上讲,主时钟脉冲的频率可在几百KHz~近2MHz之间选择。
6.运算器由4片位片结构器件级联而成,片间用串行进位方式传递进位信号。
ALU实现8种算术与逻辑运算功能,内部包括16个双端口读出、单端口写入的通用寄存器,和一个能自行移位的乘商寄存器。
设置C(进位)、Z(结果为0)、V(溢出)和S(符号位)四个状态标志位。
7.控制器采用微程序和硬布线两种控制方案实现,可由实验者自由选择。
实验人员可方便地修改已有设计,或加进若干条自己设计与实现的新指令,新老指令同时运行。
8.主机上安装有两路INTEL8251串行接口,一路出厂时已经实现,可直接接计算机终端,或接入一台PC机作为自己的仿真终端;另一路保留学生扩展实现。
选用了MAX202倍压线路,以避免使用+12V和-12V电源。
9.在主板的右下方,配置了完成中断教学实验的全套线路,可以实现三级中断和中断嵌套。
10.系统实现多种运行方式,可以单步/连续运行主存储器的指令或程序,也可以执行一条或若干条通过数据开关手动置入的指令。
11.主板上设置数据开关和微型开关、按键和指示灯,支持最低层的手工操作方式的输入/输出,通过指示灯来显示重要的数据或控制信号的状态,可以完成机器调试和故障诊断。
板上还有支持教学实验用的一定数量的跳线夹。
12.实验机硬件系统,全部功能部件分区域划分在大一些的水平放置的一块印制电路板的不同区域,所有器件都用插座插接在印制板上,便于更换器件。
13.实验计算机使用单一的5V、最大电流3A的直流模块电源,所耗电流在1.5~2.5A之间。
电源模块安装在水平电路板右上角位置,交流220V通过电源接线插到机箱后侧板,经保险丝、开关连接到电路板上,开关安放在机箱右侧靠后位置,方便操作且比较安全。
13.两路的串行接口的接插座安放在机箱后侧板以方便接线插拔和机箱盖的打开关闭。
2.2、教学计算机的指令执行流程
按照TEC-XP教学计算机指令的功能和它们的执行步骤,可把指令划分成为如下4组。
A组:
基本指令ADD,SUB,AND,OR,XOR,CMP,TEST,MVRR,
INC,DEC,SHR,SHL,JR,JRC,JRNC,JRZ,JRNZ
扩展指令ADC,SBB,NOT,RCL,RCR,ASR,STC,CLC,EI,DI,JRS,JRNS,JMPR
B组:
基本指令LDRR,STRR,PUSH,POP,PSHF,POPF,MVRD,IN,OUT,JMPA,RET
C组:
扩展指令CALR,LDRA,STRA,,LDRX,STRX
D组:
基本指令CALA
扩展指令TRET
A组指令完成的是通用寄存器之间的数据运算或传送,和其它几项特殊的操作,例如CLC和STC指令,在读取指令之后可一步完成。
B组指令完成的是一次内存读、写操作,或一次IO设备的读、写操作,在读取指令之后可二步完成,第一步用于向地址寄存器送入16位的(或8位的IO端口)地址,第二步完成内存或外围设备的读、写操作。
C组指令中的4条指令,完成的是2次内存储器的读、写操作,正常情况要用4步完成,每一次内存储器的读、写操作,都要经过传送地址和数据读写这样两步;但在这里却只需要3步即可,因为头一次读出的数据就是下一次读写操作要使用的地址信息,读出之后直接(或经过一次加法运算)将其写入地址寄存器,就可以省掉第二次内存储器的读、写操作过程中的需要的传送地址的步骤。
CALR指令先用2步保存PC内容(子程序调用指令的后续指令地址)到堆栈,第3步把寄存器中的子程序入口地址传送到程序计数器PC中。
D组指令完成的也是2次内存储器的读、写操作,在读取指令之后可4步完成。
全部指令又被划分为基本指令(29条)和扩展指令(19条)两大类,两类指令合在一起才构成一套比较完整的指令系统。
基本指令已经由生产厂家完成设计并实现,被用来支持监控程序和简单的汇编语言程序设计,设计结果作为教学内容的实例写进了教材中。
扩展指令则保留给实验者在控制器部件的教学实验中自己动手来设计和实现,对扩展指令的设计结果在教师用书中给出。
在运行BASIC语言解释程序时,会用到大部分的扩展指令,全指令集的设计结果已经做成一个文件提供给使用者,只需把这个文件的内容下载到MACH芯片中,教学计算机就可以支持前面给出的全部48条指令。
教学计算机的使用者还可以设计实现自己选择的其他一些指令。
接下来是划分指令执行步骤和安排每个步骤所执行的处理功能,得到的设计结果,即指令执行流程如图2-17所示。
在4组指令中,属于B组的指令都是基本指令,属于C组的指令都是扩展指令,在A组、D组中都同时含有基本指令和扩展指令。
无
读取指令
B组指令
D组指令
C组指令
0110
0101
0011
0010
0111
传送地址
AR地址
ARPC,
PCPC+1
寄存器之间的
数据运算或传送
0000
读写内存
或寄存器间传送
R40,关中断
0100
A组指令
读、写内存
或读、写外设
读内存,
IR读出指令
检查有无
中断请求
传送地址
AR地址
B、C、D组指令
1000按RESET键
教学计算机的指令执行流程图
图中的每一个方框代表一个节拍,表示指令的一个执行步骤。
方框内部的文字简要说明在该节拍中应该完成的主要操作功能。
方框之间的带箭头的连线表示节拍状态的转换次序和方向。
箭头线旁边有文字说明的,表示从前一个节拍转换为当前节拍的条件,没有文字说明的,表示无条件地从前一个节拍转换为当前节拍。
每个方框左上角的4位数字,是为该节拍分配的节拍状态编码。
前面已经讲到,把教学计算机全部指令按其应完成的功能和执行步骤情况,划分成A、B、C、D共4组。
从指令流程图上可以看到,在完成读取指令之后,即已经得知指令操作码的前提下,节拍发生器就按这4类指令的划分情况,分别进入到各自不同的节拍序列。
其中状态编码为1000的节拍完成把0值送到程序计数器PC,为启动监控程序做好准备,只在教学计算机系统加电启动时被执行一次,在教学计算机正常运行的过程中不会进入这个节拍。
状态编码为0000和0010的两个节拍完成读取指令的功能,公用于所有指令,是每一条指令开始执行时必须首先完成的两个操作步骤。
图中用虚线菱形框表示的“响应与处理中断请求”的动作,在相邻两条指令进行切换的时刻,即前一条指令已经结束、下一条指令尚未开始的时刻,完成检查有无中断请求的功能,这个检查步骤也公用于所有指令,并依据检查结果进行不同的处理,无中断请求时,就开始下一条指令的执行过程,有中断请求时则进入中断响应和处理的过程,处理起来略显复杂,等到讲解中断的时候再详细说明。
其他节拍用于不同指令,具体说明如下。
A组指令将进入标记为0011状态的节拍,用1步完成寄存器之间的数据运算或传送;
B组指令将进入标记为0110状态的节拍,再经过标记为0100的节拍,用2步完成1次对主存储器或IO设备的读写操作;
C组指令将进入标记为0110状态的节拍,再经过标记为0111的节拍、0101的节拍,用3步完成2次内存储器的读写操作,前2个节拍完成读主存储器的同时,还把读出内容传送到地址寄存器,第3个节拍直接使用该地址完成第二次对主存储器的读写操作;CALR指令是一次内存写操作和一次寄存器之间的数据传送操作,也是3个步骤完成。
D组指令,将进入标记为0110状态的节拍,再经过标记为0100的节拍、0111的节拍、0101的节拍,用4步完成2次内存储器的读写操作,每一次内存储器的读写操作各自用2步完成。
2.3、教学计算机的时序控制信号形成部件
2.3.1.确定控制器应提供的控制信号
教学计算机的总体组成情况,部件之间的连接关系,即数据传送的通路,如下图所示:
教学计算机的数据通路与微命令的控制作用
2.3.2、教学计算机各部件的连接关系:
运算器部件的输入只来自于教学机的内部总线。
运算器部件的输出可以:
(1)直接送地址寄存器;
(2)经开关门送到内部总线。
内部总线可以接收5路数据来源:
(1)运算器的16位输出数据;
(2)16位的中断向量;
(3)指令寄存器的低8位内容和8位的补码符号扩展;
(4)8位的程序状态字内容;(5)16位数据开关送来的手拨数据。
请注意,内部总线还可以经双向三态门接收从外部总线送来数据或指令,这是通过另外的控制方式实现的,与对前5路数据来源的选择分开来处理,逻辑关系上显得更加合理。
内部总线的内容可以送到:
(1)运算器的输入端;
(2)指令寄存器;
(3)状态位寄存器;(4)通过双向三态门送到外部总线。
两个需要控制其是否接受输入的寄存器:
(1)指令寄存器,输入来自内部总线,保存的是指令的第一个字的内容;
(2)地址寄存器,输入来自运算器的输出,其输出就是地址总线,用作为访问内存的地址或IO设备的端口的地址。
下面开始对控制器需要提供出来的控制信号进行详细的说明。
对运算器部件,应该向它提供23位的控制信号,包括:
4位的A口地址、4位的B口地址(累加器编号),用于选择读写的通用寄存器;
3组3位的控制码I8~I6,I5~I3,I2~I0,用于选择结果处置方案、运算功能、数据来源;
2组共6位的控制信号,控制配套的2片GAL20V8,
3位SST,用于控制C、Z、V、S这4个状态标志位的状态变化,
1位SSH和2位SCI,用于控制产生运算器最低位的进位输入信号,以及运算器最高、最低位(累加器和Q寄存器)的移位输入信号
在完成脱机情况下的运算器实验时,使用24位的微型手拨开关向运算器提供这23位控制信号。
当计算机正常运行时,将改由控制器向运算器提供这23位控制信号。
对内存储器和I/O接口部件,控制器主要向它们提供读写操作用到的地址信息和全部控制信号。
为实现对存储器和I/O接口的读写操作控制,必须指明:
要还是不要读写内存或I/O接口,是读写内存储器还是I/O接口,到底是读还是写操作。
可以把这些要求组合成以下5种情形:
写内存,在写数据到内存时要用,用于教学机的STO、PUSH等指令的写内存操作;
读内存,在从内存读数据时要用,用于教学机的LOD、POP等指令的读内存操作;
写接口,在写数据到接口时要用,用于教学机的OUT指令的写I/O接口操作;
读接口,在从接口读数据时要用,用于教学机的IN指令的读I/O接口操作;
既不读写内存也不读写接口,在许多指令的大部分时间里是有这种运行需求的,此时应禁止内存和接口的读写操作。
设计中一定不能忘记这一使用要求。
在TEC-2000教学计算机系统中,通过3位编码(/MIO,REQ,/WE)来区分上述5种情形,具体安排如下。
/MIOREQ/WE操作功能
000内存写
001内存读
010I/O写
011I/O读
1××无读写
可以看到,/MIO信号为低,要读写内存或I/O接口,为高则不读写内存和I/O接口;
在/MIO信号为低时,REQ信号为低,