程序计数器PC可以在运算器内部完成加1运算功能,产生下一条相邻指令的地址;或者完成加一个相对转移的偏移量,产生相对转移指令的转移地址;或者直接接收一个16位的指令地址,用在子程序调用或者跳转指令中。
指令寄存器IR接收从内存储器读出并传送到内部总线IB的指令内容,其全部16位输出送MACH芯片的输入引脚,其低8位内容还经一个有三态功能的开关门送到内部总线IB。 Am2910芯片用在微程序控制器中,用于以多种方式向控制存储器提供下一条微指令的 地址,控制微指令的执行次序,解决的是指令执行步骤的衔接问题。
两种控制器的主要功能线路都集中到一片高集成度CPLD器件(MACH芯片)中实现,在完成扩展指令的教学实验中,可以不对MACH芯片之外的电路作任何变动,全部操作都集中到修改描述MACH 芯片功能的ABEL或VHDL语言的程序代码,执行编译和下载操作,以及运行调试这样几步工作。这是本教学计算机系统的一项显著特色,对降低学生的学习难度,简化修改与扩展控制器功能的操作,改善教学实验效果将起到重要作用。
从图1.5.1可以看到,MACH 器件内部包含有微程序控制器中的控制存储器、微指令寄存器、映射指令操作码为微指令地址的MAPROM、产生微指令是否转移信号CC的SCCgal、实现微指令字中的下条微指令地址和MAPROM输出的下条微指令地址二者选其一的功能几个部分的功能线路;包含有硬连线控制器的节拍发生器Timing、控制信号产生部件两部分线路;此外还实现了把两种控制器各自提供的32位控制信号进行二者选其一的功能。 与早期产品比较,还把用于中断实验的电路、对控制器控制信号译码的DC2和DC1电路、为运算器提供最低位进位输入信号、左右移位时提供给最高最低位的移位输入信号的电路也放到了MACH芯片之内实现,以尽量减少在主板上用到的中小规模电路数量。
MACH器件内部实现的电路,都是通过设计描述其功能的逻辑表达式体现出来的,这些逻辑表达式的分段清晰,实现的功能彼此独立,可读性比较强,设计与变更设计容易,不必过多处理功能线路之间的布线连接,可以保证更高的实验效率。这一设计结果也为更好地支持8位字长的教学计算机、完成8位字长计算机的教学实验带来极大方便。设计描述MACH芯片所实现功能的程序源代码是设计控制器的主要工作,下面将详细讲解这些内容。 在图1.5.2中给出了MACH器件的管脚编号和对应的信号名称。这些I/O管脚与外部其他线路的连接关系已经通过印制电路板的布线固定下来,不能试图去变更它。MACH的I/O管脚编号与信号名的对应关系,在程序的说明段中指定的,在程序的表达式段中,必须通过信号名称来表示和使用功能电路的输入输出信号。
MACH芯片被焊接在一块小的电路板上,使用的电源是3.3V(不是5V),是5V电源经过
19
一个二极管降压后得到的。输入输出信号通过4个40针的接插头与大板上的4个40孔的接插座实现连接,通常情况下,这块小板不必拔下来。如果要插拔这块小电路板,请一定要仔细,方向要正确,小板上的文字方向不能朝左或者朝右,也不能倒过来;位置要对准,每一个插针与对应一个插孔对正,不能错位;插拔时尽量保持小板保持水平状态,不能有太大的倾斜角度;插拔时必须用力适度,力量太小无法完成插拔,也不能使用暴力,以防对电路板或者接插元件造成损坏。
有多个描述MACH器件所实现的线路与运行功能的ABEL语言的程序代码文件,不同的控制器方案和不同的指令集合可以随意组合方案,对16位的教学计算系统,有用硬连线方案实现的基本指令集合与用微程序方案实现的全指令集合的组合方案,有用硬连线方案实现的全指令集合与用微程序方案实现的基本指令集合的组合方案,有用两种控制器实现的基本指令集合的组合方案,当然也有只实现一种控制器的方案。当然还有实现8位字长的教学计算机系统的控制器的源代码文件,下载不同的文件就能够得到不同的教学机系统。
完成控制器的教学实验,需要很好地掌握指令格式、指令编码、寻址方式和指令功能等内容,需要熟悉教学计算机的总体组成和各个部件的运行原理。为此,适当地花费一点时间学懂已有指令执行步骤的划分方案,各部件要求使用的控制信号。对微程序控制器还要懂得 微指令在控制存储器中的地址分配和形成微指令地址的方案;对硬连线控制器还要懂得节拍 发生器的设计和运行原理,控制信号产生部件的设计和提供控制信号的方案等内容。一句话, 就是需要初步懂得控制器的组成和运行原理的知识,教学计算机控制器线路的实际组成。教 学实验的目的,是在初步理解的基础上,通过自己动手,在已有指令的基础上再扩展若干条 指令,把控制器设计的整个过程亲自经历一遍,把尚未完全理解的内容设法理解正确,对认 识尚肤浅的、甚至于拿不太准的知识掌握得更深刻,在学习书本知识的同时,有意识地通过 实践来获取知识是人类成长进步的重要环节。
20
图1.5.2 MACH器件的管脚位置、编号和对应的信号名称
21
§1.6 TEC-XP16机的输入输出及中断
一、串行I/0接口
串行接口是计算机主机和某些设备之间实现通信,硬件造价比较廉价、标准化程度比较高的一种输入输出接口线路,缺点是通信的速度比较低。从在程序中使用串行接口芯片的角 度看,接口芯片内有用户可以访问的4个寄存器,分别是接收CPU送来数据的输出数据缓冲寄存器,向CPU提供数据的输入数据缓冲寄存器,接收CPU发来的控制命令的控制寄存器,向CPU提供接口运行状态的状态寄存器,必须有办法区分这4个寄存器。接口芯片中还有执行数据串行和并行转换的电路,接口识别(片选)电路等。
在教学计算机系统中,配置了两路串行接口,其线路组成和信息传送路径已在图1.1.4 中给出。串行接口芯片的8位数据线引脚连接到数据总线DB的低位字节,它与CPU之间每次交换8位信息,属于并行操作关系。串行接口芯片和设备之间的连接,是通过连接到设备端的另外一个串行接口芯片完成的,在两端的接口芯片之间以串行方式实现通讯,即遵从一定的通讯协议,对8位的数据采用逐位传送的方案处理,并把信号的电平从TTL电路的0~4V左右提高到正负12V或者0~12V左右,以增强信号传送过程中的抗干扰能力,通常可以选用MAX202芯片使用倍压技术完成电平转换功能,就可以不再使用直流+12V和-12V两路电源。 串行接口用于执行数据的输入输出操作。一次输入或输出操作通常需要用两个操作步骤 完成,第一步是为接口芯片提供入出端口地址,即把指令寄存器低位字节的内容(8位的IO 端口地址)经过内部总线和运算器部件写进地址寄存器AR,第二步是执行输入或者输出操 作,若执行输入指令IN,则应从接口芯片读出一个8位的数据并经过数据总线DB和内部总线IB写进寄存器堆中的R0寄存器,若执行输出指令OUT,则需要把寄存器堆中的R0寄存器的内容经过内部总线IB和数据总线DB写入接口芯片。接口芯片与输入输出设备之间的数据传送过程无需另外管理,会自动完成。
教学计算机使用8位的IO端口地址,安排在IN和OUT指令的低位字节,指令的高8位用作指令操作码码,16位的指令编码全部占满,已经不能再指定要使用的通用寄存器,最终决定对IN和OUT指令默认使用运算器中的R0完成输入输出操作。IO地址端口的高4位(最高一位的值一定为1)用于通过译码电路产生接口芯片的8个片选信号,低4位用于选择一个芯片内最多16个寄存器。教学计算机中,只为每个串行口芯片分配了两个地址,第一路串行接口的端口地址为16进制的80/81,第二路串行接口的端口地址可以由用户从90/91-F0/F1这8对中选择,把译码器的一个输出连接到接口芯片的片选信号引脚。两个端口地址如何能够选择接
22
口芯片内的4个寄存器呢?请注意,4个寄存器中的两个只用于输入,仅对IN指令有用,另外两个只用于输出,仅对OUT指令有用。2个端口地址和2条输入输出指令有如下4 种组合,分别实现如下4 项功能:
IN 80 完成从接口芯片输入数据缓冲器读出8 位数据并传送到R0 寄存器低位字节; OUT 80 完成把R0 寄存器低位字节的8 位数据写入到接口芯片的输出数据缓冲器; IN 81 完成从接口芯片状态寄存器读出8 位接口状态信息并送R0 寄存器低位字节; OUT 81 完成把R0 寄存器低位字节的8 位命令信息写入到接口芯片的命令寄存器。 可以看到,偶数地址用于输入输出数据,奇数地址用于输入输出状态或命令信息。 在教学计算机系统中的两路串行接口,其中的一路全部连接线已经连接好,运行之前的 初始化操作也由监控程序完成,已经处于正常的运行状态,作为教学机与PC机仿真终端相 连接的接口使用。另一路串行接口更多的是用于扩展的教学实验目的,它的一部分连接线已 经连接好,还有少数连接线需要由实验者通过跳接线进行连通,并且在自己的程序中执行对 此串行口的初始化操作,这之后才能使用这一路串行接口执行输入输出操作。这样做的目的,是为了加深同学对串行口的线路连接、初始化、执行输入输出操作过程的理解程度,否则虽 然在程序中通过IN和OUT指令完成了串行接口的输入输出操作的实验,但是对串行接口线路的认识并不全面,把应该由同学执行的一些操作保留给同学完成是必要的。
二、中断
在计算机系统中,中断处理是非常重要的一项功能。在教学计算机系统中,也提供了中断处理的能力。用3个按钮开关作为中断源,在MACH器件内部实现了保存中断请求、中断优先级编码、中断响应前的优先级比较、中断响应与返回过程中的中断优先级的切换和现场信息恢复等全部硬件实现的功能。还设置了处理中断向量的硬件支持。这样就可以完成有3 级中断嵌套的教学实验。教学计算机中提供了完成中断处理的全部硬件线路和实现方案,有利于帮助同学准确深入地掌握完成中断处理的原理和过程。
23