计算机组成原理课程设计学号:xxxxxxxxxx姓名:学号:xxxxxxxxxx姓名:-2-设计任务:综合前面实验单元典型部件设计与调试,对数据选择器(A、B)、计数器、运算器、寄存器和微程序控制器透彻了解的基础上,完成一个简单计算机的设计,使其具有简单运算功能:取数、读数、做加法、送数等。设计目的:通过一个简单计算机的设计,对计算机系统的基本组成、部件的设计、部件间的连接、微程序的编制与调试等全过程有一个较为综合、深入的认识和理解。设计与调试步骤:结合计算机组成原理的教学内容和课程设计平台系统,计算机的设计与调试步骤如下:数据通路:数据通路的设计在总体结构中是最重要的一个环节。实验室的仿真模型机的数据通路是以总线为基础、以CPU为核心构成的。系统简介:机器指令存放在3#RAM中将3#RAM作为内存使用,机器指令是按由上到下顺序执行的,其执行顺序由PC(程序计数器)和MAR(地址寄存器)控制。2#RAM和1#RAM作为控制存储器简称为控存一条微指令由十六个微命令组成高八位存放于2#RAM中,低八位存放于1#RAM中。后继地址有三种形成方式μIR2μIR1μIR0为001时μPC+1安顺序执行微指令为010时JP无条件转移,地址由μIR15-8提供。本简单计算机基于简化处理μIR15-8均为0它代表了均跳向为指令寄存器的00入口即取指令入口。为011时QJP高四位安机器指令的操作码转移,第四位为0其由后继地形成逻辑实现,所有涉及的地址转移均为指令的转移。因为机器指令是按顺序执行的。每按一次单脉冲键执行一条微指令,一条机器指令由若干条微指令组成,一条微指令由十六个微命令组成其中因为μIR3μIR6μIR7全为零故省略掉了。-3-为保证机器指令是从第一条开始顺序执行的,在操作前应按一次复位键将微指令计数器μpc,机器指令计数器pc,内存地址寄存中的内容清零。第一条微指令地址为00,微操作为RAM→IR即从内存中取出指令放到机器指令寄存器中,此时地址寄存器中的内容为00,所以在3#RAM的00地址中取出MOV1指令18,取出指令后PC+1→PC(01)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为18操作码为0001,所以转移后高四位为:0001低四位为全零:0000。后继地址形成逻辑的输出00010000,因此此时置数有效微地址输出为10(十六进制)。根据微地址10执行PC→MAR,PC中的内容经取指过程中加1操作,已变为01,所以地址寄存器中存入了01,然后PC+1→PC(PC变为02)为取下一条内存内容做好准备。然后将内存中地址为01的数据传送至RAM→R0下一步为PC→MAR存入的为02。下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000,所以微地址转向00,再次进行取指令。在3#RAM的02地址中取出MOV2指令28放进机器指令寄存器,取出指令后PC+1→PC(03)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为28操作码为0010,所以转移后高四位为:0010,低四位为全零:0000。后继地址形成逻辑的输出00100000,因此此时置数有效微地址输出为20(十六进制)。根据微地址20执行PC→MARPC中的内容经取指过程中加1操作已变为03,所以地址寄存器中存入了03,然后PC+1→PC(PC变为04)为取下一条内存内容做好准备。然后将内存中地址为03的数据传送至RAM→R1下一步为PC→MAR存入的为04。下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000,所以微地址转向00,再次进行取指令。在3#RAM的04地址中取出ADD指令30放进机器指令寄存器,取出指令后PC+1→PC(05)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为30操作码为0011.所以转移后高四位为0011第四位为全零0000。后继地址形成逻辑的输出00110000,因此时置数有效微地址输出为30(十六进制)。根据微地址30执行R0+R1=R1PC中的内容经取指过程中加1操作已变为05,所以地址寄存器中存入了05,然后PC+1→PC(PC变为06)为取下一条内存内容做好准备。下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000所以微地址转向00,再次进行取指令。在3#RAM的05地址中取出MOV3指令41放进机器指令寄存器,取出指令后PC+1→PC(06)为取下一条内存内容做好准备,再按一次单脉冲键执行QJP及按操作码转移,此时指令寄存器中存放的为41操作码为0100,所以转移后高四位为:0100低四位为全零:0000。后继地址形成逻辑的输出01000000,因此时置数有效微地址输出为40(十六进制)。根据微地址40执行R0→MAR(R0中的数据作为写内存地址)。PC中的内容经取指过程中加1操作已变为06,所以地址寄存器中存入了06,然后将内存中地址为03的数据传送至R1→RAM下一步为PC→MAR存入的为06。下一个微指令为JP无条件转移,地址由微指令的高八位给出,高八位为00000000,所以微地址转向00,再次进行取指令。至此MOV1MOV2ADDMOV3均执行完毕完成了两个数的相加操作。如果是07+02=09那么内存的07号地址中就存放了相加结果09。-4-总图:-5-输入输出说明:USB0-7为内存的数据线当WR为1时可以写内存,同时加法器的输出也接到这八根线上结合输出分配可将数据送到R0、R1、PC、IR、MAR中的一个或一个也不送。AD0-7为内存的地址线。UAD0-7为ROM2和ROM1的共用地址μIR0-15为ROM2和ROM1的输出其具体输出什么由其地址决定。WRRD为内存的读写控制P1为单脉冲Rst2为复位键,可对PC,μPC.,MAR进行复位。UPC和P控制ROM2和ROM1读和读出MD0-7为ROM3的输出其中的数据由此输出。二四译码器:二四译码的输出控制选择器A、B数据通路,二四译码器的作用在这里是一个多路数据开关。三八译码器逻辑:三八译码器的一组输入对应的输出中只有一个为1其余为零。设计中用到了两个三八译码器其中一个的输入为μIR11、μIR10、μIR9,输出用到的五个分别控制R0、R1、IR、PC、MAR五个寄存器的数据开关。因为其输出同一时刻只有一个1,这就保证了同一时刻只对一个寄存器操作,另外还有五个寄存器均不操作时的情况,例如写内存的操作。另外一个三八译码器控制微指令地址的转移方式。其本质上仍是一个多路数据开关。后继地址产生逻辑:三八译码器元件符号二四译码器元件符号-6-当QJP=1时JP=0,微地址计数器置数端输入为0(置数低有效)微指令的高八位被屏蔽掉了,又因为有四个与门接地,所以输出的低四位为全零,高四位只与机器指令的高四位(操作码)有关,这样就实现了高四位按操作码转移,低四位为全零。当JP=1时QJP=0,微地址计数器置数端输入为0(置数低有效)因为有四个与门接地且QJP=0,所以输出只与微指令的高八位(μIR15-8)有关,这样就实现了无条件转移,地址由μIR15-8提供。当JP=0时QJP=0,微地址计数器置数端输入为1(置数低有效)此时置数端无效按一次单脉冲键微指令计数器从置数的输入开始计数器自加1顺序向下执行,直到下一次微指令跳转。一位全加器:一位加法器元件符-7-八位串行进位并行加法器微指令计数器μPC八位串行进位加法器元件符号微指令计数器元件符号-8-微指令计数器不是真正的八位二进制计数器起到计数功能的只有六位,高两位是置数的输入。我们使用低六位来计数就足够了,程序中微指令最多才自加4次就开始重新置数了。这样设计只是为了简化硬件电路。三位二进制计数器这是微指令计数器底层模块具有置数和端复位键,在来一次脉冲时自加一当加到111时产生进位信号。二选一选择器三位二进制计数器元件符号-9-这里的二选一是将八根线看成一组(R07-R00一组、R17-R10一组),从两组中选出一组作为输出。不带复位端的八位寄存器带复位端的八位寄存器-10-微指令格式微指令字长16位即μIR15~μIR0(1)微指令字段定义A选择器控制:μIR15●μIR1400备用01RA10MA11备用B选择器控制:μIR13●μIR1200备用01PB10RB11备用输出分配:μIR11●μIR10●μIR9000备用001CPR0010CPR1011CPPC100CPIR101CPMAR110备用111备用低位进位控制:μIR80C0=01C0=1存储器读写控制:μIR5●μIR410RD01WR后继地址形成方式:μIR2●μIR1●μIR0000备用001μPC+1顺序执行微指令010JP无条件转移,地址由微指令的高八位μIR15-8提供011QJP高四位按操作码转移,地四位为0。100YJP给定高四位第四位按源寻址方式转移。101MJP给定高四位低四位按目的寻址方式转移。110备用111备用微命令形成逻辑如下图示-11-确定总体结构:1、寄存器的设置:R0R1为通用寄存器,8位IR为机器指令寄存器,8位PC程序计数器,8位MAR为内存地址寄存器2、加法器的设置为简化设计,采用为8位带串行进位并行加法器3、选择器的设置连入A选择器的数据来源是RAM的读出数据和R0寄存器的数据。连入B选择器的数据来源是PC数据和R1寄存器的数据。4、数据通路信息传送路径-12-逻辑设计1、加法器的逻辑设计2、选择器的逻辑设计3、寄存器的设计不带复位的寄存器结构中R0R1通用寄存器,可存放操作数或结果、中间结果,每个寄存器由8个D触发器构成。在CPRi的作用下接受总线的数据送入寄存器,输出连入选择器机器指令寄存器其结构同通用寄存器。带复位的寄存器结构中MAR地址寄存器是一个带复位的寄存器,带复位是指当有复位信号时,MAR清零。程序计数器的设计PC加1是通过加法器实现的。部件之间的连接由系统图可看出,部件之间的连接是采用以CPU为中心的总线连接方式。加法器的输出通过总线BUS连接到所有寄存器和存储器的输入端,除指令寄存器IR和地址寄存器MAR的输出端外,其他部件的输出端分别送入选择器A和选择器B。确定控制方式后继地址产生逻辑为简单起见直选三种后继地址生成方式即增量方式、无条件转移方式、安操作码转移方式-13-当EN=1时,为程序计数器执行加1操作当EN=0时,且JP=1时,无条件转移。当EN=0时,且QJP=1时,按操作码转移。微程序编写(1)程序MOV107#R0MOV202#R1ADDR0R1MOV3R1(R0)(2)操作码二进制代码MOV10001MOV20010ADD0011MOV30100(3)微程序入口(十六进制代码)取指令入口:00HMOV1入口:10HMOV2入口:20HADD入口:30HMOV3入口:40H拟定指令系统基本字长课程设计平台中配置的存储器容量为256×8,显然基本字长只能定为8位。指令格式指令格式可有单字长指令和双字长指令两种,在双字长格式中,第二字节一般定义微操作数或操作数地址。指令格式为:指令类型模型机有单操作数指令、双操作数指令和无操作数指令。操作码OP共提供四位,最多可定义16条指令。数据的传送单位为8位(一个字节)数据的传送范围寻址方式由于指令较短、操作数仅为两位,为了简化硬件设计,将源操作数字段和目的操作数字段的寻址定义为不同的含义源操作数寻址方式目的操作数寻址方式00R000R101(R0)01(R0)10I10I11D11D-14-Ri表示操作数就在寄存器中(Ri)表示操作数地址在寄存器中I指令的第二个字节微操作数或立即寻址源操作数使用R0寻址目的操作数使用R1寻址MOV10001100000000111MOV20010100000000001ADD00110000MOV301000001MOV1源操作数按立即寻址目的操作数为操作数就在寄存器中,因为立即寻