实验4-预习材料 - 图文

更新时间:2023-11-15 05:11:01 阅读量: 教育文库 文档下载

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

TEC-XP实验机硬布线控制器的设计

我们知道控制器的基本功能是根据指令及指令的执行步骤,产生控制全机的各种控制信号。因此控制器的设计一般都要经过如下几个阶段:

①从指令系统入手,划分每一条指令的执行步骤,设计每一条指令的每一个执行步骤的具体操作功能;

②需要用什么办法区分、表示指令的不同步骤;

③确定在实现这些操作功能时,计算机各相关功能部件要求使用哪些控制信号,这些控制信号要用高电平还是低电平;

④需要选用什么具体逻辑电路、采用什么处理方案来形成这些控制信号。 下面就结合实验机介绍其硬布线控制器的设计实现方法。 一、教学计算机的指令执行流程

在实验二中,我们学习了TEC-XP实验机指令系统,知道了其指令可以按功能和它们的执行步骤分为如下4组:

分类 A组 B组 C组 D组 基本指令 指令 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 基本指令 LDRR,STRR, PUSH,POP,PSHF,POPF,MVRD, IN,OUT, JMPA, RET 扩展指令 CALR,LDRA,STRA,,LDRX,STRX 基本指令 CALA 扩展指令 TRET A组指令完成的是通用寄存器之间的数据运算或传送,和其它几项特殊的操作,指令执行时不需访问内存,在读取指令之后可一步完成。

B组指令完成的是一次内存或IO设备的访问操作,在读取指令之后可二步完成,第一步用于向地址寄存器送入16位的(或8位的IO端口)地址,第二步完成内存或IO设备的读、写操作。

C组指令中的4条指令,完成的是二次内存访问操作,正常情况要用4步完成,每一次内存访问操作,都要经过传送地址和数据读写这样两步;但在这里却只需要3步即可,因为头一次读出的数据就是下一次读写操作要使用的地址信息,读出之后直接(或经过一次加法运算)将其写入地址寄存器,就可以省掉第二次内存读、写操作过程中的需要的传送地址的步骤。CALR指令先用2步保存PC内容(子程序调用指令的后续指令地址)到堆栈,第3步把寄存器中的子程序入口地址传送到程序计数器PC中。

D组指令完成的也是2次内存储器的读、写操作,在读取指令之后可4步完成。

TEC-XP实验机的指令执行流程如下图所示。

按下Reset1000PC ?00000AR ?PC取PC?PC+1指0010XXXX中断响应与处理0011ALU运算B组寄存器之间A组运算与传送0110读写主存或接口0100传送地址AR?地址0111C组指令读、写内存AR?地址读内存,读出的指令送IRIR?(AR)B、C、D组读、写内存或I/O 接口0101D组读、写内存PC?地址

第2 次读写主存下面对图中的每个符号及其含义进行必要说明。

图中的每一个方框表示指令的一个执行步骤,在计算机中需要用“节拍”来区分不同的步骤和每个步骤的时间长短。方框之间的带箭头的连线表示节拍状态的转换次序和方向。箭头线旁边有文字说明的,表示从前一个节拍转换为当前节拍的条件,没有文字说明的,表示无条件地从前一个节拍转换为当前节拍。这样来理解,上图实际上就是我们在《数字电路》中学过的状态转换图。每个方框左上角的4位数字,是为该节拍分配的节拍状态编码。 二、节拍发生器的设计与实现

根据上面的状态转换图,总共使用了 8 个节拍(不含响应中断的步骤),至少要使用 4 位触发器(可以产生最多16个节拍),使用 4位触发器(分别命名为 T3 T2 T1 T0)不同的状态组合来区分每一个节拍,例如,用T3 T2 T1 T0 =1000 来标识图中最左上角的那个节拍。最终选用多少个节拍更好,可能各有考虑,作为实验用的计算机,以节拍关系更清晰、易理解最重要。还要有利于简化生成全部控制信号的逻辑表达式。

如何分配每个节拍的 4个触发器的状态组合,需要遵循的原则之一是:尽量做到从当前节拍切换到下一个节拍时,只有一个触发器的状态发生变化,办不到时,也要使状态发生变化的触发器数目尽可能少。

