计算机组成原理微程序控制器组成实验课程实验报告书
学生课程实验报告书
13 级 计算机与信息科学 系
软件工程 专业 1303 班
学号 3138907308 姓名 王明渊
2014 --2015 学年 第 2 学期
另外它还产生节拍信号W1-W3的控制时钟CLK1。该芯片的逻辑功图3.4 时序信号发生器
本次实验不涉及硬连线控制器,因此时序发生器中产生W1-W3的部分也可根据需要放到硬连线控制器实验中介绍。
产生时序信号T1-T4的功能集成再图中左边的一片GAL22V10中,
能用ABEL语言实现。其源程序如下: MODULE TIMER1
TITLE ‘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 ‘PEG’; ACT PIN ISTYPE ‘COM’;
S = [T1, T2, T3, T4, QD1, QD2, QDR]; EQUATIONS
QD1 := QD; QD2 := QD1; ACT = QD1 & !QD2;
QDR := CLR & QD # CLE & QDR;
;
T1 := CLR & T4 & ACT # CLR & T4 & !(DP # TJ # DB & W3) & “INPUT
CLK1, CLR, SKIP PIN 1..3; QDR;
T2 := CLR & T1; T3 := CLR & T2;
T4 := !CLR # T3 # T4 & !ACT & (DP # TJ # DB & W3) # !QDR;
CLK1 = T1 # !CLR & MF;
S.CLK = MF; END
节拍电位信号W1-W3只在硬连线控制器中使用,产生W信号的功能集成在右边一片GAL22V10中,用ABEL语言实现。其源程序如下:
MODULE TIMER2
//头部
TITLE ‘CLOCK GENERATOR W1-W3’
DECLARATIONS
//说明部
CLK = C;
“OUTPUT
W1, W2, W3 PIN 16..18 ISTYPE ‘REG’;
W = [W1, W2, W3];
EQUATIONS
//逻辑描述部
W1 := CLR & W3; W2 := CLR & W1 & !SKIP; W3 := !CLR #W2 # W1 & SKIP; W.CLK = CLK1; END TIMER2
//结束部
左边GAL的时钟输入MF是晶振的输入,频率为500KHz。T1-T4的脉宽为2us。GLR实际上是控制台的CLR#信号,因为ABEL语言的书写关系改为CLR,仍为低有效。CLR #= 0将系统复位,此时时序停在T4、W3,微程序地址为000000B。建议每次试验台加电后,先按CLR#复位一次。实验台上CLR#到时序电路的连接已连好。 对时序发生器TJ输入引脚的连接要慎重,当不需要暂停微程序的运行时,将它接地;如果需要的话,将它与微程序控制器的输出微命
令TJ相连。QD(启动)是单脉冲信号,在GAL中用时钟MF对它进行了同步,产生QD1和QD2。ACT表达式为QD1 & !QD2,脉宽为2us。QDR是运行标志,QD信号使其置1,CLR#将其置0。DB(单步)、DP(单拍)是来自实验台的二进制开关模拟信号。当TJ = 0、DB = 0、DP = 0时,一旦按下QD键,时序信号T1-T4周而复始的发送出3.微指令格式
根据给定的8条机器指令功能和数据通路总体图的控制信号,采用的微指令格式如图10所示。微指令字长31位,其中顺序控制部分9位: 判别字段3位,后继微地址6位。操作控制字段22位,各位进行直接控制。
去,此时机器处于连续运行状态。当DP = 1、TJ = 0、DP = 0时,按下QD键,机器将处于单拍运行状态,此时只发送一组T1、T2、T3、T4时序信号就停机,此时机器时序停在T4。利用单拍方式,每次只读出一条微指令,因而可以观察微指令代码以及当前的执行结果。当机器连续运行时,如果TJ = 1,也会使机器中断运行,时序停在T4。DB、SKIP、CLK1信号以及W1-W3节拍电位信号都是针对硬连线控制器的。硬连线控制器执行一条机器指令需要一组W1-W3时序信号。CLK1是产生W信号的控制时钟,由左边一片GAL产生。DB信号就是控制每次发送一组W1-W3后停机。执行某些机器指令不需要一组完整的W信号,SKIP信号就是用来跳过本指令剩余的W节拍信号的。 2.数据通路
微程序控制器是根据数据通路和指令系统来设计的。这里采用的数据通路是在综合前面各实验的基础上,整合了运算器模块、存储器模块等形成的。有关数据通路整体的详细说明,请参阅第一章。
图3.5 微指令格式
对应微指令格式,微程序控制器的组成见图3.6。
控制存储器采用4片E2PROM(HN58C65)组成,HN58C65是8K * 8位的,地址输入端有13位(A12-A0),实验中只用到A5-A0,所以A12-A6接地,实际的使用空间为64字节。
微地址寄存器u AR共6位。用一片8D触发器74LS174组成,带有异步清零端。
两级与、或门构成微地址转移逻辑,用于产生下一微指令地址。 在每一个T1的上升沿,新的微指令地址打入微地址寄存器中,控制寄存器随即输出该条微指令的控制信号。微地址转移逻辑生成下一微地址,等到下一个T1上升沿,将其打入微地址寄存器中。 微地址转移逻辑的多个输入信号中,SWC、SWB、SWA是控制台指令的定义开关,它们用来决定控制台指令微程序的分支。C是进位信号,IR7-IR4是机器指令的操作码字段,根据它们的值来控制微程序转向某个特定的分支。 三、机器指令与微程序
为教学中简单明了,本实验仪器使用了8条机器指令,均为单字长(8位)指令。指令功能及格式如表3.1所示。指令的高4位IR7-IR4是操作码,提供给微程序控制器用作地址转移;低4位提供给数据通路。
图3.6 微程序控制器电路图
表3.3 指令功能与格式
应当指出,用这8条指令来编写实际程序是远远不够的。我们的目的是为了教学,通过执行一些最简单的程序来掌握微程序控制器的工作原理。
上述8条指令的微程序流程图如图3.7所示。每条微指令可按前述的微指令格式转换成二进制代码,然后写入微程序控制器的控制存储器中。
表3.4 微程序代码表
注: 后缀为#的信号都是低电平有效信号,为了在控存ROM中用”1”表示有效,这些信号在控制器中经过反相后送往数据通路。
为了向RAM和寄存器堆中装入程序和数据、检查写入是否正确,并能启动程序执行,还设计了以下五个控制台操作微程序:
在按复位按钮CLR#后,TEC-5复位,根据SWC、SWB、SWA状态来选择工作方式。在控制台工作方式,必须使DP = 0,DB = 0。 启动程序(PR): 按下复位按钮CLR#后,微地址寄存器清零。这时,置SWC = 0、SWB = 0、SWA = 0,用数据开关SW7-SW0设置RAM中的程序首地址,按QD按钮后,启动程序执行。
写存储器(WRM): 按下复位按钮CLR#,置SWC = 0、SWB = 0、SWA = 1。(1)在SW7-SW0中置好存储器地址,按QD按钮将此地址打入AR。(2)在SW7-SW0置好数据,按QD,将数据写入AR指定的存储器单元,这时AR加1。(3)返回(2)。依次进行下去,直到按复位键CLR#为止。这样就实现了对RAM的连续手动写入。这个控制
台操作的主要作用是向RAM中写入自己编写的程序和数据。 读存储器(RRM): 按下复位按钮CLR#,置SWC = 0、SWB = 1、SWA = 0。(1)在SW7-SW0中置好存储器地址,按QD按钮将此地址打入AR,RAM此地址单元的内容读至DBUS显示。(2)按QD按钮,
图3.7 微程序流程图
微指令代码表
根据图3.7的微程序流程图计算出微程序代码比较困难。为了计算出微程序代码,需要1个各微指令使用的信号表,即代码表。
这时AR加1,RAM新地址单元的内容读至DBUS显示。(3)返回(2)。依次进行下去,直到按复位键CLR#为止。这样就实现了对RAM的连续读出显示。这个控制台操作的主要作用是检查写入RAM的程序和数据是否正确。在程序执行后检查程序执行的结果(在存储器中的部分)是否正确。
寄存器写操作(WRF): 按下复位按钮CLR#,置SWC = 0、SWB =
1、SWA = 1。(1)首先在SW7-SW0中置好存储器地址,按QD按钮,则将此地址打入AR寄存器和PC寄存器。(2)在SW1、SW0置好寄存器选择信号WR1、WR0,按QD按钮,通过双端口存储器的右端口将WR1、WR0(即SW1、SW0)送到指令寄存器IR的低2位。(3)在SW7-SW0中置好要写入寄存器的数据;按QD按钮,将数据写入由WR1、WR0指定的寄存器。(4)返回(2)继续执行,直到按复位按钮CLR#。这个控制台操作主要在程序运行前,向相关的通用寄存器中置入初始数据。
寄存器读操作(RRF): 按下复位按钮CLR#,置SWC = 1、SWB =
0、SWA = 0。(1首先在SW7-SW0中置好存储器地址,按QD按钮,则将此地址打入AR寄存器和PC寄存器。(2)在SW3、SW2置好寄存器选择信号RS1、RS0,按QD按钮,通过双端口存储器的右端口将RS1、RS0(即SW3、SW2)送到指令寄存器IR的第3、2位。RS1、RS0选中的寄存器的数据读出到DBUS上显示出来。(3)返回(2)继续
下来,直到按复位键CLR#为止。这个控制台操作的主要作用是在程序执行前检查写入寄存器堆中的数据是否正确。在程序执行后检查程序执行的结果(在寄存器堆中的部分)是否正确。 四、实验任务
1. 按实验要求,连接实验台的数码开关K0-K15、控制开关、按钮开关、时钟信号源和微程序控制器。连接完成后应仔细检查一遍,然
后才可以加上电源。 注意: 本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线不连接。 2. 观察时序信号
用双踪示波器观测时序发生器的输入、输出信号: MF、 T1-T4,、W1-W3。比较相位关系,画出其波形图,并标注出测量所得的脉冲宽度。观察时须将DB、DP开关置为0状态,然后按QD按钮。 熟悉启停控制按钮的功能,并熟悉使用这些控制按钮或开关。 3. 熟悉微指令格式的定义,按此定义将图3.7所示的全部微程序变
换成二进制代码,并列表登记。此表请在预习时完成。 4. 控制台操作的功能由SWC、SWB、SWA三个二进制开关的状态配合P0判断来决定。用单拍(DP)方式执行控制台操作微程序,观察判别字段和微地址指示灯的显示,跟踪微指令的执行情况,并与上表数据对照。
5. 深刻理解0FH微指令的功能和PI测试的状态条件(IR7-IR4),用二进制开关设置IR7-IR4的不同状态,观察ADD至OUT八条机器指令对应微程序的微命令信号,特别是微地址转移的实现,并与上面表格进行对照。
实验仪器:
1 TEC - 5计算机组成原理实验系统1台;
2 TDS1001数字存储示波器1台; 3 逻辑测试笔1支
实验步骤(实验要求): 一、实验要求
1. 做好实验预习,掌握微程序控制器和时序发生器的工作原理。 2. 根据实验任务所提要求,在预习时完成表格填写、数据和理论分析。
3. 写出实验报告,内容是: (1)实验目的
(2)实验任务2的时序波形图和测量值 (3)实验任务3的表格。 二、实验步骤和实验结果
(1)接线
注意: 接线表中的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。根据观察的结果,可绘出波形图。
图3.8 基本时序图
MF的周期为2000毫秒,占空比为50%。
(3)控存代码表
表3.5 控存代码表
(4)控制台操作微指令编码测试
控制台微代码在58C65的D0-D7输出,D0是最低位,D7是最高位,CM0是最低字节,CM3是最高字节。D0-D7对应于28C64的引脚11、12、13、15、16、17、18、19。对于控存的输出,有相应的32个指示灯指示。
置DP = 1,DB = 0,使实验系统处于单拍状态。置SWC = 0、SWB = 0、SWA = 1,实验系统处于写存储器WRM工作模式。按CLR#按钮,使实验系统处于初始状态,微地址u_A5-u_A0为00H,测得的微码是00H 00H 00H 48H。按一次QD按钮,微地址uA5-u_A0为09H,测得的微码是00H 08H 84H 04H。按一次QD按钮,微地址u_A5-u_A0为04H,测得的微码是01H 08H 00H 05HH。按一次QD按钮,微地址u_A5-u_A0为05H,测得的微码是00H 00H 44H 04H。按一次QD按钮,微地址u_A5-u_A0为04H。由于微地址又返回04H,停止测试。
置DP = 1,DB = 0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 0,实验系统处于读存储器RRM工作模式。按CLR#按钮,使实验系统处于初始状态,微地址u_A5-u_A0为00H。按一次QD按钮,微地址uA5-u_A0为0AH,测得的微码是00H 08H 80H
02H。按一次QD按钮,微地址u_A5-u_A0为02H,测得的微码是03H 40H 04H 03H。按一次QD按钮,微地址u_A5-u_A0为03H,测得的微码是00H 00H 40H 02H。按一次QD按钮,微地址u_A5-u_A0为02H。由于微地址又返回02H,停止测试。
置DP = 1,DB = 0,使实验系统处于单拍状态。置SWC = 0、SWB = 1、SWA = 1,实验系统处于写寄存器WRF工作模式。按CLR#按钮,使实验系统处于初始状态,微地址u_A5-u_A0为00H。按一次QD按钮,微地址uA5-u_A0为0BH,测得的微码是00H 08H 0A4H 1DH。按一次QD按钮,微地址u_A5-u_A0为1DH,测得的微码是01H 08H 0CH 0DH。按一次QD按钮,微地址u_A5-u_A0为0DH,测得的微码是00H 80H 0CH 0DH。按一次QD按钮,微地址u_A5-u_A0为0EH,测得的微码是00H 0CH 04H 1DH。按一次QD按钮,微地址u_A5-u_A0为1DH。由于微地址又返回1DH,停止测试。
置DP = 1,DB = 0,使实验系统处于单拍状态。置SWC = 1、SWB = 0、SWA = 0,实验系统处于读寄存器工作模式。按CLR#按钮,使实验系统处于初始状态,微地址u_A5-u_A0为00H。按一次QD按钮,微地址uA5-u_A0为0CH,测得的微码是00H 08H 0A4H 1EH。按一次QD按钮,微地址u_A5-u_A0为1EH,测得的微码是01H 08H 00H 06H。按一次QD按钮,微地址u_A5-u_A0为06H,测得的微
码是00H 80H 08H 07H。按一次QD按钮,微地址u_A5-u_A0为07H,测得的微码是00H 10H 04H 1EH。按一次QD按钮,微地址u_A5-u_A0为1EH。由于微地址又返回1EH,停止测试。
置DP = 1,DB = 0,使实验系统处于单拍状态。置SWC = 0、SWB = 0、SWA = 0,实验系统处于PR工作模式。按CLR#按钮,使实验地址是00H。令K4(IR7) = 0,K3(IR6) = 0,K2(IR5) = 0,K1(IR4) = 0,相当于ADD指令的操作码。按一次QD按钮,微地址变为0FH。按一次QD按钮,微地址变为10H,微代码是00H 03H 00H 18H。按一次QD按钮,微地址变为18H,微代码是90H 24H 10H 0FH。按一次QD按钮,微地址回到0FH。
系统处于初始状态,微地址u_A5-u_A0为00H。按一次QD按钮,微地址uA5-u_A0为08H,测得的微码是00H 08H 84H 04H。按一次QD按钮,微地址u_A5-u_A0为04H,测得的微码是00H 08H 20H 0FH。按一次QD按钮,微地址u_A5-u_A0为0FH,测得的微码是00H 80H 08H 90H。由于以后的微码与机器指令有关,停止测试。 (5)深刻理解0FH微指令的功能和P1测试的状态条件(IR7-IR4),用二进制开关设置IR7-IR4的不同状态,观察ADD至OUT八条机器指令对应微程序的微命令信号,特别是微地址转移的实现。 0FH微指令的功能是根据程序计数器PC从存储器取指令,送往指令寄存器IR。0FH微指令的下一微指令地址是10H。不过,10H只是一个表面的下一微地址,由于该微指令中P1 = 1,因此实际的微指令地址的低4位要根据IR7-IR4确定,实际微地址为10H + IR7 IR6 IR5 IR4。
1. 置DP = 1,DB = 0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微
2. 置DP = 1,DB = 0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6) = 0,K2(IR5) = 0,K1(IR4) = 1,相当于SUB指令的操作码。按一次QD按钮,微地址变为0FH。按一次QD按钮,微地址变为11H,微代码是00H 03H 00H 19H。按一次QD按钮,微地址变为19H,微代码是64H 24H 10H 0FH。按一次QD按钮,微地址回到0FH。
3. 置DP = 1,DB = 0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6) = 0,K2(IR5) = 1,K1(IR4) = 0,相当于AND指令的操作码。按一次QD按钮,微地址变为0FH。按一次QD按钮,微地址变为12H,微代码是00H 03H 00H 1AH。按一次QD按钮,微地址变为1AH,微代码是0B8H 24H 10H 0FH。
按一次QD按钮,微地址回到0FH。 4. 置DP = 1,DB = 0,使实验系统处于单拍状态。选择SWC = 0、
SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6) = 0,K2(IR5) = 1,K1(IR4) = 1,相当于STA指令的操作码。按一次QD按钮,微地址变为0FH。按一次QD按钮,微地址变为13H,微代码是00H 11H 80H 1BH。按一次QD按钮,微地址变为1BH,微代码是01H 20H 10H 0FH。按一次QD按钮,微地址回到0FH。
5. 置DP = 1,DB = 0,使实验系统处于单拍状态。选择SWC = 0、SWB =1、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6) = 0,K2(IR5) = 0,K1(IR4)
= 0,相当于ADD指令的操作码。按一次QD按钮,微地址变为0FH。按一次QD按钮,微地址变为14H,微代码是00H 10H 80H 1CH。按一次QD按钮,微地址变为1CH,微代码是03H 44H 10H 0FH。按一次QD按钮,微地址回到0FH。
6. 置DP = 1,DB = 0,使实验系统处于单拍状态。选择SWC = 0、SWB = 0、SWA = 0,按CLR#按钮,使实验系统处于初始状态,微地址是00H。令K4(IR7) = 0,K3(IR6) = 1,K2(IR5) = 0,K1(IR4) = 1,相当于JC指令的操作码。按一次QD按钮,微地址变为0FH。按一次QD按钮,微地址变为15H,微代码是00H 00H 11H 0FH。令K0(C) = 0。按一次QD按钮,微地址变为0FH。按一次QD按钮,
微地址变为15H。令K0(C) = 1,按一次QD按钮,微地址变为1FH,