当前位置: 首页 > ai >正文

计算机组成原理实验(6) 微程序控制单元实验

实验六 微程序控制单元实验 

一、实验目的

1、熟悉微程序控制器的原理

2、掌握微程序编制、写入并观察运行状态

二、实验要求 

按照实验步骤完成实验项目,掌握设置微地址、微指令输出的方法

三、实验说明

3.1  微程序控制单元的构成:(如图3-1)

8位微地址寄存器由2片74LS161组成;3片6264(3*8位)为微程序存储器;24位微指令锁存器由3片74LS374组成。

图 3-1

3.2  微程序控制单元原理:(如图3-2)

1、由于本系统中指令系统规模不大、功能较简单,微指令可以采用全水平、不编码的方式,每一个微操作控制信号由1位微代码来表示,24位微代码至少可表示24个不同的微操作控制信号。如要实现更多复杂的操作可通过增加一些译码电路来实现。

2、增量方式来控制微代码的运行顺序,每一条指令的微程序连续存放在微指令存储器连续的单元中。

3、每一指令的微程序的入口地址是通过对指令操作码的编码来形成的。在本系统内指令码最长为8位,那么最多可形成256条指令。

4、在微程序存储器的0单元存放取指指令,在启动时微地址寄存器清零,执行取指指令。每一段微程序都以取指指令结束,以取得下一条指令。在本系统内,MLD为置微地址的控制信号,MCK为工作脉冲。当MLD=0、MCK有上升沿时,把MD0~MD7的值作为微程序的地址,打入微地址寄存器。当MLD=1、MCK有上升沿时,微地址计数器自动加1。

图 3-2

3.3  控制信号说明:

信号名称

作  用

有效电平

MCK

微程序工作脉冲

上升沿用效

MOCK

微程序存储器输出工作脉冲

低电平有效

MLD

微地址控制信号

低电平有效

MD0—MD7

微地址选择开关

四、实验步骤:

● 将MD0~MD7、MLD接入二进制的开关上,将MCK、MOCK分别接入脉冲单元上的PLS1、PLS2上。(请按下表接线)。

信号定义

接入开关位号

MCK

PLS1   

MOCK

PLS2   

MD0

H0     

MD1

H1     

MD2

H2     

MD3

H3     

MD4

H4     

MD5

H5     

MD6

H6     

MD7

H7     

MLD

H23   

接线图示:

● 按启停单元中的停止按键,使实验平台处于停机状态。通过键盘把数据写入微程序存储器中,例如微地址0H中输入11H、11H、11H三个字节、在05H中输入55H、55H、55H三个字节、在06H中输入66H、66H、66H。

输入过程结果图片如下:

微地址0H中输入11H、11H、11H
微地址05H中输入55H、55H、55H
微地址06H中输入66H、66H、66H

实验一:微地址打入操作

● 按启停单元中的停止按键,使实验平台处于停机状态,此时微地址寄存器被清零。

● 按启停单元中的运行按键,使实验平台处于运行状态。此时微程序存储器为读状态,微地址寄存器(74LS161)确定了当前微程序存储器的地址,并且输出24位微操作(M0~M23)。

● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,把当前微程序存储器输出的微指令打入微指令锁存器。可在右上的微指令指示灯显示出当前微指令,应为11H,11H,11H。

● 置MLD=0,微代码的地址MD0~MD7(对应二进制开关H0~H7)为05H (对应开关如下表)。

实验显示结果图片如下:

微指令显示灯为11H,置MLD=0,微代码的地址MD0~MD7置为05H

H7

H6

H5

H4

H3

H2

H1

H0

H23

MD7

MD6

MD5

MD4

MD3

MD2

MD1

MD0

MLD

0

0

0

0

0

1

0

1

0

● 按脉冲单元中的PLS1脉冲按键,在MCK上产生一个上升沿,把MD0~MD7打入74LS161,微地址显示灯MA0~MA7将显示05H,微程序存储器把05H单元的内容输出

实验显示结果图片如下:

微地址显示灯MA0~MA7将显示05H

● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿的脉冲,把当前微指令打入微指令锁存器,在右板上的微指令指示灯应显示55H,55H,55H

实验显示结果图片如下:

右板上的微指令指示灯应显示55H,55H,55H

注意:微代码由3片74LS374作为微指令锁存器,它的OE端已经接地,只要MOCK端上有上升沿,即可锁存并输出微代码。

实验二:微地址+1操作

● 置MLD=1。

● 按启停单元中的运行按键,使实验平台处于运行状态。

● 按脉冲单元中的PLS1脉冲按键,在MCK上产生一个上升沿,微地址寄存器自动加1。若原来微地址寄存器的值为05H,那么当前的微地址显示灯MA0~MA7将显示06H,同时微程序存储器输出06H单元中的内容。

● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,将微程序存储器的输出的微指令,打入微指令锁存器并输出,在CPT-B板上的微指令指示灯应显示66H,66H,66H。

实验显示结果图片如下:

置MLD=1
微地址显示灯MA0~MA7显示06H
微指令指示灯显示66H,66H,66H

五、实验总结

 实验原理

