实验(三):微程序计数器uPC实验

news2024/11/20 2:33:59

一、实验内容与目的

        实验要求:

        利用 CP226 实验仪上的 K16..K23 开关做为 DBUS 的数据,其它开关做为控制信号,实现微程序计数器 uPC 的写入和加1功能。

        实验目的:

1、了解模型机中微程序的基本概念。

2、了解 uPC 的结构、工作原理及其控制方法。

3、了解模型机中程序计数器PC 的工作原理及其控制方法。

4、了解程序执行过程中顺序和跳转指令的实现方法。

二、实验步骤

2.1 实验一:微程序计数器 uPC 实验

实验电路:

74HC161 是一片带预置的 4 位二进制记数器。功能如下:

当 RST = 0 时,记数器被清 0

当 IREN = 0 时,在CK 的上升沿,预置数据被打入记数器

当 IREN = 1 时,在CK 的上升沿,记数器加一

TC 为进位,当记数到 F(1111)时,TC=1;CEP,CET 为记数使能,当 CEP,CET=1 时,记数器工作,CEP,CET=0 时,记数器保持原记数值

图1 uPC 原理图

图2 uPC 工作波形图

在 CP226 中,指令 IBUS[7:0]的高六位被接到 uPC 预置的高六位,uPC 预置的低两位被置为 0。一条指令最多可有四条微指令。

微程序初始地址为复位地址 00,微程序入口地址由指令码产生,微程序下一地址有计数器产生。

连接线表:

连接信号孔接入孔作用状态说明
1J2 座J3 座将 K23-K16 接入 DBU[7:0]实验模式:手动
2IRENK0预置 uPC低电平有效
3EMENK1EM 存储器工作使能低电平有效
4EMWRK2EM 存储器写使能低电平有效
5EMRDK3EM 存储器读使能低电平有效
6CK已连uPC 工作脉冲上升沿打入

实验 1:uPC 加一实验

置控制信号为:

K3(EMRD)K2(EMWR)K1(EMEN)K0(IREN)
1111

按一次 STEP 脉冲键,CK 产生一个上升沿,数据 uPC 被加一。

实验 2:uPC 打入实验

二进制开关K23-K16 用于 DBUS[7:0]的数据输入,置数据 12H

K23K22K21K20K19K18K17K16
00010010

置控制信号为:

K3(EMRD)K2(EMWR)K1(EMEN)K0(IREN)
1000

当 EMWR,EMEN=0 时,数据总线(DBUS)上的数据被送到指令总线(IBUS)上。按住 STEP 脉冲键,CK 由高变低,这时寄存器 uPC 的黄色预置指示灯亮,表明 uPC被预置。放开STEP 键,CK 由低变高,产生一个上升沿,数据 10H 被写入 uPC 寄存器。

2.2 实验二:PC 实验

实验电路:

PC 是由两片 74HC161 构成的八位带预置记数器,预置数据来自数据总线。记数器的输出通过 74HC245(PCOE)送到地址总线。PC 值还可以通过 74HC245(PCOE_D)送回数据总线。

图3 PC 原理图

在 CPP226 中,PC+1 由PCOE 取反产生。

当 RST = 0 时,PC 记数器被清 0

当 LDPC = 0 时,在CK 的上升沿,预置数据被打入PC 记数器

当PC+1 = 1 时,在CK 的上升沿,PC 记数器加一

当PCOE = 0 时,PC 值送地址总线

图4 PC 打入控制原理图

PC 打入控制电路由一片 74HC151 八选一构成(isp1016 实现)。

ELPIR3IR2CyZLDPC
1XXXX1
0001X0
0000X1
001X10
001X01
01XXX0

当 ELP=1 时,LDPC=1,不允许PC 被预置

当 ELP=0 时,LDPC 由 IR3,IR2,Cy,Z 确定

当 IR3 IR2 = 1 X 时,LDPC=0,PC 被预置

当 IR3 IR2 = 0 0 时,LDPC=非 Cy,当 Cy=1 时,PC 被预置

当 IR3 IR2 = 0 1 时,LDPC=非 Z,当 Z=1 时,PC 被预置

连接线表

连接信号孔接入孔作用状态说明
1J2 座J3 座将 K23-K16 接入 DBU[7:0]实验模式:手动
2PCOEK5PC 输出到地址总线低电平有效
3JIR3K4预置选择 1
4JIR2K3预置选择 0
5JRZK2Z 标志输入
6JRCK1C 标志输入
7ELPK0预置允许低电平有效
8CK已连PC 工作脉冲上升沿打入

实验 1:PC 加一实验

置控制信号为:

K5(PCOE)K0(ELP)
01

按一次 STEP 脉冲键,CK 产生一个上升沿,数据PC 被加一。

实验 2:PC 打入实验

