多思计算机组成原理实验:模型机课程设计
计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰
第十一章 模型机课程设计
计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰
-
实验目的
- 融会贯通所学知识,设计和调试一台模型计算机
- 进一步掌握计算机组成的基本原理,建立整机概念
- 培养工程设计和研究能力
-
实验要求
- 独立思考,独立设计,独立调试。
- 用心思考,精心设计,细心调试。
- 写出课程设计报告
-
实验任务
-
设计一台模型机,要求模型机的指令集如下表所示:
-
编写程序,求S=1+2+3+┈+N,0<N<20,N从数据开关输入,S存入存储器,并在模型机上运行此程序。
-
调试成功之后,整理出设计文档,包括:电路总框架图、微程序控制器电路图、微指令格式表、微程序流程图、微程序代码表、指令代码表、程序代码。
-
-
设计思路与难点分析
最简单的设计思路,就是从现有的系统出发,在此基础上进行修改。前面有些章节已经实现了一个非常简单的模型机。因此,可以从这个模型机入手,进行比较、分析和设计。
先看指令的条数,与前面章节的简单模型机相比,本设计的模型机功能更强、指令数更多,从4条指令增加到10条指令,这就意味着对应的微程序及微指令也增加了。微指令多了,就会需要更多存储单元,微地址的位数就可能有变化。
由于每一条微指令都包括下一条微指令的地址,微地址的位数必然影响微指令的长度,因此微指令的格式需要修改。
另外,简单模型机中的微指令长度为24位,正好可以用3片EPROM2716来存放,如果指令长度增加,3片EPROM2716就放不下了。解决的办法一般有两种,一是使用4片EPROM2716,二是依旧使用3片EPROM2716,但在指令格式中使用译码字段、在电路中增加译码器来减少位数,保持指令的长度不变。为了电路的简洁,建议使用第一种方法。
无论使用以上哪种方法,微地址形成电路都需要修改,因此以前的电路最多只能生成4位的微地址,显然满足不了现在的需求。
再比较指令的功能,此模型机比前面章节的模型机多了4条算术逻辑运算指令和2条访存指令,其中比较特殊的是相等则跳转指令,这是一条条件转移指令,只有满足比较结果相等的条件才执行跳转操作。为实现此功能,需要做的主要工作有:
- 增加一片D型触发器74LS175作为状态条件寄存器,用于保存74LS181的A=B输出引脚的值。
- 在微指令格式中增加一个判别测试位P(2)和一个标志影响位LDSC。LDSC位高电平有效,只有此位为1的微指令才会影响状态条件寄存器的值,此位为0的微指令运算结果不存入状态条件寄存器。
- 修改微地址形成电路,在电路中使用P(2)来进行判别测试,并根据状态条件寄存器的值形成正确的跳转地址。
微程序控制器设计是此实验的难点,其他电路模块几乎不需要修改,在设计时请开动脑筋、查阅相关资料。
-
实验内容与步骤
- 模型机数据通路总体设计。根据指令集的功能要求设计模型机的数据通路,请将图1补充完整,标出各控制信号的名称。
2. 微程序控制器设计,请在下面画出微程序控制器详细电路图,并标出各种信号。
3. 微指令格式设计,请将微指令格式填入表11-2
-
微程序流程设计,请完成图11.2的微指令流程图
-
微程序代码设计,请将微程序代码填入表11-3
-
指令设计,请将指令格式、操作码等填入表11-4
-
程序设计,编写程序,求S=1+2+3+┈+N,0<N<20,N从数据开关输入,S存入存储器,填入表11-5
-
按照以上设计修改电路,修改RAM内容,修改微程序存储器内容,在模型机上运行程序,观察运行过程和结果,如果有错误,找到并改正错误,一直到正确为止。注意电路的初始化过程和输入地址、数据的时机。
实验
图1:
表11-2 微指令格式
图11.2微指令流程图
表11-3 微程序二进制代码表
表11-4 机器指令表
序号 | 指令符号 | 指令二进制代码 | 长度 |
---|---|---|---|
1 | IN | 00000000 | 8bit |
2 | ADD | 00010000 | 16bit |
3 | STA | 00100000 | 16bit |
4 | JMP | 00110000 | 16bit |
5 | SUB | 01000000 | 16bit |
6 | CMP | 01010000 | 16bit |
7 | INC | 01100000 | 8bit |
8 | CLA | 01110000 | 8bit |
9 | LDA | 10000000 | 16bit |
10 | BEQ | 10010000 | 16bit |
表11-5 内存中的程序与数据
内存地址 | 内容 | 含义 |
---|---|---|
00 | 00000000 | IN N |
01 | 00100000 | STA N |
02 | 00011011 | |
03 | 01110000 | CLA |
04 | 00100000 | STA S |
05 | 00011100 | |
06 | 00100000 | STA count |
07 | 00011101 | |
10 | 01100000 | INC |
11 | 00100000 | STA count |
12 | 00011101 | |
13 | 00010000 | ADD S |
14 | 00011100 | |
15 | 00100000 | STA S |
16 | 00011100 | |
17 | 10000000 | LDA count |
20 | 00011101 | |
21 | 01010000 | CMP N |
22 | 00011011 | |
23 | 10010000 | BEQ -> |
24 | 00010111 | |
25 | 00110000 | JMP -> 10 |
26 | 00001000 | |
27 | 10000000 | LDA S |
30 | 00011100 | |
31 | 00110000 | JMP -> |
32 | 00011001 | |
33 | 存放N | |
34 | 存放S | |
35 | 存放count | |
36 | ||
37 |
实验总结:
实验结合了实验五的简单模型机,在理解了实验五的基础上进行实验。首先根据指令集写出微程序流程图,设计过程中发现CLA和CMP使用到了ALU的功能,查询功能表后使用了logical0功能和A=B接口,BEQ功能要实现跳转需要添加一个判别位P(2),CMP需要添加一个标志影响位LDSC;然后设计微指令格式,将uA0-4、S0-3放在一起;接着设计微程序代码,其中将BEQ跳转后设为相等跳转11111,不相等跳转01111,由P(2)和CMP的结果决定uA4;最后设计实验电路,在实验五的基础上,将EPROM2716C3替换为EPROM2716C4,并连接上各个控制信号,将原来的74LS175替换为74LS174,用于暂存新增的地址线uA4,并添加相应的或门与门,增加一片74LS175和两片与门,用于CMP中ALU的A=B输出的保存。
程序设计先写出伪代码,再转换成微程序,最后写出内存中的内容。
本次实验难点在于设计微程序代码,要将每一步的微程序理清和知道每个控制信号控制什么,还需要理解判别位的功能、选址的原理才能完成。
实验电路:https://download.csdn.net/download/weixin_43924621/18199717
更多推荐
所有评论(0)