1. 微程序控制器基础概念
第一次接触微程序控制器时,很多人会被"微程序"这个词唬住。其实它的核心思想特别简单——把复杂的机器指令拆解成更小的"微指令"。就像做菜时把"红烧肉"分解成"切肉、焯水、炒糖色"等步骤一样。
我当年在实验室第一次用示波器观察时序信号时,发现TS1~TS4这四个信号就像交通信号灯,严格按照顺序轮流亮起。时钟信号SP就是那个控制红绿灯切换的计时器,而实验板上的三个开关(运行方式、运行控制、启动运行)就是交警手中的遥控器。
这里有个特别实用的技巧:当遇到实验现象不稳定时,记得检查时钟信号的频率和脉宽。就像我导师常说的:"时序信号不稳,就像跳舞踩错拍子,整个系统都会乱套。"
2. 时序信号发生电路详解
2.1 电路组成原理
时序电路的核心是那个启停控制触发器UN1B,它就像音乐播放器的暂停键。当"运行控制"开关置为"运行"时,系统就进入待命状态。这里有个容易踩坑的地方:很多同学会忽略触发器UN1B的清零端,导致系统无法正常启动。
我用双踪示波器实测过,当时钟频率设为1MHz时,每个TS信号的脉宽约250ns。但要注意,不同厂家的实验板可能参数不同,建议先用示波器确认实际波形。
2.2 单步与连续模式对比
单步模式就像手动挡汽车,每按一次"启动运行"开关就执行一条微指令。这个模式特别适合调试,我经常用它来观察:
- 微地址显示灯的变化(6位二进制)
- 微指令显示灯的状态(24位二进制)
连续模式则是自动挡,时序信号会循环产生。但有个重要细节:即使在连续运行时,如果把"运行方式"开关拨到"单步",系统会立即停机。这个特性在调试时非常有用。
3. 微程序控制电路实战
3.1 硬件组成分析
我们实验用的控制存储器是3片E2PROM 2816,这种芯片有个很酷的特性——掉电后数据不会丢失。记得第一次烧录微程序时,我担心断电会丢失数据,结果第二天开机发现程序还在,当时就觉得这技术太神奇了。
微命令寄存器由两片74LS273和一片74LS175组成,这里有个设计细节:18位的微命令寄存器为什么不用三片8D触发器?因为最后4位控制信号不需要那么高的驱动能力,用4D触发器更节省空间。
3.2 微指令格式设计
24位的微指令可以分成几个关键部分:
- UA5~UA0(6位):下一条微指令地址
- A、B、C字段:控制信号译码区
- P(1)~P(4):四个测试位
我画过一张对照表,把每个控制位对应的硬件操作都标注出来。比如B字段中的RSB信号,它控制着源寄存器的选通,就像水管工切换不同水源的阀门。
4. E2PROM编程实战技巧
4.1 微程序写入步骤
写微程序时最容易出错的是地址设置。我总结了个小口诀:"LK灯亮为1,灭为0,六位地址要记清"。具体操作时:
- 先用二进制开关设置微地址
- 再用24个开关设置微指令代码
- 按下启动按钮完成写入
特别注意:每次写入后最好立即验证。有次我连续写了十几条指令才发现第一条写错了,不得不全部重来。
4.2 读取验证方法
读微程序时,三态门U12的作用很关键。它就像个电子门卫,只在需要时才把微地址放行到显示灯。验证时要注意:
- 地址灯(LK0~LK5)应该与设置的地址一致
- 微指令灯(LMD1~LMD24)应该与写入的代码一致
如果发现不一致,可能是接触不良。我用酒精清洗过实验板接口后,错误率明显下降。
5. 系统运行与调试
5.1 单步运行技巧
单步运行时,"总清"开关的使用很重要。它就像电脑的重启键,能确保从000000地址开始执行。我习惯这样操作:
- 总清开关拨0→1→0
- 设置单步模式
- 逐条观察微指令
有个常见问题:有时按了启动键但系统没反应。这通常是时序信号没过来,检查时钟源和启停触发器就能解决。
5.2 连续运行观察
连续运行时,示波器是最好的朋友。我通常这样设置:
- 通道1接TS1信号
- 通道2接微地址最低位 这样能清晰看到每个机器周期内微指令的执行节奏。
记得有次实验,系统跑飞了,微地址显示灯乱跳。后来发现是测试位P(4)接错了,导致分支判断出错。这个经历让我深刻理解到:每个控制位都至关重要,就像乐团里每个乐器都要准音。
6. 典型问题解决方案
在多年指导实验的过程中,我总结了几个高频问题的解决方法:
微指令写入失败:检查编程开关是否在"写入"位置,E2PROM的写使能信号是否正常。
地址显示异常:测量三态门U12的使能端,确认在"读"状态时为有效电平。
时序信号不同步:用示波器检查时钟源到各芯片的走线,延迟差不应超过10ns。
分支判断错误:重点检查P(1)~P(4)测试位与条件判断逻辑的对应关系。
有次遇到个棘手问题:系统在连续运行时随机死机。最后发现是电源滤波不良,在E2PROM电源脚加了个0.1μF电容后就稳定了。这个案例告诉我,数字电路的问题有时要往模拟方向找原因。