首页 行业资讯 宠物日常 宠物养护 宠物健康 宠物故事
您的当前位置:首页正文

计算机组成原理课程设计完整版

来源:画鸵萌宠网
计算机组成原理课程设计

目录

1 需求分析 ......................................................................................1 1.1 课程设计目的 ................................................................................1 1.2 课程设计内容及要求 ..........................................................................1 1.3 TDN-CM++计算机组成原理实验教学系统特点 ......................................................2 1.4 微指令格式分析 ..............................................................................2 1.5 指令译码电路分析 ............................................................................5 1.6 寄存器译码电路分析 ..........................................................................6 1.7 时序分析 ....................................................................................7 2 总体设计 ......................................................................................9 2.1 数据格式和机器指令描述 ......................................................................9 2.2 机器指令设计 ............................................................................... 11 3 详细设计 ..................................................................................... 16 3.1 控制台微程序流程的详细设计 ................................................................. 16 3.2 运行微程序流程的详细设计 ................................................................... 19 4 实现阶段 ..................................................................................... 31 4.1 所用模型机数据通路图及引脚接线图 ........................................................... 31 4.2 测试程序及结果 ............................................................................. 33 心得体会 ....................................................................................... 35 参考资料 ....................................................................................... 36

Ⅰ 0

计算机组成原理课程设计

1 需求分析

1.1 课程设计目的

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

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

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

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

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

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

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

1

计算机组成原理课程设计

1.3 TDN-CM++计算机组成原理实验教学系统特点

TDN-CM++计算机组成原理实验教学系统,由西安唐都科教仪器公司生产,具备支持开放式实验教学方法的结构特点。

实验采用负逻辑模式,即灯亮为“0”,灯灭为“1”。

系统采用部件单元式结构,包括运算器、存储器、控制器、信号及时序控制、内总线、外总线、外围接口及输入输出设备、大规模可编程逻辑器件等计算机功能部件的单元电路。

系统所具有的软硬件结构对用户的实验设计具有完全的开放性,其数据线、地址线、控制线都是由用户来实施连接,系统中的运算器结构、控制器结构及微程序指令的格式及定义均可由用户根据教学需要来灵活改变或重新设计。 1.4 微指令格式分析

微指令格式如下表:

表1-1 微代码定义

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 13 12 11 10 每个字段的具体含义如下:

(1)字段24~19控制运算器的控制端,通过改变S3~CN来决定对数据进行何种

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

算术运算 无进位 M 0 有进位 0 1 逻辑运算 CN 1 0 ×

(2)字段18为控制对主存W/R的开关

2

计算机组成原理课程设计

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字段

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

1 0 0 LDAR 0 NULL 3

计算机组成原理课程设计

B字段

12 0 0 0 1 1 1 0 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计数器的输出开关 本设计中不涉及 空操作 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计数器中的控制开关 本设计中不涉及 空操作

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

4

计算机组成原理课程设计

1.5 指令译码电路分析

指令译码原理工作图如下:

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

图1.1 指令译码原理图

P(1) ~P(4)为低电平有效,当选用时该信号为零;I7 ~I2表示机器指令前六位;SE5 ~SE1表示能够强置改变入口地址的后五位。

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

5

计算机组成原理课程设计

拟定机器指令通过上式即可算出每条子程序的入口地址。 1.6 寄存器译码电路分析

寄存器译码原理图如下:

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

图1.2 寄存器译码原理图

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

1.6.1 寄存器的输入

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

6

计算机组成原理课程设计

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

1.6.2 寄存器的输出

RS-B、RD-B、RI-B为寄存器的输出开关,且为低电平有效。 I3~I0对寄存器进行选择,决定从哪个寄存器输出指令。 R0-B R0-B 0 1 R1-B 0 1 R2-B 0 1 1 RS-B 1 0 1 0 1 0 1 RI-B 1 1 1 1 1 1 0 I3 X 0 X 0 X 1 X I2 X 0 X 1 X 0 X I1 0 X 0 X 1 X X I0 0 X 1 X 0 X X 1.7 时序分析

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

