一、实验目的
1.深入理解微程序控制器的工作原理;
2.掌握微程序的设计方法以及微程序的运行过程。
二、实验设备
EL-JY-II型计算机组成原理实验系统一套,排线若干。
三、实验内容
1.设计简单的微程序并利用Logisim软件模拟微程序的执行过程;
2.在EL-JY-II型实验仪上完成微程序设计实验。
四、实验步骤
1.微指令格式
与本次实验电路对应的微指令格式为:
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
S3 | S2 | S1 | S0 | M | Cn | WE | A | B | F1 | F2 | F3 | uA5 | uA4 | uA3 | uA2 | uA1 | uA0 |
F1、F2、F3三个字段的编码方案如下:
F1字段 | F2字段 | F3字段 | |||
14 13 12 | 选择 | 11 10 9 | 选择 | 8 7 6 | 选择 |
0 0 0 | 无操作 | 0 0 0 | 无操作 | 0 0 0 | 无操作 |
0 0 1 | LDRi | 0 0 1 | ALU-G | 0 0 1 | P1 |
0 1 0 | LOAD | 0 1 0 | Ri-G | 0 1 0 | P2 |
0 1 1 | LDRx | 0 1 1 | 未定义 | 0 1 1 | P3 |
1 0 0 | LDRy | 1 0 0 | 未定义 | 1 0 0 | P4 |
1 0 1 | LDAR | 1 0 1 | PC-G | 1 0 1 | LDPC |
1 1 0 | LDIR | 1 1 0 | 未定义 | 1 1 0 | 未定义 |
1 1 1 | 未定义 | 1 1 1 | 未定义 | 1 1 1 | 未定义 |
A与B字段的编码方案:
A | B | 选择 |
0 | 0 | 未定义 |
0 | 1 | IN-G |
1 | 0 | CE |
1 | 1 | OUT-G |
2.微程序运行模拟
(1)在Logisim中打开电路文件lab3-step2.circ中的子电路MCU;
(2)在该子电路中的微控制存储器中输入以下微程序代码
微地址 | S3S2S1S0MCn | WE A B | F1 F2 F3 | uA5-uA0 | 微指令(16进制) |
00 | 000000 | 000 | 000 000 000 | 000001 | 000001 |
01 | 000000 | 001 | 011 000 000 | 000010 | 00B002 |
02 | 000000 | 001 | 100 000 000 | 000011 | 00C003 |
03 | 100101 | 011 | 000 001 000 | 000000 | 958200 |
03 | 011000 | 011 | 000 001 000 | 000000 | 618200 |
该程序的基本功能是:首先从输入部件上读入2个数,然后对它们进行相加,最后将计算结果显示在输出部件上。
(3)该电路是一个微程序测试电路,可以测试控制存储器(电路文件lab3-lib.circ中的ROM)中存储的微程序是否能够正确工作,请分析该电路的数据通路,在单步模式(使用STEP按钮)下,完成两个数的相加,并记录操作过程。
操作流程 简述 | 实现Rx和Ry中两数相加 |
第1步 | 在开关UA5~UA0上置好要读的微地址 |
第2步 | 将STEP开关置为"STEP"状态,RUN置1 |
第3步 | 按动f/8,同时注意将数据存入Rx和Ry中 |
第4步 | 持续按f/8 |
最终结果 (截图) |
|
(4)参照第(2)步所给出的微程序代码,编写一个新的微程序,要求实现2个数的相减。
微地址 | S3S2S1S0MCn | WE A B | F1 F2 F3 | uA5-uA0 | 微指令(16进制) |
00 | 000000 | 000 | 000 000 000 | 000001 | 000001 |
01 | 000000 | 001 | 011 000 000 | 000010 | 00B002 |
02 | 000000 | 001 | 100 000 000 | 000011 | 00C003 |
03 | 011000 | 011 | 000 001 000 | 000000 | 618200 |
五、实验仪操作
参考EL-JY-II型实验仪配套的实验指导(实验五),在EL-JY-II型实验仪上完成微程序设计实验。
六、实验心得
通过这次的实验 ,让我对logism软件使用有了更深刻印象,并可以熟练运用其实现一些简单的功能,如通过导库文件利用其完成一些操作,在其中我也遇到了许多的问题,如导入库后不成功,但是通过问同学解决了,直接在缺少文件内导库即可,通过我对于实验箱上的实验对微程序的设计理解又加强了很多,并结合logism中的实验使我对其微程序的工作原理理解十分深刻。