下面结合上图说明一下实验机的状态编码:每个方框左上角的4位数字,是为该节拍分配的节拍状态编码。

其中状态编码为1000的节拍完成把0值送到程序计数器PC,为启动监控程序做好准备,只在实验计算机系统加电启动时被执行一次,在实验计算机正

常运行的过程中不会进入这个节拍。

状态编码为0000和0010的两个节拍完成读取指令的功能,公用于所有指令,是每一条指令开始执行时必须首先完成的两个操作步骤。

在完成读取指令之后,即已经得知指令操作码的前提下,节拍发生器就按这4类指令的划分情况,分别进入到各自不同的节拍序列。

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步完成。

这种处理办法可以把全部指令的执行流程的逻辑关系表现得更清晰通畅,更容易学习与理解,也为简化所用逻辑线路的设计提供了十分有利的条件。

图中用虚线框表示的“响应与处理中断请求”的动作,在相邻两条指令进

行切换的时刻,即前一条指令已经结束、下一条指令尚未开始的时刻,完成检查有无中断请求的功能,这个检查步骤也公用于所有指令,并依据检查结果进行不同的处理,无中断请求时,就开始下一条指令的执行过程,有中断请求时则进入中断响应和处理的过程,处理起来略显复杂,等到讲解中断的时候再详细说明。

这些节拍是由节拍发生器产生的。节拍发生器是用多位触发器的输出信号的不同组合状态,来标识每条指令的执行步骤。设计节拍发生器的线路,就是确保它按照上图规定的功能完成节拍状态转换。在TEC-XP实验机系统中,节拍发生器是用一片GAL20V8器件通过编程实现的。 三、控制信号形成部件

1、确定控制器应提供的控制信号

控制器的功能,是向计算机各个功能部件提供它们协同运行所需要的控制信号。因此在设计控制器时,首先要根据指令的执行过程,把每条指令在执行过程中需要的控制信号统计出来,然后在根据根据这些信号的要求设计电路,产生这些信号。

下面开始对控制器需要提供出来的控制信号进行详细的说明。

①对运算器部件,应该向它提供23位的控制信号(在实验四中,这23位控制信号是用24位的微型手拨开关提供的,当计算机正常运行时,将改由控制器向运算器提供这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寄存器)的移位输入信号。

②对内存储器和I/O接口部件,控制器主要向它们提供读写操作用到的地址信息和全部控制信号。为实现对存储器和I/O接口的读写操作控制,必须指明:

是否要读写内存或I/O接口,是读写内存储器还是I/O接口,到底是读还是写操作。可以把这些要求组合成以下5种情形:

写内存,在写数据到内存时要用,用于实验机的STO、PUSH等指令的写内存操作;

读内存,在从内存读数据时要用,用于实验机的LOD、POP等指令的读内存操作;

写接口,在写数据到接口时要用,用于实验机的OUT指令的写I/O接口操作;

读接口,在从接口读数据时要用,用于实验机的IN指令的读I/O接口操作;

既不读写内存也不读写接口,在许多指令的大部分时间里是有这种运行需求的,此时应禁止内存和接口的读写操作。设计中一定不能忘记这一使用要求。

在TEC-XP实验机系统中,通过3位编码(/MIO,REQ,/WE)来区分上述5种情形,具体安排如下。

/MIO 0 0 0 0 1

REQ 0 0 1 1 X /WE 0 1 0 1 X 操作功能 内存写 内存读 I/O写 I/O读 无读写 可以看到,/MIO信号为低,要读写内存或I/O接口,为高则不读写内存和I/O接口;

在/MIO信号为低、REQ信号为低时,是内存工作(读写),为高则是I/O接口工作;

在/MIO信号为低、/WE信号为低时是写操作,为高则是读操作。 这里的“×”符号表示“无关位”,即/MIO信号为高时,无论REQ和/WE处于什么状态,都是既不读写内存也不读写I/O接口。

向内存和I/O接口提供的读写信号,通过对/MIO REQ /WE这3位码的译码来实现。

③ 对CPU内部总线数据来源的控制,可以向内部总线IB传送数据的信息来源包括:

ALU的输出结果,将ALU的输出送到内部总线,主要目的是用于把累加器

