
课 程 设 计 报 告
3、设计一个具有带进位加法和立即数寻址方式的模型机……………………………2
六、 设计一个具有带进位加法和立即数寻址方式的模型机………………………………………………11
5、设计微指令……………………………………………………………………………15
一、 课程设计目的
通过这次课程设计,掌握计算机的基本组成原理,熟悉整套的实验设备系统,并对计算机的各部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制与调试等过程有深入的了解。提高动手能力,实现理论与实践相结合。
二、 课程设计题目
1、设计一个微程序控制器
(1)设计内容
设计一个微控制器,使得装载的微程序顺序执行,并有跳转功能。
(2) 设计要求
装载的微程序能按照流程图正确执行,并能强制地址转换跳出循环,跳到另一个微程序地址,能在地址总线上显示每一步的微程序地址。
⏹2、设计一台模型计算机,实现IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、JMP(无条件转移)指令系统。
(1) 设计内容
设计一台模型计算机,实现下列指令系统,并通过给定的工作程序验证下述指令系统。
(2)设计要求
本模型机能够实现IN(输入)、ADD(加法)、STA(存数)、OUT(输出)、JMP(无条件转移)指令系统,并能在数据总线和地址总线上显示正确的数值。
三、实验设备仪器
硬件环境为PC-386以上微机,西安唐都科教仪器公司的TDN-CM+计算机组成原理实验台。软件环境采用WINDOWS操作系统,西安唐都科教仪器公司的TDN-CM+计算机组成原理实验软件,ispDesignEXPERT实验软件。
四、微程序控制器
1、设计目标
装载的微程序能按照流程图正确执行,并能强制地址转换跳出循环,跳到另一个微程序地址,能在地址总线上显示每一步的微程序地址。能在单步执行的过程中,对微程序的运行进行控制,从而实现在不同的微程序入口的跳转。
2、实验步骤
(1)按下面所示连接实验线路,仔细检查无误后,接通电源。
(2)进行微程序的装载。
(3)装载成功后,将程序计数器清零,然后将MICRO-CONTROLLER单元的编程开关设置为RUN,将STATE单元的“STEP”和“STOP”分别设置为“STEP”和“RUN”。
(4)将原来接到MA5~MA0的数据线接到SE1~SE6上面。
(5)按动“START”,使得其单步运行。
3、运行调试
(1)通过微程序流程图,查看他们之间的跳转
(2)使用说明
要强置地址时,只要将当前微指令的下一条指令的地址和要调到的地址值进行同或运算,便得出要在SWITCH单元的CN~S3中输入的数据。
(3)测试数据和结果
1.不强制微地址时,则在微地址00→20→22→27→20不断循环。
2.当微地址跳到27时(此时UA0~UA5中显示010111),在SWITCH的CN~S3单元中输入111100,按动START开关,微地址跳到了23,成功地跳出循环,实现跳转。
3.再按动START开关,则微地址在01→02→10→01不断循环。
4.在UA0~UA5显示001000时(即10),在SWITCH的CN~S3单元中输入111110时跳到微地址11,输入为111101时跳到12,输入为111100时跳到13。
5.实验结果正确,实验完成。
五、设计一个具有加法功能和直接寻址方式的模型机
1、设计目标
设计一台具有输入、输出、带进位加法、储存和跳转功能的模型计算机,
在设计完本程序后,所设计模型机能够完成从一个外设输入一个数到指定的寄存器中,另外输入立即数并将其存入另一个、寄存器中,两数进行进位相加并将结果保存到第一个寄存器,输出结果,并显示。另外,实现无条件跳转至开始。
2、指令格式
| 助记符号 | 机器指令码 | 功 能 |
| IN | 0000 0000 | “Input DEVICE”中的开关状态-> R0 |
| ADD addr | 0001 0000 XXXX XXXX | R0+[addr] -> R0 |
| STA addr | 0010 0000 XXXX XXXX | R0 -> [addr] |
| OUT addr | 0011 0000 XXXX XXXX | [addr] -> LED |
| JMP addr | 0100 0000 XXXX XXXX | addr -> PC |
(1)微指令格式
微指令字长共24位,其控制位顺序如下表所示:
| A字段 | B字段 | C字段 | |||||||||
| 15 | 14 | 13 | 选择 | 12 | 11 | 10 | 选择 | 9 | 8 | 7 | 选择 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| 0 | 0 | 1 | LDRi | 0 | 0 | 1 | RS-B | 0 | 0 | 1 | P(1) |
| 0 | 1 | 0 | LDDR1 | 0 | 1 | 0 | RD-B | 0 | 1 | 0 | P(2) |
| 0 | 1 | 1 | LDDR2 | 0 | 1 | 1 | RI-B | 0 | 1 | 1 | P(3) |
| 1 | 0 | 0 | LDIR | 1 | 0 | 0 | 299-B | 1 | 0 | 0 | P(4) |
| 1 | 0 | 1 | LOAD | 1 | 0 | 1 | ALU-B | 1 | 0 | 1 | AR |
| 1 | 1 | 0 | LDAR | 1 | 1 | 0 | PC-B | 1 | 1 | 0 | LDPC |
(2)微程序控制电路
4、设计微指令
电路连接图
(1)画出微程序流程图
(2)设计微指令
(3)微程序代码
根据以上编写的微程序,以及微指令代码化的方法得到的微程序代码为:
将题目设计的模型机的指令用汇编语言描述其具体结构为:
| 地 址 | 内 容 | 助记符 | 说明 |
| 0000 0000 | 0000 0000 | IN | Input -> R0 |
| 0000 0001 | 0001 0000 | ADD [0AH] | R0+[0AH] ->R0 |
| 0000 0010 | 0000 1010 | ||
| 0000 0011 | 0010 0000 | STA [0BH] | R0 -> [0BH] |
| 0000 0100 | 0000 1011 | ||
| 0000 0101 | 0011 0000 | OUT [0BH] | [0BH] -> LED |
| 0000 0110 | 0000 1011 | ||
| 0000 0111 | 0100 0000 | JMP 01H | 01H-> PC |
| 0000 1000 | 0000 0001 | ||
| 0000 1001 | |||
| 0000 1010 | 0000 0001 | 自定义 | |
| 0000 1011 | 求和结果 |
$P0000
$P0110
$P020A
$P0320
$P040B
$P0530
$P060B
$P0740
$P0801
$P0A01
(4)根据数据通路图写出指令实现信号
| 助记符 | 信号 | |
| IN | PC→AR,PC+1 | LDPC,PC-B,LDAR |
| RAM→BUS,BUS→IR | W/R,CE,LDIR | |
| INPUT→BUS | SW-B,LDRi | |
| ADD | PC→AR,PC+1 | LDPC,PC-B,LDAR |
| RAM→BUS,BUS→IR | W/R,CE,LDIR | |
| PC→AR,PC+1 | LDPC,PC-B,LDAR | |
| RAM→BUS,BUS→DR2 | W/R,CE,LDDR2 | |
| R0→DR1 | LDRi.LDDR1 | |
| (DR1)+(DR2) →R0 | S3-S0,M,Cn,ALU-B | |
| STA | PC→AR,PC+1 | LDPC,PC-B,LDAR |
| RAM→BUS,BUS→AR | W/R,CE,LDAR | |
| R0→BUS,BUS→RAM | LDRi,W/R,CE | |
| OUT | PC→AR,PC+1 | LDPC,PC-B,LDAR |
| RAM→BUS,BUS→AR | W/R,CE,LDAR | |
| RAM→BUS,BUS→DR1 | W/R,CE,LDDR1 | |
| DR1→LED | ALU-B,LED-B,W/R | |
| JMP | PC→AR,PC+1 | LDPC,PC-B,LDAR |
| RAM→BUS,BUS→PC | W/R,CE,LDPC |
显示正确的结果。
六、设计一个具有带进位加法和立即数寻址方式的模型机
1、问题描述
本题目设计的是一台具有输入、输出、带进位加法、储存和跳转功能的模型计算机,并写出工作程序和测试数据验证所设计的指令系统。
2、设计目标
在设计完本程序后,所设计模型机能够完成从一个外设输入一个数到指定的寄存器中,另外输入立即数并将其存入另一个、寄存器中,两数进行进位相加并将结果保存到第一个寄存器,输出结果,并显示。另外,实现无条件跳转至开始。
3、指令格式
| 助记符号 | 机器指令码 | 功 能 |
| IN | 0000 0000 | Input -> R0 |
| ADC Imm | 1110 0000 XXXX XXXX | R0+Imm+CY -> R0 |
| STA addr | 0010 0000 XXXX XXXX | R0 -> [addr] |
| OUT addr | 0011 0000 XXXX XXXX | [addr] -> LED |
| JMP addr | 0100 0000 XXXX XXXX | [addr] -> PC |
(6)微指令格式
微指令字长共24位,其控制位顺序如下表所示:
| A字段 | B字段 | C字段 | |||||||||
| 15 | 14 | 13 | 选择 | 12 | 11 | 10 | 选择 | 9 | 8 | 7 | 选择 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| 0 | 0 | 1 | LDRi | 0 | 0 | 1 | RS-B | 0 | 0 | 1 | P(1) |
| 0 | 1 | 0 | LDDR1 | 0 | 1 | 0 | RD-B | 0 | 1 | 0 | P(2) |
| 0 | 1 | 1 | LDDR2 | 0 | 1 | 1 | RI-B | 0 | 1 | 1 | P(3) |
| 1 | 0 | 0 | LDIR | 1 | 0 | 0 | 299-B | 1 | 0 | 0 | P(4) |
| 1 | 0 | 1 | LOAD | 1 | 0 | 1 | ALU-B | 1 | 0 | 1 | AR |
| 1 | 1 | 0 | LDAR | 1 | 1 | 0 | PC-B | 1 | 1 | 0 | LDPC |
(2)指令译码电路
(3)寄存器译码电路
寄存器译码
微程序控制电路
5、设计微指令
(1)画出微程序流程图
(2)设计微指令
| 微地址 | S3 | S2 | S1 | S0 | M | CN | WE | A9 | A8 | A | B | C | UA5….UA0 |
| 00 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 000 | 000 | 000 | 000001 |
| 01 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 110 | 110 | 110 | 000010 |
| 02 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 100 | 000 | 001 | 001000 |
| 03 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 011 | 000 | 000 | 000100 |
| 04 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 010 | 001 | 000 | 000101 |
| 05 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 001 | 101 | 101 | 000001 |
| 06 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 110 | 000 | 000 | 000111 |
| 07 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 000 | 001 | 000 | 000001 |
| 08 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 001 | 000 | 000 | 000001 |
| 0E | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 110 | 110 | 110 | 000011 |
| 0A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 110 | 110 | 110 | 000110 |
| 0B | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 110 | 110 | 110 | 011000 |
| 0C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 110 | 110 | 110 | 001101 |
| 0D | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 101 | 000 | 110 | 000001 |
| 18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 110 | 000 | 000 | 001111 |
| 0F | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 010 | 000 | 000 | 010101 |
| 15 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 000 | 101 | 000 | 000001 |
根据以上编写的微程序,以及微指令代码化的方法得到的微程序代码为:
$M00018001
$M0101ED82
$M0200C048
$M0300B004
$M0401A205
$M05959B41
$M0600E007
$M07028201
$M08001001
$M0E01ED83
$M0A01ED86
$M0B01ED98
$M0C01ED8D
$M0D00D181
$M1800E00F
$M0F00A015
$M15070A01
(4)工作程序的设计
将题目设计的模型机的指令用汇编语言描述其具体结构为:
| 地 址 | 内 容 | 助记符 | 说明 |
| 0000 0000 | 0000 0000 | IN | Input -> R0 |
| 0000 0001 | 1110 0000 | ADC Imm | R0+Imm+cy ->R0 |
| 0000 0010 | 0000 1010 | ||
| 0000 0011 | 0010 0000 | STA [0BH] | R0 -> [0BH] |
| 0000 0100 | 0000 1011 | ||
| 0000 0101 | 0011 0000 | OUT [0BH] | [0BH] -> LED |
| 0000 0110 | 0000 1011 | ||
| 0000 0111 | 0100 0000 | JMP | Addr -> PC |
| 0000 1000 | 0000 0001 |
$P0000
$P01E0
$P020A
$P0320
$P040B
$P0530
$P060B
$P0740
$P0801
(5)指令实现信号
| 助记符 | 信号 | |
| IN | PC->AR,PC+1 | LDPC,PC-B,LDAR |
| RAM->BUS,BUS->IR | W/R,CE,LDIR | |
| INPUT->BUS | SW-B,LDRi | |
| ADC | PC->AR,PC+1 | LDPC,PC-B,LDAR |
| RAM->BUS,BUS->DR2 | W/R,CE,LDDR2 | |
| R0->DR1 | LDRi.LDDR1 | |
| (DR1)+(DR2)+cy->R0 | S3-S0,M,Cn,ALU-B | |
| STA | PC->AR,PC+1 | LDPC,PC-B,LDAR |
| RAM->BUS,BUS->AR | W/R,CE,LDAR | |
| R0->BUS,BUS->RAM | LDRi,W/R,CE | |
| OUT | PC->AR,PC+1 | LDPC,PC-B,LDAR |
| RAM->BUS,BUS->AR | W/R,CE,LDAR | |
| RAM->BUS,BUS->DR1 | W/R,CE,LDDR1 | |
| DR1->LED | ALU-B,LED-B,W/R | |
| JMP | PC->AR,PC+1 | LDPC,PC-B,LDAR |
| RAM->BUS,BUS->PC | W/R,CE,LDPC |
输入01H,经运行后LED显示为0B,实验成功。
6、建立联机操作文件
为了从PC机下载工作程序和微程序,需要建立联机操作文件,该文件是普通的文本文件,扩展名为TXT,可用记事本来建立的,要求:
a、 测试用的工作程序排在文件的前面,每个内存地址及代码占一行;
b、 微指令代码排在文件的后面,每个微地址及微指令代码占一行;
7、连接实验线路
复杂模型机系统连线图
8、运行与调试
(1)系统与PC机联机
实验系统安装有一个标准的DB型9针RS-232C串口插座,使用配套的串行通信电缆分别插在实验系统及PC机的串口,即可实现系统与PC机的联机操作。
(2)下载工作程序和微程序
使用唐都软件将工作程序和微程序下载到实验箱的内存和控制存储器中。其中,自带电 线的实验箱用NCMP53软件,启动软件后使用F4[装载]进行下载;外接电源线的实验箱用CMPP软件,启动软件后在菜单中选择[转储]/[装载]进行下载。
(3)运行
数据通路结构框图 |
上学期学过计算机组成原理课,虽然已经对计算机的运行有了初步的认识,但是还只能是基于理论还不能真实的感受到计算机的工作流程。
经过组成原理程序设计这门课,不仅增强了我的动手能力(这正是大学课程所需的),而且从中我学得了课本上学不到的东西,比如细心的操作和问题的解决。通过这门课,我对计算机的硬件是如何通过调用微程序运作的、如何设计程序让计算机进行运算等操作有了进一步的了解。也许这还不够,但是上这门课真正的开阔了我的视野!
参考资料
(1)《计算机组成原理》课本
(2)《计算机组成原理》实验指导书
