计算机组成原理TEC-4实验手册(含实验步骤)完整6个实验 三个程

更新时间:2024-04-26 00:26:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

TEC—4计算机组成原理实验系统

教师实验指导书

清华大学科教仪器厂

2004年11月

目 录

前言???????????????????????????2 TEC—4计算机组成原理实验系统?????????????? 3

基本实验

运算器组成实验??????????????????????13 双端口存储器原理实验???????????????????18 数据通路组成实验?????????????????????22 微程序控制器组成实验???????????????????28 CPU组成和机器指令执行实验????????????????40 中断原理实验???????????????????????45

课程设计

硬布线控制器的设计与调试?????????????????50 流水微程序控制器的设计与调试???????????????61 流水硬布线控制器的设计与调试???????????????70

附录???????????????????????????78

1

前 言

计算机组成原理是大学计算机专业的一门专业基础课程。清华同方股份有限公司和北京邮电大学白中英教授合作,开发出TEC—4计算机组成原理实验系统。在这个实验设备上,既能够做计算机组成原理课程的实验,又能够进行计算机系统结构课程的流水实验。该实验设备计算机模型简单、实用,运算器数据通路、控制器、控制台各部分划分清晰,为学生提供了很多的动手条件,有利于提高学生学习的主动性和创造性。

为了更好地使用TEC—4计算机组成原理实验系统,我们编写了这本《教师用实验指导书》。它是TEC—4计算机组成原理实验系统的配套资料。本书提供了9个实验,其中6个基本实验,3个课程设计。对每个实验提供了接线图、实验步骤及实验结果;对3个课程设计提供了参考方案。当然,每个实验的接线方法或者源程序绝不是唯一的,实验结果也会有所不同。本书提供的接线图和源程序只是许多接线方法、源程序中的一种,只能作为参考。这些接线图、源程序和实验结果都经过实际实验验证。本书的目的是希望减少教师设计、准备、调试实验的劳动,让教师把主要精力集中在提高教学质量上。各位老师在使用中如果发现错误和不妥之处,欢迎提出宝贵意见,以便将来改进。

除了本书外,TEC—4计算机组成原理实验系统还有另一本配套资料《计算机组成原理题解、题库和实验》,这是一本科学出版社出版的学生用书。该书由北京邮电大学的白中英教授和我们共同编写,可作为TEC—4计算机组成原理实验系统的使用说明书。两本资料配合使用,效果更好。

敬请读者提出宝贵意见。

清华同方股份有限公司

教学仪器设备公司

2001年1月

2

第一节 TEC—4计算机组成原理实验系统

TEC—4计算机组成原理实验系统由北京邮电大学计算机学院、清华同方教学仪器设备公司、深圳拓普威电子技术有限公司联合研制。它是一个8位计算机模型实验系统,可用于大专、本科、硕士研究生计算机组成原理课程、计算机系统结构课程的教学实验,对提高学生的动手能力、提高学生对计算机整体和各组成部分的理解、提高学生的计算机系统综合设计能力都会有很大帮助。

一、TEC—4计算机组成原理实验系统特点

1.计算机模型简单、实用,运算器数据通路、控制器、控制台各部分划分清晰。 2.计算机模型采用了数据总线和指令总线双总线体制,能够实现流水控制。

3.控制器有微程序控制器或者硬布线控制器两种类型,每种类型又有流水和非流水两种方案。 4.寄存器堆由1片ispLSI1016组成,运算器由1片ispLSI1024组成,设计新颖。 5.实验台上包括了1片在系统编程芯片ispLSI1032,学生可用它实现硬布线控制器。

6.该系统能做运算器组成、双端口存储器、数据通路、微程序控制器、中断、CPU组成与机器指令执行、流水微程序控制器、硬布线控制器、流水硬布线控制器等多种实验。 7.电源部分采用模块电源,重量轻,具有抗电源对地短路能力。 8.采用自锁紧累接接线方式,接线可靠。

二、TEC—4计算机组成原理实验系统的组成

TEC—4计算机组成原理实验系统由下述六部分组成: 1.控制台 2.数据通路 3.控制器

4.用户自选器件试验区 5.时序电路 6.电源部分

下面分别对各组成部分予以介绍。 三、电源

电源部分由一个模块电源、一个电源插座、一个电源开关和一个红色指示灯组成。电源模块通过四个螺栓安装在实验台下面。它输出+5V电压,最大负载电流3安培,内置自恢复保险功能,具有抗+5V对地短路能力。电源插座用于接交流220伏市电,插座内装有保险丝。电源开关用于接通或者断开交流220伏市电。当电源模块输出+5V时,点亮+5V红色指示灯。

四、时序发生器

时序发生器产生计算机模型所需的时序。时序电路由一个1MHz晶体振荡器、2片GAL22V10(U6和U7)组成,位于控制存储器的右边。根据本机设计,执行一条微指令需要4个时钟周期T1、T2、T3、T4,执行一条指令通常需要取指、送操作数、运算、写结果四个节拍,因此本机的基本时序如下:

3

MFT1T2T3T4W1W2W3W4图3 基本时序图图中,MF是晶体振荡器产生的1MHz基本时钟,T1、T2、T3、T4是数据通路和控制器中各寄存器的时钟脉冲,印制板上已将它们和有关的寄存器连接。T1、T2、T3、T4既供微程序控制器时使用,也供硬布线控制器使用。W1、W2、W3、W4只供硬布线控制器作指令节拍信号使用。

五、数据通路

数据通路的设计是TEC—4计算机组成原理实验系统最有特色的部分。首先它采用了数据总线和指令总线双总线形式,使得流水实验能够实现。它还使用了大规模在系统可编程器件作为运算器和寄存器堆,使得设计简单明了,可修改性强。数据通路位于实验系统的中部。

图4 是数据通路总体图,下面介绍图中个主要部件的作用。 1.运算器ALU

运算器ALU由一片ispLSI1024(U47)组成,在选择端S2、S1、S0控制下,对数据A和B进行加、减、与、直通、乘五种运算,功能如下:

表1 运算器功能表

选 择 S2 S1 0 0 0 0 0 1 0 1 1 0 S0 0 1 0 1 0 操 作 A & B A & A(直通) A + B A - B A(低4位) X B(低4位)

进位C只在加法运算和减法运算时产生。加运算中,C表示进位;减运算中,C代表借位。加、减运算产生的进位(借位)在T4的上升沿送入C寄存器保存。与、乘、直通操作

4

WRD

LDDR1(LDDR2) M1(M2)

S2、S1、S0 TJ

NC0、NC1、NC2 、NC3、NC4

上述控制信号连同时序电路提供的时序、控制信号位于控制器的下边。

2.微地址寄存器?AR(74HC273)

微地址寄存器?AR(74HC273)对控制存储器提供微程序地址。当CLR# = 0时,将其复位到零,使微程序从000000B地址开始执行。在T1的上升沿将新的微程序地址?D0—?D5打入微地址寄存器?AR。控制台开关SWC直接连到74HC273,作为μD6,用于实现读寄存器操作KRR。

3.跳转开关JUMP 这是一组6个跳线开关(J1)。当用短路子将它们连通时,微地址寄存器?AR从本实验系统提供的微程序地址译码电路得到新的微程序地址?D0—?D5。当他们被断开时,用户提供自己的新微程序地址?D0—?D5。这样用户能够使用自己设计的微程序地址译码电路。 4.微程序地址译码电路DECORDER 微程序地址译码电路DECORDER产生后继微程序地址,它由2片74HC32(U2、U3)和2片74HC08(U4、U5)构成。微程序地址译码电路数据来源是: 控制存储器产生的后继微程序地址?A0—?A5,控制存储器产生的标志位P0—P3,指令操作码IR4—IR7,进位标志C,中断请求标志INTQ,控制台方式标志位SWA、SWB。

七、控制台

控制台位于TEC—4计算机组成原理实验系统的下部,主要由若干指示灯和若干拨动开关组成,用于给数据通路置数、设置控制信号、显示各种数据使用。

1.SW7—SW0

数据开关,直接接到数据通路部分的数据总线DBUS上,用于向数据通路中的器件置数。开关拨到上面位置时输出1,拨到下面位置时输出0。SW7是最高位,SW0是最低位。

2.K15—K0

双位拨动开关。开关拨到上面位置时输出1,拨到下面位置时输出0。实验中用于模拟数据通路部分所需的电平控制信号。例如,将K0与LDDR1连接,则K0向上时,表示置LDDR1为1;K0向下时,表示置LDDR1为0。

3.数据指示灯D7—D0

10

为1时,允许对寄存器堆RF进行写操作。

为1时允许对操作数寄存器DR1加载。此信号也可用于作为对操作数寄存器DR2加载。

当M1 = 1时,操作数寄存器DR1从数据总线DBUS接收数据;当M1 = 0时,操作数寄存器DR1从寄存器堆RF接收数据。此信号也可用于作为操作数寄存器DR2的数据来源选择信号。 选择运算器ALU的运算类型。 暂停微程序运行。 备用

8个红色发光二极管,用于显示数据总线DBUS或者指令寄存器IR的状态。D7是最高位,D0是最低位。双位开关IR/DBUS拨到IR位置时,显示指令寄存器IR的状态;双位开关IR/DBUS拨到DBUS位置时,显示数据总线DBUS状态。

4.地址指示灯A7—A0

8个绿色发光二极管,用于显示双端口存储器的地址寄存器内容。A7是最高位,A0是最低位。双端口存储器IDT7132有两个地址端口,地址寄存器AR1提供左端口地址A7L—A0L,地址寄存器AR2提供右端口地址A7R—A0R。当双位开关AR2/AR1拨到AR1位置时,显示地址寄存器AR1的内容;当双位开关AR2/AR1拨到AR2位置时,显示地址寄存器AR2的内容。

5.微地址指示灯?_A5—?_A0 6个黄色发光二极管,用于显示控制存储器的地址?_A5—?_A0。?_A5是最高位,?_A0是最低位。

6.其他指示灯P3、P2、P1、P0、IE、C

6个黄色发光二极管用于显示P3、P2、P1、P0、IE、C的值。P3、P2、P1、P0是控存的微代码位,用于条件分支产生下一个微地址。C是加、减运算时产生的进位值。IE是中断允许标志。当IE = 1时,允许中断;当IE = 0时,禁止中断。

7.微动开关CLR#、QD、INTR 这三个微动开关用于产生CLR#、QD、INTR单脉冲。按一次按钮CLR#,产生一个负的单脉冲CLR#,对全机进行复位,使全机处于初始状态,微程序地址置为000000B。CLR#到时序和控制器的连接已在印制板上实现,控制存储器和数据通路部分不使用复位信号CLR#。按一次QD按钮,产生一个正的QD启动脉冲。QD和时序部分的连接已在印制板上实现。按一次INTR按钮,产生一个正的单脉冲,可用于作为中断请求信号。INTR到时序部分的连接已在印制板上实现。这三个单脉冲都有插孔对外输出,供用户设计自己的控制器和时序电路时使用。

8.单步、单拍、单指开关DB、DP、DZ DB(单步)、DP(单拍)、DZ(单指)是三种特殊的非连续工作方式。当DP = 1时,计算机处于单拍方式,按一次QD按钮,每次只执行一条微指令,发送一组T1、T2、T3、T4时序脉冲。当DZ = 1时,计算机处于单指方式。单指方式只对微程序控制器适用。在单指方式下,按一次QD按钮,计算机执行一条指令。当DB = 1时,机器处于单步方式。单步方式只对硬布线控制器适用。在单步方式下,按一次启动按钮QD,发送一组W1、W2、W3、W4时序脉冲。在使用硬布线控制器时,每条指令需要一组W1、W2、W3、W4时序脉冲,因此单步方式实际上是硬布线控制器下的单指方式。DB、DP、DZ这三个双位开关,任何时刻都只允许一个开关置1,决不允许两个或三个开关同时置1。当DB=0 且DP=0 且DZ=0时,机器处于连续工作方式。

9.控制台方式开关SWC、SWB、SWA

控制台方式开关SWC、SWB、SWA定义了TEC—4计算机组成原理实验系统的五种工作方式。在出厂时提供的标准控存中,五种工作方式定义如下:

SWC SWB SWA 工作方式 0 0 0 PR,启动程序 0 0 1 KRD,读双端口存储器

11

0 1 0 KWE,写双端口存储器 0 1 1 KLD,加载寄存器堆 1 0 0 KRR,读寄存器堆

在按CLR#按钮复位后,根据SWC、SWB、SWA选择工作方式。

PR是启动程序方式。在此方式下,首先在SW7—SW0指定启动地址,按启动按钮QD后,启动程序运行。

KRD是读双端口存储器方式。在此方式下,(1)首先在SW7—SW0置好存储器地址;按QD按钮,则将此地址打入地址寄存器AR1,并读出该地址存储器内容到数据总线DBUS。(2)每按一次QD按钮,地址寄存器AR1加1,并读出新地址存储器内容到数据总线DBUS。依次进行下去,直到按复位按钮CLR#为止。

KWE是写双端口存储器方式。在此方式下,(1)首先在SW7—SW0置好存储器地址;按QD按钮,则首先将此地址打入地址寄存器AR1,然后等待输入数据。(2)在SW7—SW0置好数据,按QD按钮,首先写数据到AR1指定的存储器单元,然后地址寄存器AR1加1,等待新的输入数据。依次进行下去,直到按复位按钮CLR#为止。

KLD是加载寄存器堆方式。此方式用于对寄存器堆加载。(1)首先在SW7—SW0置好存储器地址,按QD按钮,则将此地址打入地址寄存器AR1和地址寄存器AR2。(2)在SW7—SW0置好数据,数据的低2位D1、D0为寄存器堆中的寄存器号,按一次QD按钮,则写数据到AR1指定的存储器单元;然后将写入的数据从右端口读出,并送入指令寄存器IR。(3)在SW7—SW0置好数据,该数据为写入寄存器的数据,寄存器号由IR低2位指定。按QD按钮,则首先将此数据写入寄存器ER,然后将ER中的数据写入指定的寄存器。(4)返回(2),依次进行下去,直到按复位按钮CLR#为止。

KRR是读寄存器堆方式。此方式用于读寄存器堆中的寄存器。(1)首先在SW7—SW0置好存储器地址,按QD按钮,则将此地址打入地址寄存器AR1和地址寄存器AR2。(2)在SW7—SW0置好数据,数据的D3、D2位为寄存器堆中的寄存器号,按一次QD按钮,则写数据到AR1指定的存储器单元;然后将写入的数据从右端口读出,并送入指令寄存器IR。同时将IR3、IR2指定的寄存器送往数据总线DBUS。拨动开关IR/DBUS可看到IR的值和IR指定的寄存器的值。(3)返回(2),依次进行下去,直到按复位按钮CLR#为止。

八、用户自选器件试验区

本计算机组成原理实验系统提供了一个用户自选器件试验区,供流水微程序控制器实验、硬布线控制器实验、流水硬布线控制器实验使用。自选器件试验区包括了1个ispLSI1032器件及下载插座,把PC机和下载插座用出厂时提供的下载电缆相连,在PC机上运行ispEXPERT软件,即可对ispLSI1032器件编程和下载。利用ispLSI1032器件,可满足这三个实验中应用的逻辑电路需要。另外,为了增加灵和性,用户自选器件试验区还提供了10个双列直插插座,其中包括2个24引脚插座,3个20引脚插座,2个16引脚插座,3个14引脚插座。 除此之外,TEC—4计算机组成原理实验系统中还提供了3个接地点,供用示波器和万用表测试时使用。

12

第二节 运算器组成实验

一、实验目的

(1)掌握算术逻辑运算加、减、乘、与的工作原理。 (2)熟悉简单运算器的数据传送通路。

(3)验证实验台运算器的8位加、减、与、直通功能。 (4)验证实验台的4位乘4位功能。

(5)按给定数据,完成几种指定的算术和逻辑运算。

二、实验电路

图6示出了本实验所用的运算器数据通路图。ALU由1片ispLSI1024构成。四片4位的二选一输入寄存器74HC298构成两个操作数寄存器DR1和DR2,保存参与运算的数据。DR1接ALU的B数据输入端口,DR2接ALU的A数据输入端口,ALU的输出在ispLSI1024内通过三态门发送到数据总线DBUS7—DBUS0上,进位信号C保存在ispLSI1024内的一个D寄存器中。当实验台下部的IR/DBUS开关拨到DBUS位置时,8个红色发光二极管指示灯接在数据总线DBUS上,可显示运算结果或输入数据。另有一个指示灯C显示运算器进位信号状态。由ispLSI1024构成的8位运算器的运算类型由选择端S2、S1、S0选择,功能如表3所示:

表3 运算器运算类型选择表

选 择 S2 S1 0 0 0 0 0 1 0 1 1 0 S0 0 1 0 1 0 操 作 A & B A & A(直通) A + B A - B A(低4位) X B(低4位)

进位C只在加法运算和减法运算时产生,与、乘、直通操作不影响进位C的状态,即进位C保持不变。减法运算采用加减数的反码再加以1实现。在加法运算中,C代表进位;在减法运算中,C代表借位。运算产生的进位在T4的上升沿送入ispLSI1024内的C寄存器保存。

在SW_BUS#信号为0时,参与运算的数据通过一个三态门74HC244(SW_BUS)送到DBUS总线上,进而送至DR1或DR2操作数寄存器。输入数据可由实验台上的8个二进制数据开关SW0—SW7来设置,其中SW0是最低位,SW7是最高位。开关向上时为1,开关向下时为0。

图中尾巴上带粗短线标记的信号都是控制信号,控制信号均为电位信号。T3、T4是脉冲信号,印制板上已连接到实验台的时序电路产生的T3、T4信号上。S2、S1、S0、ALU_BUS、LD_DR2、LDDR1、M1、M2、SW_BUS#各电位控制信号用电平开关K0—K15来模拟。K0—K15是一组用于模拟各控制电平信号的开关,开关向上时为1,开关向下时为0,每个开关无固定用途,可根据实验具体情况选用。S2、S1、S0、ALU_BUS、LDDR2、LDDR1为高电平有效,SW_BUS#为低电平有效。M1=1时,DR1选择D1—A1作为数据输入端;M1=0时,DR1选择D0—A0作为数据输入端。当LDDR1=1时,在T3的下降沿,选中的数据被打入DR1寄存器。M2=1时,DR2选择D1—A1作为数据输入端;M2=0时,DR2选择D0—A0作为数据输入端。当LD_DR2=1时,在T3的下降沿,选中的数据被打入DR2寄存器。

13

CC........D7D6D5D4D3D2D1D08个指示灯S2S1S0T4S2S1S0CLKALUOEALU_BUSB7B6B5B4B3B2B1B0T3LDDR1M1A7A6A5A4A3A2A1A0。S74HC298DR1H74HC298DR1L74HC298DR2H74HC298DR2L。ST3LDDR2M2D1C1B1A1D0C0B0A0D1C1B1A1D0C0B0A0............SW_BUS74HC244图6 运算器数据通路实验电路图

SW7SW6SW5SW4SW3SW2SW1SW0D1C1B1A1D0C0B0A0D1C1B1A1D0C0B0A0....SW_BUS#。14

数据总线DBUS有5个数据来源:运算器ALU,寄存器堆RF,控制台开关SW0—SW7,双端口存储器IDT7132和中断地址寄存器IAR。在任何时刻,都不允许2个或者2个以上的数据源同时向数据总线DBUS输送数据,只允许1个(或者没有)数据源向数据总线DBUS输送数据。在本实验中,为了保证数据的正确设置和观察,请令RS_BUS# = 1,LRW = 0,IAR_BUS# = 1。

为了在实验中,每次只产生一组T1、T2、T3、T4脉冲,需将实验台上的DP、DB、DZ开关进行正确设置。将DP开关置1,将DB、DZ开关置0,每按一次QD按钮,则顺序产生T1、T2、T3、T4各一个单脉冲。本实验中采用单脉冲输出。

三、实验设备

(1)TEC-4计算机组成原理实验系统1台 (2)双踪示波器一台 (3)直流万用表一只 (4)逻辑测试笔一支

四、实验任务

(1)按图6所示,正确连接运算器模块与实验台上的电平开关K0—K15。由于运算器的C和C指示灯、8位数据开关SW0—SW7、T3、T4的连线已由印制电路板连好,故接线任务仅仅是完成有关控制信号与电平开关K0—K15的连线。正确设置开关DZ、DB、DP。用数据开关SW0—SW7向DR1和DR2寄存器置数。

1. 置ALU_BUS = 0,关闭ALU向数据总线DBUS的输出;置SW_BUS# = 0,开启数据开关SW0—SW7向数据总线DBUS的输出。注意,对于数据总线DBUS(或者其他任何总线),在任一时刻,只能有一个数据源向它输出。置IR/DBUS开关于DBUS位置,在数据开关SW0—SW7上设置各种数据,观察数据指示灯状态是否与数据开关状态一致。

2. 置M1=1,选择DBUS作为DR1的数据源;置LDDR1=1,按QD按钮,则将DBUS的数据打入DR1。置M2=1,选择DBUS作为DR2的数据源;置LDDR2=1,按QD按钮,则将DBUS的数据打入DR2。向DR1存入01010101,向DR2存入10101010。

3. 置SW_BUS# = 1,关闭数据开关SW0—SW7对数据总线DBUS的输出;置ALU_BUS = 1,开启ALU 对DBUS的输出。选择S2 = 0、S1 = 0、S1 = 1,使运算器进行直通运算,通过DBUS指示灯验证DR2中的内容是否为第2步设置的值。令S2 = 0、S1 = 1、S0 = 0,使运算器进行加运算,通过DBUS指示灯验证DR1中的内容是否为第2步设置的值。在表4中填入控制信号状态与DBUS显示状态。

表4 DR1、DR2设置值检查 ALU_BUS SW_BUS# 寄存器内容 S2 S1 S0 DBUS DR1 (01010101)、DR2 (10101010) DR1 (01010101)、DR2 (10101010)

(2)验证运算器的算术运算和逻辑运算功能。

(2)验证运算器的算术运算和逻辑运算功能。

1.令DR1 = 01100011B,DR2 = 10110100B,正确选择S2、S1、S0,依次进行加、减、与、直通,乘实验 ,记下实验结果(数据和进位)并对结果进行分析。

15

2. 令DR1 = 10110100B,DR2 = 01100011B,正确选择S2、S1、S0,依次进行加、减、与、直通,乘实验 ,记下实验结果(数据和进位)并对结果进行分析。

3. 令 DR1 = 01100011B,DR2 = 01100011B,正确选择S2、S1、S0,依次进行加、减、与、直通,乘实验 ,记下实验结果(数据和进位)并对结果进行分析。

4. 令 DR1 = 01001100B,DR2 = 10110011B,正确选择S2、S1、S0,依次进行加、减、与、直通,乘实验 ,记下实验结果(数据和进位)并对结果进行分析。 5. 令DR1=11111111B,DR2 = 11111111B,正确选择S2、S1、S0,依次进行加、减、与、直通,乘实验 ,记下实验结果(数据和进位)并对结果进行分析。

(3)M1、M2控制信号的作用是什么?改变M1、M2的高低电平,重复第(2)步,观察出现什么问题?

五、实验步骤和实验结果 这是计算机组成原理课程中使用TEC—4计算机组成原理实验系统进行的第一个实验。除了实验本身的要求外,一个很重要的任务是使学生熟悉TEC—4计算机组成原理实验系统,从而掌握它,学会使用它。 (1)实验任务(1)的实验步骤及结果如下: 1. 接线

将IAR_BUS#接VCC,RS_BUS#接VCC,LRW接GND,禁止中断地址寄存器IAR、寄存器堆RF、双端口存储器向数据总线DBUS送数。也可以通过将CEL#接VCC禁止双端口存储器向数据总线DBUS送数。

将SW_BUS#接K0,将ALU_BUS接K1,S0接K2,S1接K3,S2接K4,LDDR1接K5,LDDR2接K6,M1接VCC,M2接VCC。 2. 置开关DB = 0,DZ = 0,DP = 1,使实验系统处于单拍状态。 3. 合上实验台电源。按复位按钮CLR#,使实验系统处于初始状态。 4. 置K0(SW_BUS#) = 0,K1(ALU_BUS)= 0。置开关SW7—SW0为01010101B。将开关IR/DBUS拨