7

计算机组成原理课程设计

图1.3 时序信号图

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

8

计算机组成原理课程设计

2 总体设计

2.1 数据格式和机器指令描述

2.1.1 数据格式

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

7 6 5 4 3 2 1 0 数值 数据的范围是0~28,即0~255。

2.1.2机器指令描述 机器指令描述见下表:

表2-1 机器指令描述

指令 指令指令格式 类别 名称 输 入 输 出 类 指 令 输入指令 7 6 5 4 3 2 1 0 助记符 IN R2 寻址方式 寄存器寻址 说明 IN→R2 OP R2 输出指令 OUT Addr 7 6 5 4 3 2 1 0 OP 直接寻址 [Addr]→LED-B 9

计算机组成原理课程设计

存 储 器 访 问 指 令 取数指令 LDA addr,R0 7 6 5 4 3 2 1 0 OP R0 直接寻址 [addr]→R0 7 6 5 4 3 2 1 0 Addr 存数指令 STA R0,addr 7 6 5 4 3 2 1 0 OP R0 直接寻址 R0→[addr] 7 6 5 4 3 2 1 0 Addr MOV R2,R0 寄存器寻址 R2→ R0 2 1 0 寄存器访问类指令 程 序 控 类 指 令 寄存器间传送指令 无条件转移 7 6 5 4 3 OP R2 R0 JMP addr 7 6 5 4 3 2 1 0 OP 立即寻址 Addr → PC 7 6 5 4 3 2 1 0 Addr 停机指令 STP 7 6 5 4 3 2 1 0 OP 程序到此处终止 10

计算机组成原理课程设计

算 术 逻 辑 运 算 指 令 算术加法指令 ADD R0,Addr,R0 7 6 5 4 3 2 1 0 OP R0 R0 直接寻址 R0+[Addr]→ R0 7 6 5 4 3 2 1 0 Addr 逻辑与运算指令 7 6 5 4 3 2 1 0 AND Rs,Addr,Rd 直接寻址 R0*[Addr]→ R0 OP R0 R0 7 6 5 4 3 2 1 0 Addr 2.2 机器指令设计

2.2.1 控制台指令

PC计数器在用清零开关CLR清零后,通过控制台开始进行机器指令的读写和执行,此处将00Q的后继地址设为10(即001000)。此时只有P(4)有效,即P(4)=0,P(1)=P(2)=P(3)=1。

强置改变有一个特点,当SEi为1时无效,不能改变;只有SEi为0时,才能对该位上的数进行改变;但只能由0变成1,而不能逆转。

(1) 强置写指令

11

计算机组成原理课程设计

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

SE5=1 SE4=1 SE3=1 SE2=1 SE1=0

SE5~SE2均无效,只有SE1有效,即可得出001000改变为001001,即强置写的入口地址为11。

(2)强制写指令

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

SE5=1 SE4=1 SE3=1 SE2=1 SE1=1

SE5~SE1均无效,不能对 001000进行改变,即强置写的入口地址为10。 (3) 程序执行指令

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

SE5=1 SE4=1 SE3=1 SE2=0 SE1=0

SE5~SE3均无效,SE2和SE1有效,即可得出001000改变为001011,即强置写的入口地址为13。

12

计算机组成原理课程设计

2.2.2 运行微程序机器指令

PC计数器在用清零开关CLR清零后,通过控制台进入机器指令执行状态,然后开始运行微程序。此时只有P(1)有效,即P(1)=0,P(2)=P(3)=P(4)=1,且SWB,SWA仍为11。此处将运行P(1)的上一步微指令的后继地址设为20(即010000),应用指令译码器的逻辑表达式对其进行改变得出微程序入口地址。由于决定入口地址的只有机器指令的前四位(即I7~I4),则通过拟定其先得出入口地址,并检验拟定的前四位是否合理,如下表所示。

