微程序控制器组与微程序设计实验报告

数学学院实验

成 绩: 报告

课程名称:计算机组成原理 实验项目名称:微程序控制器组成与微程序设计实验 一、实 验 目 的

(1) 掌握微程序控制器的组成原理。

(2) 掌握微程序的编制、写入,观察微程序的运行过程。 二、实验设备与器件

PC机一台,TD-CMA实验系统一套。 三、实 验 原 理

微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑 部件工作的微命令序列,完成数据传送和各种处理操作。它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数 字代码的形式表示,这种表示称为微指令。这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。微程序存储在一种专用的存储器中,称为 控制存储器,微程序控制器原理框图如图3-2-1所示。

指导老师(签名): 图3-2-1 微程序控制器组成原理框图

控制器是严格按照系统时序来工作的,因而时序控制对于控制器的设计是非常重要的,从前面的实验可以很清楚地了解时序电路的工作原理,本实验所用的时序由时序单元来提供,分为四拍TS1、TS2、TS3、TS4,时序单元的介绍见附录2。

微程序控制器的组成见图3-2-2,其中控制存储器采用3片2816的E2PROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(273)和一片4D(175)触发器 组成。微地址寄存器6位,用三片正沿触发的双D触发器(74)组成,它们带有清“0”端和预置端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容 即为下一条微指令地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”状态,完成地址修改。

图3-2-2 微程序控制器原理图

在实验平台中设有一组编程控制开关KK3、KK4、KK5(位于时序与操作台单元),可实现对存储 器(包括存储器和控制存储器)的三种操作:编程、校验、运行。考虑到对于存储器(包括存储器和控制存储器)的操作大多集中在一个地址连续的存储空间中,实 验平台提供了便利的手动操作方式。以向00H单元中写入332211为例,对于控制存储器进行编辑的具体操作步骤如下:首先将KK1拨至‘停止’档、 KK3拨至‘编程’档、KK4拨至‘控存’档、KK5拨至‘置数’档,由CON单元的SD05——SD00开关给出需要编辑的控存单元首地址 (000000),IN单元开关给出该控存单元数据的低8位(00010001),连续两次按动时序与操作台单元的开关ST(第一次按动后MC单元低8位 显示该单元以前存储的数据,第二次按动后显示当前改动的数据),此时MC单元的指示灯MA5——MA0显示当前地址(000000),M7——M0显示当 前数据(00010001)。然后将KK5拨至‘加1’档,IN单元开关给出该控存单元数据的中8位(00100010),连续两次按动开关ST,完成对 该控存单元中8位数据的修改,此时MC单元的指示灯MA5——MA0显示当前地址(000000),M15——M8显示当前数据(00100010);再 由IN单元开关给出该控存单元数据的高8位(00110011),连续两次按动开关ST,完成对该控存单元高8位数据的修改此时MC单元的指示灯MA5 ——MA0显示当前地址(000000),M23——M16显示当前数据(00110011)。此时被编辑的控存单元地址会自动加1(01H),由IN单 元开关依次给出该控存单元数据的低8位、中8位和高8位配合每次开关ST的两次按动,即可完成对后续单元的编辑。

编辑完成后需进行校验,以确保编辑的正确。以校验00H单元为例,对于控制存储器进行校验的具体操 作步骤如下:首先将KK1拨至‘停止’档、KK3拨至‘校验’档、KK4拨至‘控存’档、KK5拨至‘置数’档。由CON单元的SD05——SD00开关 给出需要校验的控存单元地址(000000),连续两次按动开关ST,

MC单元指示灯M7——M0显示该单元低8位数据(00010001);KK5拨至 ‘加1’档,再连续两次按动开关ST,MC单元指示灯M15——M8显示该单元中8位数据(00100010);再连续两次按动开关ST,MC单元指示灯 M23——M16显示该单元高8位数据(00110011)。再连续两次按动开关ST,地址加1,MC单元指示灯M7——M0显示01H单元低8位数据。 如校验的微指令出错,则返回输入操作,修改该单元的数据后再进行校验,直至确认输入的微代码全部准确无误为止,完成对微指令的输入。

位于实验平台MC单元左上角一列三个指示灯MC2、MC1、MC0用来指示当前操作的微程序字段, 分别对应M23——M16、M15——M8、M7——M0。实验平台提供了比较灵活的手动操作方式,比如在上述操作中在对地址置数后将开关KK4拨至‘减 1’档,则每次随着开关ST的两次拨动操作,字节数依次从高8位到低8位递减,减至低8位后,再按动两次开关ST,微地址会自动减一,继续对下一个单元的 操作。