到DBUS位置,红色数据指示灯应显示01010101B。它指示的是数据总线DBUS的值。 5. 置K5(LDDR1) = 1,K6(LDDR2) = 0。按一次QD按钮,将01010101B置入DR1。 6. 置K5(LDDR1) = 0,K6(LDDR2) = 1。将数据开关SW7—SW0置为10101010B,红色数据指示灯应

显示10101010B。按一次QD按钮,将10101010B置入DR2。 7. 置K0(SW_BUS#) = 1,关闭数据开关SW0—SW7对数据总线DBUS的输出;置K1(ALU_BUS) = 1,

开启ALU 对DBUS的输出。置K2(S0) = 1、K3(S1) = 0、K4(S2) = 0,使运算器进行直通运算。红色数据指示灯应显示10101010B。这表示DR2置数正确。置K2(S0) = 0、 K3(S1) = 1、K4(S2) = 0,使运算器进行加运算,红色数据指示灯应显示11111111B。这表示DR1中的数确实是01010101B。

(2)以上是实验内容(1)的实验步骤和实验结果,对于实验内容(2),可仿照办理。欲察看C的值,需按一次QD按钮。实验内容(2)的实验结果如下:

1. 令DR1= 01100011B,DR2 = 10110100B,加的结果是00010111B,C = 1;减的结果是01010001B,

C = 0;与的结果是00100000B,C不变;直通的结果是10110100B,C不变;乘的结果是00001100B,C不变。

2. 令DR1=10110100B,DR2 = 01100011B,加的结果是00010111B,C = 1;减的结果是10101111B,

C = 1;与的结果是00100000B,C不变;直通的结果是01100011B,C不变;乘的结果是00001100B,

16

C不变。 3. 令 DR1 = 01100011B,DR2 = 01100011B,加的结果是11000110B,C = 0;减的结果是00000000B,

C = 0;与的结果是01100011B,C不变;直通的结果是01100011B,C不变;乘的结果是00001001B,C不变。

4. 令 DR1 = 01001100,DR2 = 10110011,加的结果是11111111B,C = 0;减的结果是01100111B,

C = 0;与的结果是00000000B,C不变;直通的结果是10110011B,C不变;乘的结果是00100100B,C不变。

5. 令DR1=11111111B,DR2 = 11111111B,加的结果是11111110B,C = 1;减的结果是00000000B,

C不变;与的结果是11111111B,C不变;直通的结果是11111111B,C不变;乘的结果是11100001B,C不变。

(3) M1用于选择DR1的数据输入源。M1=1时,DR1选择D1—A1作为数据输入端;M1=0时,DR1选择D0—A0作为数据输入端。M2用于选择DR2的数据输入源。M2=1时,DR2选择D1—A1作为数据输入端;M2=0时,DR2选择D0—A0作为数据输入端。在做实验内容(2)时,如果将M1或者M2由接VCC改为接GND,则DR1或者DR2选择寄存器堆作为数据输入源。由于没有给寄存器堆中的寄存器置数,因此寄存器的内容处于不可知状态。因此在M1 = 0或者M2 = 0时,进行实验内容(2),结果将是无法预知的。

17

第三节 双端口存储器原理实验

一、实验目的

(1)了解双端口静态随机存储器IDT7132的工作特性及使用方法。 (2)了解半导体存储器怎样存储和读出数据。

(3)了解双端口存储器怎样并行读写,产生冲突的情况如何。

二、实验电路 图7示出了双端口存储器的实验电路图。这里使用了一片IDT7132(U36)(2048 X 8位),两个端口的地址输入A8—A10引脚接地,因此实际使用存储容量为256字节。左端口的数据部分连接数据总线DBUS7—DBUS0,右端口的数据部分连接指令总线INS7—INS0。一片GAL22V10(U37)作为左端口的地址寄存器(AR1),内部具有地址递增的功能。两片4位的74HC298(U28、U27)作为右端口的地址寄存器(AR2H、AR2L),带有选择输入地址源的功能。使用两组发光二极管指示灯显示地址和数据:通过开关IR/DBUS切换显示数据总线DBUS和指令寄存器IR的数据,通过开关AR1/AR2切换显示左右两个端口的存储地址。写入数据由实验台操作板上的二进制开关SW0—SW7设置,并经过SW_BUS三态门74HC244(U38)发送到数据总线DBUS上。指令总线INS上的指令代码输出到指令寄存器IR(U20),这是一片74HC374。

存储器IDT7132有6个控制引脚:CEL#、LRW、OEL#、CER#、RRW、OER#。CEL#、LRW、OEL#控制左端口读、写操作,CER#、RRW、OER#控制右端口读、写操作。CEL#为左端口选择引脚,低有效。当CEL# =1 时,禁止左端口读、写操作;当CEL# =0 时,允许左端口读、写操作。当LRW为高时,左端口进行读操作;当LRW为低时,左端口进行写操作。当OEL#为低时,将左端口读出的数据放到数据总线DBUS上;当OEL#为高时,禁止左端口读出的数据放到数据总线DBUS上。CER#、RRW、OER#控制右端口读、写操作的方式与CEL#、LRW、OER#控制左端口读、写操作的方式类似,不过右端口读出的数据放到指令总线上而不是数据总线上。实验台上的OEL#由LRW经反相产生。当CEL#=0且LRW=1时,左端口进行读操作,同时将读出的数据放到数据总线DBUS上。当CER#=0且LRW=0时,在T3的上升沿开始进行写操作,将数据总线上的数据写入存储器。实验台上已连接T3到时序发生器的T3输出。实验台上OER#已固定接地,RRW固定接高电平,CER#由CER反相产生,因此当CER=1且LDIR=1时,右端口读出的指令在T4的上升沿打入IR寄存器。

存储器的地址由地址寄存器AR1、AR2提供,而AR1和AR2的内容根据数码开关SW0—SW7设置产生,并经三态门SW_BUS发送到数据总线时被AR1或AR2接收, 三态门的控制信号SW_BUS#是低电平有效。数据总线DBUS有5个数据来源:运算器ALU,寄存器堆RF,控制台开关SW0—SW7,双端口存储器IDT7132和中断地址寄存器IAR。在任何时刻,都不允许2个或者2个以上的数据源同时向数据总线DBUS输送数据,只允许1个(或者没有)数据源向数据总线DBUS输送数据。在本实验中,为了保证数据的正确设置和观察,请令RS_BUS# = 1,ALU_BUS = 0,IAR_BUS# = 1。AR1的控制信号是LDAR1和AR1_INC。当LDAR1 = 1时,AR1从DBUS接收地址;当AR1_INC =1时,使AR1中的存储器地址增加1;在T4的上升沿,产生新的地址;LDAR1和AR1_INC两者不可同时为1。AR2的控制信号是LDAR2和M3。当M3 =1 时,AR2从数据总线DBUS接收数据;当M3=0 时,AR2以PC总线PC0—PC7作为数据来源。当LDAR2=1时,在T2的下降沿,将新的PC值打入AR2。

三、实验设备

18

数据指示灯CEL#T3LRW。。CEL#。 LRW。OEL#D7— D0D7— D0双端口 RAMA7— A0A7— A0。。VCCRRWGNDOER#。CER#CER数据指示灯数据指示灯I8— I1SW_BUS#。SW_BUS74HC244SW7SW6SW5SW4SW3SW2SW1SW0图7 双端口存储器实验电路图 19

D1C1B1A1D0C0B0A0D1C1B1A1D0C0B0A0数据指示灯T4LDIRIR7— IR074HC374T4CLKAR1_INCI0LDAR1I11O8— O1LDAR2T2M3SAR1AR2H74HC298AR2L74HC298IR

(1)TEC—4计算机组成原理实验系统一台 (2)双踪示波器一台 (3)直流万用表一只 (4)逻辑测试笔一支

四、实验任务

(1)按图7所示,将有关控制信号和和二进制开关对应接好,仔细复查一遍,然后接通电源。 (2)将数码开关SW0—SW7(SW0是最低位)设置为00H,将此数据作为地址置入AR1;然后重新设置二进制开关控制,将数码开关SW0—SW7上的数00H写入RAM第0号单元。依此方法,在存储器10H单元写入数据10H,20H单元写入20H,30H单元写入30H,40H单元写入40H,共存入5个数据。

使用双端口存储器的左端口,依次读出存储器第00H、10H、20H、30H、40H单元中的内容,观察上述各单元中的内容是否与该单元的地址号相同。请记录数据。注意:总线上禁止两个以上部件同时向总线输出数据。当存储器进行读出操作时,必须关闭SW_BUS三态门!而当向AR1送入地址时,双端口存储器不能被选中。

(3)通过双端口存储器右端口(指令端口),依次把存储器第00H、10H、20H、30H、40H单元中的内容置入指令寄存器IR,观察结果是否与(2)相同,并记录数据。 (4)双端口存储器的并行读写和访问冲突测试。

置CEL#=0且CER=1,使存储器左、右端口同时被选中。当AR1和AR2的地址不相同时,没有访问冲突;地址相同时,由于都是读出操作,也不冲突。如果左、右端口地址相同且一个进行读操作、另一个进行写操作,则发生冲突。要检测冲突,可以用示波器测试BUSYL和BUSYR插孔(分别是两个端口的“忙”信号输出)。BUSY为0时不一定发生冲突,但发生冲突时,BUSY一定为0。当某一个端口(无论是左端口还是右端口)的BUSY = 0时,对该端口的写操作被IDT7132忽略掉。

五、实验步骤及实验结果 (1)接线

IAR_BUS#接VCC,ALU_BUS接GND,RS_BUS#接VCC,禁止中断地址寄存器、运算器、多端口寄存器堆RF向数据总线DBUS送数据。AR1_INC接GND,M3接VCC,使地址寄存器AR1和AR2从数据总线DBUS取得地址数据。

CEL#接K0,LRW接K1,CER接K2,LDAR1接K3,LDAR2接K4,SW_BUS#接K5,LDIR接K6。 置DP = 1,DB = 0,DZ = 0,使实验台处于单拍状态。 合上电源。按复位按钮CLR#,使实验系统处于初始状态。

(2)向存储器写数,并读出进行检查。 1. 令K0(CEL#)= 1,K1(LRW) = 1,K2(CER)= 0,K3(LDAR1) = 1,K4(LDAR2)= 0,K5(SW_BUS#)

= 0,K6(LDIR)= 0。将IR/DBUS开关拨到DBUS位置,将AR1/AR2开关拨到AR1位置。置SW7—SW0 = 00H,按一次QD按钮,将00H写入AR1,绿色的地址指示灯应显示00H。

令K0(CEL#)= 0,K1(LRW)= 0,K3(LDAR1)= 0,按一次QD按钮,则将00H数据写入存储器的00H单元。

依次重复进行,在存储器10H单元写入数据10H,20H单元写入20H,30H单元写入30H,40H单元写入40H,共存入5个数据。 2. 令K0(CEL#)= 1,K1(LRW) = 1,K2(CER)= 0,K3(LDAR1) = 1,K4(LDAR2)= 0,K5(SW_BUS#)

20

= 0,K6(LDIR)= 0。将IR/DBUS开关拨到DBUS位置,将AR1/AR2开关拨到AR1位置。置SW7—SW0 = 00H,按一次QD按钮,将00H写入AR1,绿色的地址指示灯应显示00H。 令K5(SW_BUS#) = 1,然后令K3(LDAR1)= 0,K0(CEL#)= 0,K1(LRW)= 1,则读出存储器的00H单元的数据,读出的数据显示在DBUS数据指示灯上,应为00H。照此方法,可依次读出存储器单元10H、20H、30H、40H的数据。

(3) 读出存储器的数据,写入IR。

令K0(CEL#)= 1,K1(LRW) = 1,K2(CER)= 0,K3(LDAR1) = 0,K4(LDAR2)= 1,K5(SW_BUS#) = 0,K6(LDIR)= 0。将IR/DBUS开关拨到IR位置,将AR1/AR2开关拨到AR2位置。置SW7—SW0 = 00H,按一次QD按钮,将00H写入AR2,绿色的地址指示灯应显示00H。令K4(LDAR2)= 0,K2(CER)= 1,K6(LDIR) = 1,按一次QD按钮,则从右端口读出存储器的00H单元的数据,读出的数据写入指令寄存器IR,显示在IR数据指示灯上,应为00H。照此方法,可从右端口依次读出存储器单元10H、20H、30H、40H的数据,写入指令寄存器IR。

(4)双端口存储器的并行读写和访问冲突测试 1. 令K0(CEL#)= 1,K1(LRW) = 1,K2(CER)= 0,K3(LDAR1) = 1,K4(LDAR2)= 0,K5(SW_BUS#)

= 0,K6(LDIR)= 0。将AR1/AR2开关拨到AR1位置。置SW7—SW0 = 38H,按一次QD按钮,将38H写入AR1,绿色的地址指示灯应显示38H。令K3(LDAR1) = 0,K4(LDAR2)= 1,K5(SW_BUS#) = 0,将AR1/AR2开关拨到AR2位置。置SW7—SW0 = 38H,按一次QD按钮,将38H写入AR2,绿色的地址指示灯应显示38H。 2. 先令K2(CER)= 1,K0(CEL#)=1,用示波器探头测试BUSYL插孔,BUSYL应为高电平。保持

K2(CER)不变,将K2(CEL#)拨动到0位置,示波器上的BUSYL信号从高电平变为低电平;再将K0(CEL#)拨到1位置,BUSYL信号从低电平变为高电平。 3. 先令K0(CEL#)=0,K2(CER)= 0,用示波器探头测试BUSYR插孔,BUSYR应为高电平。保持

K0(CEL#)不变,将K2(CER)拨动到1位置,示波器上的BUSYR信号也从高电平变为低电平;再将K2(CER)拨到0位置,BUSYL信号也从低电平变为高电平。

21

第四节 数据通路组成实验

一、实验目的

(1)将双端口通用寄存器堆和双端口存储器模块联机; (2)进一步熟悉计算机的数据通路;

(3)掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法; (4)锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。

二、实验电路

图8示出了数据通路实验电路图,它是将双端口存储器实验模块和一个双端口通用寄存器堆模块(RF)连接在一起形成的。双端口存储器的指令端口不参与本次实验。通用寄存器堆连接运算器模块,本实验涉及其中的操作数寄存器DR2。

由于双端口存储器RAM是三态输出,因而可以将它直接连接到数据总线DBUS上。此外,DBUS上还连接着双端口通用寄存器堆。这样,写入存储器的数据可由通用寄存器堆提供,而从存储器RAM读出的数据也可送到通用寄存器堆保存。

双端口存储器RAM已在第三节做过介绍, DR2在第三节的实验中使用过。通用寄存器堆RF(U32)由一个ISP1016实现,功能上与两个4位的MC14580并联构成的寄存器堆类似。RF内含四个8位的通用寄存器R0、R1、R2、R3,带有一个写入端口和两个输出端口,从而可以同时写入一路数据,读出两路数据。写入端口取名为WR端口,连接一个8位的暂存寄存器(U14)ER,这是一个74HC374。输出端口取名为RS端口(B端口)、RD端口(A端口),连接运算器模块的两个操作数寄存器DR1、DR2。RS端口(B端口)的数据输出还可通过一个8位的三态门RSO(U15)直接向DBUS输出。

双端口通用寄存器堆模块的控制信号中,RS1、RS0用于选择从RS端口(B端口)读出的通用寄存器,RD1、RD0用于选择从RD端口(A端口)读出的通用寄存器。而WR1、WR0则用于选择从WR端口写入的通用寄存器。WRD是写入控制信号,当WRD=1时,在T2上升沿时刻,将暂存寄存器ER中的数据写入通用寄存器堆中由WR1、WR0选中的寄存器;当WRD =0时,ER中的数据不写入通用寄存器中。LDER信号控制ER从DBUS写入数据,当LDER=1时,在T4的上升沿,DBUS上的数据写入ER。RS_BUS#信号则控制RS端口到DBUS的输出三态门,是一个低有效信号。以上控制信号各自连接一个二进制开关K0—K15。

三、实验设备

(1)TEC-4计算机组成原理实验仪一台 (2)双踪示波器一台 (3)直流万用表一只

(4)逻辑测试笔一支

四、实验任务

(1)将实验电路与控制台的有关信号进行线路连接,方法同前面的实验。

(2)用8位数据开关向RF中的四个通用寄存器分别置入以下数据:R0=0FH,R1=0F0H,R2 =55H,R3=0AAH。

给R0置入0FH的步骤是:先用8位数码开关SW0—SW7将0FH置入ER,并且选择WR1=0、WR0 = 0、WRD = 1,再将ER的数据置入RF。给其他通用寄存器置入数据的步骤与此类似。

22

DBUS数据指示灯ALU_BUSS2S1S0LDDR2T3D7— D0ALUISP1024A7A6A5A4A3A2A1A0LRW。CEL#T3 LRW。。。OEL#CEL#数据指示灯D7— D0D7— D0CER#双端口 RAMA7— A0A7— A0。。CERVCCRRWGNDOER#。M2。SDR2H74HC298A0DR2L74HC298D0C0B0A0RS_BUS#。74HC244QDQCQBQAQDQCQBQARSORFISP1016D7— D0T4LDER74HC374SW_BUSERT4CLKO8— O1AR1_INCI0AR1LDAR1I11I8— I1SW_BUS#RS1RS0RD1RD0D0C0B0B7— B0WR1WR0WRDT2A7A6A5A4A3A2A1A0。SW074HC244DBUSSW1SW2SW3SW4SW5SW6SW7图8 数据通路实验电路图

23

(3)分别将R0至R3中的数据同时读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3中的数据,并记录数据。其中DBUS上的数据可直接用指示灯显示,DR2中的数据可通过运算器ALU,用直通方式将其送往DBUS。

(4)用8位数码开关SW0—SW7向AR1送入一个地址0FH,然后将R0中的0FH写入双端口RAM。 用同样的方法,依次将R1至R3中的数据写入RAM中的0F0H、55H、0AAH单元。

(5)分别将RAM中0AAH单元的数据写入R0,55H单元的数据写入R1,0F0H单元写入R2,0FH单元写入R3。然后将R3、R2、R1、R0中的数据读出到DBUS上,通过指示灯验证读出的数据是否正确,并记录数据。

(6)进行RF并行输入输出试验。

1.选择RS端口(B端口)对应R0,RD端口(A端口)对应R1,WR端口对应R2,并使WRD

=1,观察并行输入输出的结果。选择RS端口对应R2,验证刚才的写入是否生效。记录数据。

2.保持RS端口(B端口)和WR端口同时对应R2,WRD=1,而ER中置入新的数据,观察并行输入输出的结果,RS端口输出的是旧的还是新的数据? (7)在数据传送过程中,发现了什么故障?如何克服的?

五、实验步骤与实验结果 (1) 接线

IAR_BUS#接VCC,禁止中断地址寄存器IAR向数据总线DBUS送数据。CER接GND,禁止存储器右端口工作。AR1_INC接GND,禁止AR1加1。S2接GND,S1接GND,S0接VCC,使运算器ALU处于直通方式。M2接GND,使DR2选择寄存器堆RF作为数据来源。置DP = 1,DZ = 0,DB = 0,使实验系统开机后处于单拍状态。

K0接SW_BUS#,K1接RS_BUS#,K2接ALU_BUS,K3接CEL#,K4接LRW,K5接LDAR1,K6接LDDR2,K7接LDER,K8接RS0,K9接RS1,K10接RD0,K11接RD1,K12接WR0,K13接WR1,K14接WRD。

合上电源。按CLR#按钮,使实验系统处于初始状态。

(2)向RF中的四个通用寄存器分别置入数据

令K1(RS_BUS#)= 1, K2(ALU_BUS)= 0,K3(CEL#)= 1,K4(LRW)= 1,K5(LDAR1)= 0,K6(LDDR2)= 0,K8(RS0)= 0,K9(RS1)= 0,K10(RD0)= 0,K11(RD1)= 0,K12(WR0)= 0,K13(WR1)= 0,K14(WRD)= 0。

a. 令K0(SW_BUS#)= 0,K7(LDER)= 1。置SW7—SW0为0FH,按一次QD按钮,将0FH写入暂

存寄存器ER。

令K7(LDER)= 0,K14(WRD)= 1,K12(WR0)= 0,K13(WR1)= 0,按一次QD按钮,将0FH(在ER中)写入R0寄存器。

b.令K0(SW_BUS#)= 0,K7(LDER)= 1。置SW7—SW0为F0H,按一次QD按钮,将0F0H写入暂存寄存器ER。 令K7(LDER)= 0,K14(WRD)= 1,K12(WR0)= 1,K13(WR1)= 0,按一次QD按钮,将F0H(在ER中)写入R1寄存器。

c.令K0(SW_BUS#)= 0,K7(LDER)= 1。置SW7—SW0为55H,按一次QD按钮,将55H写入暂

存寄存器ER。

令K7(LDER)= 0,K14(WRD)= 1,K12(WR0)= 0,K13(WR1)= 1,按一次QD按钮,将55H(在ER中)写入R2寄存器。

24

d. 令K0(SW_BUS#)= 0,K7(LDER)= 1。置SW7—SW0为0AAH,按一次QD按钮,将0AAH写

入暂存寄存器ER。

令K7(LDER)= 0,K14(WRD)= 1,K12(WR0)= 1,K13(WR1)= 1,按一次QD按钮,将0AAH(在ER中)写入R0寄存器。

(3) 分别将R0至R3中的数据同时读入到DR2寄存器中和DBUS上,观察其数据是否是存入R0至R3

中的数据。

1.令K0(SW_BUS#)= 1,K2(ALU_BUS)= 0,K3(CEL#)= 1,K4(LRW)= 1,K5(LDAR1)= 0,

K6(LDDR2)= 0,K7(LDER)= 0,K10(RD0)= 0,K11(RD1)= 0,K12(WR0)= 0,K13(WR1)= 0,K14(WRD)= 0。

将开关IR/DBUS至于DBUS位置。令K1(RS_BUS#)= 0,使寄存器堆中的数据送DBUS总线。令K8(RS0)= 0,K9(RS1)= 0,R0中的数据通过B端口送DBUS ,数据指示灯应显示0FH。令K8(RS0)= 1,K9(RS1)= 0,R1中的数据通过B端口送DBUS,数据指示灯应显示0F0H。令K8(RS0)= 0,K9(RS1)= 1,R2中的数据通过B端口送DBUS,数据指示灯应显示55H。令K8(RS0)= 1,K9(RS1)= 1,R3中的数据通过B端口送DBUS,数据指示灯应显示0AAH。

2.令K0(SW_BUS#)= 1,K1(RS_BUS#)= 1, K3(CEL#)= 1,K4(LRW)= 1,K5(LDAR1)= 0,

K7(LDER)= 0,K8(RS0)= 0,K9(RS1)= 0,K12(WR0)= 0,K13(WR1)= 0,K14(WRD)= 0。

将开关IR/DBUS至于DBUS位置。令K2(ALU_BUS)= 1,使运算器ALU的运算结果送DBUS总线。由于S2接GND,S1接GND,S0接VCC,ALU做直通运算,因此DBUS数据指示灯显示的是DR2寄存器的值。令K10(RD0)= 0,K11(RD1)= 0,K6(LDDR2)= 1,按一次QD按钮,R0中的数据通过A端口送入DR2,DBUS数据指示灯应显示0FH。令K10(RD0)= 1,K11(RD1)= 0,K6(LDDR2)= 1,按一次QD按钮,R1中的数据通过A端口送入DR2,DBUS数据指示灯应显示0F0H。令K6(LDDR2)= 1,K10(RD0)= 0,K11(RD1)= 1,按一次QD按钮,R2中的数据通过A端口送入DR2,DBUS数据指示灯应显示55H。令K10(RD0)= 1,K11(RD1)= 1,K6(LDDR2)= 1,按一次QD按钮,R3中的数据通过A端口送入DR2,DBUS数据指示灯应显示0AAH。

(4)将R0、R1、R2、R3中的数据依次送入存储器0FH、0F0H、55H、0AAH单元。 令K2(ALU_BUS)= 0,K5(LDAR1)= 0,K6(LDDR2)= 0,K7(LDER)= 0,K10(RD0)= 0,K11(RD1)= 0,K12(WR0)= 0,K13(WR1)= 0,K14(WRD)= 0。

a. 置AR1/AR2开关到AR1位置。令K0(SW_BUS#)= 0,K1(RS_BUS#)= 1, K3(CEL#)= 1,

K5(LDAR1)= 1,置SW7—SW0为0FH,按一次QD按钮,将AR1置为0FH,地址指示灯应显示0FH。

令K0(SW_BUS#)= 1,K1(RS_BUS#)= 0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。令K3(CEL#)= 0, K4(LRW)= 0,K5(LDAR1)= 0,K8(RS0)= 0,K9(RS1)= 0,按一次QD按钮,将R0中的数据写入存储器0FH单元。

b. 置AR1/AR2开关到AR1位置。令K0(SW_BUS#)= 0,K1(RS_BUS#)= 1,K3(CEL#)= 1,

K5(LDAR1)= 1,置SW7—SW0为0F0H,按一次QD按钮,将AR1置为0F0H,地址指示灯应显示F0H。

令K0(SW_BUS#)= 1,K1(RS_BUS#)= 0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。令K3(CEL#)= 0,K4(LRW)= 0,K5(LDAR1)= 0,K8(RS0)= 1,

25

K9(RS1)= 0,按一次QD按钮,将R1中的数据写入存储器F0H单元。

c. 置AR1/AR2开关到AR1位置。令K0(SW_BUS#)= 0,K1(RS_BUS#)= 1,K3(CEL#)= 1,

K5(LDAR1)= 1,置SW7—SW0为55H,按一次QD按钮,将AR1置为55H,地址指示灯应显示55H。

令K0(SW_BUS#)= 1,K1(RS_BUS#)= 0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。令K3(CEL#)= 0,K4(LRW)= 0,K5(LDAR1)= 0,K8(RS0)= 0,K9(RS1)= 1,按一次QD按钮,将R2中的数据写入存储器55H单元。

d. 置AR1/AR2开关到AR1位置。令K0(SW_BUS#)= 0,K1(RS_BUS#)= 1,K3(CEL#)= 1,

K5(LDAR1)= 1,置SW7—SW0为0AAH,按一次QD按钮,将AR1置为0AAH,地址指示灯应显示0AAH。

令K0(SW_BUS#)= 1,K1(RS_BUS#)= 0,禁止数据开关SW7—SW0送DBUS,允许寄存器堆送数据总线DBUS。令K3(CEL#)= 0,K4(LRW)= 0,K5(LDAR1)= 0,K8(RS0)= 1,K9(RS1)= 1,按一次QD按钮,将R3中的数据写入存储器0AAH单元。

(5)将RAM中0AAH、55H、0F0H、0FH单元的数据依次写入R0、R1、R2、R3。然后将R3、R2、R1、R0中的数据读出到DBUS上,通过指示灯验证读出的数据是否正确。

1. 令K1(RS_BUS#)= 1,K2(ALU_BUS)= 0, K6(LDDR2)= 0, K8(RS0)= 0,K9(RS1)= 0,

K10(RD0)= 0,K11(RD1)= 0。 a.令K0(SW_BUS#)= 0,K5(LDAR1)= 1,K3(CEL#)= 1,K14(WRD)= 0,置SW7—SW0为0AAH,按一次QD按钮,将AR1置为0AAH。

令K14(WRD)= 0,K0(SW_BUS#)= 1,K3(CEL#)= 0,K4(LRW)= 1,K5(LDAR1)= 0,K7(LDER)= 1,按一次QD按钮,将存储器0AAH单元的内容读出,写入到暂存寄存器ER。令K0(SW_BUS#)= 1,K3(CEL#)= 1,K14(WRD)= 1,K5(LDAR1)= 0,K7(LDER)= 0, K12(WR0)= 0,K13(WR1)= 0,按一次QD按钮,将ER中的数据写入R0。 b.令K0(SW_BUS#)= 0,K5(LDAR1)= 1,K3(CEL#)= 1,K14(WRD)= 0,置SW7—SW0为55H,按一次QD按钮,将AR1置为55H。令K14(WRD)= 0,K0(SW_BUS#)= 1,K3(CEL#)= 0,K4(LRW)= 1,K5(LDAR1)= 0,K7(LDER)= 1,按一次QD按钮,将存储器55H单元的内容读出,写入到暂存寄存器ER。令K0(SW_BUS#)= 1,K5(LDAR1)= 0,K7(LDER)= 0,K3(CEL#)= 1,K14(WRD)= 1,K12(WR0)= 1,K13(WR1)= 0,按一次QD按钮,将ER中的数据写入R1。

令K0(SW_BUS#)= 0,K5(LDAR1)= 1,K3(CEL#)= 1,K14(WRD)= 0,置SW7—SW0为0F0H,按一次QD按钮,将AR1置为0F0H。令K14(WRD)= 0,K0(SW_BUS#)= 1,K3(CEL#)= 0,K4(LRW)= 1,K5(LDAR1)= 0,K7(LDER)= 1,按一次QD按钮,将存储器0F0H单元的内容读出,写入到暂存寄存器ER。令K0(SW_BUS#)= 1,K5(LDAR1)= 0,K7(LDER)= 0,K3(CEL#)= 1,K14(WRD)= 1,K12(WR0)= 0,K13(WR1)= 1,按一次QD按钮,将ER中的数据写入R2。

令K0(SW_BUS#)= 0,K5(LDAR1)= 1,K3(CEL#)= 1,K14(WRD)= 0,置SW7—SW0为0FH,按一次QD按钮,将AR1置为0FH。令K14(WRD)= 0,K0(SW_BUS#)= 1,K3(CEL#)= 0,K4(LRW)= 1,K5(LDAR1)= 0,K7(LDER)= 1,按一次QD按钮,将存储器0FH单元的内容读出,写入到暂存寄存器ER。令K0(SW_BUS#)= 1,K5(LDAR1)= 0,K7(LDER)= 0,K3(CEL#)= 1,K14(WRD)= 1,K12(WR0)= 1,K13(WR1)= 1,按一次QD按钮,将ER中的数据写入R3。

2. 令K0(SW_BUS#)= 1, K2(ALU_BUS)= 0,K3(CEL#)= 1,K4(LRW)= 1,K5(LDAR1)= 0,

26

K6(LDDR2)= 0,K7(LDER)= 0, K10(RD0)= 0, K11(RD1)= 0,K12(WR0)= 0,K13(WR1)= 0 ,K14(WRD)= 0。 将开关IR/DBUS至于DBUS位置。令K1(RS_BUS#)= 0,K8(RS0)= 0,K9(RS1)= 0,数据指示灯显示R0的值,应为0AAH。令K8(RS0)= 1,K9(RS1)= 0,数据指示灯显示R1的值,应为55H。令K8(RS0)= 0,K9(RS1)= 1,数据指示灯显示R2的值,应为0F0H。令K8(RS0)= 1,K9(RS1)= 1,数据指示灯显示R3的值,应为0FH。

(6) 进行RF并行输入输出试验

1. 选择RS端口(B端口)对应R0,RD端口(A端口)对应R1,WR端口对应R2,并使WRD=1,观

察并行输入输出的结果。选择RS端口对应R2,验证刚才的写入是否生效。 令K3(CEL#)= 1,K4(LRW)= 1,K5(LDAR1)= 0。 将开关IR/DBUS至于DBUS位置。令K0(SW_BUS#)= 0,K1(RS_BUS#)= 1,K2(ALU_BUS)= 0,K6(LDDR2)= 0,K7(LDER)= 1,K14(WRD)= 0。将SW7—SW0置为35H,按一次QD按钮,将35H写入暂存寄存器ER。

令K0(SW_BUS#)= 1,K1(RS_BUS#)= 0,K2(ALU_BUS)= 0,K14(WRD)= 1,K6(LDDR2)= 1。再令K8(RS0)= 0,K9(RS1)= 0,RS端口选择R0;K10(RD0)= 1, K11(RD1)= 0,RD端口选择R1;K12(WR0)= 0,K13(WR1)= 1,WR端口选择R2。按一次QD按钮,这时ER中的数据(35H)写入了R2,同时R1中的数据(55H)写入了DR2,R0中的数据送数据总线DBUS(其实,R0中的数据并不受按QD按钮的影响)。数据指示灯应显示R0中的数据0AAH,如果令K1(RS_BUS#)= 1,K2(ALU_BUS)= 1,数据指示灯应显示DR2的内容(即R1的内容),应为55H。再令K1(RS_BUS#)= 0,K2(ALU_BUS)= 0,使数据指示灯仍显示RS端口的内容,同时令K8(RS0)= 0,K9(RS1)= 1,RS端口选择R2,

数据指示灯应显示新的R2的值,即35H。 2. 保持RS端口(B端口)和WR端口同时对应R2,WRD=1,而ER中置入新的数据,观察并行输入输出的结果,RS端口输出的是旧的还是新的数据?

令K2(ALU_BUS)= 0,K3(CEL#)= 1,K4(LRW)= 1,K5(LDAR1)= 0,K6(LDDR2)= 0,K10(RD0)= 0, K11(RD1)= 0。

将开关IR/DBUS至于DBUS位置。令K0(SW_BUS#)= 0,K1(RS_BUS#)= 1, K7(LDER)= 1,K14(WRD)= 0。将SW7—SW0置为53H,按一次QD按钮,将53H写入暂存寄存器ER。令K0(SW_BUS#)= 1,K1(RS_BUS#)= 0,K8(RS0)= 0,K9(RS1)= 1,RS端口选择R2,数据指示灯显示R2的值,应为35H。令K14(WRD)= 1,K12(WR0)= 0,K13(WR1)= 1,WR端口选择R2,允许写操作。当按下QD按钮时,新的值53H从ER写入R2,数据指示灯立即变为53H。

27

第五节 微程序控制器组成实验

一、实验目的

(1)掌握时序产生器的组成原理。

(2)掌握微程序控制器的组成原理。 (3)掌握微指令格式的化简和归并。

二、实验电路

1.时序发生器

TIMER1GAL22V101GND2晶振43VCCMF1CLR#2QD3DP4DZ5TJI6P17INTS8INTC9DB1011GND12CLKININININININININININGNDVCCIOIOIOIOIOIOIOIOIOIOIN242322212019181716151413VCCCLK1INTECLK11INTR2INTE34CLR#5SKIP67891011GND12TIMER2GAL22V10CLKININININININININININGNDVCCIOIOIOIOIOIOIOIOIOIOIN1242322212019181716151413VCCINTQW4W3W2W1GNDT4T3T2T1W4图9 时序信号发生器图

TEC—4计算机组成原理实验系统的时序电路如图9所示。电路采用2片GAL22V10(U6、U7),可产生两级等间隔时序信号T1-T4和W1-W4,其中一个W由一轮T1-T4循环组成,它相当于一个微指令周期或硬布线控制器的一拍,而一轮W1—W4循环可供硬布线控制器执行一条机器指令。

本次实验不涉及硬布线控制器,因此时序发生器中的相关内容也可根据需要放到硬布线控制器实验中进行。

微程序控制器只使用时序信号T1-T4,产生T信号的功能集成在GAL22V10芯片TIMER1(U6)中,另外它还产生节拍信号W1、W2、W3、W4的控制时钟CLK1。该芯片的逻辑功能用ABEL语言实现,其源程序如下: MODULE TIMER1

TITLE 'CLOCK GGENERATOR T1,T2,T3,T4' \

\

MF,CLR,QD,DP,DZ,TJ,P1,INTS,INTC,DB PIN 1..10; W4 PIN 13;

\

T1,T2,T3,T4,QD1,QD2,ACT,INTE,QDR PIN 14..22;

28

CLK1 PIN 23;

T1,T2,T3,T4,QD1,QD2,INTE,QDR ISTYPE 'REG'; ACT,CLK1 ISTYPE 'COM'; CLK = .C.;

S =[T1,T2,T3,T4,QD1,QD2,INTE,QDR];

EQUATIONS

QD1 := QD; QD2 := QD1;

QDR := CLR & QD # CLR & QDR; ACT = QD1 & !QD2;

T1 := CLR & T4 & ACT # CLR & T4 & !(DP # TJ # DZ & P1 # DB & W4) & QDR; T2 := CLR & T1; T3 := CLR & T2;

T4 := !CLR # T3 # T4 & !ACT & (DP # TJ # DZ & P1 # DB & W4) # !QDR; INTE := CLR & INTS # CLR & INTE & !INTC; CLK1 = T1 # !CLR & MF; S.CLK = MF; END

MFQDQD1QD2ACTQDR

硬布线控制器只使用时序信号W1-W4,产生W信号的功能集成在GAL22V10芯片TIMER2(U7)中,该芯片的逻辑功能用ABEL语言实现,其源程序如下: MODULE TIMER2

TITLE 'CLOCK GGENERATOR W1 W2 W3 W4' \

\

CLK1,INTR,IE PIN 1..3; CLR,SKIP PIN 5..6;

29

\

W1,W2,W3,W4,INTR1 PIN 14..18 ISTYPE 'REG'; INTQ PIN 20 ISTYPE 'COM'; CLK = .C.;

EQUATIONS

W1 := CLR & W4 ;

W2 := CLR & W1 & !SKIP; W3 := CLR & W2 & !SKIP;

W4 := !CLR # W3 # SKIP & W1 # SKIP & W2 ; INTR1 := INTR; INTQ = IE & INTR1;

[W1,W2,W3,W4,INTR1].CLK = CLK1; END

TIMER1和TIMER2中还集成了中断逻辑,中断逻辑的介绍见第八节。TIMER1的输入信号中,MF接实验台上晶体振荡器的输出,频率为1MHz。T1至T4的脉冲宽度为100ns。CLR(注意,实际上是控制台上的CLR#信号,因为ABEL语言的书写关系改为CLR,仍为低有效信号)为复位信号,低有效。实验台处于任何状态下令CLR# = 0,都会使时序发生器和微程序控制器复位(回到初始状态),CLR# =1时,则可以正常运行。复位后时序发生器停在T4、W4状态,微程序地址为000000B。建议每次实验仪加电后,先用CLR#复位一次。控制台上有一个CLR#按钮,按一次,产生一个CLR#负脉冲,实验台印制板上已连好控制台CLR#到时序电路CLR的连线。

TJ(停机)是控制器的输出信号之一。连续运行时,如果控制信号TJ=1,会使机器停机,停止发送时序脉冲T1—T4、W1—W4,时序停在T4。在实验台上为了将时序信号发生器的输入信号TJ和控制存储器产生的TJ信号区分开来,以便于连线操作,在实验台上时序信号发生器的输入信号TJ命名为TJI,而控制存储器产生的信号TJ仍命名为TJ。QD(启动)是来自启动按钮QD的脉冲信号,在TIMER1中,对QD用MF进行了同步,产生QD1和QD2。ACT表示QD1上升沿,表达式是QD1 & !QD2,脉冲宽度为1000ns 。QDR是运行标志,QD信号使其为1,CLR信号将其置0。DP(单拍)是来自控制台的DP开关信号,当DP =1时,机器处于单拍运行状态,按一次启动按钮QD,只发送一条微指令周期的时序信号就停机。利用单拍方式,每次只执行一条微指令,因而可以观察微指令代码和当前微指令的执行结果。DZ(单指)信号是针对微程序控制器的,接控制台开关DZ和P1信号配合使用。P1是微指令字判断字段中的一个条件信号,从微程序控制器输出。P1信号在微程序中每条机器指令执行结束时为1,用于检测有无中断请求INTQ,而时序发生器用它来实现单条机器指令停机。在DB =0且DP = 0的前提下,当DZ =0时,机器连续运行。当DZ =1时,机器处于单指方式,每次只执行一条机器指令。

DB、SKIP、CLK1信号以及W1—W4时序信号都是针对硬布线控制器的。W1—W4是节拍信号,硬布线控制器执行一条机器指令需要一组W1—W4信号。DB(单步)信号就是每次发送一组W信号后停机,可见其功能与DZ类似。执行某些机器指令不需要完整的一组W信号周期,SKIP信号就是用来跳过本指令剩余的W节拍信号的。中断允许标志IE由控制存储器的输出信号INTS将其置1,由控制存储器的输出信号INTC将其置0。在TIMER2内部,控制台产生的中断请求被用时钟CLK1进行同步,

30

产生了INTR1。只有在INTE = 1时,控制台产生的中断请求脉冲INTR才能起作用,即产生向控制器输出的中断中断信号INTQ,INTQ = INTE & INTR1。

2.数据通路

微程序控制器是根据数据通路和指令系统来设计的。这里采用的数据通路是在综合前面各实验模块的基础上,又增加程序计数器PC(U18)、地址加法器ALU2(U17)、地址缓冲寄存器R4(U25、U26)和中断地址寄存器IAR(U19),详见第二节的图4。PC和ALU2各采用一片GAL22V10,两者配合使用,可完成程序地址的存储、增1和加偏移量的功能。R4由两片74HC298组成,带二选一输入端。IAR是一片74HC374,用于中断时保存断点地址。有关数据通路总体的详细说明,请参看第一节。

3.微指令格式与微程序控制器电路

TJS2S1S0M1LDDR1WRDLRWCEL#ALU_BUSRS_BUS#SW_BUS#IAR_BUS#LDERM3AR1_INCLDAR1LDIARM4PC_INCPC_ADDLDPCLDIRINTCINTS35343332313029282726252423222120191817161514131211判断条件图10 微指令格式

根据给定的12条机器指令功能和数据通路总体图的控制信号,采用的微指令格式见图10。微指令字长共35位。其中顺序控制部分10位:后继微地址6位,判别字段4位,操作控制字段25位,各位进行直接控制。微指令格式中,信号名带有后缀“#”的信号为低有效信号,不带有后缀“#”的信号为高有效信号。

31

uA5uA4uA3uA2uA1uA0后继微地址P3P2P1P0判断指示灯A5A4A3A2A1A0A5A4A3A2A1A0CINTQA5A4A3A2A1A0A5A4A3A2A1A0A5A4A3A2A1A0u_A0— u_A5Q5Q4Q3Q2Q1Q0D0D1D2D3D4D5IR4IR5IR6IR7SWA图11 微程序控制器的组成

对应微指令格式,微程序控制器的组成见图11。控制存储器采用5片EEPROM 28C64(U8、U9、U10、U11、U12)。28C64的输出是D0—D7,分别与引脚11、12、13、15、16、17、18、19相对应,CM0是最低字节,CM4是最高字节。微地址寄存器6位,用一片6D触发器74HC174(U1)组成,带有清零端。两级与门、或门构成微地址转移逻辑,用于产生下一微指令的地址。在每个T1上升沿时刻,新的微指令地址会打入微地址寄存器中,控制存储器随即输出相应的微命令代码。微地址转移逻辑生成下一地址,等下一个T1上升沿时打入微地址寄存器。跳转开关JUMP(J1)是一组6个跳线开关。当用短路子将它们连通时,微地址寄存器?AR从本实验系统提供的微程序地址译码电路得到新的微程序地址?D0—?D5。当他们被断开时,用户提供自己的新微程序地址?D0—?D5。这样用户能够使用自己设计的微程序地址译码电路。5片EEPROM的地址A6(引脚4)直接与控制台开关SWC连接,当SWC = 1时,微地址大于或者等于40H,当SWC = 0时,微地址的范围为00H—3FH。SWC主要用于实现读寄存器堆的功能。

微地址转移逻辑的多个输入信号中,INTQ是中断请求,本实验中可以不理会。SWA、SWB是控制台的两个二进制开关信号,实验台上线已接好接。C是进位信号,IR7—IR4是机器指令代码,由于本次实验不连接数据通路,这些信号都接到二进制开关K0—K15上。

三、机器指令与微程序

为教学中简单明了,本实验仪使用12条机器指令,均为单字长(8位)指令。指令

32

SWBD7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0NC4NC3NC2NC1NC0TJS2S1S0M1LDDR1WRDLRWCEL#ALU_BUSRS_BUS#SW_BUS#IAR_BUS#LDERM3AR1_INCLDAR1LDIARM4PC_INCPC_ADDLDPCLDIRINTCINTSP3P2P1P0uA5uA4uA3uA2uA1uA0CM428C64CM328C64CM228C64CM128C64CM028C64......uAR74HC174CLR#T1微地址指示灯uD0— uD5JUMP功能及格式如表5所示。指令的高4位提供给微程序控制器,低4位提供给数据通路。

表5 指令功能与格式 名称 加法 减法 乘法 逻辑与 存数 取数 无条件转移 条件转移 停机 中断返回 开中断 关中断

助记符 ADD Rd,Rs SUB Rd,Rs MUL Rd,Rs AND Rd,Rs STA Rd,[Rs] LDA Rd,[Rs] JMP [Rs] JC D STP IRET INTS INTC 功能 Rd+Rs->Rd Rd-Rs->Rd Rd*Rs->Rd Rd&Rs->Rd Rd->[Rs] [Rs]->Rd [Rs]->PC 若C=1则 PC+D->PC 暂停运行 返回断点 允许中断 禁止中断 指令格式 R7 R6 R5 R4 R3 R2 R1 R0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 0 RS1 RS0 RS1 RS0 RS1 RS0 RS1 RS0 RS1 RS0 RS1 RS0 RS1 RS0 D3 D2 X X X X X X X X RD1 RD0 RD1 RD0 RD1 RD0 RD1 RD0 RD1 RD0 RD1 RD0 X X D1 D0 X X X X X X X X

应当指出,用以上12条指令来编写实际程序是不够的。好在我们的目的不是程序设

计,而主要是为了教学目的,通过CPU执行一些最简单的程序来掌握微程序控制器的工作原理。

上述12条指令的微程序流程设计如图12所示。每条微指令可按前述的微指令格式转换成二进制代码,然后写入5个28C64中。

为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还设计了以下五个控制台操作微程序:

33

KT00001:KRD17SW_BUS#LDAR13FCEL#LRW=1TJ3EAR1_INC010:KWE27SW_BUS#LDAR1TJ3DSW_BUS#CEL#LRW=03CAR1_INCTJ0010:MUL12M1=0LDDR1M2=0LDDR239ALU=A*BALU_BUSLDERWD34WRDOFP3011:KLD37SW_BUS#LDAR1M3=1LDAR2TJ33SW_BUS#CEL#LRW=007100:KRR47SW_BUS#LDAR1M3=1LDAR2TJ46SW_BUS#CEL#LRW=0000:PR45CERLDIR44RS_BUS#TJ07SW_BUS#M4=1LDR4LDPC32CERLDIRTJ31SW_BUS#LDER30WRDTJQE05M3=0LDAR2CERLDIRPC-INCP2100FLDAR205INTQ=0P1INTQ=125INTCLDIARTJ26SW_BUS#M4=1LDR4LDPCINT0000:ADD10M1=0LDDR1M2=0LDDR23BALU=A+BALU_BUSLDER0001:SUB11M1=0LDDR1M2=0LDDR23AALU=A-BALU_BUSLDER0011:AND13M1=0LDDR1M2=0LDDR238ALU=A&BALU_BUSLDER0101:LDA15RS_BUS#LDAR136CEL#LRW=1LDER0100:STA14M2=0LDDR2RS_BUS#LDAR135ALU=AALU_BUSCEL#LRW=0OF1000:JMP18RS_BUS#M4=1LDR4LDPCOF0110:1010:STPIRET161ATJIAR_BUS#0FC=0OFM4=1P0LDR4C=11FLDPCM4=0OFLDR4PC_ADDLDPCOF1001:JC191011:1100:INTSINTC1B1CINTCINTSOFOF图12 微程序流程图 34

存储器写操作(KWE):按下复位按钮CLR#后,微地址寄存器状态为全零。此时置SWC = 0、SWB =1,SWA =0,按启动按钮后微指令地址转入27H,从而可对RAM连续进行手动写入。

存储器读操作(KRD):按下复位按钮CLR#后,置SWC = 0,SWB =0,SWA =1,按启动按钮后微指令地址转入17H,从而可对RAM连续进行读操作。

写寄存器操作(KLD):按下复位按钮CLR#后,置SWC = 0,SWB =1,SWA =1,按启动按钮后微指令地址转入37H,从而可对寄存器堆中的寄存器连续进行写操作。

读寄存器操作(KRR):按下复位按钮CLR#后,置SWC = 1,SWB =0,SWA =0,按启动按钮后微指令地址转入47H,从而可对寄存器堆中的寄存器连续进行读操作。

启动程序(PR):按下复位按钮CLR#后,置SWC = 0,SWB = 0,SWB = A,用数据开关SW7—SW0设置内存中程序的首地址,按启动按钮后微指令地址转入07H,然后转到“取指”微指令。 应当着重指出,在微指令格式的设计过程中,对数据通路所需的控制信号进行了归并和化简。细心的同学可能已经发现,微程序控制器输出的控制信号远远少于数据通路所需的控制信号。这里提供的微程序流程图,是没有经过归并和化简的。仔细研究一下微程序流程图,就会发现有些信号的出现的位置完全一样,这样的信号用其中一个信号就可以代表。请看信号LDPC和LDR4,这两个信号都在微程序地址07H、1AH、1FH、26H出现,而在其他的微程序地址都不出现,因此这两个信号产生的逻辑条件是完全一样的。从逻辑意义上看,这两个信号的作用是产生新的PC,完全出现在相同的微指令中是很正常的,因此用LDPC完全可以代替LDR4。还有另一些信号,例如LDDR1和LDDR2,出现的位置基本相同。LDDR2和LDDR1的唯一不同是在地址14H的微指令中,出现了LDDR2信号,但是没有出现LDDR1信号。LDDR1和LDDR2是否也可以归并成一个信号呢?答案是肯定的。微程序流程图中只是指出了在微指令中必须出现的信号,并没有指出出现其他信号行不行,这就要根据具体情况具体分析。在地址14H的微指令中,出现LDDR1信号行不行呢?完全可以。在地址14H出现的LDDR1是一个无用的信号,同时也是一个无害的信号,它的出现完全没有副作用,因此LDDR1和LDDR2可以归并为一个信号LDDR1。根据以上两条原则,我们对下列信号进行了归并和化简:

LDIR(CER) 为1时,允许对IR加载,此信号也可用于作为双端口存储器右端口选择CER。 LDPC(LDR4) 为1时,允许对程序计数器PC加载,此信号也可用于作为R4的加载允许信号

LDR4。

LDAR1(LDAR2) 为1时,允许对地址寄存器AR1加载,此信号也可用于作为对地址寄存器AR2

加载。

LDDR1(LDDR2) 为1时允许对操作数寄存器DR1加载。此信号也可用于作为对操作数寄存器

DR2加载。

M1(M2) 当M1 = 1时,操作数寄存器DR1从数据总线DBUS接收数据;当M1 = 0时,

操作数寄存器DR1从寄存器堆RF接收数据。此信号也可用 于作为操作数寄存器DR2的数据来源选择信号。

在对微指令格式进行归并和化简的过程中,我们有意保留了一些信号,没有化简,同学们可以充分发挥创造性,提出更为简单的微指令格式。 还要说明的是,为什麽微指令格式可以化简,实验台数据通路的控制信号为什麽不进行化简?最主要的原因是前面进行的各个实验的需要,例如LDDR1和LDDR2这两个信号,在做运算器数据通路实验时,是不能设计成一个信号的。还有一个原因是考虑到实验时易于理解,对某些可以归并的信号也没有予以归并。

35

四、实验设备

(1)TEC-4计算机组成原理实验系统一台 (2)双踪示波器一台 (2)直流万用表一只 (3)逻辑测试笔一支

五、实验任务

(1)按实验要求连接实验台的数码开关K0—K15、按钮开关、时钟信号源和微程序控制器。 注意:本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线暂不连接。连线完成后应仔细检查一遍,然后才可加上电源。 (2)观察时序信号。

用双踪示波器观测时序产生器的输入输出信号:MF,W1—W4,T1—T4。比较相位关系,画出其波形,并标注测量所得的脉冲宽度。观察时须将TJ1接低电平,DB、DZ、DP开关均置为0状态,然后按QD按钮,则连续产生T1、T2、T3、T4、W1、W2、W3、W4。

了解启停控制信号的功能,并熟练地使用连接这些控制信号的按钮或开关。

(3)熟习微指令格式的定义,按此定义将控制台指令微程序的8条微指令按十六进制编码,列于下表。三种控制台指令的功能由SWC、SWB、SWA三个二进制开关的状态来指定(KRD =001B,KWE=010B,PR=000B)。此表必须在预习时完成。

微指令地址 微指令编码 微指令地址 微指令编码 00H 3CH 07H 17H 27H 3FH 3DH 3EH

单拍(DP)方式执行控制台微程序,读出上述八条微指令,用P字段和微地址指示灯跟踪微指令执行情况,并与上表数据对照。用连续方式执行KWE和KRD(将TJ1接地),画出u_A0(28C64的地址A0,U12的引脚10)信号波形,作出解释。

单拍(DP)方式执行控制台微程序,读出上述八条微指令,用P字段和微地址指示灯跟踪微指令执行情况,并与上表数据对照。用连续方式执行KWE和KRD(将TJ1接地),画出u_A0(28C64的地址A0,U12的引脚10)信号波形,作出解释。

(4)用P3和SWC、SWB、SWA的状态组合,观察验证三种控制台指令KRD、KWE、PR微地址转移逻辑功能的实现。

(5)熟习05H、10H两条微指令的功能和P2测试的状态条件(IR4—IR7),用二进制开关设置IR7—IR4的不同状态,观察ADD至STP九条机器指令微地址转移逻辑功能的实现。(用逻辑笔测试有关逻辑电路的电平,分别做出测试记录,自行设计表格。)

(6)设置IR7—IR4的不同组合,用单拍方式执行ADD至STP九条机器指令微程序,用微地址和P字段指示灯跟踪微程序转移和执行情况。用逻辑笔测试小插座上输出的微命令信号,记录ADD、SUB、LDA、STA四条机器指令的微命令信号,自行设计表格。

六、实验步骤和实验结果 (1) 接线

跳线开关J1用短路子短接。控制器的输入C接K0,IR4接K1,IR5接K2,IR6接K3,IR7接K4,

36

TJI接K5,SKIP接GND。

合上电源。按CLR#按钮,使实验系统处于初始状态。

(2)观察时序信号波形

令K5(TJI)= 0,置DP = 0,DZ = 0,DB =0。按QD按钮,则时序部分开始不停止的运行,直到按CLR#按钮为止。用双踪示波器观察MF、T1、T2、T3、T4、W1、W2、W3、W4信号。观察的方法是同时观察两路信号,以便比较相位。可按下述顺序进行:MF和T1,T1和T2,T2和T3,T3和T4,T1和W1,W1和W2,W2和W3,W3和W4。根据观察的结果,可画出波形图。波形图的图形请参看第一节图3的基本时序图。MF的周期为1000毫秒,占空比为50?。

(3) 控制台操作微指令编码测试和KWRD、KRD连续运行时的?_A0波形 1.控制台操作微指令编码测试

控制台微代码在28C64的D0—D7输出,D0是最低位,D7是最高位,CM0是最低字节,CM4是最高字节。D0—D7对应于28C64的引脚11、12、13、15、16、17、18、19。

令K5(TJI)= 0,置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 0、SWA = 1,实验系统处于KRD工作模式。按CLR#按钮,使实验系统处于初始状态,微地址?_A5—?_A0为00H,测得的微码是00H 05H 0C0H 02H 07H。按一次QD按钮,微地址?A5—?_A0为17H,测得的微码是04H 05H 44H 00H 3FH。按一次QD按钮,微地址?_A5—?_A0为3FH,测得的微码是04H 09H 0C0H 00H 3EH。按一次QD按钮,微地址?_A5—?_A0为3EH,测得的微码是00H 05H 0C8H 00H 3FH。按一次QD按钮,微地址?_A5—?_A0为3FH。由于微地址又返回3FH,停止测试。

令K5(TJI)= 0,置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 0,实验系统处于KWE工作模式。按CLR#按钮,使实验系统处于初始状态,微地址?_A5—?_A0为00H。按一次QD按钮,微地址?_A5—?_A0为27H,测得的微码是04H 05H 44H 00H 3DH。按一次QD按钮,微地址?_A5—?_A0为3DH,测得的微码是00H 01H 40H 00H 3CH。按一次QD按钮,微地址?_A5—?_A0为3CH,测得的微码是04H 05H 0C8H 00H 3DH。按一次QD按钮,微地址?_A5—?_A0为3CH。由于微地址又返回3CH,停止测试。 令K5(TJI)= 0,置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。置SWC=0、SWB = 0、SWA = 0,实验系统处于PR工作模式。按CLR#按钮,使实验系统处于初始状态,微地址?_A5—?_A0为00H。按一次QD按钮,微地址?_A5—?_A0为07H,测得的微码是00H 05H 41H 20H 05H。按一次QD按钮,微地址?_A5—?_A0为05H,测得的微码是00H 05H 0C4H 91H 10H。由于以后的微码与机器指令有关,停止测试。

2. KWE、KRD连续运行时的?_A0波形

令K5(TJI)= 0,置DP = 0,DZ = 0,DB =0,使实验系统处于连续状态。置SWC = 0、SWB = 1、SWA = 0,实验系统处于KWE工作模式。按CLR#按钮,使实验系统处于初始状态。按一次QD按钮,使系统连续运行。用示波器测量?_A0(U12的引脚11)的波形,得到波形如下:

虽然完成KWE控制台功能需要27H、3DH、3CH 3条微指令,但是在连续运行时,循环执行的只是3DH、3CH 2条微指令,因此?_A0的波形如上。

37

令K5(TJI)= 0,置DP = 0,DZ = 0,DB =0,使实验系统处于连续状态。置SWC = 0、SWB = 0、SWA = 1,实验系统处于KRD工作模式。按CLR#按钮,使实验系统处于初始状态。按一次QD按钮,使系统连续运行。用示波器测量?_A0(U12的引脚11)的波形,得到波形与KWE时的波形相同,原因也类似。

(4) 用P3和SWB、SWA的状态组合,观察验证三种控制台指令KWE、KRD、PR微地址转移逻辑功

能的实现。

其实,第(3)步已验证了验证三种控制台指令KWE、KRD、PR微地址转移逻辑功能的实现。在这里,可将时序电路的输入TJI与控制存储器的输出TJ连接,置DP = 1,DB = 0,DZ = 0。选择SWC = 0、SWB = 0、SWA = 1,按QD按钮,验证KRD的微地址转移功能;选择SWC = 0、SWB = 1、SWA = 0,按QD按钮,验证KWE的微地址转移功能;选择SWC = 0、SWB = 0、SWA = 1,按QD按钮,验证KRD的微地址转移功能。这里不再详述。

(5) 熟习05H、10H两条微指令的功能和P2测试的状态条件(IR4—IR7),用二进制开关设置IR7

—IR4的不同状态,观察ADD至STP九条机器指令微地址转移逻辑功能的实现。

1. 05H微指令的功能是根据程序计数器PC从存储器取指令,送往指令寄存器IR,同时进行PC+1

的操作。05H微指令的下一微指令地址是10H。不过,10H只是一个表面的下一微地址,由于该微指令中P2 = 1,因此实际的微指令地址的低4位要根据IR7—IR4确定,实际微地址为10H + IR7 IR6 IR5 IR4。

2. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 0,相当于ADD指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为10H。

3. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 1,相当于SUB指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为11H。

4. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 1,K1(IR4)= 0,相当于MUL指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为12H。

5. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=0,K2(IR5)= 1,K1(IR4)= 1,相当于AND指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为13H。

6. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 0,K1(IR4)= 0,相当于STA指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为14H。

7. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 0,K1(IR4)= 1,相当于LDA指令的操作码。按一次QD按钮,微地址变为07H。按一次QD

38

按钮,微地址变为05H。按一次QD按钮,微地址变为15H。

8. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6)=1,K2(IR5)= 1,K1(IR4)= 0,相当于STP指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为16H。

9. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 1,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 0,相当于JMP指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为18H。

10. 置DP = 1,DZ = 0,DB =0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按

CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 1,K3(IR6)=0,K2(IR5)= 0,K1(IR4)= 1,相当于JC指令的操作码。按一次QD按钮,微地址变为07H。按一次QD按钮,微地址变为05H。按一次QD按钮,微地址变为19H。

(6)设置IR7—IR4的不同组合,用单拍方式执行ADD至STP九条机器指令微程序,记录ADD、SUB、LDA、STA四条机器指令的微命令信号。

操作的方法与(5)类似,只是需纪录ADD、SUB、LDA、STA四条机器指令的微命令信号。不再详述。

(7)提出自己的微程序格式方案 本内容可由学生自己提出。这里仅对信号的进一步归并提一点参考意见。 1. 从微程序格式中去掉M1(M2)信号。在微程序流程图中,只有M1(M2) = 0,没有M1(M2) =

1,因此只要使M1固定接GND,M2固定接GND,就可以从微程序格式中去掉M1(M2)信号。 2. 从微程序格式中去掉LDER信号。暂存寄存器ER的唯一作用是作为寄存器堆的数据来源。因此,

可将LDER固定接VCC。虽然每条微指令中都有LDER出现,有可能改变ER的值,但是只有在下一条微指令中含有WRD信号时LDER信号才起作用。观察微程序流程图可以发现,每条含有WRD信号的微指令前面的微指令中均含有LDER微指令,因此可以从微程序格式中去掉LDER信号。 3. 从微程序格式中去掉PC_INC信号,将它和CER、LDIR归并为一个LDIR信号。

39

第六节 CPU组成与机器指令执行实验

一、实验目的

(1)将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机; (2)用微程序控制器控制模型机数据通路;

(3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。

二、实验电路

本次实验用到前面四个实验中的所有电路,包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组合成为一台简单计算机。因此,在基本实验中,这是最复杂的一个实验,也是最能得到收获的一个实验。 在前面的实验中,实验者本身作为“控制器”,完成数据通路的控制。而在本次实验中,数据通路的控制将由微程序控制器来完成。CPU从内存取出一条机器指令到执行指令结束的一个机器指令周期,是由微指令组成的序列来完成的,即一条机器指令对应一个微程序。

三、实验设备

(1)TEC-4计算机组成原理实验系统一台 (2)双踪示波器一台 (3)直流万用表一只 (4)逻辑测试笔一支

四、实验任务

(1)对机器指令系统组成的简单程序进行译码。

将下表的程序按指令格式手工汇编成十六进制机器代码,此项任务应在预习时完成。

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 指令 LDA R0,[R2] LDA R1,[R3] ADD R0,R1 JC +5 AND R2,R3 SUB R3,R2 STA R3,[R2] MUL R0,R1 STP JMP [R1] 机器代码

(2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序产生器是时序部件。连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。其中,为把操作数传送给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0

40

应分别与IR3至IR0连接,WR1、WR0也应接到IR1、IR0上。

开关控制

控制台 时序发生器 时序信号 开关控制 指示灯信号 控制信号 时序信号 控制信号

微程序控制器 数据通路 指令代码、条件信号

图13 模型计算机连线示意图

(3)将上述任务(1)中的程序机器代码用控制台操作存入内存中,并根据程序的需要,用数码开关SW7—SW0设置通用寄存器R2、R3及内存相关单元的数据。注意:由于设置通用寄存器时会破坏内存单元的数据,因此一般应先设置寄存器的数据,再设置内存数据。

(4)用单拍(DP)方式执行一遍程序,列表记录通用寄存器堆RF中四个寄存器的数据,以及由STA指令存入RAM中的数据(程序结束后从RAM的相应单元中读出),与理论分析值作对比。单拍方式执行时注意观察微地址指示灯、IR/DBUS指示灯、AR2/AR1指示灯和判断字段指示灯的值,以跟踪程序中取指令和执行指令的详细过程(可观察到每一条微指令)。 (5)以单指(DZ)方式重新执行程序一遍,注意观察IR/DBUS指示灯、AR2/AR1指示灯的值(可观察到每一条机器指令)。执行结束后,记录RF中四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值作对比。注意:单指方式执行程序时,四个通用寄存器和RAM中的原始数据与第一遍执行程序的结果有关。

(6)以连续方式(DB、DP、DZ都设为0)再次执行程序。这种情况相当于计算机正常运行程序。由于程序中有停机指令STP,程序执行到该指令时自动停机。执行结束后,记录RF中四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值作对比。同理,程序执行前的原始数据与第二遍执行结果有关。

五、实验步骤和实验结果

(1)对机器指令系统组成的简单程序进行译码。

地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H

(2)接线

41

指令 LDA R0,[R2] LDA R1,[R3] ADD R0,R1 JC +5 AND R2,R3 SUB R3,R2 STA R3,[R2] MUL R0,R1 STP JMP [R1] 机器代码 58H 5DH 04H 95H 3EH 1BH 4BH 24H 60H 84H 本实验的接线比较多,需仔细。 1. 将跳线开关J1用短路子短接。时序发生器的输入TJI接控制存储器的输出TJ。控制器的输入C

接运算器ALU的C。控制器的输入IR7、IR6、IR5、IR4依次指令寄存器IR的输出IR7、IR6、IR5、IR4。共6条线。 2. 控制器的输出LDIR(CER)、LDPC(LDR4)、PC_ADD、PC_INC、M4、LDIAR、LDAR1(LDAR2)、AR1_INC、

M3、LDER、IAR_BUS#、SW_BUS#、RS_BUS#、ALU_BUS、CEL#、LRW、WRD、LDDR1(LDDR2)、M1(M2)、S2、S1、S0依次与数据通路的对应信号连接。共27条线。 3. 指令寄存器IR的输出IR0接双端口寄存器堆的RD0、WR0,IR1接RD1、WR1,IR2接RS0,IR3接

RS1。共6条线。

合上电源。按CLR#按钮,使实验系统处于初始状态。

(3)存程序机器代码,设置通用寄存器R2、R3及内存相关单元的数据。

? 设置通用寄存器R2、R3的值。

在本操作中,我们打算使R2 = 60H,R3 = 61H。

1.令DP = 0,DB = 0,DZ =0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA = 1,

使实验系统处于寄存器加载工作方式KLD。按CLR#按钮,使实验系统处于初始状态。

2. 在SW7—SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用。该存储器地址最好

是不常用的一个地址,以免设置通用寄存器操作破坏重要的存储器单元的内容。例如可将该地址设置为0FFH。按一次QD按钮,将0FFH写入AR0和AR1。

3. 在SW7—SW0上设置02H,作为通用寄存器R2的寄存器号。按一次QD按钮,则将02H写入IR。 4. 在SW7—SW0设置60H,作为R2的值。按一次QD按钮,将60H写入IR指定的R2寄存器。 5. 在SW7—SW0上设置03H,作为通用寄存器R3的寄存器号。按一次QD按钮,将03H写入IR。 6. 在SW7—SW0设置61H,作为R3的值。按一次QD按钮,将61H写入R3。 7. 设置R2、R3结束,按CLR#按钮,使实验系统恢复到初始状态。

? 存程序机器代码。 本操作中,我们从00地址开始存10个机器代码:58H,5DH,04H,95H,3EH,1BH,4BH,24H,60H,84H。在60H存入24H,用于给R0置初值;在61H存入83H,用于给R0置初值。 1. 令DP = 0,DB = 0,DZ =0,使实验系统处于连续运行状态。令SWC = 0、SWB = 1、SWA = 0,

使实验系统处于写双端口存储器工作方式KWE。按CLR#按钮,使实验系统处于初始状态。 2. 置SW7—SW0为00H,按QD按钮,将00H写入AR1。 3. 置SW7—SW0 为58H,按QD按钮,将58H写入存储器00H单元。AR1自动加1,变为01H。 4. 置SW7—SW0为5DH,按QD按钮,将5DH写入存储器01H单元。AR1自动加1,变为02H。 5. 按QD按钮,使AR1+1。AR1此时为02H。 6. 重复进行下去,一直到将84H写入存储器09H单元。按CLR#按钮,使实验系统恢复到初始状态。 7. 置SW7—SW0为60H,按QD按钮,将60H写入AR1。 8. 置SW7—SW0 为24H,按QD按钮,将24H写入存储器60H单元。AR1自动加1,变为61H。 9. 置SW7—SW0 83H,按QD按钮,将83H写入存储器61H单元。按CLR#按钮,使实验系统恢复到初

始状态。

(4) 用单拍(DP)方式执行一遍程序。

42

在单拍执行过程中,首先要随时监测AR2的值和IR的值,以判定程序执行到何处,正在执行哪条指令。监测微地址指示灯和判断字段指示灯,对照微程序流程图,可以判断出微指令的地址和正在进行的微操作。程序执行的结果如下: 初值:R0未定,R1未定,R2 = 60H,R3 = 61H。存储器60H单元的内容是24H,61H单元的内容是83H。 1. LDA R0,[R2]

执行结果 R2 = 60H,R0 = 24H。 2. LDA R1,[R3]

执行结果 R3 = 61H,R1 = 83H。 3. ADD R0,R1

执行结果 R0 = 0A7H,R1 = 83H,C = 0。 4.JC +5

执行结果转移到03H,因为C = 0。 5.AND R2,R3

执行结果 R2 =60 H,R3 =61H。 6.SUB R3,R2

执行结果 R2 = 60H,R3 = 01H 7.STA R3,[R2] 执行结果 R2 = 60H,R3 = 01H,存储器60单元的内容为01H。 8.MUL R0,R1

执行结果 R0 = 15H,R1 = 83H 9.STP 执行结果:无变化 10.JMP [R1] 执行结果 转移到83H。

第一遍执行结束。执行结果是R0 = 15H,R1 = 83H,R2 = 60H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H。

(5)用单指(DZ)方式执行一遍程序。 初值: R0 = 15H,R1 = 83H,R2 = 60H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H。 1.LDA R0,[R2]

执行结果 R2 = 60H,R0 = 01H。 2.LDA R1,[R3]

执行结果 R3 = 01H,R1 = 5DH。 3.ADD R0,R1

执行结果 R0 = 5EH,R1 = 5DH,C = 0 4.4.JC +5

执行结果转移到03H,因为C = 0。 5.AND R2,R3

执行结果 R2 =00 H,R3 =01H。

43

6.SUB R3,R2

执行结果 R2 = 00H,R3 = 01H 7.STA R3,[R2] 执行结果 R2 = 00H,R3 = 01H,存储器00单元的内容为01H。 8.MUL R0,R1

执行结果 R0 = 0B6H,R1 = 5DH 9.STP 执行结果:无变化 10.JMP [R1] 执行结果 转移到5DH

第二遍执行结束。执行结果是R0 = B6H,R1 = 5DH,R2 = 00H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H,00H单元的内容为01H。

(6)用连续方式执行一遍程序

由于00单元的内容已被修改,因此在执行前应首先恢复00H单元的内容58H。

初值:R0 = 0B6H,R1 = 5DH,R2 = 00H,R3 = 01H,存储器60H单元的内容是01H,61H单元的内容是83H,00H单元的内容为58H。 1.LDA R0,[R2]

执行结果 R2 = 00H,R0 = 58H。 2.LDA R1,[R3]

执行结果 R3 = 01H,R1 = 5DH。 3.ADD R0,R1

执行结果 R0 = 0B5H,R1 = 5DH,C = 0 4.4.JC +5

执行结果转移到03H,因为C = 0。 5.AND R2,R3

执行结果 R2 =00 H,R3 =01H。 6.SUB R3,R2

执行结果 R2 = 00H,R3 = 01H 7.STA R3,[R2] 执行结果 R2 = 00H,R3 = 01H,存储器00单元的内容为01H。 8.MUL R0,R1

执行结果 R0 = 41H,R1 = 5DH 9.STP 执行结果:无变化

44

本文来源:https://www.bwwdw.com/article/2t6p.html

Top