二进制开关K23-K16 用于 DBUS[7:0]的数据输入,置数据 12H

K23K22K21K20K19K18K17K16
00010010

置控制信号为:

IR3 (K4)IR2 (K3)JRZ (K2)JRC (K1)ELP (K0)LDPC黄色PC 预置指示灯
XXXX11
00X100
00X001
011X00
010X01
1XXX00

每置控制信号后,按一下STEP 键,观察PC 的变化。

三、实验过程分析

2.1 实验一:微程序计数器 uPC 实验

实验 1uPC 加一实验

图5 CK 产生一个上升沿,数据 uPC +1

实验 2uPC 打入实验

当 EMWR,EMEN=0 时,数据总线(DBUS)上的数据被送到指令总线(IBUS)上。按住 STEP 脉冲键,CK 由高变低,这时寄存器 uPC 的黄色预置指示灯亮,表明 uPC被预置。放开STEP 键,CK 由低变高,产生一个上升沿,数据 10H 被写入 uPC 寄存器。

图6 数据 10H 被写入 uPC 寄存器

2.2 实验二:PC 实验

实验 1uPC 加一实验

图7 CK 产生一个上升沿,数据PC 被+1

实验 2uPC 打入实验

图8 黄色PC 预置指示灯灭

图9 黄色PC 预置指示灯亮

图10 黄色PC 预置指示灯灭

图11 黄色PC 预置指示灯亮

图12黄色PC 预置指示灯灭

图13 黄色PC 预置指示灯亮

四、实验总结

本次实验通过使用CP226实验仪,旨在深入了解微程序计数器(uPC)和程序计数器(PC)的基本概念、工作原理及其控制方法,以及顺序和跳转指令在程序执行过程中的实现方法。通过实验,我们成功地实现了uPC的写入和加1功能,并使用开关模拟程序执行过程中的顺序和跳转指令。实验结果表明,我们的实验结果与理论分析基本相符,从而验证了微程序计数器和程序计数器的工作原理。

通过本次实验,我们深入理解了微程序计数器和程序计数器在计算机中的作用和使用方法,掌握了其基本结构和控制方法,加深了对顺序和跳转指令在程序执行过程中的实现方法的认识。实验过程中,我们遇到了某些困难和挑战,比如在实验过程中出现了一些bug,但是我们通过反复的实验和观察,最终成功地得到了正确的实验结果。

尽管本次实验取得了成功,但是我们也意识到实验中存在的局限性和不足之处。例如,实验过程中我们没有对微程序计数器和程序计数器的硬件实现进行深入的研究和探索,这可能导致我们的认识存在某些不足。此外,我们在实验过程中只使用了简单的微程序计数器和程序计数器进行实验,实际应用中的微程序计数器和程序计数器可能更加复杂。

总之,本次实验让我们更深入地了解了微程序计数器和程序计数器的基本原理和工作方式,增强了我们对计算机中指令执行的理解。在未来的学习和实践中,我们将继续探索更深入的计算机体系结构和编程相关的问题,不断提高自己的能力和水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1225706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 高等院校分析与推荐系统

1)项目简介 随着我国高等教育的大众化,高校毕业生就业碰到了前所未有的压力,高校学生就业问题开始进入相关研究者们的视野。在高校学生供给忽然急剧增加的同时,我国高校大学生的就业机制也在发生着深刻的变化,作为就业…

RT-Thread STM32F407 BMI088--SPI

BMI088是一款高性能6轴惯性传感器,由16位数字三轴24g加速度计和16位数字三轴2000/ s陀螺仪组成。 这里用SPI来驱动BMI088进行数据解读 第一步,首先在 RT-Thread Settings中进行配置 第二步,退出RT-Thread Settings,进入board.h…

未来科技中的云计算之路

随着科技的不断发展,云计算已经不再是一个陌生的词汇,而是我们日常生活中不可或缺的一部分。从智能家居到无人驾驶,再到虚拟现实和人工智能,云计算在这些领域都扮演着至关重要的角色。在这篇博客中,我们将一同探索云计…

SUID提权教程

SUID提权方法 一、SUID是什么?二、如何设置SUID权限?三、已知的具有SUID权限的二进制可执行文件四、查找具有root权限的SUID的文件1.find命令提权2.nmap命令提权3.more命令提权4.less命令提权5.bash命令提权6.vim命令提权7.awk命令提权8.cp命令提权 五、…

【如何学习Python自动化测试】—— 页面元素定位

接上篇自动化测试环境搭建,现在我们介绍 webdriver 对浏览器操作的 API。 2、 页面元素定位 通过自动化操作 web 页面,首先要解决的问题就是定位到要操作的对象,比如要模拟用户在页面上的输入框中输入一段字符串,那就必须得定位到…

UiPath Studio 2023.10 Crack