的内容写进内存或I/O接口,即把ALU的输出经内部总线、经过双向3态门电路(74LS245)传送到外部数据总线DB,而DB的每一位与内存的数据线、I/ O接口的数据线直接连接在一起。

标志寄存器内容,由4位状态标志位寄存器的输出C、Z、V、S,及2位中断优先级P1、P0信号总共6位信息组成。将这8位(最低2位补0值)信息送到IB,也是为了将其写入内存。在响应中断后,用于通过PUSHF指令保存中断现场信息。

指令寄存器的低位字节,在IN和OUT指令中,存放的是IO端口地址,需要送内部总线再经ALU传到地址寄存器;在相对转移指令中,存放的是offset偏移值,需要送内部总线经ALU完成与程序计数器PC的内容相加;此时有一个符号位扩展支持的问题,在计算相对转移指令的转移地址时,是通过把一个8位的补码(由汇编程序计算得到)与该转移指令本来的16位地址(一定为正数,故其原码与补码相同)相加来实现,必须把8位补码offset的最高位(补码的符号位,可能为0或1)扩展到加法器的高8位的每一位上去参加相加。

16位的数据手拨开关,用于把通过该开关所拨的内容,经过内部总线传送到计算机内相关部件中。

16位的中断向量,由2位的中断优先级拼接上确定的高12位数值(通过跳线给出)得到,最低的2位补0,在处理中断时,用于找到中断服务子程序的入口地址。

在任何时刻只能把一个数据来源送上总线。为了从上述5个数据来源中选

取其一,可以设置3位编码。

编码 译码信号 000 001 010 011 100 101 110 111 /SWTOIB /RTOIB /ETOIB /FTOIB /STOIB /INTVH /INTV NC 操作说明 送开关内容到内部总线 送ALU输出到内部总线 送IR低位字节内容到内部总线(可能含符号为扩展) 送程序状态到内部总线 16位机种不用 16位机种不用 送中断向量到内部总线 无操作功能,不向内部总线发送数据

在TEC-XP实验机中,这三位编码通过译码器(标记为DC1)给出的译码信号打开不同的选择门线路来选择把哪一组数据发送到CPU内部总线IB上。

其实还可以从外部总线向内部总线传送数据(或者相反方向),但这是通过另外的办法处理的,并且已经处理好与DC1编码控制的协调关系。

④对几个特定的寄存器接受输入的控制,用来选择允许哪一个寄存器接收送给它的一组数据。这些寄存器是指令寄存器IR,地址寄存器,中断优先级寄存器INTP等。这些控制信号也可以用三位编码来实现:

编码 译码信号 000 001 010 011 100 101 110 111 NC /GIR /GARL /GAR /INTR /INTN /EI /DI 操作说明 不操作 指令寄存器接收 16位机中不用 地址寄存器接收 恢复原中断优先级 接收新中断优先级 开中断 关中断 在TEC-XP实验机中,通过一译码器(标记为DC2)对上述三位编码进行译码产生的信号送到各相应寄存器的/G控制端引脚,来完成对寄存器接收数据的控制。对这一译码器产生8个译码输出信号中,其中的3个用于控制专

用寄存器的接收操作,1个不用,另外的4个转义用于有关中断的控制操作,响应新的中断请求时需要变化中断优先级,中断处理完成时,需要恢复中断之前的程序现场,为了使得CPU可以响应中断,需要在用户程序中执行一条开中断指令EI,为了禁止CPU响应中断,需要在用户程序中执行一条关中断指令DI。再一次说明,此时至少得有一个译码信号为NC,即不操作(接收)控制。

把上述全部内容归纳在一起,就得出需要控制器形成并提供给计算机各个功能部件的32位时序控制信号。

23位用于运算器, 3位用于内存和I/O接口, 3 位用于内部总线, 3位用于几个特定寄存器。 这些控制信号的功能可用下图表示:

节拍状态码节拍发生器指令操作码指令连接设备标志位状态时序控制信号产生部件 MRW I2~0 I8~6 I5~3 B口 A口 SST SSH SCI DC2 DC1地址总线指令寄存器外部总线标志位电路开关门双向三态门内存储器开关门串行接口地址寄存器 运算器 PC SP最低位进位、移位信号开关门内部总线教学计算机的数据通路与微命令的控制作用开关门数据开关中断向量

2、设计指令流程中各时序控制信号的状态值

