计算机组成原理课程设计11关于此次课程设计1.1课程设计目的本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。1.2课程设计内容及要求基于TDN-CM++计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。设计过程中要求考虑到以下各方面的问题:(1)指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器);(2)数据类型(无符号数,有符号数,整型,浮点型);(3)存储器划分(指令,数据);(4)寻址方式(立即数寻址,寄存器寻址,直接寻址等);(5)指令格式(单字节,双字节,多字节);(6)指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出)。要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。计算机组成原理课程设计22分析阶段2.1微指令格式分析微指令格式如下表:表2-1微代码定义每个字段的具体含义如下:(1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种算术或逻辑运算。本设计中全部为正逻辑运算。(2)字段18为控制对主存W/R的开关(3)字段17、16控制24译码器的输出端,对Y0、Y1、Y2进行选择。(4)字段15~7为A、B、C三个开关控制端。算术运算逻辑运算无进位有进位M001CN10×A9A8Yi操作说明00Y0选中SW-BINPUTUNIT的开关01Y1选中CEMAINMEN的控制片选开关10Y2选中LED-BOUTPUTUNIT的开关11×NULLS3S2S1S0MCNWEA9A8ABCμA5~μA0242322212019181716151413121110987654321A9A8WE说明010对主存进行对操作011对主存进行写操作计算机组成原理课程设计3A字段B字段C字段(5)字段6~1为该条微程序的八位二进制后继地址,其决定顺序执行哪条微程序。151413开关说明001LDDRi控制寄存器Ri的写入010LDDR1暂存器DR1的控制开关011LDDR2暂存器DR2的控制开关100LDIR指令寄存器IR的控制开关101LOAD非自动输入的数据装载入PC计数器的控制开关110LDAR地址寄存器AR的控制开关000NULL空操作987开关说明001P(1)指令译码器中的P(1)为低电平有效010P(2)指令译码器中的P(2)为低电平有效011P(3)指令译码器中的P(3)为低电平有效100P(4)指令译码器中的P(4)为低电平有效110LDPC将自动输入的数据加1后输入到PC计数器中的控制开关101AR本设计中不涉及001NULL空操作121110开关说明001RS-B寄存器R0、R1、R2的输出开关010RD-B寄存器R0、R1、R2的输出开关011RI-B寄存器R0、R1、R2的输出开关101ALU-B运算器ALU的输出开关110PC-BPC计数器的输出开关100299-B本设计中不涉及001NULL空操作计算机组成原理课程设计42.2指令译码电路分析指令译码工作原理图如下:P(1)~P(4)为低电平有效,当选用时该信号为零;I7~I2表示机器指令前六位;SE5~SE1表示能够强置改变入口地址的后五位。根据上图得出指令译码器的逻辑表达式如下:P(4)P(3)P(2)P(1)FZFCSW-ASW-BT4SE5SE4SE3SE2SE1I7I6I5I4I3I2图2.1指令译码原理图计算机组成原理课程设计5拟定机器指令通过上式即可算出每条子程序的入口地址。2.3寄存器译码电路分析寄存器译码原理图如下。S1S2D1D4ENB译码器LDB0LDR1LDR2I1I0LDRiS1S2D1D4ENB译码器S1S2D1D4ENB译码器R0-BR1-BR2-BRD-BRS-BRI-BI3I2图2.2寄存器译码原理图寄存器的输入、输出不仅决定于输入、输出开关,还与机器指令的后四位(即I3~I0)有关,由其决定哪个寄存器被选中。2.3.1寄存器的输入LDRi为寄存器的输入开关,且为低电平有效(即LDRi=0),I1、I0对寄存器进行选择,决定数据进入哪个寄存器。2.3.2寄存器的输出RS-B、RD-B、RI-B为寄存器的输出开关,且为低电平有效;I3、I2对寄存器进行选择,决定从哪个寄存器输出指令;从原理图上可以得出R2-B的输出,若RI-B有效则LDRiI1I0LDR0000LDR1001LDR2010计算机组成原理课程设计6无需关注I3、I2因而I3、I2可为任意状态。2.4时序分析T1、T2、T3、T4为节拍控制端,本设计用了T4节拍控制端,当指令通过译码器P(1)时,P(1)对操作码进行测试,通过节拍脉冲T4的控制,以便识别所要求的操作。图2.3时序信号图TS1时进行微程序控制器控制,TS2时进行微指令寄存器控制,TS时控制LDIR、LDAR,TS4时对P(1)、P(2)、P(3)、P(4)、AR、LOPC、LDRi、LDDR1、LDDR2进行控制。RS-BRD-BRI-BI3I2R0-B01100R1-B01101R2-B01110110××计算机组成原理课程设计73初步设计阶段3.1数据格式和机器指令描述3.1.1数据格式本设计中所有需要处理的数据全部采用定点无符号整数表示,8个bit位,格式如下:76543210数值数据的范围是0~28,即0~255。3.1.2机器指令描述机器指令描述见下表。表3-1机器指令描述指令类别指令名称指令格式助记符寻址方式说明输入输出类指令输入指令INRd寄存器寻址IN→Rd输出指令OUTAddr直接寻址[Addr]→LED-B存储器访问指令取数指令LDAaddr,Rd直接寻址[addr]→Rd76543210OP76543210Addr76543210OP76543210Addr76543210OPRd计算机组成原理课程设计8存数指令STARs,addr直接寻址RS→[addr]寄存器间传送指令MOVRs,Rd寄存器寻址Rs→Rd无条件转移JMPaddr立即寻址Addr→PC停机指令STP程序到此处终止算术加法指令ADDRs,Addr,Rd直接寻址Rs+[Addr]→Rd逻辑与运算指令ANDRs,Addr,Rd直接寻址Rs*[Addr]→Rd76543210OPRsRd76543210Addr76543210OPRsRd76543210Addr76543210OP76543210OP76543210Addr76543210OPRsRd76543210OPRs76543210Addr计算机组成原理课程设计93.2控制台微程序流程3.2.1公操作对机器进行总清零CLR1-0-1。选中P(4),通过译码形成入口地址。3.2.2强置写形成入口地址后,执行写操作。1.(1)打开PC-B将数据送到总线上;(2)打开LDAR将数据从总线流到AR中;(3)打开LDPC,让自动加1的数据进入PC中。2.(1)打开SW-B将数据送到总线上,(2)打开LDDR1将数据从总线流到DR1中。3.(1)打开ALU-B将数据送到总线上,其间DR1中的数据相当于在ALU中做F=A的运算;S3S2S1S0MCNWEA9A8ABC000000011110110110NULLLDARPC-BLDPCS3S2S1S0MCNWEA9A8ABC000000011000000100NULLP(4)S3S2S1S0MCNWEA9A8ABC000000000010000000NULLSW-BLDDR1NULLS3S2S1S0MCNWEA9A8ABC000001101000101000F=AWECENULLALU-BNULL计算机组成原理课程设计10(2)打开CE、WE置成01状态,将数据从总线流到主存相应地址单元中,完成数据写操作。3.2.3强置读形成入口地址后,执行写操作。1.(1)打开PC-B将数据送到总线上;(2)打开LDAR将数据从总线流到AR中;(3)打开LDPC,让自动加1的数据进入PC中。2.(1)打开CE、WE置成00状态,将数据从主存送到总线上;(2)打开LDDR1将数据从总线流到DR1中。3.(1)打开ALU-B将数据送到总线上,其间DR1中的数据相当于在ALU中做F=A的运算;(2)打开LED-B,数据从总线流到输出单元,在数码管上显示出来,完成数据读操作。3.2.4执行程序形成入口地址后,开始执行程序。S3S2S1S0MCNWEA9A8ABC000000011110110110NULLLDARPC-BLDPCS3S2S1S0MCNWEA9A8ABC000000001010000000NULLWECELDDR1NULLS3S2S1S0MCNWEA9A8ABC000001110000101000F=ANULLLED-BNULLALU-BNULL计算机组成原理课程设计11所有都为空操作,只是要通过后继地址转入到运行微程序的流程中。3.2.5控制台指令PC计数器在用清零开关CLR清零后,通过控制台开始进行机器指令的读写和执行,此处将00Q的后继地址设为20Q(即010000)。此时只有P(4)有效,即P(4)=0,P(1)=P(2)=P(3)=1。强置改变有一个特点,当SEi为1时无效,不能改变;只有SEi为0时,才能对该位上的数进行改变;但只能由0变成1,而不能逆转。1.强置写指令当进行机器指令写入时,将SWB,SWA置成01状态,通过指令译码器的逻辑表达式即可算出入口地址。SE5=1SE4=1SE3=1SE2=1SE1=0SE5~SE2均无效,只有SE1有效,即可得出010000改变为010001,即强置写的入口地址为21Q。2.强制写指令S3S2S1S0MCNWEA9A8ABC000000011000000000NULL计算机组成原理课程设计12当进行机器指令写入时,将SWB,SWA置成00状态,通过指令译码器的逻辑表达式即可算出入口地址。SE5=1SE4=1SE3=1SE2=1SE1=1SE5~SE1均无效,不能对010000进行改变,即强置写的入口地址为20Q。3.程序执行指令当进行机器指令写入时,将SWB,SWA置成11状态,通过指令译码器的逻辑表达式即可算出入口地址。SE5=1SE4=1SE3=1SE2=0SE1=0SE5~SE3均无效,SE2和SE1有效,即可得出010000改变为010011,即强置写的入口地址为23Q。3.2.6控制台流程图综合以上所有操作,即可得出控制台的总流程图。计算机组成原理课程设计13图3.1控制台流程图3.3机器指令初步设计PC计数器在用清零开关CLR清零后,通过控制台进入机器指令执行状态,然后开始运行微程序。此时只有P(1)有效,即P(1)=0,P(2)=P(3)=P(4)=1,且SWB,SWA仍为11。此处将运行P(1)的上一步微指令的后继地址设为40Q(即100000),应用指令译码器的逻辑表达式对其进行改变得出微程序入口地址。由于决定入口地址的只有机器指令的前四位(即I7~I4),则通过拟定其先得出入口地址,并检验拟定的前四位是否合理,如下表所示。计算机组成原理课程设计14表3-2机器指令前四位根据寄存器译码分析可以得出机器指令的后四位。表3-3机器指令后四位通过以上可得出完整的机器指令,如下表所示。机器指令名称指令前四位SE5~SE1入口地址备注IN000011111100000根据机器指令前四位