微指令字长共24位,控制位顺序如表3-2-1:

表3-2-1 微指令格式

其中MA5…MA0为6位的后续微地址,A、B、C为三个译码字段,分别由三个控制位译码出多位。C字段中 的P<1>为测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现完成对指令的识别,并实现微程序 的分支,本系统上的指令译码原理如图3-2-3所示,图中I7…I2为指令寄存器的第7…2位输出,SE5…SE0为微控器单元微地址锁存器的强置端输出,指令译码逻辑在IR单元的INS_DEC(GAL20V8)中实现。

从图3-2-2中也可以看出,微控器产生的控制信号比表3-2-1中的要多,这是因为实验的不同,所需的控制信号也不一样,本实验只用了部分的控制信号。

本实验除了用到指令寄存器(IR)和通用寄存器R0外,还要用到IN和OUT单元,从微控器出来的 信号中只有IOM、WR和RD三个信号,所以对这两个单元的读写信号还应先经过译码,其译码原理如图3-2-4所示。IR单元的原理图如图3-2-5所 示,R0单元原理如图3-2-7所示,IN单元的原理图见图2-1-3所示,OUT单元的原理图见图3-2-6所示。

图3-2-3 指令译码原理图

图3-2-4 读写控制逻辑 图3-2-5 IR单元原理图 图3-2-6 OUT单元原理图 图3-2-7 R0原理图

本实验安排了四条机器指令,分别为ADD(0000 0000)、IN(0010 0000)、OUT(0011 0000)和HLT(0101 0000),括号中为各指令的二进制代码,指令格式如下:

实验中机器指令由CON单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,见图3-2-8所示。

几条机器指令对应的参考微程序流程图如图3-2-9所示。图中一个矩形方框表示一条微指令,方框中的内容为该指令执行的微操作,右上角的数字是该条指令的微地址,右下角的数字是该条指令的后续微地址,所有微地址均用16进制表示。向下的箭头指出了下一条要执行的指令。P<1>为测试字,根据条件使微程序产生分支。

图3-2-8 数据通路图 图3-2-9 微程序流程图

将全部微程序按微指令格式变成二进制微代码,可得到表3-2-2的二进制代码表。

表3-2-2 二进制微代码表

地址 十六进制 高五位 S3-S0 00 00 00 01 00000 0000 A字段 B字段 C 字段 MA5-MA0 000 000 000 000001 01 04 05 30 32 33 35 00 70 70 00 24 05 04 B2 01 00 14 04 18 30 01 28 04 01 00 00 35 00000 00000 00000 00000 00011 00101 00000 0000 0000 1001 0000 0000 0000 0000 111 010 011 001 011 000 000 000 010 001 010 000 010 000 001 000 000 000 000 000 000 110000 000101 000001 000100 000001 000001 110101 四、实 验 内 容 与 步 骤

1. 按图3-2-10所示连接实验线路,仔细查线无误后接通电源。如果有‘滴’报警声,说明总线有竞争现象,应关闭电源,检查接线,直到错误排除。

图3-2-10 实验接线图

2. 对微控器进行读写操作,分两种情况:手动读写和联机读写。 1) 手动读写

(1) 手动对微控器进行编程(写)

① 将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘控存’档,KK5置为‘置数’档。

② 使用CON单元的SD05——SD00给出微地址,IN单元给出低8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的低8位。

③ 将时序与操作台单元的开关KK5置为‘加1’档。

④ IN单元给出中8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的中8位。IN单元给出高8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的高8位。

⑤ 重复①、②、③、④四步,将表3-2-2的微代码写入2816芯片中。 (2) 手动对微控器进行校验(读)

① 将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘控存’档,KK5置为‘置数’档。

② 使用CON单元的SD05——SD00给出微地址,连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯 M7——M0显示该单元的低8位。

③ 将时序与操作台单元的开关KK5置为‘加1’档。

④ 连续两次按动时序与操作台的开关ST,MC单元的指数据指示灯 M15——M8显示该单元的中8位,MC单元的指数据指示灯 M23——M16显示该单元的高8位。

⑤ 重复①、②、③、④四步,完成对微代码的校验。如果校验出微代码写入错误,重新写入、校验,直至确认微指令的输入无误为止。

2) 联机读写

(1) 将微程序写入文件

联机软件提供了微程序下载功能,以代替手动读写微控器,但微程序得以指定的格式写入到以TXT为后缀的文件中,微程序的格式如下:

如$M 1F 112233,表示微指令的地址为1FH,微指令值为11H(高)、22H(中)、33H(低),本次实验的微程序如下,其中分号‘;’为注释符,分号后面的内容在下载时将被忽略掉。

(2) 写入微程序

用联机软件的“【转储】—【装载】”功能将该格式(*.TXT)文件装载入实验系统。装入过程中,在软件的输出区的‘结果’栏会显示装载信息,如当前正在装载的是机器指令还是微指令,还剩多少条指令等。

(3) 校验微程序

选择联机软件的“【转储】—【刷新指令区】”可以读出下位机所有的机器指令和微指令,并在指令区显示。检查微控器相应地址单元的数据是否和表3-2-2中的十六进制数据相同,如果不同,则说明写入操作失败,应重新写入,可以通过联机软件单独修改某个单元的微指令,先用鼠标左键单击指令区的‘微存’TAB按

钮,然后再单击需修改单元的数据,此时该单元变为编辑框,输入6位数据并回车,编辑框消失,并以红色显示写入的数据。

; LTD 运行微程序

运行时也分两种情况:本机运行和联机运行。 1) 本机运行

① 将时序与操作台单元的开关KK1、KK3置为‘运行’档,按动CON单元的CLR按钮,将微地址寄存器(MAR)清零,同时也将指令寄存器(IR)、ALU单元的暂存器A和暂存器B清零。

② 将时序与操作台单元的开关KK2置为‘单拍’档,然后按动ST按钮,体会系统在T1、 T2、T3、T4节拍中各做的工作。T2节拍微控器将后续微地址(下条执行的微指令的地址)打入微地址寄存器,当前微指令打入微指令寄存器,并产生执行部件相应的控制信号;T3、T4节拍根据T2节拍产生的控制信号做出相应的执行动作,如果测试位有效,还要根据机器指令及当前微地址寄存器中的内容进行译码,使微程序转入相应的微地址入口,实现微程序的分支。

③ 按动CON单元的CLR按钮,清微地址寄存器(MAR)等,并将时序与单元的开关KK2置为‘单步’档。 ④ 置IN单元数据为00100011,按动ST按钮,当MC单元后续微地址显示为000001时,在CON单元的SD27…SD20模拟给出IN指令00100000并继续单步执行,当MC单元后续微地址显示为000001时,说明当前指令已执行完;在CON单元的SD27…SD20给出ADD指令00000000,该指令将会在下个T3被打入指令寄存器(IR),它将R0中的数据和其自身相加后送R0;接下来在CON单元的SD27…SD20给出OUT指令00110000并继续单步执行,在MC单元后续微地址显示为000001时,观查OUT单元的显示值是否为01000110。

2) 联机运行

联机运行时,进入软件界面,在菜单上选择【实验】-【微控器实验】,打开本实验的数据通路图,也可以通过工具栏上的下拉框打开数据通路图,数据通路图如图3-2-8所示。

将时序与操作台单元的开关KK1、KK3置为‘运行’档,按动CON单元的总清开关后,按动软件中单节拍按钮,当后续微地址(通路图中的MAR)为000001时,置CON单元SD27…SD20,产生相应的机器指令,该指令将会在下个T3被打入指令寄存器(IR),在后面的节拍中将执行这条机器指令。仔细观察每条机器指令的执行过程,体会后续微地址被强置转换的过程,这是计算机识别和执行指令的根基。也可以打开微程序流程图,跟踪显示每条机器指令的执行过程。

按本机运行的顺序给出数据和指令,观查最后的运算结果是否正确。 五、实 验 结 果 及 分 析

给一个20指令,存入数据00000111,单周期调试,按4下;指令00,将刚输入的两个数据相加,再存入R0中;指令30,将R0输出;指令50,停止运行。

上面截图显示的是将输入的数据赋值给R0的操作,这里要记得将OUT单元的输入门关上,不然就会显示出很神奇的画面。

将R0的值赋A,将R0的值赋给B,进行算数逻辑运算A+B,将结果赋给R0: 这是停机指令的操作,由此也可得出, 01010000就是停机指令 六、实 验 总 结

这个实验开始的时候就觉得还好,因为接线已经难不倒我了,但是在实验操作过程中,有点困难了,主要是对原理没有很清楚,不过经过请教别人的后,实验完成的还算顺利。这个微命令的实验操作起来还是感觉挺神奇的,特别是逻辑运算的那边。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4