![互联网+时代立体化计算机组成原理实验教程(高等学校电子信息类专业系列教材)](https://file.mhuoba.com/shop/3/100021/picture/book/20191029/08/20191029082222280.jpg)
出版社: 清华大学
原售价: 39.00
折扣价: 29.30
折扣购买: 互联网+时代立体化计算机组成原理实验教程(高等学校电子信息类专业系列教材)
ISBN: 9787302510444
第5章 CHAPTER 5 TECXP实验系统的硬件 系统和软件系统 5.1TECXP实验系统硬件系统的结构设计 5.1.1实验系统的硬件组成原理 TECXP教学计算机的硬件系统组成如图5.1所示。在图5.1的左部表示的是选用中小规模器件实现的CPU系统,它由独立的运算器、控制器部件组成。图5.1的中间部分表示的是内存储器、串行接口线路组成。图5.1的右部虚线部分表 图5.1实验系统的硬件系统组成 示的是选用FPGA芯片实现的单个芯片的CPU系统。这两个CPU系统都可以通过数据总线、地址总线和控制总线连接内存储器、串行接口线路,从而构成一台完整的计算机硬件系统,安装上必要的软件就可以正常运行,作为“计算机组成原理”课程内容实例和教学实验设备具有很好的典型性。两个CPU系统需要通过分时或者独占的方式使用同一套存储器部件和串行接口线路。由中小规模器件实现的CPU构建的教学计算机系统硬件组成如下。 运算器: 运算器中配置了两组独立的8位字长的运算器,它们各自由两片位片结构的运算器器件AM2901组成,另外,还有4位的状态标志寄存器和教学实验所需的相关逻辑部件。全部算术与逻辑运算均在这里完成,还可以完成几种寻址方式的实际地址计算,它们同时也是主要的数据、地址传送的通路。需要特别说明的一点是,堆栈指针SP和控制器中的程序计数器PC都是用这里的几个通用寄存器来实现的,以节省器件与简化实验机的实现。 控制器: 分别用微程序方式与硬布线方式两种方案实现,实验者可以方便地选择使用其中任何一种方案,这样能方便地比较两种控制器各自的优缺点。在选用器件时,微程序方案中选用了美国AMD公司的微程序定序器Am2910芯片,保证微程序设计的规范与实用性; 控制存储器(简称“控存”)选用只读存储器(ROM)芯片,通过对该ROM的编程写入方式支持动态微程序设计。硬布线方案中,节拍逻辑与时序控制信号形成部件(组合逻辑线路)选用了GAL20V8现场可编程器件和Macro Array CMOS High density(MACH)器件,这对简化控制器的逻辑设计与实现至关重要,也有利于进一步掌握数字系统设计自动化和逻辑模拟的新知识。 存储器: 选用静态存储器芯片,系统配置了两路各自由8KB容量的ROM (放监控程序)和2KB容量的RAM (放用户程序和数据)存储区域组成的主存储器。此外,还配置了另外2片存储器芯片的器件插座,可以方便地完成对16位字长的内存储器的容量扩展实验。对ROM存储区可以选用电擦除(28系列)的存储器芯片实现。地址总线采用16位宽度,以便访问较大的主存空间。 输入/输出接口及可接入的输入/输出设备: 已配备了一路串行接口,可直接连接计算机终端,或者在仿真终端软件控制下接入PC。这种方式下,通过终端或PC(作为仿真终端)*作教学实验计算机方便直观,为教学实验提供了**的实验手段。另外,该实验箱主板上还提供了由学生自己通过扩展实验实现另外一路串行接口的全部支持。 作为*底层的输入/输出手段,开关拨数输入、指示灯显示输出的*作方式还是应该有的。这是系统出现严重故障后(如器件失效等),完成故障定位与排除的*后一道防线,对提高学生的实验技能也很有用处。 该系统同时还提供了其他一些输入/输出接口支持。为此,实验机主板上预留了一个40芯的器件插座,并给出了扩展*作可能用到的地址、数据及控制信号的连接插孔,还提供了完成中断教学实验所需要的全部支持选用FPGA芯片实现的单个芯片的CPU系统内部组成,如图5.2所示。 由图5.2中可以看出,该CPU主要由3个部件组成: 运算器部件、控制器部件、数据总线部件(用于实现与存储器和I/O接口线路通信)。 CPU与教学计算机已有的存储器部件和串行接口线路的连接方案参照图5.1。该CPU地址寄存器的输出作为地址总线的内容送到存储器芯片的地址线引脚,用以选择被读写的内存单元,数据总线的内容被送到存储器芯片和串行接口芯片的数据线引脚以提供读写数据。内存储器和I/O接口芯片的读写命令也由该CPU提供,此时需要确保原来用中小规模器件构建的CPU的地址总线和数据总线的输出都处于高阻状态,并且不会产生内存储器和I/O接口芯片的读写命令冲突。 5.1.2硬件系统的具体实现 TECXP教学计算机系统采用双CPU设计方式: 一个由分离元件实现; 另一个由单片FPGA芯片实现。硬件组成线路如图5.3所示。下面对图5.3中给出的教学计算机硬件系统的具体线路进行说明。 1. 启停线路 启停线路在图5.3的*左下角,由一个晶体振荡器、一片74LS04器件、一片74LS161器件和一个启停控制电路组成。晶体振荡器产生一个频率为1.8432MHz的振荡波形信号,经74LS04器件送到74LS161完成同步计数,产生两个3分频信号QA和QB,一个6分频信号QC,一个12分频信号QD。主振1.8432MHz的脉冲和QD(频率为153.6kHz)将送到串行接口Intel 8251芯片的CP、/RxC和/TxC引脚,用于驱动串行接口正常运行,还要送QC脉冲(频率为307.2kHz)到启停控制电路,用以产生相位不同的两路输出脉冲,作为教学计算机的系统时钟,驱动计算机整机正常运行。启停控制电路是使用GAL20V8器件仿真74LS120器件的功能,在计算机复位开关信号RESET、单步/连续运行选择开关信号STEP和启动按键信号START的作用下,执行启动(送出连续脉冲或者送出单个脉冲)或者停止(停止送出脉冲)的*作功能。在这个线路的设计中,一定要确保任何一次手工启停的*作都不会影响启停线路输出脉冲的完整性,它的实现原理和设计结果在教材中有详细说明,此处从略。 2. 运算器部件 教学计算机的运算器部件在图5.3的中间偏左,其主体由4片4位运算器芯片Am2901级联构成。它输出16位的数据运算的结果(通过Y显示)和4个运算标志位(用Cy、F=0000、OVER、F15标志),它的输入(用D表示)只能来自于内部总线。确定运算器运算的数据来源、运算功能、结果处置方案,需要使用控制器提供的I0~I8、B0~B3、A0~A3共17个信号。 运算器的输出直接连接到地址寄存器AR的输入引脚,用于提供地址总线的信息来源。运算器的输出还经过两个8位的74LS244器件的控制(使用DCI译码器的/YTOIB信号)被送到内部总线IB,用于把运算器中的数据或者运算结果写入内存储器或者输入/输出接口芯片。 由于运算器产生的4个结果特征位的信息需要保存,因此必须设置一个4位的标志寄存器FLAG,用于保存这4位结果特征信息,标志寄存器的输出分别用C、Z、V、S表示。控制标志寄存器何时和如何接收送给它的信息,需要使用控制器提供的SST2~SST0 3位信号。 运算器还需要按照指令执行的要求,正确地得到*低位的进位输入信号,*低位和*高位的移位输入信号,为此还需要配置另外一个标示为SHIFT的线路,在控制器提供的SSH、SCI1、SCI0 3位信号的控制下,产生运算器*低位的进位输入信号,*低位和*高位的移位输入信号。 3. 总线线路 教学计算机的总线系统由数据总线、地址总线、控制总线和内部总线四部分组成。在图5.3中使用黑粗线表示。 内部总线: 在真正的商用计算机系统中用户是见不到的,在这里,它是数据总线在CPU内部的体现,二者通过一个双向的三态门电路74LS245相互连接。当74LS245器件的MIO控制信号为高电平时,74LS245使内部和外部总线处于断开状态,相互不能传送数据,仅在该控制信号为低电平时,内部和外部总线处于连通状态,可以传送数据。此时,数据的传送方向*74LS245的另外一个控制信号WE的控制。当该信号为高电平时,数据从内部总线传送到外部总线; 该信号为低电平时,数据从外部总线传送到内部总线。在内部总线和外部总线之间设置74LS245器件,有利于防止在完成内存储器实验或者接口实验时损坏CPU的线路。在译码器DC1的译码信号的控制下,内部总线可以从运算器的输出、8位机器状态字的输出(4个标志位和2位的中断优先级)、中断向量表的起始地址、指令寄存器低8位的输出(此时高8位可能是符号位扩展信息)、16位手拨开关输入数据五路信息之中选择其一作为自己的数据来源,也可以在MIO和WE两位控制信号的控制下,接收从外部数据总线传送来的数据。16位的内部总线被连接到运算器的数据输入引脚、指令寄存器的输入引脚、机器状态字线路的输入引脚,还有两个74LS245器件的16个引脚。内部总线上的信息可以被哪一个寄存器或者线路接收,是由DC2译码器的译码输出信号控制的,是否被传送到外部总线是由MIO和WE两个信号决定的。 数据总线: 它的一端直接连接着内存储器芯片的和I/O接口芯片的数据线引脚,用于完成对这些芯片的读写*作。读*作时,从芯片内读出的数据将被首先放到数据总线上,写*作时,已经出现在数据总线上的数据将被写入到相关的器件中; 数据总线的另一端接到两片74LS 245器件的16个数据线引脚,用于通过内部总线和CPU系统进行通信。做输入/输出*作的教学实验或者内存储器的教学实验,往往需要插拔器件和接线,难免出错,设置245器件可以有效地防止这里的错误对CPU系统的损坏。 地址总线: 用于CPU系统向内存储器或者I/O接口提供地址信息。16位的内存地址中的*高3位被连接到产生内存片选信号的74LS138型号的38译码器,3位地址输入将产生8个片选信号,可以选择8组存储器芯片。低13位地址被连接到每个内存芯片的地址线引脚,用于选择每个芯片内的8192(8KB)个存储单元。注意,HM6116LP3芯片只有11个地址线引脚,它只使用*低的11位地址总线,另外的2位未被使用。8位I/O端口地址中的高4位连接到用于产生I/O片选的74LS138型号的38译码器,其中*高一位连接到控制该器件是否译码的引脚,高电平有效,因此有效的I/O端口地址的*高位必须为1。余下的3位用作为译码输入信号,可以产生8个译码输出信号,故系统*多可能支持8个I/O接口芯片。I/O端口的*低4位用于选择每个接口芯片内的不同寄存器,因此每个接口芯片*多可使用16个端口地址。每个串行接口芯片只使用2个端口地址,其余14个不被使用。 控制总线: 用于给出总线周期的类型和一次读、写*作是否结束的信号。在教学计算机中,由于使用的系统时钟频率特别低,一个CPU周期一定可以完成CPU与内存或者串行接口的读写*作,不必判断读写*作是否完成,只需给出总线周期的类型即可,故CPU给出的控制总线的信号由MIO、REQ和WE组成。 4. 存储器部件 教学计算机的存储器画在图5.3的中间偏右,它的存储体部分由容量为2KB的2片HM6116LP3芯片和容量为8KB的4片HN58C6525芯片组成。2片6116芯片构成存储器的随机读写存储区,两片HN58C6525芯片构成存储器的只读存储区,另外两片HN58C6525芯片主要用于扩展存储器容量的教学实验。存储器的只读存储区用于存放教学计算机的监控程序,地址从0H单元开始,故其片选型号为/CS0,即地址的*高3位是000。这2片芯片应处于常读状态,它的/OE引脚接地。存储器的随机读写存储区用于保存用户读写的数据和作为监控程序的系统工作区,包括系统堆栈和用户堆栈数据。这个存储区的地址从2000H开始,其片选信号为/CS1,即地址的*高3位是001。这两个芯片的读写控制信号/MWE和允许输出信号/OE,由控制总线的信号MIO、REQ、WE和主时钟信号CLK共同产生。 5. 串行接口线路 教学计算机的串行接口线路画在图5.3的*右上角,是选用两片Intel 8251芯片实现的,可以支持两路串行输入输出*作。其中**路串行口的I/O端口地址确定为80H和81H,其片选信号是产生I/O接口芯片片选信号的译码器的译码输出/CS0,第2路串行口的I/O端口地址可以从剩余的7个片选信号中选择。串行接口芯片在一个方向上与主机的数据总线的低8位连接,在另一个方向上经电平转换芯片MAX202与设备的串行数据线相连接。该芯片要使用两个频率的脉冲信号,分别接到其CP引脚和RxD、TxD引脚,这两路脉冲是由计数器器件74LS161提供的。控制该芯片读*作还是写*作分别由/RD和/WR决定。该芯片内有4个寄存器,其中有2个数据缓冲器分别用于存放输入、输出的数据,另外2个寄存器分别用于存放控制命令、接口的运行的状态,到底读写哪两个寄存器,由I/O端口的*低位的值决定。当把这位地址接到该芯片的C/D引脚,该位地址为0时,执行读写输入或者输出数据缓冲器,该位为1时,读状态寄存器或者写命令寄存器。为此需要把地址总线的*低位接到该芯片的C/D引脚,用它来实现上述控制功能。 控制总线的3位信号MIO、REQ、WE分别用于指明有无存储器或者I/O接口读写,是存储器还是I/O接口读写,是读*作还是写*作。当这3位信号为000、001、010、011、1××时,分别表示内存写、内存读、I/O写、I/O读、内存与I/O都不读写5种不同的*作功能,前4种*作体现在总线上就成为4种不同的总线周期。双路24译码器芯片74LS139通过译码将产生存储器请求(有存储器读写要求)信号/MMREQ和I/O请求(有I/O读写要求)信号/IOREQ,以及内存读命令/MRD、内存写命令/MWE、I/O读命令/RD、I/O写命令/WR。还需要注意,产生内存片选信号的译码器,仅在有存储器请求时才应该执行译码*作,故该芯片的译码控制引脚(低电平有效)与信号/MMREQ连接。同理,产生I/O片选信号的译码器,仅在有I/O请求时才应该执行译码*作,故该芯片的译码控制引脚(低电平有效)与信号/IOREQ连接。 6. 控制器部件 教学计算机支持微程序的控制器和组合逻辑的控制器,构成比较复杂。 组合逻辑的控制器在图5.3的下部左右居中的位置,主要由程序计数器PC(选用运算器内的一个通用累加器实现,图中未明显表示)、指令寄存器IR、节拍发生器Timing和时序控制信号产生部件MACH435(或MACH5)芯片等组成。微程序的控制器画在图5.3的*左下方,主要由程序计数器PC(选用运算器内的一个通用累加器实现,图中未明显表示)、指令寄存器IR、48位控制存储器(由16位的微指令下地址字段CM1、CM0,和在MACH器件内部实现的32位微命令的字段组成)、48位指令寄存器(8位下地址寄存器、8位保存CI3~CI0 及SCC3~SCC0的寄存器,设置在MACH器件内部的存放32位微命令的寄存器,在图5.3中未明显表示)、微指令的下地址逻辑线路(Am2910芯片、MAPROM芯片、SCC GAL芯片)等组成。 (1) 微程序控制器和组合逻辑控制器的线路组成。组合逻辑控制器中SSH为1位,对ALU*低位的进位输入信号和*高、*低位的移位信号由SSH、SCI1和SCI0 3位编码控制,扩展指令用MACH器件实现。 微程序控制器的线路组成与运行控制方案中微指令字长为48位。控制存储器字长为48位,其中的32位移到了MACH器件内部。微指令寄存器都由48位构成,其中有16位使用2片8位的寄存器芯片实现,另外的32位移到了MACH器件内部。两种控制器的这32位微命令都由MACH器件提供,与硬布线控制器的32位时序控制信号的二选一功能也移到了MACH器件内部完成。为了可以*方便地修改控制存储器的内容,选用了带有自锁功能的器件插座插接控制存储器芯片,使取下或者插上芯片的*作*安全和容易。 (2) 由于微指令字长为48位,因此微指令寄存器可以只使用6片8位的寄存器芯片实现,在具体实现方案中,把其中的32位移到了MACH器件内部现实。 (3) 48位字长的微指令被划分为3个16位的字段,*高16位的字段是微指令的下地址字段的内容,由8位微指令转移地址、4位Am2901芯片的控制码、4位微指令转移条件编码共同组成,只供微程序控制器使用。中间和*低的两个16位的字段被设计成硬连线控制器,以便简化在MACH器件内部对两种控制器所使用的控制信号选择其一的控制逻辑。 MACH器件内部功能实现如图5.4所示。 图5.4在MACH芯片内实现32位控制存储器和微指令寄存器 5.2软件系统的结构设计 5.2.1TECXP系统的监控程序 1. 监控程序的功能 教学计算机的监控程序是用教学计算机的汇编语言实现的,运行在教学计算机的硬件系统之上。它的主要功能是支持PC仿真终端接入教学计算机系统,使用这样的设备执行输入/输出*作,运行教学计算机的有关程序,以*方便、直观的形式支持教学计算机上的各项实验功能,提供教学计算机汇编语言的可用子程序。在当前的实现中,它被固化在0000H~0A2FH主存ROM区。在将来的实现中,新增加的部分将被固化在0A30H~1FFFH的主存ROM区。 教学计算机被正常设置并加电启动后,首先内存0000H地址开始启动监控程序,使监控程序进入运行状态,此后方可从键盘输入监控程序的命令并使其执行。 监控程序提供类似DOS系统下Debug程序的功能,支持A、U、G、P、T、R、D和E共8个监控命令。监控命令的格式是单字母的命令名后按Enter键,或命令名后跟一个地址参数或寄存器名参数。当命令名后可以跟地址参数但被省略时,即给出命令名后直接按Enter键,监控程序会从内存**单元取一个默认的地址参数值,通常是在系统初始化时设置的,或者是该命令前一次运行后所生成的一个地址。从PC向教学计算机送入地址、指令、数值时,均用不多于4位的十六进制数字输入与显示,各条命令的功能和具体用法简介如下。 命令名与它的参数之间也可以有一个空格字符,这个空格字符可有可无,用户可按自己的*常习惯随意处理。 1) 单条汇编命令A 格式: A [adr] 这里的adr表示A命令的地址参数,用[ ]将adr括起来,表示此处的adr为任选项,可有可无,无此参数时,系统将取默认值2000H。该规则亦适用于下述对各命令的说明。 功能: 完成单条语句的汇编*作,把产生出来的教学计算机的指令代码放入对应的内存单元中。命令名后的地址将是存放头一条汇编语句的指令码的内存单元地址,每条语句汇编完成之后,系统将相应修改地址值,以便正确处理下一条汇编语句。 在应该输入汇编语句时,如果不给出汇编语句而直接按Enter键,则结束A命令的运行过程。 若汇编中发现语法错误,则用“^”指明出错位置后请求重新输入正确的语句。 单条汇编功能并不很完善,如不支持语句标号、不能使用伪指令等。遇到这些问题,要求使用者直接使用直接地址和数据的取值。这样处理的目的是简化监控程序的设计与实现。 2) 反汇编命令U 格式: U [adr] 功能: 每次从**的(或默认的)地址反汇编15条指令,并将结果显示在终端屏幕上。反汇编完成之后,已将该命令的默认地址修改好。接下来再输入不带参数的U命令,保证接着上一次反汇编过的*后一条语句继续反汇编。 注意,教学计算机中并不保存用A命令输入的汇编语句的源码,内存中保留的是经过汇编后得到的机器码指令,在需要检查输入的汇编语言程序时,需要通过U命令对保存在内存中的指令码程序进行反汇编,重新得到汇编语言程序并显示在显示器屏幕上。 通常情况下,在一项*作过程中,**次运行的U命令需要给出地址参数,接下来的*作,只需要给出U命令名即可,不必给出地址参数,以保证连续的命令之间正确的衔接关系。 3) 执行用户程序命令G 格式: G [adr] 功能: 从**的(或默认的)地址运行一个用户程序。为了使程序执行后能正确地返回监控程序,要求每个程序的*后一条指令一定为RET指令,以便通过该指令从堆栈中取得监控程序为运行用户程序而产生并保存的一个断点地址。 每次执行后均显示所有通用寄存器和状态寄存器的内容,并反汇编出下一条将要执行的指令。 4) 单指令执行程序命令T和P 格式: P [adr] T [adr] 功能: 从**地址(或PC中的当前地址)开始以单条指令方式执行用户程序。通常情况下,每执行一次T或P命令将只执行一条指令。T和P命令的区别: T总是执行单条指令; 执行P命令时,则把每一个CALL语句连同被调用的子程序一次执行完成,其目的是在调试一些较大规模的程序时,如果子程序已经正确,重点调试的是主调用程序,则在遇到每个子程序调用语句时,CALL语句连同被调用的子程序一次运行完成,避免反反复复地以单指令方式运行已经证明是正确的子程序的每一个语句。由于P和T命令是通过在程序中设置断点来实现的,而在ROM区不支持写入断点内容,故不能用它们执行固化在ROM区中的监控程序或其他用户程序。 每次执行后均显示所有通用寄存器和状态寄存器的内容,并反汇编出下一条将要执行的指令。 通常情况下,在一项*作过程中,**次运行的T或P命令是要给出地址参数,接下来的*作,只需要给出T或P命令名即可,不必给出地址参数,以保证连续的命令之间正确的衔接关系。 5) 显示/修改寄存器内容的命令R 格式: R [reg] reg为一个寄存器名(R0~R15),是任选参数。 功能: 当R命令不带寄存器名参数时,显示全部寄存器和状态寄存器的值,并反汇编当前PC所指向的一条指令,其中状态的显示格式为“F=8位二进制数”,其各位的值分别对应于C、Z、V、S、P1、P0(中断优先级)的值,*后2位是00。 R命令带有寄存器名参数,表示要执行修改一个寄存器内容的*作,首先显示出该寄存器的现有值,若要修改这个值,则输入新值并按Enter键,如不输入新的值则直接按Enter键,该寄存器的内容将保持不变。 6) 显示存储器内容命令D 格式: D [adr] 《“互联网+”时代立体化计算机组成原理实验教程》基于计算机组成原理专业理论课内容,设计大量不同难度及层次的实验内容帮助读者理解理论,包括计算机五大部分组成的部件实验和控制器控制方式实验以及CPU的综合设计型实验,并开发脱离硬件实验平台的虚拟仿真系统,帮助学生可以线上进行模拟演练,而且提出并推广了一种基于微信公众平台的移动一体化教学平台可供参考。 面向教工读者:希望能够将《“互联网+”时代立体化计算机组成原理实验教程》结合移动互联网+新时代的移动教学模式吸收并推广至自己所教授的课程,学生可以通过关注课程微信公众平台随时随地进行预习和学习,并通过移动辅助教学平台对学生的学习过程进行监督和评估。 面向学生读者:希望学生能够通过本教程的实验教学案例,深入的理解计算机的组织结构及计算机的工作机制,根*教材循序渐进,由浅入深的掌握计算机的工作原理,基于此基础再深入学习计算机专业的其他基础课程;另外,学生读者即使没有本教程中提及的实验平台,也可以通过教程中笔者开发的虚拟仿真实验系统进行模拟演练,达到理解理论内容的效果。 《“互联网+”时代立体化计算机组成原理实验教程》有以下突出特点: 1、新颖性:在互联网+时代背景下,移动智能设备也*加普遍,本教程以计算机组成原理实验内容为载体,提出了一种基于移动智能设备的立体化教学方法,并通过实际应用及调查反馈,深*学生欢迎及其他课程教师青睐。 2、代表性:教程内容涵盖了计算机组成原理基础性部件实验、提高性设计型实验和创新性综合设计型实验内容,内容较全,知识点覆盖全面。 3、推广性:不但移动信息化教学模式可以推广,针对实验平台也开发了PC版和移动版的虚拟仿真系统,打破了硬件实验平台的局限。 4、实用性:本教程所有实验内容,都配有对应实例代码,并全部调试通过,读者可直接应用到自己的系统中。同时,书中介绍了基于硬件平台的多种虚拟仿真系统,**实用,特别是移动版仿真系统让学生随时随地可以进行模拟实验。 5、经验性:该书总结了作者几年来的教学过程中的经验,将实验内容按难易程度和架构层次性进行编排,使读者可以避免弯路,顺畅的掌握一系列系统知识点。 6、易用性:读者只要具有简单的汇编基础及计算机专业基础知识,就可以看懂此书。《“互联网+”时代立体化计算机组成原理实验教程》的设计思路是由浅入深、由表及里,蹭蹭递进,内容编排符合正常学习规律,适合作为教材或自学使用。