在划分完指令执行步骤(流程),确定好全部时序控制信号的组成之后,

接下来的工作,是根据每条指令的每一个节拍所执行的功能,确定这32位控制信号的正确值,为0 还是 为1,或是 0/1 均可,即填写指令流程表,这项工作的原理不难但却比较繁琐,容不得一点错误。

下表给出了对教学计算机基本指令执行流程的设计结果。其实这就是一张由多个输入变量(节拍状态、指令操作码、标志位的值)和32个输出变量构成的逻辑关系的真值表。

在指令流程表中,用一个横行,给出一条指令的一个执行步骤(节拍)需要使用的全部控制信号(计32位)的状态取值,这是时序控制信号产生部件的输出信号。该表最左一列是4位的节拍状态,第3列是8位的指令操作码,二者合起来用于指出该行对应的是哪一条指令的哪一个节拍;其中4条条件转移指令还用到了标志位C和Z的值,以决定是否实现转移,已经直接给出在这4条指令相应节拍的控制命令字段对应着I7的位置。4位的节拍状态,8位的指令操作码,状态标志位(C、Z、V、S)组成时序控制信号产生部件的输入信号。第2列和最右一列是注释部分,分别标明指令对应的汇编语句名和本节拍完成的主要操作功能,为理解与阅读指令流程表中的内容提供帮助。

这里要做的工作,就是依据已经完成的指令执行流程设计(指令节拍划分与编码,每一条指令的每一个节拍应实现的操作功能),把32位的控制信号的正确取值填入到指令流程表的每一个方格中去。这基本上是一个查表(教学计算机简明操作卡上的内容)并填写的过程,繁琐而机械,却容不得任何错误。

节拍 1000 0000 0010 0011 0110 指令 ADD SUB AND CMP XOR TEST OR MVRR DEC INC SHL SHR JR JRC JRNC JRZ JRNZ JMPA LDRR 编码 00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 01000001 01000100 01000101 01000110 01000111 10000000 10000001 /M R /W I2-0 I8-6 I5-3 100 001 011 001 100 011 010 000 001 000 001 000 100 001 011 000 100 001 011 001 100 001 011 100 100 001 001 001 100 001 011 110 100 001 001 100 100 001 011 011 100 100 011 000 100 011 011 001 100 011 011 000 100 011 111 000 100 011 101 000 100 101 011 000 100 101 0C1 000 100 101 0/C1 000 100 101 0Z1 000 100 101 0/Z1 000 100 011 010 000 100 100 001 000 B 0101 0101 0000 DR DR DR DR DR DR DR DR DR DR DR DR 0101 0101 0101 0101 0101 0101 0000 A 0101 0101 0000 SR SR SR SR SR SR SR SR 0000 0000 0000 0000 0101 0101 0101 0101 0101 0101 SR SST SSH SCI 000 001 000 001 000 000 001 000 001 001 001 000 001 001 001 000 001 000 001 000 000 000 001 000 001 001 110 100 101 100 000 000 000 000 000 000 000 000 000 000 000 001 000 000 DC2 111 011 001 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 011 011 DC1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 010 010 010 010 010 000 000 注释 0→PC,DI#=0 PC→AR,PC+1→PC MEM→IR DR+SR?DR DR-SR?DR DR or SR?DR DR-SR DR xor SR?DR DR?SR DR and SR?DR SR?DR DR-1?DR DR+1?DR SHL DR SHR DR Offset + PC?PC Offset + PC?PC Offset + PC?PC Offset + PC?PC Offset + PC?PC PC?AR, PC+1?PC SR?AR