表2-2 机器指令前四位

机器指令名称 IN ADD STA LDA AND MOV OUT JMP STP 指令前四位 0000 0001 0010 0011 0100 0101 0111 1000 1001 SE5~SE1 11111 11110 11101 11100 11011 11010 11000 10111 10110 入口地址 010000即20 010001即21 010010即22 010011即23 010100即24 010101即25 010111即27 011000即30 011001即31 备注 根据机器指令前四位得出的入口地址没有重复,说明机器指令前四位拟定合理。

13

计算机组成原理课程设计

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

指令名称 IN ADD STA LDA AND MOV OUT JMP STP 1000 0000 指令后四位 0010 0000 说明 “INPUT DEVICE”→R0 R0+[Addr]→R0 R0→Addr [Addr]→R0 R0*[Addr]→R0 R2→R0 指令执行时不涉及寄存器的访问

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

表2-3 机器指令码

助记符 IN R2 ADD R0,Addr,R0 机器指令码 00000010 00010000 xxxxxxxx STA R0,addr 00100000 xxxxxxxx LDA addr,R0 00110000 xxxxxxxx AND Rs,Addr,Rd 01000000 xxxxxxxx MOV R2,R0 OUT Addr 01011000 01110000 xxxxxxxx R2→ R0 [Addr]→LED-B R0*[Addr]→ R0 [addr]→R0 R0→[addr] 说明 IN→R2 R0+[Addr]→ R0 14

计算机组成原理课程设计

JMP addr 10000000 xxxxxxxx STP 10010000 程序到此处终止 Addr → PC

15

计算机组成原理课程设计

3 详细设计

3.1 控制台微程序流程的详细设计

3.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),通过译码形成入口地址。

3.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.

16

计算机组成原理课程设计

3.1.3 强置读

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

相当于在ALU中做F=A的运算;

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

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

S3 S2 S1 S0 M CN WE A9 A8 A B C 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 NULL WE CE LDDR1 NULL (1)打开CE、WE置成00状态,将数据从主存送到总线; (2)打开LDDR1将数据从总线流到DR1中。 3.

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

计算机组成原理课程设计

(1)打开ALU-B将数据送到总线上,其间DR1中的数据

相当于在ALU中做F=A的运算;

(2)打开LED-B,数据从总线流到输出单元,在数码管

上显示出来,完成数据读操作。

3.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

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

3.1.5 控制台流程图

综合以上所有操作,即可得出控制台的总流程图。

图3.1 控制台流程

18

计算机组成原理课程设计

3.2 运行微程序流程的详细设计

3.2.1 公操作

从控制台强制执行流程,开始运行微程序。对运行微程序来说,所有的子流程都要运行取指的公操作,然后才能进行各自的操作。

1.

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

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

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

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中的指令,通过指令译码器,形

成执行该指令的微程序入口地址。

3.2.2 IN指令操作

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

19

计算机组成原理课程设计

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

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

(2)打开LDRi,根据IN指令的后两位决定让数据从总 线上进入到目的寄存器R2中。

3.2.3 MOV指令操作

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

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

(1)打开RS-B,根据MOV指令的I3、I2打开原始寄

R2→R0 存器R2 输出门让其中保存的数据,流到总线上;

01

(2)打开LDRi,根据指令的后两位打开目的寄存器R0 输入门,让数据从总线上进入到R0中。

3.2.4 ADD指令操作

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

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

20

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 计算机组成原理课程设计

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

P(1) ADD PC→AR PC+1 RAM→BUS BUS→AR RAM→BUS BUS→DR2 R0→DR1 (DR1)+(DR2) →R0 01

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

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

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

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

3.

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

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

(2)打开LDDR2将数据从总线流到DR2中。 4.

S3 S2 S1 S0 M CN WE A9 A8 A B C 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 NULL LDDR1 RS-B NULL (1)打开RS-B,根据MOV指令的I3、I2决定打开