UiPath Studio是一款功能强大且用户友好的集成开发环境 (IDE),专为机器人流程自动化 (RPA) 设计。它由自动化技术领域的领先公司UiPath开发。 以下是 UiPath Studio 的一些主要功能和组件: 图形用户界面 (GUI):UiPath Studio 具有直观且用户友…

sqli-labs关卡18(基于http头部报错盲注)通关思路

文章目录 前言一、靶场通关需要了解的知识点1、什么是http请求头2、为什么http头部可以进行注入 二、靶场第十八关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做…

【数据预处理3】数据预处理 - 归一化和标准化

处理数据之前,通常会使用一些转换函数将「特征数据」转换成更适合「算法模型」的特征数据。这个过程,也叫数据预处理。 比如,我们在择偶时,有身高、体重、存款三个特征,身高是180、体重是180、存款是180000&#xff1…

算法 LeetCode 题解 | 最小栈

大家好,我是木川 一、题目描述 请你设计一个 最小栈 。它提供 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除…

【Proteus仿真】【STM32单片机】公交车报站系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用LCD12864显示模块、DS18B20温度传感器、DS1302时钟模块、按键、LED蜂鸣器、ULN2003、28BYJ48步进电机模块等。 主要功能: 系统运行…

vulhub redis-4-unacc

环境搭建 cd vulhub/redis/4-unacc docker-compose up -d 漏洞复现 检测 redis-cli -h ip 使用redis工具 工具地址:https://github.com/vulhub/redis-rogue-getshell 下载完成后,先进入RedisModulesSDK/exp/ 目录进行make操作 获得exp.so后可以进行…

Linux shell编程学习笔记26:stty(set tty)

之前我们探讨了Linux中的tty,tty命令的主要功能是显示当前使用的终端名称。 如果我们想进一步对tty进行设置,就要用到stty。 stty的功能:显示和修改终端特性(Print or change terminal characteristics)。 1 stty -…

【数据预处理2】数据预处理——数据标准化

数据标准化 1. 什么是标准化?   数据标准化是一个常用的数据预处理操作,目的是将不同规格的数据转换到统一规格或不同分布的数据转换到某个特定范围,以减少规模、特征、分布差异等对模型的影响。这种操作也叫作无量纲化。   除了用作模型…

【Dynamic-datasource】Springboot多数据源整合

引入依赖&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version> </dependency> 整体pom文件&#xff1a; <?xml versi…

SpringBoot 整合 Freemarker

通过 Freemarker 模版&#xff0c;我们可以将数据渲染成 HTML 网页、电子邮件、配置文件以及源代码等。 Freemarker 不是面向最终用户的&#xff0c;而是一个 Java 类库&#xff0c;我们可以将之作为一个普通的组件嵌入到我们的产品中。 Freemarker 模版后缀为 .ftl(FreeMarke…

【音视频基础】AVI文件格式

AVI文件采用的是RIFF文件结构方式。波形音频wave&#xff0c;MIDI和数字视频AVI都采用这种格式存储。 AVI文件的整体结构如下图所示 构造RIFF文件的基本单元叫做数据块&#xff08;Chunk&#xff09;&#xff0c;每个数据块包含3个部分 4字节的数据块标记&#xff08;或者叫…

2023-11-18 Android Linux资源限制命令 ulimit,比如ulimit -d 是设置进程占用的最大数据段大小,默认是unlimited。

一、通过ulimit -a 命令可以查看当前的各种资源限制&#xff0c;比如ulimit -d 是 进程占用的最大数据段大小。 # ulimit -a -t: time(cpu-seconds) unlimited -f: file(blocks) unlimited -c: coredump(blocks) 0 -d: data(KiB) unlimited -s:…

学习.NET验证模块FluentValidation的基本用法

开源博客项目Blog .NET中使用FluentValidation验证部分对象实例的属性值&#xff0c;本文学习FluentValidation模块的基本用法&#xff0c;后续再学习Blog .NET项目FluentValidation模块的用法。   FluentValidation模块支持Linq 表达式&#xff0c;同时支持链式操作&#xf…

【Linux】进程间通信 -- 共享内存

共享内存 共享内存是SystemV标准进程间通信的一种&#xff0c;该标准还有消息队列和信号量&#xff0c;但下文主要介绍共享内存&#xff0c;然后在谈一下信号量的内容。SystemV标准的进程间通信可以看做单机版的进程间通信。 // 1. log.hpp #pragma once#include <iostrea…

100张照片带你了解真实的日本人

欢迎关注「苏南下」 在这里分享我的旅行和影像创作心得 今年三个月内去了两次日本旅行&#xff0c;到了东京、横滨、大阪、京都、奈良、富士山、神户、富士山等城市&#xff0c;途中一共拍下了10000张照片。 最近整理照片的过程中&#xff0c;发现也拍了许多有意思的人像照&…