计算机组成原理实验(6) 微程序控制单元实验
实验六 微程序控制单元实验
一、实验目的
1、熟悉微程序控制器的原理
2、掌握微程序编制、写入并观察运行状态
二、实验要求
按照实验步骤完成实验项目,掌握设置微地址、微指令输出的方法
三、实验说明
3.1 微程序控制单元的构成:(如图3-1)
8位微地址寄存器由2片74LS161组成;3片6264(3*8位)为微程序存储器;24位微指令锁存器由3片74LS374组成。

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.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。
输入过程结果图片如下:



实验一:微地址打入操作
● 按启停单元中的停止按键,使实验平台处于停机状态,此时微地址寄存器被清零。
● 按启停单元中的运行按键,使实验平台处于运行状态。此时微程序存储器为读状态,微地址寄存器(74LS161)确定了当前微程序存储器的地址,并且输出24位微操作(M0~M23)。
● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿,把当前微程序存储器输出的微指令打入微指令锁存器。可在右上的微指令指示灯显示出当前微指令,应为11H,11H,11H。
● 置MLD=0,微代码的地址MD0~MD7(对应二进制开关H0~H7)为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单元的内容输出。
实验显示结果图片如下:

● 按脉冲单元中的PLS2脉冲按键,在MOCK上产生一个上升沿的脉冲,把当前微指令打入微指令锁存器,在右板上的微指令指示灯应显示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。
实验显示结果图片如下:



五、实验总结
● 实验原理
本实验聚焦于微程序控制单元(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`)满足实验要求。
整体来看,实验中每一步的设置和结果都符合预期,表明微程序控制单元的设计和工作机制能够有效实现。
● 个人感悟
本实验使我对微程序控制单元及其在计算机体系结构中所扮演的角色有了更深入的理解。微程序作为机器指令的底层实现方式,展示了计算机在执行复杂任务时的灵活性和模块化设计。在实际操作中,我体会到了理论与实践结合的重要性,不仅加深了对微程序控制的理解,也锻炼了我在电子电路搭建和调试方面的技能。
通过观察不同开关、脉冲信号对微程序控制单元状态的影响,我感受到在设计出好的硬件系统时如何需要周全的控制信号设计和精确的时序控制。此外,实验中的每个操作、每个细节都让我明白了严密的工程思维的重要性。
相关文章:
计算机组成原理实验(6) 微程序控制单元实验
实验六 微程序控制单元实验 一、实验目的 1、熟悉微程序控制器的原理 2、掌握微程序编制、写入并观察运行状态 二、实验要求 按照实验步骤完成实验项目,掌握设置微地址、微指令输出的方法 三、实验说明 3.1 微程序控制单元的构成:(…...
从文本到向量:揭秘词向量转换的奥秘与实践
从文本到向量:揭秘词向量转换的奥秘与实践 在自然语言处理(NLP)的世界里,计算机处理的是数字和向量,而人类交流使用的是文本语言。如何让计算机理解文本语义并进行分析处理呢?词向量转换便是其中的关键一环…...
在 Windows 中安装 Pynini 的记录
#工作记录 概述 Pynini 是一个用于加权有限状态文法编译的 Python 库,广泛应用于自然语言处理(NLP)领域。以下记录旨在用于回顾和帮助大家在 Windows 系统中安装 Pynini。 安装思路: 优先用conda虚拟环境 或 在python3.12的vir…...
美丽天天秒链动2+1源码(新零售商城搭建)
什么是链动21模式? 链动21主要是建立团队模式,同时快速提升销量。是目前成员中速度最快的裂变模式。链动21模式合理合规,同时激励用户 公司的利润分享机制,让您在享受购物折扣的同时,也能促进并获得客观收益。 链动21模…...
目标检测中的损失函数(三) | SIoU WIoUv1 WIoUv2 WIoUv3
🚀该系列将会持续整理和更新BBR相关的问题,如有错误和不足恳请大家指正,欢迎讨论!!! SCYLLA-IoU(SIoU)来自挂在2022年arxiv上的文章:《SIoU Loss: More Powerful Learnin…...
51、【OS】【Nuttx】【OSTest】参数解析:参数处理过程
背景 接上两篇 blog: 49、【OS】【Nuttx】【OSTest】参数解析:测试项 50、【OS】【Nuttx】【OSTest】参数解析:函数定义 getopt_common 来看 getopt_common 的实现过程 首先校验输入参数是否为空,如果没有输入参数࿰…...
python实现基于Windows系统计算器程序
Python实现Windows系统计算器程序(含高级功能) 下面我将介绍如何使用Python创建一个功能完整的Windows风格计算器程序,包含基本运算和高级数学功能。 1. 使用Tkinter实现基础计算器 import tkinter as tk from tkinter import ttk import …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(14):かもしれません (~た・~ない)ほうがいいです
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(14):かもしれません &(~た・~ない)ほうがいいです 1、前言(1)情况说明(2)工程师…...
AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架
在AI驱动的时代,系统设计已经从单一PCB的视角,逐步转向以整个rack为单位来考量。 对于信号完整性而言,焦点以不再局限于单一PCB上的损耗,而是扩展到芯片与芯片之间的端到端互连损耗(end-to-end interconnect loss&…...
React useCallback函数
应用场景:父组件向子组件传递函数类型的props时...
【CTFer成长之路】XSS的魔力
XSS闯关 level1 访问url: http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss,所以对传参进行测试,修改?username1,进行访问 会发现username参数传入什么,welcome之后就…...
多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0
MRAG1.0 MRAG1.0是MRAG框架的初始阶段,通常被称为“伪MRAG”。它是对RAG范式的简单扩展,支持多模态数据。MRAG1.0通过利用现有的基于文本的检索和生成机制,实现了从RAG到MRAG的平稳过渡。 MRAG1.0的架构包括三个关键组件: 文档解…...
超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局
饿了么由守转攻。 作者|景行 编辑|杨舟 淘宝饿了么,终于落子,“淘宝闪购”,横空出世,仅仅2天,业务加速。 4月30日上午,当外卖战场陷入沉寂时,淘宝宣布将即时零售业务“小时达”升级为“淘宝闪…...
Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战
背景: PCIe Passthrough 技术允许虚拟机直接访问物理GPU设备,绕过宿主机系统,从而获得接近原生性能的图形处理能力. 参照:从Proxmox VE开始:安装与配置指南。在R740服务器完成了proxmox的安装,并且安装了一…...
算法技巧——打表
什么是打表? 打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的…...
JavaScript基础-逻辑运算符
在JavaScript编程中,逻辑运算符用于判断表达式的真假,并根据结果执行特定的操作。掌握逻辑运算符是理解条件控制结构的关键之一。本文将详细介绍JavaScript中的三种主要逻辑运算符:&&(逻辑与)、||(…...
P20:Inception v3算法实战与解析
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用InceptionV3实现天气识别 一、模型结构 Inception v3是Google团队在2015年提出的第三代Inception模型,属于卷积神经网络(CNN&…...
C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)
一、创建与初始化 引入 <list> 并使用 std 命名空间 #include <list>using namespace std;创建一个空 list list<int> my_list;创建一个包含 5 个元素,每个元素初始化为 0 的 list list<int> my_list(5);创建一个包含 5 个元素…...
deepseek 技巧整理
1、导出word 和excel 功能,在使用以下提示词。 请帮我列出减肥期间可以吃的水果,并分析该水果含有的营养元素,以表格的形式星现。1.要以html的方式输出 2.要可以直接运行 3.页面要提供可以直接下载word和excel功能...
柔性PZT压电薄膜多维力传感器在微创手术机器人的应用
随着医疗技术的迅速发展,微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比,微创手术创伤小、恢复快、感染率低,对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件,对提…...
Java学习手册:Spring Boot 自动配置与快速开发
一、Spring Boot 自动配置概述 Spring Boot 的自动配置是其核心特性之一,它能够根据项目的依赖和配置自动地进行 Spring 应用程序的配置。自动配置的工作流程如下: SpringBootApplication 注解 :这是自动配置的起点,它是一个组合…...
ValueError: expected sequence of length 8 at dim 2 (got 0)
问题描述 在PyCharm中使用强化学习运行Python代码时报错ValueError: expected sequence of length 8 at dim 2 (got 0)。 问题原因 实际上原因就是gym中的env对象的reset、step等方法的返回值作了改动 解决方法 1、第一步: 将代码块中的(记得改的需…...
AI赋能新媒体运营:效率提升与能力突破实战指南
AI赋能新媒体运营:效率提升与能力突破实战指南 在信息爆炸的新媒体时代,运营人员面临着内容产出压力大、数据分析复杂、用户互动需求高等多重挑战。AI技术的迅猛发展为新媒体运营带来了革命性的变革可能。本文将为您揭示如何利用AI工具提升工作效率、培…...
单词规律(简单)
思路和同构字符串那道题一样。、但是这道题要注意的地方就是,检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较,而不能用“!”,“!”比较的是对象引用而非内容。 class Soluti…...
QGraphicsView QGraphicsScene QGraphicsItem 的关系
在Qt的图形视图框架中,QGraphicsView、QGraphicsScene和QGraphicsItem 三者协同工作,构成一个分层的结构,用于高效管理和显示复杂的图形界面。以下是它们的关系和职责的详细说明: 1. 核心角色 类名职责类比QGraphicsItem场景中的…...
re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration
BUUCTF在线评测 jadx打开if条件就是flag...
c++环境和vscode常用的一些有用插件
环境 WSL需要安装cmake 编译器g14 应该是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件时候自动执行vscode 的cmake吧 error lens 方便每次显示错误和警告的提示懒得每次点击去看错误 Edit Sugge…...
UE自动索敌插件Target System Component
https://www.fab.com/zh-cn/listings/9088334d-3bde-4e10-a937-baeb780f880f 一个完全用 C 编写的 UE插件,添加了对简单相机锁定/瞄准系统的支持。它最初在蓝图中开发和测试,然后转换并重写为 C 模块和插件。 特征: 可通过一组可在…...
从括号匹配看栈:数据结构入门的实战与原理
在计算机科学的世界里,数据结构是程序员的 “瑞士军刀”,不同的数据结构适用于不同的场景,能高效解决各类问题。其中,栈作为一种简单却强大的数据结构,在很多实际应用中发挥着关键作用。今天,我们就通过一个…...
ReLU函数及其Python实现
ReLU函数及其Python实现 文章目录 ReLU函数及其Python实现1. ReLU函数定义2. Python实现3. 在深度学习中的应用总结 1. ReLU函数定义 ReLU(Rectified Linear Unit,修正线性单元)函数是深度学习中常用的激活函数之一。它的定义非常简单&#…...
Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]
Rain World 雨世界 [DLC 解锁] [Steam & Epic] [Windows & SteamOS] 需要有游戏正版基础本体,安装路径不能带有中文,或其它非常规拉丁字符; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章,具体最新版本见下载文件说明…...
n8n 工作流画布上下左右移动的操作方法
n8n 工作流画布上下左右移动的操作方法 1. n8n 工作流画布上下移动2. n8n 工作流画布左右移动3. n8n 工作流画布扩大和缩小4. n8n 工作流画布缩放到适合 1. n8n 工作流画布上下移动 鼠标滚轮向上滚动是向上移动鼠标滚轮向下滚动是向下移动 2. n8n 工作流画布左右移动 按照Shi…...
Linux 常用命令合集
一、用户权限管理 切换管理员身份 sudo su:普通用户临时获取 root 权限,需输入当前用户密码。管理员提示符:root主机名:路径#。退出管理员:exit,返回普通用户状态。 以管理员身份执行命令 sudo 命令 参数:…...
B站Michale_ee——ESP32_IDF SDK——FreeRTOS_7 流数据缓冲区、消息缓冲区
一、Stream Buffer流数据缓冲区 流数据缓冲区用来处理像音频之类的流数据; 1.API简介 (1)创建流数据缓冲区 (2)向流数据缓冲区中发送数据 (3)从流数据缓冲区中接收数据 2.示例代码及运行结果…...
HCL(HashiCorp Configuration Language)是一种结构化配置语言
HCL(HashiCorp Configuration Language)是一种结构化配置语言,语法简洁且可读性强,广泛用于 Docker Buildx Bake、Terraform、Nomad 等工具的配置。以下是其核心语法规则和示例: 1. 基础结构 HCL 使用 块(…...
k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)
k9s 是一个基于终端的 Kubernetes 集群管理工具(TUI),通过快捷键和交互式命令快速操作资源。以下是其核心用法和常见场景: 1. 基本命令 启动 k9s k9s # 默认连接当前 kubeconfig 配置的集群k9s -n <namespace> # 指定命…...
高等数学-第七版-下册 选做记录 习题10-1
1. 4. 5....
DBeaver连接人大金仓数据库V9
1、官网下载驱动jdbc 打开官网地址,找到下面的V9R1-JDBC,点击后面的下载即可,保存到本地 2、解压最新版的驱动程序 3、把***_JDBC文件夹内的驱动程序复制到DBeaver安装目录下的plugins文件夹里 4、打开dbeaver程序,增加kingbase…...
跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?!
跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?! 文章目录 一、事务的基本操作1. 开启事务2. 执行事务内操作3. 提交事务4. 回滚事务 二、验证示例(适用于 MySQL 5.7)步骤 1:准备测试表和数据步骤 2:…...
【KWDB 创作者计划】利用KWDB解决工业物联网场景中的海量数据管理难题的思考
利用KWDB解决工业物联网场景中的海量数据管理难题 一、什么是KWDB?二、工业物联网场景中的数据管理痛点2.1 数据量大且增长迅速2.2 数据多样性2.3 实时性需求2.4 数据分析复杂性 三、KWDB 的技术优势与架构解读3.1 时间序列数据的高效管理3.2 高吞吐写入性能3.3 灵活…...
分享国产AI工作流集成数据库完成业务处理
在现代企业应用中,业务流程的自动化和数据管理是提高效率的关键。Taskflow 作为一个强大的任务流管理工具,可以通过集成数据库实现复杂业务逻辑的处理。本文将分享如何利用 Taskflow 集成数据库,优化业务流程,并展示一个实际案例。…...
【每日八股】复习 Redis Day5:集群(上)
文章目录 复习昨日内容缓存雪崩、击穿、穿透的问题描述及解决方案如何保证数据库和缓存的一致性普通方案进阶方案 如何保证缓存删除一定成功?针对业务一致性要求高的场景,如何确保缓存与数据库的一致性?如何避免缓存失效?如何实现…...
linux进程的复制和替换
Linux 进程的复制与替换 一、主函数参数 在 C 语言里,main 函数能够接收参数,其标准形式如下: int main(int argc, char* argv[], char* envp[]);argc:代表命令行参数的数量,为整数类型。argv:是一个字符…...
【质量管理】现代TRIZ问题识别中的功能分析——相互接触分析
在文章【质量管理】现代TRIZ中问题识别中的功能分析——组件分析-CSDN博客中我们知道了如何对产品进行组件分析,那么组件分析出来有什么作用呢?组件分析就是为了接下来相互接触分析使用的。 什么是相互接触 相互接触分析是功能分析的一部分,…...
一种快速计算OTA PSRR的方法(Ⅱ)
1.仿真验证 1.1仿真设置 1.1.1 Test-bench原理 1.1.2 管子参数设置 为了公平地比较性能,设置所有OTA 的输入晶体管M1和M2为相同的gm和偏置电流1uA。 具体晶体管宽长比设置参见5.参考资料中的论文2。 1.2仿真验证 1.2.1 CM OTA 1)小信号参数 M1 M…...
【C++】通过红黑树封装map和set
前言: 通过之前的学习,我们已经学会了红黑树和map、set。这次我们要实现自己的map和set,对,使用红黑树进行封装! 当然,红黑树内容这里就不在赘述,我们会复用红黑树的代码,所以先将…...
【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream
目录 0.前言 1.FileInputStream 1.1 概述 1.2 构造方法 1.3 成员方法 1.4 FileInputStream读取文件案例演示 2.FileOutputStream 2.1 概述 2.2 构造方法 2.3 成员方法 2.4 写入文本文件案例演示 3.FileInputStream FileOutputStream拷贝文件 0.前言 本文讲解的是…...
信息收集新利器:SSearch Chrome 插件来了
SSearch 下载地址 SSearch 😣用途 每次谷歌语法搜索时还得自己写,我想省事一点,弄了一个插件,先加了几个常用的语法,点击后会跳转到对应搜索页面,也可以直接在搜索框微调 后续也会加些其他语法 &#…...
【AI面试准备】AI误判案例知识库优化方案
面试题:建立内部知识库:收集AI误判案例训练领域专属模型。 在回答关于“建立内部知识库收集AI误判案例训练领域专属模型”的面试问题时,建议从以下结构化框架展开,既能体现专业性,又能展现解决问题的系统性和实际落地…...
从零开始讲DDR(8)——AXI 接口MIG 使用(1)
一、前言 在之前的系列文章中,我们已经讨论过了MIG ip的接口内容,配置方式和modelsim独立仿真相关的内容,因此,本文对于之前已经讨论过的相关内容只做简单描述,着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴…...