哪个原始寄存 Rs输出门让其中保存的操作

21

计算机组成原理课程设计

数,流到总线上;

P(1) AND PC→AR PC+1 RAM→BUS BUS→AR RAM→BUS BUS→DR2 R0→DR1 (DR1)*(DR2) →R0 01

(2)打开LDDR1,让操作数经由总线进入到DR1中 5

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

打开ALU-B将运算结果送到总线上;

(2) 打开LDRi,根据指令的后两位打开目的寄存器R0的

输入门,让数据从总线上进入R0中。 3.2.5 AND指令操作

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

1.

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

(2)打开LDAR将数据从总线流到AR中; (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 1 0 LDAR B 0 0 0 C 0 0 0 NULL 打开CE、WE

置成00状态,将数据(指令

地址码)从主存 送到总线上; 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 1 LDDR2 B 0 0 0 C 0 0 0 NULL (1)打开CE、WE置成00状态,根据AR中保存的指令地

址码,在主存相同地址单元中,读出其中保存的操作数,并放置到总线上;

(2)打开LDDR2将数据从总线流到DR2中。 4

(1)打开RS-B,根据MOV指令的I3、I2决定打开哪个原

始寄存器Rs输出门让其中保存的操作数,流到总线上;

(2)打开LDDR1,让操作数经由总线进入到DR1 中。 5.

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 S3 S2 S1 S0 M CN 23 WE 0 A9 A8 1 1 A 0 0 1 LDRi B 1 0 1 ALU-B C 0 0 0 NULL 1 0 1 1 1 0 F=A·B NULL 计算机组成原理课程设计

(1)将ALU的控制端S3~CN置成F=A·B,对两数进行运算,

打开ALU-B将运算结果送到总线上;

(2)打开LDRi,根据指令的后两位打开目的寄存器R0的

输入门,让数据从总线上进入Rd中。

3.2.6 STA指令操作

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

S3 S2 S1 S0 M CN P(1) STA PC→AR PC+1 RAM→BUS BUS→AR R0→BUS BUS→RAM 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.

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

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

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

0 0 0 0 0 0 NULL NULL

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

24

计算机组成原理课程设计

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

S3 S2 S1 S0 M CN

(1) 打开RS-B,根据指令的I3、I2决定打开哪个原始寄

存器Rs 输出门让其中保存的数据,流到总线上;

(2) 打开CE、WE置成01状态,根据AR中保存的指令地

址码,让总线上的数据流到主存相应地址单元中,完成数据写操作。

3.2.7 LDA指令操作

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

1.

S3 S2 S1 S0 M CN P(1) LDA PC→AR PC+1 RAM→BUS BUS→AR RAM→BUS BUS→R0 WE 0 WE A9 A8 01 CE A 0 0 0 NULL B 0 0 1 RS-B C 0 0 0 NULL 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 0 0 0 0 0 0 NULL (1)打开PC-B,将PC中的数据(指令地址码地址) 送到总线上;

(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 0 0 0 C 0 0 0 NULL 01 (1)打开CE、WE置成00状态,将数据(指令地址

25

计算机组成原理课程设计

码)从主存送到总线上;

(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) 将该地址下的数据存入R0中。

3.2.8 OUT指令操作

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

S3 S2 S1 S0 M CN P(1) OUT R0→LED WE 1 A9 A8 1 0 A 0 0 0 NULL B 0 0 1 RS-B C 0 0 0 NULL 0 0 0 0 0 0 NULL NULL LED-B 打开LED-B,结果从总线流到输出单元,在数码管 上显示出来,完成数据读操作。

01

3.2.9 JMP指令操作

P(1) JMP PC→AR PC+1 RAM→BUS

BUS→PC 完成公操作后,根据形成的入口地址运行JMP指令操作。 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

26

01

计算机组成原理课程设计

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

(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 10 1 LOAD B 0 0 0 C 1 1 0 NULL LDPC (1)打开CE、WE置成00状态,将数据(指令 地址码)从主存送到总线上;

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

是自动输入,因而不会产生自动加1的效果。

3.2.10 STP指令操作

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

S3 S2 S1 S0 M CN 0 0 0 0 0 0 P(1) WE 0 A9 A8 1 1 NULL A 0 0 0 B 0 0 0 C 0 0 0 所有字段为空操作,只是其后继地址设为本身,进行死循环从而达到停机目的。

27

计算机组成原理课程设计

3.2.11 运行微程序流程图

运行微程序

01 PC→AR PC+1 02 RAM→AR BUS→IR 20 P(1) IN MOV ADD AND STA LDA OUT JMP STP 20 25 21 24 22 23 27 R0→LED 30 31 SW→R2 SW→R2 R2→R0 PC→AR PC+1 03 PC→AR PC+1 07 RAM→BUS BUS→AR 04 15 RAM→BUS BUS→DR2 05 16 PC→AR PC+1 32 RAM→BUS BUS→DR2 33 R0→BUS BUS→RAM PC→AR PC+1 34 PC→AR PC+1 37 01 01 RAM→BUS BUS→AR RAM→BUS BUS→AR 36 RAM→BUS BUS→R0 01 RAM→BUS BUS→PC RAM→BUS BUS→DR2 01 R2→R0 06 R2→R0 26 01 01 (DR1)+(DR2)→R0 (DR1)+(DR2)→R0 01 01

28

计算机组成原理课程设计

3.4 微程序二进制代码表

微地址 S3 S2 S1 S0 M CN WE A9 A8 A 00 01 02 03 04 05 06 07 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30

B C μA5-μA0 00000010000000000000000000000010000000000000001000000000110001101 000 000 100 001000 1 110 110 110 000010 1 100 000 001 010000 1 110 000 000 000100 1 011 000 000 000101 1 010 001 000 000110 1 001 101 000 000001 1 1 1 0 0 0 0 0 0 0 001101 0 0 0 0 0 0 0 1 1 110 110 110 001010 0 0 0 0 0 0 0 1 1 110 110 110 001100 000000000000100000000000000000000000000000100000000000000001000000000000000000000010000000000010000000100100110111111111 010 000 000 001111 1 000 000 000 000001 0 010 000 000 100000 1 011 000 000 001110 1 010 001 000 010110 0 000 101 000 001000 0 001 000 000 000001 1 110 110 110 000011 1 110 110 110 011010 1 110 110 110 011100 1 110 110 110 000111 1 001 011 000 000001 1 001 101 000 000001 0 000 001 000 000001 1 110 110 110 011111 29

计算机组成原理课程设计

31 32 33 34 35 36 37

000000000000000000000000000000000000000100000010010000001 000 000 000 011001 1 110 000 000 011011 1 000 001 000 000001 1 110 000 000 011110 1 000 101 000 001001 1 001 000 000 000001 1 101 000 110 000001 30

计算机组成原理课程设计

4 实现阶段

4.1 所用模型机数据通路图及引脚接线图

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位模型机的完整数据通路图

31

计算机组成原理课程设计

BUS UNITB7W/R UNITT4T3T2T1WETS4TS3TS2TS1H23…B0STATE UNITSIGNAL UNITLOG UNITS3M24SE6SE6SWBSWASWITCH UNITSWBSWAINS UNIT………B7AUJ3B0B7…………CN…M19LDDR1LDDR2ALU-B299-BARSE1P(1)P(2)P(3)P(4)LDRiRS-BRD-BRI-BLDIR…LDDR1LDDR2AUJ1ALU-BB0299-BARCYZI……M18SE1P(1)P(3)P(4)P(4)LDRiRS-BRD-BRI-BI7………I7……………I2I3I0…ALU UNITLOG UNITFCFZLDR2LDR1LDR0R2-BR1-BR0-BM16M17A8A9Y0Y1…I0LDIR…I2I3 …LDR2LDR1LDR0R2-BR1-BR0-BB7D0EX UNIT……B0RJ1…REG UNITINPUT DEVICELDARLOADPC-BLDPCLDARB7LOADADJ6PC-BB0LDPCD7……MICRO-CONTROLLERD7Y2………SWJ3……D0SW-BADDRESS UNITMAIN MEMCED7A0D7LED-B…………AD7AD0……D0W/ROUTPUT DEVICE………D7A7D0W/R…D0W/R…EXT BUS图5.2 引脚接线图

32

…计算机组成原理课程设计

4.2 测试程序及结果

表5-1 测试程序

地址 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 0000 0111 0000 1000 0000 1001 0000 1010 0000 1011 0000 1100 0000 1101 0000 1110 0000 1111 0001 0000 0001 0001 内容 0000 0010 0101 1000 0001 0000 0000 1111 0100 0000 0001 0000 0010 0000 0001 0001 0011 0000 0001 0001 0111 0000 1000 0000 0000 1101 1001 0000 助记符 IN R2 MOV R2,R0 ADD R0,0FH,R0 说明 IN→R2 R2→ R0 R0+[0FH]→ R0 AND Rs,10H,Rd R0∧[10H]→ R0 STA R0,11H R0→[11H] LDA 11H,R0 [11H]→R0 OUT R0 JMP 0DH R0→LED-B 0DH→ PC STP 程序停止运行 0000 0110 0000 0001 自定义加 自定义与 理论结果:输入02H,存入R2寄存器,再经过MOV指令转移到R0寄存器;接着与系统内部存储数06H首先进行算术加法运算,然后与系统内部存储数01H进行逻辑与运算;接着将最后运算结果存入主存11H下,再将11H中的结果存入R0寄存器中,接着让得出结果在LED数码管上显示出来。

实际结果:输入的02H与系统内部存储数06H进行算术加法运算后,可以看到此时

33

计算机组成原理课程设计

数据灯上显示的加法运算结果08H;然后08H与系统内部存储数01H进行逻辑与运算后,可以看到此时数据上显示的逻辑与运算结果00H;接着存数、导数后,在LED数码管上显示出运算结果“00”。

理论结果与实际结果相符合。

34

计算机组成原理课程设计

心得体会

基于所学计算机组成原理知识的局限性,在选择实验操作有所困难,经过认真剖析TDN-CM++计算机组成原理实验教学系统的时序功能部件、指令译码电路、寄存器组控制、微指令格式、微指令流程、微地址形成部件的功能结构和工作机制,列出相应逻辑方程,找出指令操作码字段与微程序入口地址形成、寄存器组控制的对应关系,确定每个时钟节拍所对应的微操作;根据TDN-CM++计算机组成原理实验教学系统的功能最大化引脚图和完整数据通路图,设计自己的微指令流程框架、控制台流程,完整的指令系统,微程序流程总图,微指令代码表。在此次的课程设计过程中,我更进一步地熟悉了计算机的结构及掌握了各个部件的工作原理和其具体的使用方法。通过这次课程设计我们了解了课程设计的一般步骤,和设计中应注意的问题。设计本身并不是有很重要的意义,而是同学们对待问题时的态度和处理事情的能力。至于设计的成绩无须看的太过于重要,而是设计的过程,设计的思想和设计过程中的每一个环节。

这次课程设计之后,使我明白了,做任何事情都要认真仔细,不然的话,你会花更多的时间才会做好。课程设计有利于提高我们的动手能力,能把我们所学的书本知识运用到实际生活中去。同时也锻炼了自己独立思考问题的能力和通过查看相关资料来解决问题的习惯,并丰富了我们的业余生活,提高我们对知识的理解能力。

35

计算机组成原理课程设计

参考资料

[1] 蒋本珊 计算机组织原理 北京清华大学出版社[2] 张楷、汤志忠 通用16位CPU的设计与实现[J]

36

计算机工程与应用 2004

2003

因篇幅问题不能全部显示,请点此查看更多更全内容