本实验来源于西工大网安学院计算机组成原理课程的第三次实验任务,具体内容为搭建电路实现一个程序跳转的微指令控制功能。电路图如下:

然而,搭建这个复杂的电路需要耗费大量的时间,即使你搭出了这个电路,你也不一定会用,所以今天我们来讲讲这个电路到底该如何使用可以完成实验任务。
以下是我搭的电路及相关文件(原电路链接已上传,如有问题请私信):
https://pan.baidu.com/s/1gr9cawUGuMwqNb2e1yzjcg?pwd=3131
提取码: 3131
本次实验我并没有实际操作,实验思路由@AttackingLin这位同学提供,他的博客里有一些关网络安全相关的内容,感兴趣的兄弟可以关注一下。
https://blog.youkuaiyun.com/2302_79542511?type=blog
正片开始:
和上个实验一样,将资源包中的help.asm文件放入电路中,编译后将Debug文件烧录进2764芯片PROGRAM中,具体方法详见上一篇文章:
https://blog.youkuaiyun.com/Xraymc/article/details/147091475?spm=1001.2014.3001.5501
准备工作结束后,接下来就可以开始做实验了。首先我们要了解一下左边五个奇奇怪怪的开关的作用:
指令的取指或执行过程都是指令或数据从一个部件打入总线BUS,再从总线BUS打入另一个部件的过程。为了保证上述操作先后次序,指令流(ROMIR)和数据流(ROMPC)都分为T1和T2两个周期,如下图所示:在T1周期,信息从源部件(例如程序存储器PROGRAM)打入总线BUS;在T2周期,信息从总线BUS打入目标部件(例如指令寄存器IR或者程序计数器PC)。

查看一下PROGRAM中的地址和数据,系统从0000H开始读,jump1的标志是00100000(20),jump2的标志是01000000(40),jump3的标志是01100000(60),左边的每一行对应右边00H~0BH每个地址:

开始仿真,可以观察到,初始阶段,电路输出数据20,进入jump1:

将LDAR置1,将LDIR和PC_INC置1再置0,使PC+1,然后切换T1/T2:

输出06,表明要输出地址为06H的数据,查一下上面的数据,地址为06H的数据为02。
切换T1/T2,关闭LDAR(置0),打开LDPC的非(置1),跳变PC_INC(0->1->0),使PC+1,LDAR置1,切换T1/T2,得到数据02:

切换T1/T2,将LDAR,LDPC的非置0,跳变LDIR(0->1->0),PC_INC(0->1->0)使PC加1;将LDAR置为1,切换T1/T2:

重复上述操作,进入jump2:

重复上述操作,进行下一步:

即将调转到第一个间接地址06H:
切换T1/T2,LDAR,LDPC的非置0,再打开LDPC的非(置1),跳变PC_INC(0->1->0),LDAR置1,切换T1/T2:

数据藏在地址02H中,重复上一步操作:

查一下上面的数据,地址为02H的数据为EA,实验正确。
以上就是本次实验的全部内容,请务必注意,以上涉及到实验过程的图片禁止搬运。最后再次感谢@AttackingLin同学对本次实验的贡献。
制作不易,如果我的文章有任何问题,欢迎指出,如果对你的学习和课业有帮助,请祝福我马原理考试顺利。好了,我要继续背马原理去了,下次见。

6421





