1、常规型微程序控制器组成实验4 常规型微程序控制器组成实验一、实验目的1.掌握时序发生器的组成原理。2.掌握微程序控制器的组成原理。二、实验电路1.时序发生器本实验所用的时序电路见图3.4。电路由一个500KHz晶振、2片GAL22V10、一片74LS390组成,可产生两级等间隔时序信号T1-T4、W1-W3,其中一个W由一轮T1-T4组成,相当于一个微指令周期或硬连线控制器的一拍,而一轮W1-W3可以执行硬连线控制器的一条机器指令。另外,供数字逻辑实验使用的时钟由MF经一片74LS390分频后产生。图3.4 时序信号发生器本次实验不涉及硬连线控制器,因此时序发生器中产生W1-W3的部分也可根据
2、需要放到硬连线控制器实验中介绍。产生时序信号T1-T4的功能集成在图中左边的一片GAL22V10中,另外它还产生节拍信号W1-W3的控制时钟CLK1。该芯片的逻辑功能用ABEL语言实现。其源程序如下:MODULE TIMER1TITLE CLOCK GENERATOR T1-T4 CLK = .C.;INPUT MF, CLR, QD, DP, TJ, DB PIN 1.6; W3 PIN 7;OUTPUT T1, T2, T3, T4 PIN 15.18 ISTYPE REG; CLK1 PIN 14 ISTYPE COM; QD1, QD2, QDR PIN ISTYPE REG; ACT
3、 PIN ISTYPE COM; S = T1, T2, T3, T4, QD1, QD2, QDR;EQUATIONS QD1 := QD; QD2 := QD1; ACT = QD1 & !QD2; QDR := CLR & QD # CLR & QDR; T1 := CLR & T4 & ACT # CLR & T4 & ! (DP # TJ # DB & W3) & QDR; T2 := CLR & T1; T3 := CLR & T2; T4 := !CLR # T3 # T4 & !ACT & (DP #TJ# DB& W3) # !QDR; CLK1 = T1 # !CLR &
4、MF; S.CLK = MF;END节拍电位信号W1-W3只在硬连线控制器中使用,产生W信号的功能集成在右边一片GAL22V10中,用ABEL语言实现。其源程序如下:MODULE TIMER2 /头部TITLE CLOCK GENERATOR W1-W3DECLARATIONS /说明部 CLK = .C.;INPUT CLK1, CLR, SKIP PIN 1.3;OUTPUT W1, W2, W3 PIN 16.18 ISTYPE REG; W = W1, W2, W3;EQUATIONS /逻辑描述部 W1 := CLR & W3; W2 := CLR & W1 & !SKIP; W3
5、:= !CLR # W2 # W1 & SKIP; W.CLK = CLK1;END TIMER2 /结束部左边GAL的时钟输入MF是晶振的输出,频率为500KHz。T1-T4的脉宽为2s。CLR实际上是控制台的CLR#信号,因为ABEL语言的书写关系改为CLR,仍为低有效。CLR#0将系统复位,此时时序停在T4、W3,微程序地址为000000B。建议每次实验台加电后,先按CLR#复位一次。实验台上CLR#到时序电路的连接已连好。对时序发生器TJ输入引脚的连接要慎重,当不需要暂停微程序的运行时,将它接地;如果需要的话,将它与微程序控制器的输出微命令TJ相连。QD(启动)是单脉冲信号,在GAL中
6、用时钟MF对它进行了同步,产生QD1和QD2。ACT表达式为QD1&!QD2,脉宽为2s。QDR是运行标志,QD信号使其置1,CLR#将其置0。DB(单步)、DP(单拍)是来自实验台的二进制开关模拟信号。当TJ0、DB0、DP0时,一旦按下QD键,时序信号T1T4周而复始的发送出去,此时机器处于连续运行状态。当DP1、TJ0、DP0时,按下QD键,机器将处于单拍运行状态,此时只发送一组T1、T2、T3、T4时序信号就停机,此时机器时序停在T4。利用单拍方式,每次只读出一条微指令,因而可以观察微指令代码以及当前的执行结果。当机器连续运行时,如果TJ1,也会使机器中断运行,时序停在T4。DB、SK
7、IP、CLK1信号以及W1-W3节拍电位信号都是针对硬连线控制器的。硬连线控制器执行一条机器指令需要一组W1-W3时序信号。CLK1是产生W信号的控制时钟,由左边一片GAL产生。DB信号就是控制每次发送一组W1-W3后停机。执行某些机器指令不需要一组完整的W信号,SKIP信号就是用来跳过本指令剩余的W节拍信号的。2.数据通路微程序控制器是根据数据通路和指令系统来设计的。这里采用的数据通路是在综合前面各实验的基础上,整合了运算器模块、存储器模块等形成的。有关数据通路整体的详细说明,请参阅第一章。3.微指令格式根据给定的8条机器指令功能和数据通路总体图的控制信号,采用的微指令格式如图3.5所示。微
8、指令字长31位,其中顺序控制部分9位:判别字段3位,后继微地址6位。操作控制字段22位,各位进行直接控制。对应微指令格式,微程序控制器的组成见图3.6。控制存储器采用4片E2PROM(HN58C65)组成,HN58C65是8K8位的,地址输入端有13位(A12A0),实验中只用到A5A0,所以A12A6接地,实际的使用空间为64字节。微地址寄存器AR共6位,用一片8D触发器74LS174组成,带有异步清零端。两级与、或门构成微地址转移逻辑,用于产生下一微指令地址。在每一个T1的上升沿,新的微指令地址打入微地址寄存器中,控制存储器随即输出该条微指令的控制信号。微地址转移逻辑生成下一微地址,等到下
9、一个T1上升沿,将其打入微地址寄存器中。微地址转移逻辑的多个输入信号中,SWC、SWB、SWA是控制台指令的定义开关,它们用来决定控制台指令微程序的分支。C是进位信号,IR7IR4是机器指令的操作码字段,根据它们的值来控制微程序转向某个特定的分支。三、机器指令与微程序为教学中简单明了,本实验仪器使用了8条机器指令,均为单字长(8位)指令。指令功能及格式如表3.3所示。指令的高4位IR7IR4是操作码,提供给微程序控制器用作地址转移;低4位提供给数据通路。表3.3 指令功能与格式名称助记符功能指令格式IR7 IR6 IR5 IR4IR3 IR2IR1 IR0加法ADD Rd, RsRd + Rs
10、Rd0 0 0 0Rs1 Rs0Rd1 Rd0减法SUB Rd, RsRd - RsRd0 0 0 1Rs1 Rs0Rd1 Rd0逻辑与AND Rd, RsRd & RsRd0 0 1 0Rs1 Rs0Rd1 Rd0存数STA Rd, RsRdRs0 0 1 1Rs1 Rs0Rd1 Rd0取数LDA Rd, RsRsRd0 1 0 0Rs1 Rs0Rd1 Rd0条件转移JC R3若C1 则R3PC0 1 0 11 1 停机STP暂停执行0 1 1 0 输出OUT RsRsDBUS0 1 1 1Rs1 Rs0 应当指出,用这8条指令来编写实际程序是远远不够的。我们的目的是为了教学,通过执行一些最
11、简单的程序来掌握微程序控制器的工作原理。上述8条指令的微程序流程图如图3.7所示。每条微指令可按前述的微指令格式转换成二进制代码,然后写入微程序控制器的控制存储器中。 微指令代码表根据图3.7的微程序流程图计算出微程序代码比较困难。为了计算出微程序代码,需要1个各微指令使用的信号表,即代码表。 表3.4 微程序代码表微指令 KT RRF WRF RRM WRM PR当前微地址 00 0C 1E 06 07 0B 1D 0D 0E 0A 02 03 09 04 05 08 0F下一微地址 08 1E 06 07 1E 1D 0D 0E 1D 02 03 02 04 05 04 0F 10P0 1
12、 . . . . . . . . . . . . . . . .P1 . . . . . . . . . . . . . . . . 1P2 . . . . . . . . . . . . . . . . .备用 . . . . . . . . . . . . . . . . .TJ . 1 . . 1 1 . 1 1 . 1 . 1 . 1 . .LDIR . . . 1 . . . 1 . . . . . . . . 1PC+1 . . . . . . . . . . . . . . . . .LDPC# . 1 . . . 1 . . . . . . . . . 1 AR+1 . . .
13、 . . . . . . . . 1 . . 1 . .LDAR# . 1 . . . 1 . . . 1 . . 1 . . . .LDDR1 . . . . . . . . . . . . . . . . .LDDR2 . . . . . . . . . . . . . . . . .LDRi . . . . . . . . 1 . . . . . . . .SW_BUS# . 1 1 . . 1 1 . 1 1 . . 1 1 . 1 .RS_BUS# . . . . 1 . . . . . . . . . . . .ALU_BUS# . . . . . . . . . . . . .
14、. . . .RAM_BUS# . . . . . . . . . . 1 . . . . . .CER# . . . 1 . . . 1 . . . . . . . . 1CEL# . . 1 . . . 1 . . . 1 . . 1 . . .LR/W# . . 0 . . . 0 . . . 1 . . 0 . . .Cn# . . . . . . . . . . . . . . . . .M . . . . . . . . . . . . . . . . .S0 . . . . . . . . . . . . . . . . .S1 . . . . . . . . . . . . .
15、 . . . .S2 . . . . . . . . . . . . . . . . .S3 . . . . . . . . . . . . . . . . .注:后缀为的信号都是低电平有效信号,为了在控存ROM中用“1”表示有效,这些信号在控制器中经过反相后送往数据通路。 表3.4 微程序代码表(续)微指令 ADD SUB AND STA LDA JC STP OUT当前微地址 10 18 11 19 12 1A 13 1B 14 1C 15 1F 16 17下一微地址 18 0F 19 0F 1A 0F 1B 0F 1C 0F 0F 0F 0F 0FP0 . . . . . . . . .
16、 . . . . .P1 . . . . . . . . . . . . . .P2 . . . . . . . . . . 1 . . .备用 . . . . . . . . . . . . . .TJ . . . . . . . . . . . . 1 1LDIR . . . . . . . . . . . . . .PC+1 . 1 . 1 . 1 . 1 . 1 1 . 1 1LDPC# . . . . . . . . . . . 1 . .AR+1 . . . . . . . . . . . . . .LDAR# . . . . . 1 . 1 . . . . .LDDR1 1 .
17、1 . 1 . 1 . . . . . . .LDDR2 1 . 1 . 1 . . . . . . . . .LDRi . 1 . 1 . 1 . . . 1 . . . .SW_BUS# . . . . . . . . . . . . . .RS_BUS# . . . . . . 1 . 1 . . 1 . 1ALU_BUS# . 1 . 1 . 1 . 1 . . . . . .RAM_BUS# . . . . . . . . . 1 . . . .CER# . . . . . . . . . . . . . .CEL# . . . . . . . 1 . 1 . . . .LR/W#
18、. . . . . . 0 . 1 . . . .Cn# . . . 1 . . . . . . . . . .M . 0 . 0 . 1 . 0 . . . . . .S0 . 1 . 0 . 1 . 0 . . . . . .S1 . 0 . 1 . 1 . 0 . . . . . .S2 . 0 . 1 . 0 . 0 . . . . . .S3 . 1 . 0 . 1 . 0 . . . . . .注:后缀为的信号都是低电平有效信号,为了在控存ROM中用“1”表示有效,这些信号在控制器中经过反相后送往数据通路。为了向RAM和寄存器堆中装入程序和数据、检查写入是否正确,并能启动程序执行,
19、还设计了以下五个控制台操作微程序:在按复位按钮CLR#后,TEC-5复位,根据SWC、SWB、SWA状态来选择工作方式。在控制台工作方式,必须使DP=0,DB=0。启动程序(PR):按下复位按钮CLR#后,微地址寄存器清零。这时,置SWC0、SWB0、SWA0,用数据开关SW7SW0设置RAM中的程序首地址,按QD按钮后,启动程序执行。写存储器(WRM):按下复位按钮CLR#,置SWC0、SWB0、SWA1。在SW7SW0中置好存储器地址,按QD按钮将此地址打入AR。在SW7SW0置好数据,按QD,将数据写入AR指定的存储器单元,这时AR加1。返回。依次进行下去,直到按复位键CLR#为止。这样
20、就实现了对RAM的连续手动写入。这个控制台操作的主要作用是向RAM中写入自己编写的程序和数据。读存储器(RRM):按下复位按钮CLR#,置SWC0、SWB1、SWA0。在SW7SW0中置好存储器地址,按QD按钮将此地址打入AR,RAM此地址单元的内容读至DBUS显示。按QD按钮,这时AR加1,RAM新地址单元的内容读至DBUS显示。返回。依次进行下去,直到按复位键CLR#为止。这样就实现了对RAM的连续读出显示。这个控制台操作的主要作用是检查写入RAM的程序和数据是否正确。在程序执行后检查程序执行的结果(在存储器中的部分)是否正确。寄存器写操作(WRF):按下复位按钮CLR#,置SWC0、SW
21、B1、SWA1。首先在SW7SW0置好存储器地址,按QD按钮,则将此地址打入AR寄存器和PC寄存器。在SW1、SW0置好寄存器选择信号WR1、WR0,按QD按钮,通过双端口存储器的右端口将WR1、WR0(即SW1、SW0)送到指令寄存器IR的低2位。在SW7SW0中置好要写入寄存器的数据;按QD按钮,将数据写入由WR1、WR0指定的寄存器。返回继续执行,直到按复位按钮CLR#。这个控制台操作主要在程序运行前,向相关的通用寄存器中置入初始数据。寄存器读操作(RRF):按下复位按钮CLR#,置SWC1、SWB0、SWA0。首先在SW7SW0置好存储器地址,按QD按钮,则将此地址打入AR寄存器和PC
22、寄存器。在SW3、SW2置好寄存器选择信号RS1、RS0,按QD按钮,通过双端口存储器的右端口将RS1、RS0(即SW3、SW2)送到指令寄存器IR的第3、2位。RS1、RS0选中的寄存器的数据读出到DBUS上显示出来。返回继续下去,直到按复位键CLR#为止。这个控制台操作的主要作用是在程序执行前检查写入寄存器堆中的数据是否正确,在程序执行后检查程序执行的结果(在寄存器堆中的部分)是否正确。四、实验设备1.TEC-5计算机组成原理实验系统1台2.逻辑测试笔一支(在TEC-5实验台上)3.双踪示波器一台(公用)4.万用表一只(公用)五、实验任务1.按实验要求,连接实验台的电平开关K0K15、时钟
23、信号源和微程序控制器。连接完成后应仔细检查一遍,然后才可以加上电源。注意:本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线不连接。2.观察时序信号。用双踪示波器观测时序发生器的输入、输出信号:MF、T1T4、W1W3。比较相位关系,画出其波形图,并标注出测量所得的脉冲宽度。观察时须将DB、DP开关置为0状态,然后按QD按钮。熟悉启停控制按钮的功能,并熟练使用这些控制按钮或开关。3.熟悉微指令格式的定义,按此定义将图3.7所示的全部微程序变换成二进制代码,并列表登记。此表请在预习时完成。4.控制台操作的功能由SWC、SWB、SWA三个二进制开关的状态
24、配合P0判断来决定。用单拍(DP)方式执行控制台操作微程序,观察判别字段和微地址指示灯的显示,跟踪微指令的执行情况,并与上表数据对照。5.深刻理解0FH微指令的功能和P1测试的状态条件(IR7IR4),用二进制开关设置IR7IR4的不同状态,观察ADD至OUT八条机器指令对应微程序的微命令信号,特别是微地址转移的实现,并与上面表格进行对照。六、实验要求1.做好实验预习,掌握微程序控制器和时序发生器的工作原理。2.根据实验任务所提的要求,在预习时完成表格填写、数据和理论分析值。3.写出实验报告,内容是:(1)实验目的。(2)实验任务2的时序波形图和测量值。(3)实验任务3的表格。七、实验步骤和实
25、验结果(1)接线控制器CIR4IR5IR6IR7模拟开关K0K1K2K3K4时序电路TJSKIP固定电平地地 注意:接线表中的TJ是时序电路中的TJ,不是控制器中的TJ(该TJ由控制器产生,不能接输入信号),千万不要接错。(2)观察时序信号的波形置DP=0,DB=0。先按CLR#按钮复位,再QD按钮。则时序部分开始不停止地运行,直到按CLR#按钮为止。用双踪示波器观察MF、T1、T2、T3、T4、W1、W2、W3信号。观察的方法是同时观察两路信号,以便于比较相位。可按下述顺序进行观察:MF和T1,T1和T2,T2和T3,T3和T4,T1和W1,W1和W2,W2和W3。根据观察的结果,可绘出波形
26、图。 MF的周期为2000毫秒,占空比为50%。(3)控存代码表 表3.5 控存代码表微地址 CM3 CM2 CM1 CM0 00 00 00 00 48 01 00 00 00 00 02 03 4004 03 03 00 00 40 02 04 01 08 00 05 05 00 00 44 04 06 00 80 08 07 07 00 10 04 1E 08 00 08 20 0F 09 00 08 84 04 0A 00 08 80 02 0B 00 08 A4 1D 0C 00 08 A4 1E 0D 00 80 0C 0E 0E 00 0C 04 1D 0F 00 80 08 9
27、0 10 00 03 00 18 11 00 03 00 19 12 00 03 00 1A 13 00 11 80 1B 14 00 10 80 1C 15 00 00 11 0F 16 00 00 14 0F 17 00 10 14 0F 18 90 24 10 0F 19 64 24 10 0F 1A B8 24 10 0F 1B 01 20 10 0F 1C 03 44 10 0F 1D 01 08 00 0D 1E 01 08 00 06 1F00 10 20 0F(4) 控制台操作微指令编码测试控制台微代码在58C65的D0D7输出,D0是最低位,D7是最高位,CM0是最低字节,C
28、M3是最高字节。D0D7对应于28C64的引脚11、12、13、15、16、17、18、19。对于控存的输出,有相应的32个指示灯指示。置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 0、SWA = 1,实验系统处于写存储器WRM工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H,测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为09H,测得的微码是00H 08H 84H 04H。按一次QD按钮,微地址为04H,测得的微码是01H 08H 00H 05H。按一次QD按钮,微地址为05H,测得的微码是00H 00H 44H 04H
29、。按一次QD按钮,微地址为04H。由于微地址又返回04H,停止测试。置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 0,实验系统处于读存储器RRM工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H,测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为0AH,测得的微码是00H 08H 80H 02H。按一次QD按钮,微地址为02H,测得的微码是03H 40H 04H 03H。按一次QD按钮,微地址为03H,测得的微码是00H 00H 40H 02H。按一次QD按钮,微地址为02H。由于微地址又返回02H,停止测试。 置DP = 1,DB =0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 1,实验系统处于写寄存器WRF工作模式。按CLR#按钮,使实验系统处于初始状态,微地址为00H, 测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址为0BH,测得的微码是00H 08H 0A4H 1DH。按一次QD按钮,微地址为1DH,测得的微码是01H 08H 00H 0DH。按一次QD按钮,微地址为0DH,测得的微码是00H 80H 0CH 0EH。按一次QD按钮,微地址为0EH,测得的微
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1