0110 0110 0100 0111 0101 IN STRR PSHF PUSH OUT POP MVRD POPF RET CALA JMPA LDRR IN STRR PSHF PUSH OUT POP MVRD POPF RET CALA CALA CALA 10000010 10000011 10000100 10000101 10000110 10000111 10001000 10001100 10001111 11001110 10000000 10000001 10000010 10000011 10000100 10000101 10000110 10000111 10001000 10001100 10001111 11001110 11001110 11001110 100 100 100 100 100 100 100 100 100 100 001 001 011 000 000 000 010 001 001 001 001 001 100 000 111 011 011 011 111 011 011 011 011 011 111 111 111 100 000 100 100 111 111 000 111 111 0011 010 001 001 011 011 001 010 010 010 010 010 011 011 011 001 001 001 001 011 011 001 011 000 011 010 000 000 001 001 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0001 000 0000 DR 0100 0100 0000 0100 0101 0100 0100 0101 0101 DR 0000 0000 0000 0000 0000 DR DR 0000 0101 0000 0100 0101 0000 0000 0000 0000 0000 0100 0101 0100 0100 0101 0000 0000 0000 SR 0000 SR 0000 0000 0000 0000 0000 0000 0000 0101 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 010 000 000 000 000 000 000 000 000 000 001 001 001 001 001 000 000 000 000 000 000 000 000 000 000 000 000 000 000 011 011 011 011 011 011 011 011 011 011 000 000 000 000 000 000 000 000 000 000 000 000 011 000 010 000 000 000 010 000 000 000 000 000 000 000 000 001 011 001 001 000 000 000 000 000 000 001 IRL→ARL DR?AR SP-1?SP、AR SP-1?SP、AR IRL→ARL SP?AR, SP+1?SP PC?AR, PC+1?PC SP?AR, SP+1?SP SP?AR, SP+1?SP PC→AR,PC+1→PC MEM→PC MEM→DR (PORT)→R0 SR→MEM FLAG→MEM SR→MEM R0→(PORT) MEM→DR MEM→DR MEM→FLAG MEM→PC (AR)→Q SP-1→SP、AR PC→MEM,Q→PC 4、用线路实现表3-12所确定的功能

表2-12是体现教学机硬连线控制器的时序控制信号部件功能的一张真值表。由真值表出发设计其线路实现是数字电路的基本核心知识,通常要经过写出相应的逻辑表达式,适当化简,再选用由与-或两级逻辑关系实现的线路这样3步来完成。

在实验机中,这个线路使用的是由5000个门组成的MACH器件来实现的。MACH器件内部实现的正好就是与-或两级逻辑关系,又可以现场编程。结合表2,利用层次结构的逻辑描述语言ABEL通过对MACH现场编程即可实现产生上述32位控制信号的功能。(程序略)

四、硬布线控制器的组成和功能

TEC-XP的硬布线控制器(又称组合逻辑)的主体部分由程序计数器PC(16位长度,是Am2901的R5),指令寄存器IR(16位长度),节拍发生器(4位触发器的节拍状态)和时序控制信号形成部件(1片100条引脚的现场可编程的CPLD器件)4部分组成,框图如图所示。

CLKCLK节拍发生器 Timing指令寄存器 IRCZS时序控制信号产生部件(由与_或两级组合逻辑门电路组成)程序计数器 PC. . . . . . 时序控制信号DC2译码器. . .DC1译码器. . . 程序计数器PC用于保存下一条将要执行的指令在内存中的单元地址,有增量功能(PC+1→PC),并可以接受新的指令地址。在到内存读取指令之前,需要把PC中的内容送到内存地址寄存器,给出被读指令在内存中的单元地址。在教学计算机中,程序计数器PC选用运算器内部的一个16位的累加器实现。

指令寄存器IR用于保存当前正在执行的指令的主要内容,在读取指令的周期接收从内存中读出来的一条指令,以便提供本指令的操作码和使用的数据或者数据地址。在教学计算机中,指令寄存器IR选用两片由8位的D触发器构成的寄存器实现。

节拍发生器Timing用于使用几个触发器的不同的编码状态来区分和标示指令的执行步骤,指令执行步骤的衔接是通过节拍发生器的编码状态转换完成的。在教学计算机中,节拍发生器Timing选用一片简单PLD器件GAL20V8芯片实现。

时序控制信号产生部件用于产生并提供每一条指令的每一个执行步骤使用的全部时序控制信号,它要依据指令寄存器的操作码和节拍发生器的状态编码信号,可能还有运算器运算产生的标志位信号(C、Z、S)等,通过由与_或两级门电路产生并提供出一条指令的一个执行步骤使用的全部控制信号,这些信号可以直接送到每个被控制对象,或者经过译码器送到被控制对象。在教学计算机中,时序控制信号产生部件选用一片有100个引脚的 CPLD 器件实现,两个译码器选用三八译码器 74LS138 芯片实现。

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

Top