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

更新时间:2024-04-14 07:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机学院计算机科学与技术专业

《计算机组成原理课程设计》报告

(2008/2009学年 第一学期)

学生姓名: 闫全胜 学生班级: 计算机062202H 学生学号: 200620030227 指导教师: 康葆荣

2009年1月3日

计算机组成原理课程设计

目录

1 关于此次课程设计 ...................................................................................................................... 2

1.1 设计的目的:................................................................................................................... 2 1.2 设计内容及要求: ........................................................................................................... 2 2 分析阶段 ...................................................................................................................................... 3

2.1指令译码电路分析 ............................................................................................................ 3 2.2 寄存器译码电路分析 ....................................................................................................... 4 2.3 微指令格式分析............................................................................................................... 5 2.4 时序分析 .......................................................................................................................... 6 3 初步设计阶段 .............................................................................................................................. 7

3.1 数据格式 .......................................................................................................................... 7 3.2指令描述 ........................................................................................................................... 7 3.3 存储器分区 ...................................................................................................................... 9 3.4 控制台微程序流程: ..................................................................................................... 10 3.5 运行微程序 .................................................................................................................... 11 4 详细设计阶段 ............................................................................................................................ 12

4.1控制台流程分解.............................................................................................................. 12 4.2 运行微程序子流程 ......................................................................................................... 15 4.3 微程序总流程图............................................................................................................. 24 5 实现阶段 .................................................................................................................................... 25

5.1 所用模型机数据通路的介绍 ......................................................................................... 25 5.2 微程序代码设计与编写 ................................................................................................. 26 微程序二进制代码表 .................................................................................................................... 26

5.3 机器指令的输入及运行 ................................................................................................. 28 心得体会 ........................................................................................................................................ 30 参考资料 ........................................................................................................................................ 31

1

计算机组成原理课程设计

1 关于此次课程设计

1.1 设计的目的:

本课程设计是计算机科学与技术专业重要的实践性教学环节之一,是在学生学习完《计算机组成原理》课程后进行的一次全面的综合设计。目的是通过一个完整的8位指令系统结构(ISA)的设计和实现,加深对计算机组成原理课程内容的理解,建立起整机系统的概念,掌握计算机设计的基本方法,培养学生科学的工作作风和分析、解决实际问题的工作能力。 1.2 设计内容及要求:

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

设计过程中要求考虑到以下各方面的问题:

1、指令系统风格(寄存器-寄存器,寄存器-存储器,存储器-存储器); 2、数据类型(无符号数,有符号数,整型,浮点型); 3、存储器划分(指令,数据);

4、寻址方式(立即数寻址,寄存器寻址,直接寻址等); 5、指令格式(单字节,双字节,多字节);

6、指令功能类别(算术/逻辑运算,存储器访问,寄存器操作,程序流控制,输入/输出);

7、依据CPI值对指令系统进行性能分析。

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

2

计算机组成原理课程设计

2 分析阶段

2.1指令译码电路分析 指令译码工作原理图:

SE5 SE4 SE3 SE2 SE1FZFCT4P(1)P(2)P(3)SW-ASW-BP(4)I7 I6 I5 I4 I3 I2

图2.1指令译码工作原理图

根据上图得出指令译码器的逻辑表达式如下。

其中P(1) ~P(4)为低电平有效,当选用时该信号为零;I7 ~I2表示机器指令前六位;SE5 ~SE1为微控制器但愿位地址锁存器的强制端输出;SWA SWB均为1(启动程序时)。

此设计中设定为P(1)有效,P(2) P(3)均无效,FC FZ T4无需考虑。 由算出的SE5 ~SE1可知操作码对应的入口微地址。

3

计算机组成原理课程设计

2.2 寄存器译码电路分析

寄存器译码原理图如下:

LDB0译码器I1I0S1S2ENBD1D4LDR1LDRi译码器S1S2ENBD1D4LDR2R0-BRD-B译码器I3I2S1S2ENBD1D4R1-BRS-BR2-BRI-B

图2.2 寄存器译码原理图

寄存器的输入、输出不仅决定于输入、输出开关,还与机器指令的后四位(即I3~I0)有关,由其决定哪个寄存器被选中。 2.2.1 寄存器的输入

LDR0 LDR1 LDR2 LDRi 0 0 0 I1 0 0 1 I0 0 1 0

