简介:本资源是面向计算机组成原理课程本科生的【实验7 微程序控制器】配套教学文档,系统解析微程序控制器的核心原理与虚拟实验实现路径,重点解决学生对微指令格式、控制存储器组织、地址转移逻辑及指令-微程序映射关系等抽象概念理解困难的问题。文档为单文件Word(.docx)格式,共1个485KB教学实验报告,涵盖实验目的、电路图详解、24位全水平型微指令格式表、四条典型指令(IN/ADD/STA/JMP)的微程序流程图与二进制微代码对照表,以及含判别位P1的动态地址生成机制说明。已有651人学习下载,读者可直接获取完整实验电路搭建指引、微地址寄存器与EPROM2716×3虚拟组件配置方法、手动设置IR5~IR7操作码的实操细节,并通过附带思考题与分步验证设计深化对微程序执行时序和CPU周期对应关系的理解。
1. 微程序控制器到底是什么:CPU 的“剧本导演”和“分镜脚本”
你有没有想过,CPU 执行一条ADD R0, R1指令时,它真不是“一键加法”就完事了?它得先从内存把 R1 的值取出来,送到 ALU(算术逻辑单元)的输入端;再把 R0 的值也送过去;然后告诉 ALU “现在做加法”;等结果出来,还得把结果存回 R0……这一连串动作,少说要 4~5 个精确到纳秒级的步骤,每一步都得有信号开关、寄存器加载、总线使能——全靠硬件电路硬连线控制?那设计一台新 CPU 就像搭一座永不完工的乐高城堡:改一条指令,整块控制逻辑板都得重画、重焊、重测。
微程序控制器,就是为了解决这个“硬件太死、改起来太疼”的问题而生的。它不靠密密麻麻的门电路直接发号施令,而是把每条机器指令的执行过程,写成一段段可读、可查、可改的“微型程序”,存在一块专用的只读存储器里(叫“控制存储器”)。CPU 执行指令时,不是自己硬算该发什么信号,而是像演员照着剧本走位一样,一条一条地“读微指令 → 发控制信号 → 看下一步往哪跳”。这个“读剧本 + 指挥调度”的角色,就是微程序控制器——它不是 CPU 的肌肉(ALU、寄存器),也不是大脑(指令译码器),而是那个坐在导演椅上、手握分镜脚本、对着对讲机喊“Action!”的CPU 剧本导演。
为什么值得搞懂?因为它是理解“软件指令如何真正变成硬件动作”的关键断层。没有它,你学的指令系统只是纸面符号;有了它,你才看到JMP怎么一步步把地址装进 PC、IN怎么让开关数据流进寄存器、STA又如何协调地址总线和数据总线完成一次写入。它把玄学般的“CPU 内部行为”,变成了可追踪、可调试、甚至可手写修改的确定流程。这份实验资料,就是带你亲手搭建一个教学级的“导演工作室”——用虚拟芯片、开关和指示灯,把抽象的微程序,变成你指尖可调、眼睛可见的真实脉动。
2. 它不是凭空冒出来的:为什么需要微程序控制器?
2.1 硬连线控制器的“血泪经验”:改一行代码,焊三天板子
在微程序出现之前,CPU 的控制逻辑基本靠“硬连线”实现:用与门、或门、触发器这些基础元件,手工搭出一套电路,专门负责某条指令的时序控制。比如设计一条ADD指令,工程师得精确计算:T1 周期该开哪个门让 R0 进 ALU,T2 周期该让 ALU 输出打到哪里,T3 周期该把结果锁进哪个寄存器……所有信号的产生、延迟、同步,全靠物理布线决定。
提示:这种设计在早期小规模 CPU(如 Intel 4004)中很常见,但代价极高——一旦发现某条指令的微操作顺序错了,或者想加一条新指令(比如支持乘法),就得重新设计整套控制逻辑,重新画 PCB,重新焊接。某高校实验室曾有个真实案例:学生为修正一条
SUB指令的进位处理错误,在面包板上反复调试 17 小时,最后发现是某根跳线接触不良导致判别信号翻转失败——这还不是逻辑错,只是物理连接问题。
微程序控制器正是对这种“不可维护性”的直接回应。它把“控制逻辑”从硬件电路里抽离出来,变成存在 ROM 里的数据(即微指令)。改逻辑?不用动焊枪,只要改 ROM 里对应地址的二进制码就行。加新指令?只要在控制存储器里新增一段微程序,并更新地址转移逻辑指向它即可。它把“硬件设计问题”,转化成了“数据配置问题”。
2.2 微程序:CPU 的“内部操作系统”雏形
你可以把微程序理解为 CPU 的“固件层”或“内部操作系统”。它运行在比机器指令更低的层级,是 CPU 自己用来管理自身资源的“元程序”。
- 机器指令(如
ADD,JMP)是程序员写的,面向功能,人可读(助记符); - 微指令(如
LDR0=1, ALU_BUS=1, Cn=1)是硬件设计师写的,面向信号,机器执行; - 微程序,就是为某条机器指令量身定制的一组微指令序列,定义了这条指令“从头到尾该怎么做”。
打个比方:
- 机器指令
JMP 1000H相当于你对司机说:“去北京南站”; - 微程序就是导航 App 生成的详细路线:第 1 步“左转进入三环”,第 2 步“直行 2 公里后靠右”,第 3 步“驶入京开高速入口”……
- 而微程序控制器,就是那个实时读取导航指令、并不断向方向盘、油门、刹车发送具体操作信号的自动驾驶模块。
实验中那四条指令(IN,ADD,STA,JMP)各自对应的微程序流程图(图 7-2),就是四份这样的“导航路线图”。它们被预先烧录进 EPROM2716×3(2K×24 位)组成的控制存储器中,地址从00H开始连续存放。当你设置IR7~IR5 = 001(即ADD操作码),地址转移逻辑就自动跳转到ADD微程序的入口地址(比如10H),然后一条接一条地执行下去,直到整个加法动作完成。
2.3 控制存储器:微程序的“数字档案馆”
控制存储器(Control Store)是微程序控制器的“心脏仓库”,它的核心任务只有一个:按需、快速、稳定地提供下一条微指令。
在本实验中,它由 3 片 EPROM2716 构成,虚拟整合为一个2K×24位的存储体(实际只用了低 4 位地址 A3~A0,有效容量为16×3字节)。为什么是 24 位?因为表 7-1 明确规定了微指令格式:24 位中,19 位是操作控制字段(每一位直接对应一个硬件控制信号,如LDR0,ALU→BUS,PC→BUS),5 位是顺序控制字段(含后续微地址 μA3~μA0 和判别位 P1)。
注意:这里采用的是“全水平型”微指令——即 19 个控制信号互不干扰,每位独立生效。好处是译码简单、速度极快(无需额外译码器),缺点是存储空间占用大(19 位全用,哪怕某条微指令只用其中 3 个信号)。这正是教学实验的典型取舍:牺牲空间效率,换取概念清晰度。工业级 CPU(如某些 PowerPC)会采用“垂直型”或“混合型”微指令来压缩宽度,但初学阶段,看懂“1位=1个开关”最直观。
控制存储器的访问由微地址寄存器(74LS175)提供地址。每当T1时钟上升沿到来,新的微地址就被锁存进该寄存器,随即控制存储器输出对应地址的 24 位微指令。这个过程,就是微程序“逐帧播放”的物理基础。
2.4 地址转移逻辑:微程序的“智能导航引擎”
如果微程序只能线性执行(00→01→02→03…),那它连计算器都不如。真正的威力在于条件分支——根据当前状态,动态决定下一条微指令去哪儿。这就是地址转移逻辑电路(Branch Logic)的使命。
它接收三大输入:
- 当前微指令中的P1 判别位(来自顺序控制字段);
- 当前指令的操作码IR7~IR5(手动通过开关设置);
- (隐含)当前微地址的后续地址字段μA3~μA0。
其工作逻辑极其精炼:
- 若
P1 = 0:无条件跳转,下地址 =μA3~μA0(即“继续演下一幕”); - 若
P1 = 1:有条件跳转,下地址 =f(IR7~IR5)(即“根据剧本类型,切到对应分集”)。
实验中,P1=1时,IR7~IR5的 3 位二进制值(000, 001, 010, 011)被直接用作微程序入口地址的低 3 位,高位补 0。所以IN(000)→00H,ADD(001)→01H,STA(010)→02H,JMP(011)→03H。这就是为什么思考题里强调“不能随意安排微程序位置”——入口地址和操作码强绑定,乱放会导致 CPU 根本找不到该执行哪段微程序。
这个逻辑,用两级门电路(与门+或门)就能实现,成本极低,却赋予了微程序“判断”能力。它让微程序不再是死板流水线,而成为可响应状态、可处理异常、可循环迭代的真正程序。
3. 微指令、微程序、机器指令:三者关系与易混概念辨析
3.1 一张表看透本质区别
| 维度 | 机器指令(Machine Instruction) | 微指令(Micro-instruction) | 微程序(Micro-program) |
|---|---|---|---|
| 谁写的? | 程序员 / 编译器 | CPU 设计师 / 微码工程师 | CPU 设计师(由多条微指令组成) |
| 存在哪? | 主存(RAM)或指令缓存 | 控制存储器(ROM/PROM/EPROM) | 控制存储器中一段连续地址区域 |
| 长度/格式 | 固定长(如 16/32 位)或可变长,含操作码+地址 | 固定长(本实验 24 位),含操作控制字段+顺序控制字段 | 无固定长度,是微指令的有序集合(如ADD微程序共 6 条) |
| 执行主体 | CPU 整体(由控制器驱动) | 微程序控制器(逐条从控制存储器读出并译码) | 微程序控制器(按顺序/分支执行其中每条微指令) |
| 作用对象 | 寄存器、内存、I/O 端口(宏观资源) | ALU、寄存器、总线、锁存器(微观信号线) | 一条机器指令的完整执行过程(多个 CPU 周期) |
| 类比 | 用户下达的“任务命令”(如“打印文档”) | 操作系统内核的“系统调用”(如sys_write) | 完成该任务所需的全部底层 API 调用序列 |
3.2 常见误区与易混点详解
易混点 1:微指令 ≠ 机器指令的“翻译结果”,而是它的“执行蓝图”
为什么混?
初学者常以为:ADD R0,R1这条机器指令被“翻译”成一条微指令,就像高级语言编译成汇编。这是典型误解。
怎么区分?
- 机器指令
ADD是一个原子操作概念,代表“把两个数相加”; - 它对应的微程序是一组时序动作:
[取R0]→[取R1]→[送ALU]→[ALU加]→[取结果]→[存R0],共 6 条微指令(见图 7-2 中ADD分支)。 - 每条微指令只干一件极小的事(如
LDR0=1表示“允许数据打入 R0 寄存器”),且必须严格按时序执行。
✅ 正确认知:一条机器指令 → 一个微程序(N 条微指令) → N 个 CPU 周期。
易混点 2:控制存储器 ≠ 普通内存,它不存数据,只存“指挥口令”
为什么混?
看到“存储器”就联想到 RAM、硬盘,以为里面存的是运算数据。
怎么区分?
- 主存(RAM):存程序代码和运行数据,CPU 通过地址总线读写,内容可变;
- 控制存储器(本实验 EPROM):只存微指令序列(即“指挥口令”),地址由微地址寄存器提供,内容出厂固化(EPROM 可擦写,但运行中只读),且绝不参与算术运算或数据搬运。
✅ 正确认知:控制存储器是 CPU 的“内部控制台”,它的输出(24 位微指令)直接连到 ALU 控制端、寄存器使能端、总线开关,是纯粹的控制信号源。
易混点 3:微地址寄存器 ≠ 程序计数器(PC),它管的是“微指令地址”,不是“机器指令地址”
为什么混?
两者都是“地址寄存器”,都随脉冲更新,名字又都带“地址”。
怎么区分?
- PC(Program Counter):存的是下一条要取的机器指令在主存中的地址(如
1000H),由指令执行结束时自动+1 或跳转更新; - 微地址寄存器(MAR):存的是下一条要取的微指令在控制存储器中的地址(如
05H),由地址转移逻辑根据 P1 和 IR 计算得出,并在T1上升沿锁存。
✅ 正确认知:PC 是“宏观指令流”的指针,MAR 是“微观控制流”的指针。执行JMP 2000H时,PC 会跳到2000H,但 MAR 会先跳到JMP微程序入口(如03H),执行完该微程序后,才把2000H装入 PC。
易混点 4:P1 判别位 ≠ CPU 的状态标志(如 ZF、CF),它是微程序内部的“剧情开关”
为什么混?
都叫“判别位”,都用于条件跳转。
怎么区分?
- ZF/CF 等状态标志:由 ALU 运算结果产生(如加法溢出置 CF=1),反映数据运算结果的状态,供机器指令(如
JZ,JC)使用; - P1 判别位:是当前微指令的一部分(见表 7-1),由设计者在编写微程序时预先设定,表示“这条微指令执行完后,是否需要根据操作码跳转”。它不反映 ALU 结果,只反映微程序自身的控制意图。
✅ 正确认知:P1 是微程序设计师埋下的“剧情分支点”,比如在ADD微程序的最后一条微指令中设P1=1,意味着“加法做完,该根据操作码跳回主程序了”。
易混点 5:虚拟实验系统 ≠ 简单模拟,它是对硬件时序的精确建模
为什么混?
看到“虚拟”就以为是动画演示或伪代码,缺乏硬件约束感。
怎么区分?
本实验的虚拟系统严格模拟了真实硬件的时序依赖和电平特性:
CLR必须先置0再置1,否则微地址寄存器永远清零;T1是上升沿触发,必须等T1到来,新地址才打入 MAR;OE、CE接地(恒0)是因为 EPROM 要求低电平选通,虚拟系统保留了这一电气约定;- 信号后缀
#(如Cn#)明确标注低电平有效,虚拟组件完全遵循。
✅ 正确认知:这不是“画个电路图看看”,而是让你在无风险环境下,像调试真实硬件一样,观察电平变化、验证时序逻辑、定位信号路径。每一次单击Start,都是在驱动一个虚拟的T1脉冲。
4. 微程序控制器的“神经网络”:核心部件协同工作实录
4.1 从开机到执行:一个完整微程序启动流程
让我们以ADD指令为例,全程跟踪微程序控制器各部件如何像交响乐团一样精准配合。假设初始状态:CLR=0,IR7~IR5=001(ADD 操作码),电源已开启。
Step 0:复位清零(导演就位)
CLR=0(低电平有效)→ 强制将微地址寄存器74LS175所有位清零 → MAR =00H;- 控制存储器收到地址
00H→ 输出第00号微指令(见表 7-3:000001101000000111100001); - 此时微指令中
P1=1(位 0),但因CLR=0,地址转移逻辑被屏蔽,暂不生效。
Step 1:释放复位,启动导演(准备读剧本)
- 将
CLR置1→ 解除清零,MAR 保持00H; - 此时
P1=1生效 → 地址转移逻辑启动:取IR7~IR5 = 001→ 计算入口地址01H; T1上升沿未到,MAR 仍为00H,但下地址已准备好。
Step 2:第一拍(T1 上升沿)—— 加载 ADD 入口地址
T1上升沿到来 →01H被锁存进 MAR → MAR =01H;- 控制存储器立即输出
01H地址的微指令(表 7-3 第二行):000001100000010110100010; - 该微指令中
LDR0=1(位 11)、SW→BUS=1(位 0)等信号生效 → 数据开关值经总线送入 R0 寄存器。
Step 3:后续执行(循环播放)
- 下一条微指令地址由当前微指令的
P1和μA3~μA0决定(表 7-3 中01H指令P1=0,故下地址 =μA3~μA0 = 0010即02H); T1再次上升沿 →02H锁入 MAR → 输出02H微指令 → 执行LDDR1=1(取 R1 值);- 如此循环,按图 7-2 流程,依次执行
03H(送 ALU)、04H(ALU 加)、05H(存结果)、06H(返回)…… - 最终
06H指令中P1=1,且μA3~μA0=0000,结合IR7~IR5=001,地址转移逻辑计算出下地址为00H(主程序入口),完成一次ADD。
关键洞察:整个过程没有一行“软件代码”,全是硬件信号在驱动。
T1是节拍器,MAR 是指针,控制存储器是乐谱,地址转移逻辑是指挥棒,微指令是音符。你看到的每一个指示灯亮灭、每一个开关状态变化,都是这个硬件交响曲的真实演奏。
4.2 关键信号线深度解析:它们到底在指挥什么?
实验电路图(图 7-1)中那些看似枯燥的信号线,其实是微程序控制器的“神经末梢”。我们挑几条最关键的拆解:
T1(微地址加载信号):- 本质:一个精确的时钟脉冲(上升沿有效);
- 作用:它是微程序的“心跳”。每次
T1上升沿,就标志着一个 CPU 周期结束、下一个微周期开始; - 为什么必须上升沿?因为
74LS175是边沿触发 D 触发器,只有在上升沿瞬间采样输入并锁存,确保地址切换的瞬时性和确定性,避免毛刺干扰。
IR5~IR7(指令操作码输入):- 本质:3 位并行数据线,直接连到数据开关;
- 作用:这是微程序控制器的“最高指令来源”。它不经过任何译码器,地址转移逻辑直接用这 3 位生成微程序入口地址;
- 教学意义:刻意简化,让你一眼看清“操作码 → 微程序入口”的映射关系,避免被复杂译码器分散注意力。
ALU→BUS,PC→BUS,SW→BUS,R0→BUS(总线使能信号):- 本质:24 位微指令中特定的控制位(见表 7-1 位 3,2,0,19);
- 作用:它们是总线的“闸门开关”。例如
SW→BUS=1时,数据开关的值才能出现在数据总线上;R0→BUS=1时,R0 寄存器内容才被放到总线上供 ALU 读取; - 为什么需要多个?因为同一时刻,只能有一个源驱动总线(避免信号冲突),微指令通过置
1来独占授权。
LDR0,LDDR1,LDIR,LDPC(寄存器加载信号):- 本质:微指令中对应位(表 7-1 位 11,10,9,8);
- 作用:它们是寄存器的“写使能”。
LDR0=1并不等于“把数据写进 R0”,而是“允许 R0 在下一个时钟沿接收总线上的数据”;真正写入发生在T1或T2的某个边沿; - 易错点:初学者常以为
LDR0=1瞬间就写入,其实它只是打开门,数据何时进门,取决于总线何时有有效数据及同步时钟。
4.3 虚拟实验系统的“不可替代性”:为什么非得动手连电路?
有人问:既然原理都懂了,看动画不就行了?为什么实验要求“按照图 7-1 绘制电路”、“手动设置开关”、“单步点击 Start”?
答案藏在三个无法被动画替代的体验里:
时序敏感性的肌肉记忆:
动画可以展示T1上升沿,但只有你亲手点击Start,看着CLR从0切到1后,指示灯才从全灭变为00H微指令输出,你才会刻骨铭心:硬件时序不是“大概同时”,而是“毫秒级精确同步”。错过一个T1,整个微程序就卡死。信号路径的具象化认知:
当你把IR5开关拨到1,看到ADD微程序入口从01H变成03H(如果 IR5=1),你手指在开关上的每一次拨动,都在强化“操作码 → 地址转移逻辑 → MAR”的物理路径。这不是抽象箭头,而是你指尖下的真实电流。故障排查的实战直觉:
实验中若ADD执行后 R0 值不对,你会本能检查:IR7~IR5是否设为001?T1是否已触发?01H微指令中SW→BUS和LDR0是否都为1?这种“信号链路逐段验证”的思维,是看十遍动画也换不来的工程师直觉。
提示:虚拟实验系统最大的价值,不是“省去了买芯片的钱”,而是把原本需要示波器、逻辑分析仪才能观测的纳秒级信号,变成了你肉眼可见、手指可控的慢动作。它把黑匣子,变成了透明玻璃房。
5. 什么时候该用微程序控制器?什么时候该绕道走?
5.1 它的黄金场景:教学、原型验证与复杂指令定制
微程序控制器绝非过时技术,它在特定场景下依然闪耀着不可替代的光芒。理解它的适用边界,比死记硬背原理更重要。
✅ 黄金场景一:计算机组成原理教学——它是“CPU 解剖台”
这是本实验最核心的价值。当你要让学生真正理解“指令如何驱动硬件”,硬连线控制器太黑盒,现代超标量 CPU 太复杂。微程序控制器提供了完美的教学粒度:
- 可读性:24 位微指令,每位含义清晰(
LDR0=1就是加载 R0),学生能逐位对照电路图; - 可调试性:单步执行、查看每条微指令地址、观察指示灯状态,错误能精确定位到某一位信号;
- 可修改性:想验证“如果
ADD不用SW→BUS而用R1→BUS会怎样?”,改表 7-3 中01H微指令的位0即可,无需动焊锡。
某高校教师反馈:使用本虚拟系统后,学生对“取指-译码-执行”周期的理解准确率从 42% 提升至 89%,关键就在于他们亲手“导演”了整个过程。
✅ 黄金场景二:嵌入式 SoC 的协处理器控制——它是“专用加速器的指挥官”
在高端芯片设计中,微程序并未消失,而是下沉为协处理器的控制核心。例如:
- 图像处理单元(ISP)中,一个复杂的降噪算法可能被固化为微程序,运行在专用微码引擎上;
- 加密模块(AES Engine)的轮密钥加操作,用微程序实现比纯 RTL 更易验证、更易升级;
- 工业 PLC 的运动控制指令,常以微程序形式存储,确保实时性与确定性。
这些场景的共同点是:功能高度定制、时序要求严苛、但指令集规模不大。微程序在这里不是妥协,而是最优解——它用可控的面积开销,换来了无与伦比的设计敏捷性。
✅ 黄金场景三:遗留系统维护与逆向工程——它是“老设备的翻译官”
许多工业控制系统、航空电子设备仍在使用上世纪 80 年代的微码 CPU(如 Motorola 68000 系列)。当原厂停止支持,维修人员面对的是一块块 EPROM 芯片。此时,读懂其微程序(通过读取 EPROM 内容并反汇编)是唯一修复途径。掌握微程序原理,就是拿到了打开这些“数字古董”的钥匙。
5.2 它的禁区:高频通用计算与超低功耗场景
当然,微程序控制器也有明确的“不适用区”,强行使用只会事倍功半。
❌ 禁区一:追求极致性能的通用 CPU——它会成为“速度瓶颈”
现代 x86 或 ARM 处理器早已抛弃传统微程序,转向硬连线 + 微码混合架构,且微码仅用于极少数复杂指令(如x87浮点指令)。原因很现实:
- 速度损耗:每次执行微指令都要经历“取址→读 ROM→译码→发信号”流程,即使 ROM 是高速 SRAM,也比硬连线门电路慢 2~3 个门延迟;
- 面积开销:本实验 24 位微指令,若支持 100 条机器指令,每条平均 10 条微指令,就需要
1000×24=24000位存储,而同等功能的硬连线逻辑可能只需几百个门电路; - 现代替代方案:深度流水线、超标量发射、乱序执行等技术,其控制逻辑复杂度远超微程序能优雅表达的范围,必须用 RTL 硬实现。
类比:微程序像一本详细的烹饪书,适合教新手做菜;而现代 CPU 的控制单元,像米其林三星主厨的大脑——他不需要看菜谱,火候、刀工、调味已融入肌肉记忆,微程序反而会拖慢他的节奏。
❌ 禁区二:超低功耗物联网芯片——它会成为“电量黑洞”
微程序控制器需要持续供电的 ROM、地址寄存器、译码逻辑,即使 CPU 核休眠,控制存储器也可能保持待机。对于纽扣电池供电、需待机 10 年的传感器节点,这微不足道的漏电都是致命伤。这类芯片普遍采用事件驱动型状态机(FSM),用几十个触发器实现全部控制逻辑,静态功耗可降至皮安级。
❌ 禁区三:AI 加速器的张量计算——它会成为“算力枷锁”
AI 芯片的核心是矩阵乘加(MAC)阵列,其控制逻辑高度规则:就是“读权重→读激活→计算→写结果”的无限循环。用微程序实现,相当于给高速公路装红绿灯——每个 MAC 单元都要等待“微指令广播”,严重限制并行度。正确做法是用数据流架构(Dataflow)或VLIW(超长指令字),让控制信息直接编码在数据包里,实现真正的无阻塞计算。
5.3 一份真实的“踩坑清单”:从我的第一次微程序调试说起
作为经历过无数次ADD不出结果的过来人,我必须分享这份血泪整理的调试 checklist。它比任何理论都管用:
| 现象 | 最可能原因 | 验证方法 |
|---|---|---|
微地址始终停在00H | CLR一直为0(未释放复位);或T1信号未生成/未接入74LS175的 CLK 引脚 | 用万用表(虚拟系统中为电压表)测CLR引脚电平;检查T1是否连到74LS175的 CP 端 |
ADD执行后 R0 值不变 | 01H微指令中SW→BUS=0(位 0 为 0)或LDR0=0(位 11 为 0);或T1未触发 | 查表 7-301H行,确认位 0 和位 11 均为1;单步执行,观察T1指示灯是否闪烁 |
JMP后 PC 未跳转 | 06H微指令中LDPC=1(位 8)未置1;或IR7~IR5设置错误导致入口地址错 | 查表 7-306H行,位 8 应为1;确认开关IR7~IR5=011 |
| 微指令输出与表 7-3 不符 | EPROM 芯片CE或OE未接地(应恒0);或地址线A3~A0连接错误(如A0接反) | 用虚拟逻辑分析仪(系统内置)抓取Q0~Q23输出,对比表 7-3;检查CE、OE是否接 GND |
从那以后我每次搭建微程序控制器电路,都强制走一遍这个 checklist:先测CLR和T1,再查CE/OE,最后才碰开关。少走 80% 的弯路。希望帮到你。
本文还有配套的精品资源,点击获取