2013/12/614:09:08
实验三 微程序控制器
3.1 实验目的
(1) 掌握微程序控制器的组成原理。
(2) 掌握微程序的编制、写入,观察微程序的运行过程。
3.2 实验学时
2学时
3.3 实验原理
微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作。它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。微程序存储在一种专用的存储器中,称为控制存储器,微程序控制器原理框图如图3-1所示。
指令寄存器IROP状态条件...地址译码控制存储器微地址寄存器地址转移逻辑微命令信号P字段控制字段图3-1 微程序控制器组成原理框图
控制器是严格按照系统时序来工作的,因而时序控制对于控制器的设计是非常重要的,从前面的实验可以很清楚地了解时序电路的工作原理,本实验所用的时序由时序单元来提供,分为四拍TS1、TS2、TS3、TS4,时序单元的介绍见附录2。
2
微程序控制器的组成见图3-2,其中控制存储器采用3片2816的EPROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(273)和一片4D(175)触发器组成。微地址寄存器6位,用三片正沿触发的双D触发器(74)组成,它们带有清“0”端和预置端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。当T4时刻进行测试判别时,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”状态,完成地址修改。
第1页,共9页。
...
M23ALU_BRS_BRD_BRI_BSP_BPC_BY1MA5...MA074LS245GY6Y1INTAWRRDIOMS3S2S1S0MA5...MA0微地址显示灯M14M9M8M6M23-M0微代码显示. . .Y1Y7Y7CMA5MA4MA3MA2RMA1C138 译码A-DEC138 译码B-DEC138 译码C-DECGND74LS273. . .. . .CLKCLR74LS273CLKCLR74LS175CLKCLRLDALDBLDRiLDSPLOADLDARLDIRP<1>P<2>P<3>P<4>LDPCSTICLIRMA0GNDSE0SE1SE2SE3SE4SE52013/12/614:09:08
MA5...MA074LS245G. . .74LS245. . .编程逻辑SD07 ... SD00SA5 ... SA0P2.2P2.1P2.0CLRT2G74LS245G. . .74LS245G. . .SD27 ... SD20SD17 ... SD10...图3-2 微程序控制器原理图
在实验平台中设有一组编程控制开关KK3、KK4、KK5(位于时序与操作台单元),可实现对存储器(包括存储器和控制存储器)的三种操作:编程、校验、运行。考虑到对于存储
. . .D7 ... D0WEA5 ... A0. . .OEA5 ... A0. . .D7 ... D0CSWE. . .D7 ... D0CSOEWE第2页,共9页。
281628162816A5 ... A0. . .CSOE. . .单片机CON单元2013/12/614:09:08
器(包括存储器和控制存储器)的操作大多集中在一个地址连续的存储空间中,实验平台提供了便利的手动操作方式。以向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的两次按动,即可完成对后续单元的编辑。
CON单元置地址(000000)IN单元置数据低8位(00010001)SD05-SD00 = 000000IN= 00010001KK1KK3KK4KK5ST= 停止= 编程= 控存= 置数= IN单元置数据中8位(00100010)IN单元置数据高8位(00110011)IN= 00100010KK1= 停止KK3= 编程KK4= 控存KK5= 加1ST= IN= 00110011KK1= 停止KK3= 编程KK4= 控存KK5= 加1ST=
编辑完成后需进行校验,以确保编辑的正确。以校验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位数据。如校验的微指令出错,则返回输入操作,修改该单元的数据后再进行校验,直至确认输入的微代码全部准确无误为止,完成对微指令的输入。
CON单元置地址(000000)MC单元M7—M0显示数据中8位(00010001)SD05-SD00 = 000000M7—M0= 00010001KK1= 停止KK3= 校验KK4= 控存KK5= 置数ST= M15—M8= 00100010KK1KK3KK4KK5ST= = = = = 停止校验控存加1M23—M16= 00110011KK1KK3KK4KK5ST= = = = = 停止校验控存加1MC单元M15—M8显示数据中8位(00100010)MC单元M23—M16显示数据高8位(00110011) 第3页,共9页。
2013/12/614:09:08
位于实验平台MC单元左上角一列三个指示灯MC2、MC1、MC0用来指示当前操作的微程序字段,分别对应M23——M16、M15——M8、M7——M0。实验平台提供了比较灵活的手动操作方式,比如在上述操作中在对地址置数后将开关KK4拨至‘减1’档,则每次随着开关ST的两次拨动操作,字节数依次从高8位到低8位递减,减至低8位后,再按动两次开关ST,微地址会自动减一,继续对下一个单元的操作。
微指令字长共24位,控制位顺序如表3-1:
表3-1 微指令格式
23M2322M2221201918-15WRRDIOMS3-S014-12A字段11-9B字段8-6C字段5-0MA5-MA0A字段140000111113001100111201010101选择NOPLDALDBLDR0保留保留保留LDIR1100001111B字段10001100119选择0NOP1ALU_B0R0_B1保留0保留1保留0保留1保留800001111C字段700110011601010101选择NOPP<1>保留保留保留保留保留保留
其中MA5?MA0为6位的后续微地址,A、B、C为三个译码字段,分别由三个控制位译码出多位。C字段中的P<1>为测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现完成对指令的识别,并实现微程序的分支,本系统上的指令译码原理如图3-3所示,图中I7?I2为指令寄存器的第7?2位输出,SE5?SE0为微控器单元微地址锁存器的强置端输出,指令译码逻辑在IR单元的INS_DEC(GAL20V8)中实现。
从图3-2中也可以看出,微控器产生的控制信号比表3-1中的要多,这是因为实验的不同,所需的控制信号也不一样,本实验只用了部分的控制信号。
本实验除了用到指令寄存器(IR)和通用寄存器R0外,还要用到IN和OUT单元,从微控器出来的信号中只有IOM、WR和RD三个信号,所以对这两个单元的读写信号还应先经过译码,其译码原理如图3-4所示。IR单元的原理图如图3-5所示,R0单元原理如图3-7所示,IN单元的原理图见图2-1-3所示,OUT单元的原理图见图3-6所示。
P<1>I[2]I[6]I[7]P<1>I[3]I[6]I[7]I[4]SE0I[5]SE1T4P<1>T4I[6]SE2T4P<1>T4I[7]SE3
图3-3 指令译码原理图 第4页,共9页。
2013/12/614:09:08
RDXMRDINS_DECI7...I2REG_DECI3...I0T3XMWRI7 ...8线排针I0LDIRT3锁存(273)...WRXIOWIOMXIORB7'...B0'8线排针
图3-4 读写控制逻辑 图3-5 IR单元原理图
七段数码管(H)a...g译码电路D7...D4七段数码管(L)a...g译码电路D3...D0...Q7...Q0锁存(374)D7...D0R0_BLDR0T4锁存(273)...D7...D0数据总线LED_BIOW...D7...D0CPU内总线
图3-6 OUT单元原理图 图3-7 R0原理图
本实验安排了四条机器指令,分别为ADD(0000 0000)、IN(0010 0000)、OUT(0011 0000)和HLT(0101 0000),括号中为各指令的二进制代码,指令格式如下:
助记符INADDOUTHLT机器指令码0010 00000000 00000011 00000101 0000说明IN R0R0 + R0 R0R0 OUT停机
实验中机器指令由CON单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,见图3-8所示。
几条机器指令对应的参考微程序流程图如图3-9所示。图中一个矩形方框表示一条微指令,方框中的内容为该指令执行的微操作,右上角的数字是该条指令的微地址,右下角的数字是该条指令的后续微地址,所有微地址均用16进制表示。向下的箭头指出了下一条要执行的指令。P<1>为测试字,根据条件使微程序产生分支。
第5页,共9页。