当前位置:文档之家› 计算机组成原理设计(十条指令)

计算机组成原理设计(十条指令)

1 关于此次课程设计1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。

目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。

1.2课程设计内容及要求基于TDN-CM++计算机组成原理实验教学系统,设计和实现一个8位指令系统结构(ISA),通过调试和运行,使设计的计算机系统能够完成指定的功能。

设计过程中要求考虑到以下各方面的问题:(1)指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器);(2)数据类型(无符号数,有符号数,整型,浮点型);(3)存储器划分(指令,数据);(4)寻址方式(立即数寻址,寄存器寻址,直接寻址等);(5)指令格式(单字节,双字节,多字节);(6)指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出)。

要求学生综合运用计算机组成原理、数字逻辑和汇编语言等相关课程的知识,理解和熟悉计算机系统的组成原理,掌握计算机主要功能部件的工作原理和设计方法,掌握指令系统结构设计的一般方法,掌握并运用微程序设计(Microprogramming)思想,在设计过程中能够发现、分析和解决各种问题,自行设计自己的指令系统结构(ISA)。

2 分析阶段2.1 微指令格式分析微指令格式如下表:表2-1 微代码定义(1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种算术或逻辑运算。

本设计中全部为正逻辑运算。

(2)字段18为控制对主存W/R的开关Y1、Y2进行选择。

(4)字段15~7为A、B、C三个开关控制端。

A字段B字段C字段(5)字段6~1为该条微程序的八位二进制后继地址,其决定顺序执行哪条微程序。

2.2指令译码电路分析指令译码工作原理图如下:图2.1 指令译码原理图P(1) ~P(4)为低电平有效,当选用时该信号为零;I7 ~I2表示机器指令前六位;SE5 ~SE1表示能够强置改变入口地址的后五位。

根据上图得出指令译码器的逻辑表达式如下:拟定机器指令通过上式即可算出每条子程序的入口地址。

2.3 寄存器译码电路分析寄存器译码原理图如下。

LDB0LDR1LDR2I1I0LDRiR0-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 有效则无需关注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进行控制。

3 初步设计阶段3.1 数据格式和机器指令描述3.1.1 数据格式本设计中所有需要处理的数据全部采用定点无符号整数表示,8个bit位,格式如下:数据的范围是0~28,即0~255。

3.1.2 机器指令描述机器指令描述见下表。

3.2 控制台微程序流程3.2.1 公操作对机器进行总清零CLR 1-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 的运算;(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 执行程序形成入口地址后,开始执行程序。

所有都为空操作,只是要通过后继地址转入到运行微程序的流程中。

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=1 SE4=1 SE3=1 SE2=1 SE1=0SE5~SE2均无效,只有SE1有效,即可得出010000改变为010001,即强置写的入口地址为21Q 。

2. 强制写指令当进行机器指令写入时,将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 控制台流程图综合以上所有操作,即可得出控制台的总流程图。

图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),则通过拟定其先得出入口地址,并检验拟定的前四位是否合理,如下表所示。

表3-2 机器指令前四位根据寄存器译码分析可以得出机器指令的后四位。

通过以上可得出完整的机器指令,如下表所示。

4 详细设计4.1 各条指令的详细设计4.1.1 公操作从控制台强制执行流程,开始运行微程序。

对运行微程序来说,所有的子流程都要运行取指的公操作,然后才能进行各自的操作。

1.(1)打开PC-B ,将PC 中的数据(指令操作码地址)送到总线上; (2)打开LDAR 将数据从总线流到AR 中; (3)打开LDPC ,让自动加1的数据进入PC 中。

2.(1)打开CE 、WE 置成00状态,对主存进行读操作,访问AR 中保存地址的地址单元中指令;(2)打开LDIR ,将主存中被访问的地址单元中指令送到IR ; (3)选中P(1),根据刚保存到IR 中的指令,通过指令译码器,形成执行该指令的微程序入口地址。

4.1.2 IN 指令操作完成公操作后,根据形成的入口地址运行IN 指令操作。

(1)打开SW-B,将“INPUT DEVICE”中输入的数据流到总线上;(2)打开LDRi,根据IN指令的后两位决定让数据从总线上进入到哪个目的寄存器Rd中。

4.1.3 LOAD指令操作完成公操作后,根据形成的入口地址运行LOAD指令操作。

1.0 0 0 0 0 0NULL(1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上;(2)打开LDAR将数据从总线流到AR中;(3)打开LDPC,让自动加1的数据进入PC中。

2.S3 S2 S1 S0 M CN0 0 0 0 0 0NULL(1)打开CE、WE置成00状态,将数据(指令地址码)从主存送到总线上;(2)打开LDAR将数据从总线流到AR中。

3.(1)将该地址下的数据存入R0中。

4. 将R0寄存器中的数据存入RD1锁存器。

5. 将数据在LED 中显示出来。

4.1.4 MOV 指令操作完成公操作后,根据形成的入口地址运行MOV 指令操作。

(1)打开RS-B ,根据MOV 指令的I3、I2决定打开哪个原始寄存器Rs 输出门让其中保存的数据,流到总线上;(2)打开LDRi ,根据指令的后两位决定打开哪个目的寄存器Rd输入门,让数据从总线上进入到哪个Rd 中。

4.1.5 ADD 指令操作完成公操作后,根据形成的入口地址运行SUB 指令操作。

1.(1)打开PC-B ,将PC 中的数据(指令地址码地址)送到总 线上;(2)打开LDAR 将数据从总线流到AR 中; (3)打开LDPC ,让自动加1的数据进入PC 中。

2.(1)打开CE 、WE 置成00状态,将数据(指令地址码)从 主存送到总线上;(2)打开LDAR将数据从总线流到AR中。

3.(1)打开CE、WE置成00状态,根据AR中保存的指令地址码,在主存相同地址单元中,读出其中保存的操作数,并放置到总线上;(2)打开LDDR2将数据从总线流到DR2中。

4.(1)打开RS-B,根据MOV指令的I3、I2决定打开哪个原始寄存Rs输出门让其中保存的操作数,流到总线上;(2)打开LDDR1,让操作数经由总线进入到DR1中。

5.(1)将ALU的控制端S3~CN置成F=A+B,对两数进行运算,打开ALU-B将运算结果送到总线上;(2)打开LDRi,根据指令的后两位决定打开哪个目的寄存器Rd的输入门,让数据从总线上进入到哪个Rd中。

4.1.6 AND指令操作完成公操作后,根据形成的入口地址运行AND指令操作。

相关主题