第十一章 模型机课程设计

计算机组成原理实验教程 基于多思网络虚拟实验系统 张雯雰

  1. 实验目的

    1. 融会贯通所学知识,设计和调试一台模型计算机
    2. 进一步掌握计算机组成的基本原理,建立整机概念
    3. 培养工程设计和研究能力
  2. 实验要求

    1. 独立思考,独立设计,独立调试。
    2. 用心思考,精心设计,细心调试。
    3. 写出课程设计报告
  3. 实验任务

    1. 设计一台模型机,要求模型机的指令集如下表所示:
      模型指令集

    2. 编写程序,求S=1+2+3+┈+N,0<N<20,N从数据开关输入,S存入存储器,并在模型机上运行此程序。

    3. 调试成功之后,整理出设计文档,包括:电路总框架图、微程序控制器电路图、微指令格式表、微程序流程图、微程序代码表、指令代码表、程序代码。

  4. 设计思路与难点分析

    最简单的设计思路,就是从现有的系统出发,在此基础上进行修改。前面有些章节已经实现了一个非常简单的模型机。因此,可以从这个模型机入手,进行比较、分析和设计。

    先看指令的条数,与前面章节的简单模型机相比,本设计的模型机功能更强、指令数更多,从4条指令增加到10条指令,这就意味着对应的微程序及微指令也增加了。微指令多了,就会需要更多存储单元,微地址的位数就可能有变化。

    由于每一条微指令都包括下一条微指令的地址,微地址的位数必然影响微指令的长度,因此微指令的格式需要修改。

    另外,简单模型机中的微指令长度为24位,正好可以用3片EPROM2716来存放,如果指令长度增加,3片EPROM2716就放不下了。解决的办法一般有两种,一是使用4片EPROM2716,二是依旧使用3片EPROM2716,但在指令格式中使用译码字段、在电路中增加译码器来减少位数,保持指令的长度不变。为了电路的简洁,建议使用第一种方法。

    无论使用以上哪种方法,微地址形成电路都需要修改,因此以前的电路最多只能生成4位的微地址,显然满足不了现在的需求。

    再比较指令的功能,此模型机比前面章节的模型机多了4条算术逻辑运算指令和2条访存指令,其中比较特殊的是相等则跳转指令,这是一条条件转移指令,只有满足比较结果相等的条件才执行跳转操作。为实现此功能,需要做的主要工作有:

    1. 增加一片D型触发器74LS175作为状态条件寄存器,用于保存74LS181的A=B输出引脚的值。
    2. 在微指令格式中增加一个判别测试位P(2)和一个标志影响位LDSC。LDSC位高电平有效,只有此位为1的微指令才会影响状态条件寄存器的值,此位为0的微指令运算结果不存入状态条件寄存器。
    3. 修改微地址形成电路,在电路中使用P(2)来进行判别测试,并根据状态条件寄存器的值形成正确的跳转地址。

    微程序控制器设计是此实验的难点,其他电路模块几乎不需要修改,在设计时请开动脑筋、查阅相关资料。

  5. 实验内容与步骤

    1. 模型机数据通路总体设计。根据指令集的功能要求设计模型机的数据通路,请将图1补充完整,标出各控制信号的名称。

数据通路总框图
2. 微程序控制器设计,请在下面画出微程序控制器详细电路图,并标出各种信号。
3. 微指令格式设计,请将微指令格式填入表11-2
微指令格式

  1. 微程序流程设计,请完成图11.2的微指令流程图
    微指令流程图

  2. 微程序代码设计,请将微程序代码填入表11-3
    微程序二进制代码表

  3. 指令设计,请将指令格式、操作码等填入表11-4
    机器指令表

  4. 程序设计,编写程序,求S=1+2+3+┈+N,0<N<20,N从数据开关输入,S存入存储器,填入表11-5
    内存中的程序与数据1
    内存中的程序与数据2

  5. 按照以上设计修改电路,修改RAM内容,修改微程序存储器内容,在模型机上运行程序,观察运行过程和结果,如果有错误,找到并改正错误,一直到正确为止。注意电路的初始化过程和输入地址、数据的时机。

实验

图1:
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
表11-2 微指令格式
表11-2 微指令格式

图11.2微指令流程图

图11.2微指令流程图
表11-3 微程序二进制代码表
表11-3 微程序二进制代码表
表11-4 机器指令表

序号指令符号指令二进制代码长度
1IN000000008bit
2ADD0001000016bit
3STA0010000016bit
4JMP0011000016bit
5SUB0100000016bit
6CMP0101000016bit
7INC011000008bit
8CLA011100008bit
9LDA1000000016bit
10BEQ1001000016bit

表11-5 内存中的程序与数据

内存地址内容含义
0000000000IN N
0100100000STA N
0200011011
0301110000CLA
0400100000STA S
0500011100
0600100000STA count
0700011101
1001100000INC
1100100000STA count
1200011101
1300010000ADD S
1400011100
1500100000STA S
1600011100
1710000000LDA count
2000011101
2101010000CMP N
2200011011
2310010000BEQ ->
2400010111
2500110000JMP -> 10
2600001000
2710000000LDA S
3000011100
3100110000JMP ->
3200011001
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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