LDRi为寄存器的输入开关,且为低电平有效(即LDRi=0),I1、I0对寄存器进行选择,决定数据进入哪个寄存器。 2.2.2 寄存器的输出

RS-B RD-B RI-B 1 1 1 1 1 1 1 0 I3 0 0 1 × I2 0 1 0 ×

4

R0-B 0 R1-B 0 R2-B 0 1

计算机组成原理课程设计

RS-B、RD-B、RI-B为寄存器的输出开关,且为低电平有效;I3、I2对寄存器进行选择,决定从哪个寄存器输出指令;从原理图上可以得出R2-B的输出,若RI-B有效则无需关注I3、I2因而I3、I2可为任意状态。 2.3 微指令格式分析 微代码格式如下

S3 S2 S1 S0 M CN WE A9 A8 24 23 22 21 20 19 18 17 16 A B C 9 8 7 μA5~μA0 6 5 4 3 2 1

15 14 12 11 10 每个字段的具体含义如下: (1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种算术或逻辑运算。本设计中全部为正逻辑运算。

算术运算 无进位 M CN 0 1 有进位 0 0 1 × 逻辑运算 (2)字段18为控制对主存W/R的开关

A9 0 0 A8 1 1 WE 0 1 说明 对主存进行对操作 对主存进行写操作

(3)字段17、16控制24译码器的输出端,对Y0、Y1、Y2进行选择。

A9 0 0 1 1 A8 0 1 0 1 Yi Y0 Y1 Y2 × 操作 选中SW-B 选中CE 选中LED-B NULL 说明 INPUT UNIT的开关 MAIN MEN 的控制片选开关 OUTPUT UNIT 的开关

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

A字段

5

计算机组成原理课程设计

15 0 0 0 1 1 1 0 B字段 12 0 0 0 1 1 1 0 C字段 9 0 0 0 1 1 1 0 8 0 1 1 0 1 0 0 7 1 0 1 0 0 1 1 开关 P(1) P(2) P(3) P(4) LDPC AR NULL 说明 指令译码器中的P(1)为低电平有效 指令译码器中的P(2)为低电平有效 指令译码器中的P(3)为低电平有效 指令译码器中的P(4)为低电平有效 将自动输入的数据加1后输入到PC计数器中的控制开关 本设计中不涉及 空操作 11 0 1 1 0 1 0 0 10 开关 1 0 1 1 0 0 1 RS-B RD-B RI-B ALU-B PC-B 299-B NULL 说明 寄存器R0、R1、R2的输出开关 寄存器R0、R1、R2的输出开关 寄存器R0、R1、R2的输出开关 运算器ALU的输出开关 PC计数器的输出开关 本设计中不涉及 空操作

14 0 1 1 0 0 1 0 13 开关 1 0 1 0 1 0 0 LDDRi LDDR1 LDDR2 LDIR LOAD LDAR NULL 说明 控制寄存器Ri的写入 暂存器DR1的控制开关 暂存器DR2的控制开关 指令寄存器IR的控制开关 非自动输入的数据装载入PC计数器的控制开关 地址寄存器AR的控制开关 空操作

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

T1、T2、T3、T4为节拍控制端,本设计用了T4节拍控制端,当指令通过译码器P(1)时,P(1)对操作码进行测试,通过节拍脉冲T4的控制,以便识别所要求的操作。

6

计算机组成原理课程设计

图2.4 时序信号图

TS1时进行微程序控制器控制,TS2时进行微指令寄存器控制,TS时控制LDIR、LDAR,TS4时对P(1)、P(2)、P(3)、P(4)、AR、LOPC、LDRi、LDDR1、LDDR2进行控制。

3 初步设计阶段

3.1 数据格式

本设计中所有需要处理的数据全部采用定点无符号整数表示,8个bit位,格式如下:

7

6 5 4 3 数值 2 1 0 数据的范围是0~28-1,即0~255。 3.2指令描述

指令 指令类型 名称 输 入 输 输入指令 7 6 5 4 3 2 1 0 指令格式 助记符 寻址方式 说明 IN 1(R 寄存器寻址 IN→Rd OP Rd 7

计算机组成原理课程设计

出 类 指 令 输出指令 7 6 5 4 3 2 1 0 OP OUT Addr 直接寻址 [Addr]→LED-B 7 6 5 4 3 2 1 0 Addr 存 储 器 访 问 指 令 取数指令 7 6 5 4 3 2 1 0 OP LDA addr,Rd 直接寻址 [addr]→Rd 7 6 5 4 3 2 1 0 Addr 2 1 0 存数指令 7 6 5 4 3 STA Rs,addr 直接寻址 RS→OP Rs [addr] 7 6 5 4 3 2 1 0 Addr

指令 指令指令格式 类别 名称 寄存器访问类寄存器间传送7 6 5 4 3 2 1 0 助记符 寻址方式 功能说明 OP Rs Rd 寄存器寻MOV Rs,Rd 址 Rs→ Rd 指令 指令 8

计算机组成原理课程设计

程 序 控 类 指 令 算 算术术 减法逻 指令 辑 运 算 指 令 逻辑与运算指令 7 6 5 4 3 2 1 0 Addr 7 6 5 无条件转移 7 6 5 4 3 2 1 0 OP Addr → JMP addr 立即寻址 PC 7 6 5 4 3 2 1 0 Addr 2 1 0 停机指令 7 6 5 4 3 程序到此STP 处终止 OP 1 0 7 6 5 4 3 2 OP Rs Rd SUB 直接寻址 Rs,Addr,Rd Rs-[Addr]→ Rd 7 6 5 4 3 2 1 0 Addr 4 3 2 1 0 OP Rs Rd AND 直接寻址 Rs,Addr,Rd Rs*[Addr]→ Rd 3.3 存储器分区

设计中将主存储器划分为两部分,地址单元00H~1DH为指令存储区,地址单元1FH~FFH为数据存储区,其中每个地址单元中能够保存一个八位二进制的数据。划分如下图所示:

9

计算机组成原理课程设计

00H 7 6 5 4 3 2 1 0 . . . 1DH 1EH 1FH . . FFH 指令存储区 数据存储区 3.4 控制台微程序流程:

PC计数器在用清零开关CLR清零后,通过控制台开始进行机器指令的读写和执行,此处将00Q的后继地址设为20Q(即010000)。此

P(4)

P(4)=0,P(1)=P(2)=P(3)=1。且SEi为1时无效,不能改变;只有SEi为0时,才能对该位上的数进行改变;但只能由0变成1,而不

能逆转。 3.4.1 强置写

当进行机器指令写入时,将SWB,SWA置成01状态,通过指令译码器的逻辑表达式即可算出入口地址。 SE5=1 SE4=1

10

计算机组成原理课程设计

SE3=1 SE2=1 SE1=0

SE5~SE2均无效,只有SE1有效,即可得出010000改变为010001,即强置写的入口地址为21Q。 3.4.2 强置读

当进行机器指令写入时,将SWB,SWA置成00状态,通过指令译码器的逻辑表达式即可算出入口地址。 SE5=1 SE4=1 SE3=1 SE2=1 SE1=1

SE5~SE1均无效,不能对 010000进行改变,即强置写的入口地址为20Q。 3.4.3 程序执行

当进行机器指令写入时,将SWB,SWA置成11状态,通过指令译码器的逻辑表达式即可算出入口地址。 SE5=1 SE4=1 SE3=1 SE2=0 SE1=0

SE5~SE3均无效,SE2和SE1有效,即可得出010000改变为010011,即强置写的入口地址为23Q。 3.5 运行微程序

PC计数器在用清零开关CLR清零后,通过控制台进入机器指令执行状态,然后开始运行微程序。此时只有P(1)有效,即P(1)=0,P(2)=P(3)=P(4)=1,且SWB,SWA仍为11。此处将运行P(1)的上一步微指令的后继地址设为40Q(即100000),应用指令译码器的

11

计算机组成原理课程设计

逻辑表达式对其进行改变得出微程序入口地址。由于决定入口地址的只有机器指令的前四位(即I7~I4),则通过拟定其先得出入口地址,并检验拟定的前四位是否合理,如下表所示。

机器指令名称 IN LDA STA SUB AND MOV OUT JMP STP 指令前四位 0000 0010 0100 0011 0101 1001 0111 1000 1010 SE5~SE1 11111 11101 11011 11100 11010 10110 11000 10111 10101 入口地址 备注 100000 100010 100100 100011 100101 101001 100011 101000 101010 根据机器指令前四位得出的入口地址没有重复,说明机器指令前四位拟定合理。 4 详细设计阶段

4.1控制台流程分解 4.1.1 公操作

对机器进行总清零CLR 1-0-1。

S3 S2 S1 S0 M CN 0 0 0 0 0 0 WE 0 A9 A8 1 1 NULL A 0 0 0 B 0 0 0 C 1 0 0 P(4) 选中P(4),通过译码形成入口地址。

12

计算机组成原理课程设计

4.1.2 强置写

形成入口地址后,执行写操作。

1.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC (1)打开PC-B将数据送到总线上; (2)打开LDAR将数据从总线流到AR中; (3)打开LDPC,让自动加1的数据进入PC中。 2.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 0 0 SW-B A 0 1 0 LDDR1 B 0 0 0 C 0 0 0 NULL (1)打开SW-B将数据送到总线上, (2)打开LDDR1将数据从总线流到DR1中。 3.

S3 S2 S1 S0 M CN 0 0 0 0 0 1 F=A WE 1 WE A9 A8 0 1 CE A 0 0 0 NULL B 1 0 1 ALU-B C 0 0 0 NULL (1)打开ALU-B将数据送到总线上,其间DR1中的数据相当于在ALU

中做F=A的运算;

(2)打开CE、WE置成01状态,将数据从总线流到主存相应地址单

元中,完成数据写操作。 4.1.3 强置读

形成入口地址后,执行读操作。 1.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC (1)打开PC-B将数据送到总线上;

13

计算机组成原理课程设计

(2)打开LDAR将数据从总线流到AR中; (3)打开LDPC,让自动加1的数据进入PC中。

2.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 WE A9 A8 0 1 CE A 0 1 0 LDDR1 B 0 0 0 C 0 0 0

NULL (1)打开CE、WE置成00状态,将数据从主存送到总线上; (2)打开LDDR1将数据从总线流到DR1中。 3.

S3 S2 S1 S0 M CN 0 0 0 0 0 1 F=A WE 1 A9 A8 1 0 A 0 0 0 NULL B 1 0 1 ALU-B C 0 0 0 NULL

NULL LED-B (1)打开ALU-B将数据送到总线上,其间DR1中的数据相当于在ALU中做F=A的运算; (2)打开LED-B,数据从总线流到输出单元,在数码管上显示出来,完成数据读操作。 4.1.4执行程序

形成入口地址后,开始执行程序。

S3 S2 S1 S0 M CN 0 0 0 0 0 0 WE 0 A9 A8 1 1 NULL A 0 0 0 B 0 0 0 C 0 0 0 所有都为空操作,只是要通过后继地址转入到运行微程序的流程中。

4..1.5控制台流程图

由上可知控制台的总流程图为:

14

计算机组成原理课程设计

4.2 运行微程序子流程 4.2.1 公操作

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

运行微程序1.

S3 S2 S1 S0 M CN PC→AR PC+1 WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC 0 0 0 0 0 0 NULL (1)打开PC-B,将PC中的数据(指令操作码地址)送到总线上;

RAM→BUS BUS→AR (2)打开LDAR将数据从总线流到AR中; (3)打开LDPC,让自动加1的数据进入PC中。 2.

P(1) S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 WE A9 A8 0 1 CE A 1 0 0 LDIR B 0 0 0 NULL C 0 0 1 P(1)

(1)打开CE、WE置成00状态,对主存进行读操作,访问AR中保存地址的

地址单元中指令;

(2)打开LDIR,将主存中被访问的地址单元中指令送到IR;

(3)选中P(1),根据刚保存到IR中的指令,通过指令译码器,形成执行该指

令的微程序入口地址。

15

计算机组成原理课程设计

4.2.2 IN1指令操作

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

P(1) S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 0 0 SW-B A 0 0 1 LDRi B 0 0 0 C 0 0 0

NULL

SW→R0 (1)打开SW-B,将“INPUT DEVICE”中输入的数据流到总线上;

(2)打开LDRi,在T4脉冲作用下打开R0输入端据IN1机器指令的后两

位决定让数据从总线上送入R0。

4.2.3 ADD指令操作

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

1.

S3 S2 S1 S0 M CN WE 0 0 0 0 0 0 0 →AR PCNULL PC+1 P(1) A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC (1) 打开PC-B,将PC中的数据送到BUS;

RAM→BUS BUS→AR (2) 打开LDAR,在T3脉冲作用下将数据从总线流到AR中; (3) 打开LDPC,让自动加1的数据进入PC中。

RAM→BUS BUS→DR2 2.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 WE 0 WE A9 A8 0 1 CE A 10 1 0 LDAR B 0 0 0 C 0 0 0 R0→DR1 (DR1)+(DR2) →R0 NULL NULL (1)打开CE、WE置成00状态,将数据从主存送到总线上; (2)打开LDAR,在T3脉冲作用下将数据从总线流到AR中。

3.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL

16

WE 0 WE A9 A8 0 1 CE A 0 1 1 LDDR2 B 0 0 0 C 0 0 0 NULL 计算机组成原理课程设计

(1)打开CE、WE置成00状态,据AR中保存的指令地址码,在主存相同地址单元中,读出保存的操作数,并放置到总线上;

(2)打开LDDR2,在T4脉冲作用下将数据从总线流到DR2中。

4.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 0 1 0 B 0 0 1 C 0 0 0 NULL LDDR1 RS-B (1)打开RS-B,即打开R0的输出,将数据送到总线上;

(2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。

5.

S3 S2 S1 S0 M CN 1 0 0 1 0 1 F=A+B WE 0 A9 A8 1 1 NULL A 0 0 1 LDRi B 1 0 1 ALU-B C 0 0 0 NULL (1)将ALU的控制端S3~CN置成F=A+B,两数相加,打开ALU-B将运算

结果送到总线上;

(2)打开LDRi,在T4脉冲作用下打开R0输入端据ADD机器指令的后两

位决定让数据从总线上送入R0。

4.2.4 SUB指令操作

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

1.

S3 S2 S1 S0 M CN P(1) WE 0 A9 A8 1 1 A 0 1 0 B 0 0 1 C 0 0 0 NULL 0 0 0 0 0 0 NULL LDDR1 RS-B (1)打开RS-B,即打开R0的输出,将数据送到总线上;

R0→DR1 (2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。 2.

R2→DR2 S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 0 1 1 B 0 1 1 C 0 0 0 NULL LDDR2 RI-B (DR1)-DR2) →R0 17

计算机组成原理课程设计

(1)打开RI-B,即打开R2的输出,将数据送到总线上;

(2)打开LDDR2,在T4脉冲作用下让操作数经由总线进入到DR2中。 3.

S3 S2 S1 S0 M CN 0 1 1 0 0 0 F=A-B WE 0 A9 A8 1 1 NULL A 0 0 1 LDRi B 1 0 1 ALU-B C 0 0 0 NULL (1)将ALU的控制端S3~CN置成F=A-B,两数相减,打开ALU-B将运算

结果送到总线上;

(2)打开LDRi,在T4脉冲作用下打开R0输入端据SUB机器指令的后两

位决定让数据从总线上送入R0。

4.2.5 AND指令操作

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

1.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 P(1) WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC

NULL (1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上; (2)打开LDAR将数据从总线流到AR中;

PC→AR PC+1 (3)打开LDPC,让自动加1的数据进入PC中。 2.

RAM→BUS BUS→AR S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 WE A9 A8 0 1 CE A 1 1 0 LDAR B 0 0 0 C 0 0 0 NULL RAM→BUS BUS→DR2 (1)打开CE、WE置成00状态,将数据从主存送到总线上; (2)打开LDAR,在T3脉冲作用下将数据从总线流到AR中。

R0→DR1 3.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 WE 0 WE A9 A8 0 1 CE A 0 1 1 LDDR2 B 0 0 0 C 0 0 0 (DR1)AND(DR2) →R0 NULL NULL (1)打开CE、WE置成00状态,据AR中保存的指令地址码,在主存

18

计算机组成原理课程设计

相同地址单元中,读出保存的操作数,并放置到总线上; (2)打开LDDR2,在T4脉冲作用下将数据从总线流到DR2中。 4.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 0 1 0 B 0 0 1 C 0 0 0 NULL LDDR1 RS-B (1)打开RS-B,即打开R0的输出,将数据送到总线上; (2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1

中。 5.

S3 S2 S1 S0 M CN 1 0 1 1 1 1 F=A AND B WE 0 A9 A8 1 1 NULL A 0 0 1 LDRi B 1 0 1 ALU-B C 0 0 0 NULL (1) 将ALU的控制端S3~CN置成F=A AND B,两数相与,打开ALU-B

将运算结果送到总线上;

(2) 打开LDRi,在T4脉冲作用下打开R0输入端据AND机器指令

的后两位决定让数据从总线上送入R0。

4.2.6 OR指令操作

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

1.

S3 S2 S1 S0 M CN P(1) WE 0 A9 A8 1 1 A 0 1 0 B 0 0 1 C 0 0 0 NULL 0 0 0 0 0 0 NULL LDDR1 RS-B (1)打开RS-B,即打开R0的输出,将数据送到总线上;

R0→DR1 (2)打开LDDR1,在T4脉冲作用下让操作数经由总线进入到DR1中。 2.

R2→DR2 S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 0 1 1 B 0 1 1 C 0 0 0 NULL LDDR2 RI-B (DR1)OR(D

R2) →R0 19

计算机组成原理课程设计

(1)打开RI-B,即打开R2的输出,将数据送到总线上;

(2)打开LDDR2,在T4脉冲作用下让操作数经由总线进入到DR2中。 3.

S3 S2 S1 S0 M CN 1 1 1 0 1 1 F=A OR B WE 0 A9 A8 1 1 NULL A 0 0 1 LDRi B 1 0 1 ALU-B C 0 0 0 NULL (1)将ALU的控制端S3~CN置成F=A OR B,两数相或,打开ALU-B

将运算结果送到总线上;

(2)打开LDRi,在T4脉冲作用下打开R0输入端据OR机器指令的

后两位决定让数据从总线上送入R0。

4.2.7 MOVE指令操作

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

S3 S2 S1 S0 M CN 0 0 0 0 0 0 R0→BUS BUS→R2 WE 0 A9 A8 0 1 A 0 0 1 LDRi B 0 0 1 RS-B C 0 0 0 NULL P(1) NULL (1)打开RS-B,即打开R0的输出门让其中保存的数据流到总线上; (2)打开LDRi,在T4脉冲作用下打开R2的输入端据MOVE机器

指令的后两位决定让数据从总线上送入R2。 4.2.8 STA指令操作

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

PC→AR PC+1 P(1) S3 S2 S1 S0 WE M CN 0 0 0 0 0 0 0 NULL 1 1 1 1 0 LDAR 1 1 0 PC-B 1 1 0 LDPC A9 A8 A B C

(1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上;

RAM→BUS BUS→AR 20

计算机组成原理课程设计

(2)打开LDAR将数据从总线流到AR中; (3)打开LDPC,让自动加1的数据进入PC中。 2. S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL

WE 0 WE A9 A8 0 1 CE A 1 1 0 LDAR B C 0 0 0 0 0 0 NULL (1)打开CE、WE置成00状态,将数据(指令地址码)从主存送到总线上;

(2)打开LDAR将数据从总线流到AR中。 3. S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 1 WE A9 A8 0 1 CE A 0 0 0 NULL B 0 1 1 RS-B C 0 0 0 NULL

(1)打开RS-B,即打开R0的输出门让其中保存的数据送到总线上; (2) CE、WE置成01状态,根据AR中保存的指令地址码,让总

线上的数据流到主存相应地址单元中,完成数据写操作。 4.2.9 OUT指令操作

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

S3 S2 S1 S0 M CN P(1) WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC 0 0 0 0 0 0 NULL PC→AR PC+1 (1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上; (2)打开LDAR将数据从总线流到AR中; (3)打开LDPC,让自动加1的数据进入PC中。

RAM→BUS BUS→AR 2.

RAM→BUS BUS→DR1 21

DR1→LED 计算机组成原理课程设计

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 WE A9 A8 0 1 CE A 10 1 0 LDAR B 0 0 0 C 0 0 0

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

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 WE A9 A8 0 1 CE A 0 1 0 LDDR1 B 0 0 0 C 0 0 0 NULL (1)打开CE、WE置成00状态,根据AR中保存的指令地址码,在主

存相同地址单元中,读出其中保存的结果送到到总线上; (2)打开LDDR1,在T4脉冲作用下将数据从总线流到DR1中。 4.

S3 S2 S1 S0 M CN 0 0 0 0 0 1 F=A WE 1 A9 A8 1 0 A 0 0 0 NULL B 1 0 1 ALU-B C 0 0 0 NULL NULL LED-B (1)打开ALU-B将结果送到总线上,其间DR1中的结果相当于在ALU中做F=A的运算;

(2)打开LED-B,结果从总线流到输出单元,在数码管上显示出来,完成数据读操作。

4.2.10 JMP指令操作

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

P(1) S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC

PC→AR PC+1 (1)打开PC-B,将PC中的数据送到总线上; (2)打开LDAR将数据从总线流到AR中;

RAM→BUS BUS→PC (3)打开LDPC,让自动加1的数据进入PC中。 2.

22

计算机组成原理课程设计

S3 S2 S1 S0 M CN 0 0 0 0 0 0

NULL WE 0 WE A9 A8 0 1 CE A 1 0 1 LOAD B 0 0 0 C 1 1 0

NULL LDPC (1)打开CE、WE置成00状态,将数据从主存送到总线上;

(2)打开LOAD、LDPC,将数据经由总线流到PC中,由于不是自动输入,

因而不会产生自动加1的效果。 4.2.11 LW指令操作

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

P(1) S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 A9 A8 1 1 A 1 1 0 LDAR B 1 1 0 PC-B C 1 1 0 LDPC PC→AR PC+1 (1)打开PC-B,将PC中的数据(指令地址码地址)送到总线上; (2)打开LDAR将数据从总线流到AR中;

RAM→BUS BUS→AR (3)打开LDPC,让自动加1的数据进入PC中。 2.

S3 S2 S1 S0 M CN WE 0 WE A9 A8 0 1 CE A 10 1 0 LDAR B 0 0 0 C 0 0 0 NULL RAM→BUS BUS→R0 0 0 0 0 0 0 NULL (1)打开CE、WE置成00状态,将数据(指令地址码)从主存送到总线

上;

(2)打开LDAR将数据从总线流到AR中。 3.

S3 S2 S1 S0 M CN 0 0 0 0 0 0 NULL WE 0 WE A9 A8 0 1 CE A 0 0 1 LDRi B 0 0 0 C 0 0 0

NULL (1)打开CE、WE置成00状态,根据AR中保存的指令地址码,在主存

相同地址单元中,读出其中保存的操作数送到总线上;

(2)打开LDRi,根据LW指令的后两位决定让数据从总线上送入R0。

4.2.12 IN2令操作

23

计算机组成原理课程设计 完成公操作后,根据形成的入口地址运行IN2指令操作。 P(1) S3 S2 S1 S0 M CN 0 0 0 0 0 0 SW→R2 WE 0 A9 A8 0 0 SW-B A 0 0 1 LDRi B 0 0 0 C 0 0 0 NULL NULL (1)打开SW-B,将“INPUT DEVICE”中输入的数据流到总线上; (2)打开LDRi,根据IN指令的后两位决定让数据从总线上进入R2。

4.3 微程序总流程图

24

计算机组成原理课程设计

5 实现阶段

5.1 所用模型机数据通路的介绍 5.1.1 8位模型机的完整数据通路图

BUSALU-B299-BT4DR1(74273)DR2(74273)LDDR1T4LDDR2T4地址总线74299MS1S0ALU(74181)CNS3S2AR(74273)LDART3MEM(6116)OUTPUTCELED-BW/RPC-BPC(74161)LOADW/RLDPCT4R0-BR0(74374)R1-BR1(74374)R2-BR2(74374)LDR0T4LDR1T4LDR2T4时序微控器IR(74273)数据总线W/RY0Y1Y2SW-BINPUTLDIRT3 图5.1 8位模型机的完整数据通路图

5.1.2 引脚连线图

25

计算机组成原理课程设计

BUS UNITB7W/R UNITT4T3T2T1WETS4TS3TS2TS1?H23…B0STATE UNITLOG UNITSIGNAL UNITSWITCH UNITSWBSWAINS UNIT………B7AUJ3B0S3M24…………CN…M19LDDR1LDDR2ALU-B299-BARSE1P(1)P(2)P(3)P(4)LDRiRS-BRD-BRI-BLDIR…LDDR1B7LDDR2AUJ1ALU-BB0299-BARCYZI……M18SE6BSE6SWSWASE1P(1)P(3)P(4)P(4)I7………I7……ALU UNITI2LDRiI3RS-BRD-BI0RI-B…………LOG UNITFCFZLDR2LDR1LDR0R2-BR1-BR0-BM16M17A8A9Y0Y1Y2…LDR2LDR1LDR0R2-BR1-BR0-BB7………B0RJ1REG UNITINPUT DEVICELDARLOADPC-BLDPCD7SWJ3D0SW-BLDARB7LOADADJ6PC-BB0LDPC………ADDRESS UNITMAIN MEMAD7AD0A0…………………CED7D0W/R………MICRO-CONTROLLERD7D0EX UNITD7LED-BD0W/R………D7A7OUTPUT DEVICE…D0W/R…EXT BUS……I0LDIR…I2I3 图5.2引脚连线图

5.2 微程序代码设计与编写

微程序二进制代码表

微地址 S3 S2 S1 S0 M CN WE A9 A8 0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 A B C UA5?UA0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 26

计算机组成原理课程设计

1 0 1 1 1 2 1 3 1 4 1 5 16 1 7 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 4 0 4 1 4 2 4 3 4 4

0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 27

0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 计算机组成原理课程设计

4 5 4 6 4 7 5 0 5 1 5 2 5 3 5 4

0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 5.3 机器指令的输入及运行

地址 内容 助记符 IN1(R0) 说明 “INPUT DEVICE” →R0 0000 0000 0000 0000 0000 0001 0000 0010 0001 0000 0001 1111 ADD [addr] R0+[1FH]→R0 0000 0011 0110 0000 0000 0100 0010 0010 0000 0101 0111 0000 0000 0110 0010 0010 0000 0111

STA [addr] R0→[27H] OUT[21H] [27H]→LED 1010 0010 IN2 (R2) 28

“INPUT 计算机组成原理课程设计

DEVICE” →R2 0000 1000 0010 0000 0000 1001 0110 0000 0000 1010 0010 0011 0000 1011 0111 0000 0000 1100 0010 0011 0000 1101 0011 0000 0000 1110 0000 1111 0010 0000 0110 0000 STA [addr] R0→[24H] AND[addr] R0·[20H]→R0 OUT[23H] [23H]→LED SUB(R0,R2) STA [addr] R0-R2→R0 R0→[23H] 0001 0000 0010 0100 0001 0001 0111 0000 0001 0010 0010 0100 0001 0011 0101 0010 0001 0100 1001 0000 0001 0101 0010 0001 0001 0110 0001 0111 0001 1000 0001 1001 0001 1010 0001 1011 0100 0000 0110 0000 0010 0101 0111 0000 0010 0101 1000 0000 OUT[addr] JMP[addr] 1DH→PC [25H]→LED OR(R0,R2) STA [addr] R0 OR R2→R0 R0→[25H] MOVE(R0,R2) LW[addr] R0→R2 [21H]→R0 OUT[24H] [24H]→LED 29

计算机组成原理课程设计

0001 1100 0001 1101 0001 1110 0001 1111 0010 0000 0010 0001 0010 0010 0010 0011 0001 1101 1011 0000 0000 0011 0000 0100 0000 0101 STP 停机 加数自定 与数自定 送往R0的数自定 求和结果06 求差结果05 0010 0100 0010 0101

求与结果04 求或结果05 心得体会

在这次课程设计作业的过程中由于在设计方面我们没有经验,理论基础知识掌握得不牢固,在设计中难免会出现这样那样的问题,经过认真剖析TDN-CM++计算机组成原理实验教学系统的时序功能部件、指令译码电路、寄存器组控制、微指令格式、微指令流程、微地址形成部件的功能结构和工作机制,列出相应逻辑方程,找出指令操作码字段与微程序入口地址形成、寄存器组控制的对应关系,确定每个时钟节拍所对应的微操作;根据TDN-CM++计算机组成原理实验教学系统的功能最大化引脚图和完整数据通路图,设计自己的微指令流程框架、控制台流程,完整的指令系统,微程序流程总图,微指令代码表。在此次的课程设计过程中,我更进一步地熟悉了计算机的结构及掌握了各个部件的工作原理和其具体的使用方法。也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯。虽然这只是一次简单的课程设计,但通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。设计本身并不是有很重要的

30

计算机组成原理课程设计

意义,而是同学们对待问题时的态度和处理事情的能力。至于设计的成绩无须看的太过于重要,而是设计的过程,设计的思想和设计过程中的每一个环节。

这次课程设计之后,使我明白了,做任何事情都要认真仔细,不然的话,你会花更多的时间才会做好。课程设计有利于提高我们的动手能力,能把我们所学的书本知识运用到实际生活中去。同时也丰富了我们的业余生活,提高我们对知识的理解能力。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

参考资料

[1] 张楷,汤志忠. 通用16位CPU的设计与实现[J]. 计算机工程与应用,2003; [2] 蒋本珊. 计算机组成原理. 北京:清华大学出版社,2004

31

本文来源:https://www.bwwdw.com/article/qjnp.html

Top