本实验聚焦于微程序控制单元(Microprogrammed Control Unit, MCU)的基本原理与实现,通过微程序进行指令控制,以便实现计算机不同操作的执行。微程序控制单元是现代计算机中用于指令解析和控制信号生成的重要组成部分。以下是微程序控制单元的关键构造与功能:

1. 微程序控制单元的组成:

   - 微地址寄存器(MAR):由两个74LS161计数器组成,用于存储当前要执行的微指令地址。

   - 微程序存储器:由三片6264 SRAM组成,负责存放微程序的指令。

   - 微指令锁存器:由三片74LS374锁存器组成,用于存储从微程序存储器中读取的微指令,这里微指令用24位代码表示。

2. 微程序控制原理:

   - 微程序采用全水平、不编码的方式,简单明了。每个微操作控制信号由1位微代码表示,24位微指令能够表示至少24种不同的控制信号。

   - 微程序通过增量地址的方式自动执行,指令的一段连续存储在微程序存储器中。

   - 微指令的入口地址通过指令的操作码编码生成。最高支持256条不同的指令(8位操作码)。

   - 取指令(Fetch)操作的微程序存于存储器的0单元,系统启动时清零微地址寄存器,以便开始执行取指令。控制信号MLD用于选择微地址,而MCK则作为执行脉冲,控制微程序的正式执行。

3. 控制信号功能:

   - `MCK`:微程序工作脉冲,活跃在上升沿。

   - `MOCK`:微程序存储器输出工作脉冲,低电平有效。

   - `MLD`:微地址控制信号,低电平有效,决定是否写入新的微地址。

   - `MD0 - MD7`:微地址的选择开关,各自对应二进制的位,设置微地址寄存器指向的存储单元。

 实验结果分析

在本实验过程中,通过设定微地址、加载微指令并观察控制单元的工作状态,我们完成了以下几个关键操作:

1. 微地址及微程序的写入:

   - 微地址0H中成功输入数据`11H`(三次),在05H中输入数据`55H`,在06H中输入数据`66H`。通过键盘输入确保数据按照设计计划存入微程序存储器中。

2. 操作验证:

   - 进行了微地址打入操作,微程序存储器的输出被准确地锁存并显示在微指令指示灯上。通过监控输出,可以观察到在微指令指示灯上显示的值符合写入要求(`11H`、`55H`、`66H`)。

3. 微地址自增操作:

   - 通过将MLD设置为1,执行微地址的自动加1操作。运行状态下,微地址寄存器成功自增,从05H变为06H,且微程序存储器输出相应的微指令(显示`66H`)满足实验要求。

整体来看,实验中每一步的设置和结果都符合预期,表明微程序控制单元的设计和工作机制能够有效实现。

 个人感悟

        本实验使我对微程序控制单元及其在计算机体系结构中所扮演的角色有了更深入的理解。微程序作为机器指令的底层实现方式,展示了计算机在执行复杂任务时的灵活性和模块化设计。在实际操作中,我体会到了理论与实践结合的重要性,不仅加深了对微程序控制的理解,也锻炼了我在电子电路搭建和调试方面的技能。

        通过观察不同开关、脉冲信号对微程序控制单元状态的影响,我感受到在设计出好的硬件系统时如何需要周全的控制信号设计和精确的时序控制。此外,实验中的每个操作、每个细节都让我明白了严密的工程思维的重要性。

http://www.xdnf.cn/news/3437.html

相关文章:

  • 大模型开发学习笔记
  • 提示词版本化管理:AI开发中被忽视的关键环节
  • 【Linux】基础指令(2)
  • 冯·诺依曼体系:现代计算机的底层逻辑与百年传承
  • C++ 与 Lua 联合编程
  • Python-pandas-操作Excel文件(读取数据/写入数据)及Excel表格列名操作详细分享
  • 单链表操作(single list)
  • Python高级爬虫之JS逆向+安卓逆向1.7节: 面向对象
  • NY204美光闪存MT29F8T08EQLCHL5-QA:C
  • python设置word字体的方法
  • GBDT 基本概述
  • JVM——JVM 是如何执行方法调用的?
  • 华为云Astro轻应用利用自定义连接器调用第三方接口实际操作
  • 【家政平台开发(98)】解锁家政平台新姿势:业务模式创新与多元化发展
  • C++11新特性_标准库_std::array
  • 软连接和硬连接【Linux操作系统】
  • Spring Boot中集成Guava Cache或者Caffeine
  • 接口测试实战指南:从入门到精通的质量保障之道
  • 【安装指南】Centos7 在 Docker 上安装 RabbitMQ4.0.x
  • 芯片中的pad、strap和probe
  • C++11新特性_委托构造函数
  • 《Android 应用开发基础教程》——第十一章:Android 中的图片加载与缓存(Glide 使用详解)
  • 铸铁划线平板:多行业的精密测量工具(北重铸铁平板厂家)
  • golang常用库之-标准库text/template
  • C++负载均衡远程调用学习之消息队列与线程池
  • 【前端知识】Vue3状态组件Pinia详细介绍
  • 同城跑腿小程序帮取帮送接单抢单预约取件智能派单同城配送全开源运营版源码优创
  • Python实例题:Python获取小说数据并分析
  • 计算方法实验四 解线性方程组的间接方法
  • 使用 n8n 创建一个定时获取“RSS新闻“的工作流