[合著] 微程序控制器组成实验
[ 2007-06-25 17:26:36 ]
引言/提要:与白中英老师等合著,《计算机组成原理题解、题库与实验》第三版,科学出版社,2000年。
关键词:计算机组成原理,实验仪,实验教材
一、实验目的
(1)掌握时序产生器的组成原理;
(2)掌握微程序控制器的组成原理。
二、实验电路
1.时序产生器

本实验所用的时序电路如图9.15。电路采用一片GAL22V10和一片移位寄存器74HC195,可产生两级等间隔时序信号T1-T4和W1-W4,其中一个W由一轮T1-T4循环组成,它相当于一个微指令周期或组合逻辑控制器的一拍,而一轮W1-W4循环可供组合逻辑控制器执行一条机器指令。
(本次实验不涉及组合逻辑控制器,因此时序产生器中的相关内容也可根据需要放到组合逻辑控制器实验中进行。)
微程序控制器只使用时序信号T1-T4,产生T信号的功能集成在GAL22V10芯片TIMER中(另外还集成有节拍信号的控制功能和一个简单的中断控制器)。该芯片的集成功能用ABEL语言实现,其源程序如下:
MODULE TIMER
TITLE 'Time pulse T1,T2,T3,T4 generater and Interrupt Controller'
"INPUT
MF,QD,CLR,DP,TJ,INTR,INSC,DB,SKIP,DZ,P2 PIN 1..11;
W4 PIN 13;
"OUTPUT
INTA,T4,T2,QD1,WLD,WCLK,T1,T3,INTS,INTQ PIN 14..23 ISTYPE 'REG';
S = [QD1,T1,T2,T3,T4,INTS,INTA,INTQ,WCLK,WLD];
ACT = (QD & !QD1);
C,X = .C.,.X.;
EQUATIONS
QD1 :=QD;
INTS :=INTR;
INTA :=!CLR # INTA $ (INSC & T1);
INTQ :=CLR & INTA & (INTQ # INTR & !INTS);
T1 :=CLR & (ACT # !(DP # TJ # DB & W4 # DZ & P2)) & T4;
T2 :=CLR & T1;
T3 :=CLR & T2;
T4 :=!CLR # T3 # !(ACT # !(DP # TJ # DB & W4 # DZ & P2)) & T4;
WCLK :=CLR & T4 & (ACT # !(DP # TJ # DB & W4 # DZ & P2)) # !CLR & (WCLK $ !WLD);
WLD :=!(!CLR # SKIP);
S.CLK = MF;
(向量测试略)
END
图中的输入信号中,MF接实验仪的时钟源。时钟源可产生四路方波信号,其频率可选择如下:QA输出为2MHz,QB为1MHz,QC为500KHz,QD为250KHz。本实验中MF可选用2MHz,则T1至T4的脉冲宽度为500ns。CLR为复位信号,接一个二进制开关。实验仪处于任何状态下令CLR=0,都会使时序产生器和微程序控制器复位(回到初始状态),CLR=1时则可以正常运行。建议每次实验仪加电后,先用CLR复位一次。
TJ(停机)是控制器的控制信号之一,接微程序控制器对应的输出。QD(启动)是来自按钮开关的脉冲信号,ABEL源程序中,检测该脉冲信号上升沿的表达式是(QD & !QD1)。DP(单拍)是来自控制面板的二进制开关信号,当DP=0时,一旦按下启动按钮,时序信号T1-T4将周而复始地发送出去,机器处于连续运行状态。当DP=1时,机器处于单拍运行状态,按启动按钮一次只发送一个微指令周期的时序信号就停机。利用单拍方式,每次只执行一条微指令,因而可以观察微指令代码和当前微指令的执行结果。另外,连续运行时,如果控制信号TJ=1,也会使机器停机。
DZ(单指)信号是针对微程序控制器的,接一个二进制开关,它和P2信号配合使用。P2是微指令字判断字段中的一个条件信号,从微程序控制器输出。P2信号在微程序中每条机器指令执行结束时为1,用于检测有无中断请求,而时序产生器用它来实现单条机器指令停机。在DB=0的前提下,当DZ=0时,机器连续运行。当DZ=1时,机器处于单指方式,每次只执行一条机器指令。
DB、SKIP、WCLK、WLD信号以及W1-W4时序信号都是针对组合逻辑控制器的。W1-W4是节拍信号,组合逻辑控制器执行一条机器指令需要一组W1-W4信号。DB(单步)信号就是每次发送一组W信号后停机,可见其功能与DZ类似。执行某些机器指令不需要完整的一组W信号周期,SKIP信号就是用来跳过本周期剩余的W信号的。
WCLK和WLD信号用于控制移位寄存器74HC195产生正确的W信号,实验仪内部已经连接好线路了。
2.数据通路
微程序控制器是根据数据通路和指令系统来设计的。这里采用的数据通路是在综合前面各实验模块的基础上,又增加程序计数器PC、地址加法器ALU3、地址缓冲寄存器DR4和中断地址寄存器S,如图9.16。PC和ALU3各采用一片GAL22V10,两者配合使用,可完成机器指令地址的存储、递增和加入偏移量的功能。DR4由两片74HC298组成,带二选一输入端。S是一片74HC374,用于中断时保存断点地址。
3.微指令格式与微程序控制器电路

根据给定的十一条机器指令功能和数据通路总体图的控制信号,采用的微指令格式见图9.17上部。微指令字长共40位。其中顺序控制部分10位:后继微地址6位,判别字段4位。操作控制字段30位:其中有三段采用字段译码法,A字段使用3:8译码器译出五个微命令,B、C字段各自采用2:4译码器译出三个微命令,其余各位进行直接控制。
对应微指令格式,微程序控制器的组成见图9.17下部。其中控制存储器采用五片FLASH RAM(闪速存储器AM29F010),微地址寄存器6位,用一片6D触发器74HC174组成,带有清零端。下面的两级与或门是微地址转移逻辑,用于产生下一微指令的地址。在每个T1上升沿时刻,新的微指令地址会打入微地址寄存器中,控制存储器随即输出相应的微命令代码,微地址转移逻辑生成下一地址,等下一个T1上升沿时打入微地址寄存器。
微地址转移逻辑下面的多个输入信号中,INTQ是中断请求,本实验中可以不理会,在下拉电阻作用下有缺省值INTQ=0。SWA、SWB是控制台信号,接两个二进制开关。C是进位信号,IR7-IR4是机器指令代码,由于本次实验不连接数据通路,这些信号都接到二进制开关上。
三、机器指令与微程序
为教学中简单明了,本实验仪使用十一条机器指令,均为单字长(8位)指令。指令
功能及格式如下:
名称 |
类型 |
助记符 |
功能 |
指令格式 |
加法 |
运算指令 |
ADD Rd,Rs |
Rd+Rs->Rd |
0 0 0 0 |
RS1 RS0 |
RD1 RD0 |
减法 |
运算指令 |
SUB Rd,Rs |
Rd-Rs->Rd |
0 0 0 1 |
RS1 RS0 |
RD1 RD0 |
乘法 |
运算指令 |
MUL Rd,Rs |
Rd*Rs->Rd |
0 0 1 0 |
RS1 RS0 |
RD1 RD0 |
逻辑与 |
运算指令 |
AND Rd,Rs |
Rd&Rs->Rd |
0 0 1 1 |
RS1 RS0 |
RD1 RD0 |
存数 |
访内指令 |
STA Rd,[Rs] |
Rd->[Rs] |
0 1 0 0 |
RS1 RS0 |
RD1 RD0 |
取数 |
访内指令 |
LDA Rd,[Rs] |
[Rs]->Rd |
0 1 0 1 |
RS1 RS0 |
RD1 RD0 |
无条件转移 |
转移指令 |
JMP D |
D->PC |
1 0 0 0 |
D3 D2 D1 D0 |
条件转移 |
转移指令 |
JC D |
若C=1则PC+D->PC |
1 0 0 1 |
D3 D2 D1 D0 |
停机 |
停机指令 |
STP |
暂停运行 |
0 1 1 0 |
X X X X |
中断返回 |
中断指令 |
IRET |
返回断点 |
1 0 1 0 |
X X X X |
开关中断 |
中断指令 |
INSC |
中断屏蔽/允许 |
1 0 1 1 |
X X X X |
指令的高4位提供给微程序控制器,低4位提供给数据通路。

应当指出,用以上十一条指令来编写实际程序是不够的。好在我们的目的不是程序设计,而主要是为了教学目的,通过CPU执行一个最简单的程序来掌握微程序控制器的工作原理。
上述十一条指令的微程序设计如图9.18所示。每条微指令可按前述的微指令格式转换成二进制代码,然后写入FLASH RAM中。
为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还设计了以下三个控制台操作微程序:
存储器写操作(KWE):按下复位按钮CLR后,微地址寄存器状态为全零。此时置SWA=1,SWB=0,按启动按钮后微指令地址转入27(十六进制),从而可对RAM连续进行手动写入。
存储器读操作(KRD):按下复位按钮CLR后,置SWA=0,SWB=1,按启动按钮后微指令地址转入17,从而可对RAM连续进行读操作。
启动程序(PR):按下复位按钮CLR后,置SWA=SWB=0,用数据开关SW设置内存中程序的首地址,按启动按钮后微指令地址转入07,然后转到“取指”微指令。
四、实验设备
(1)JYS-4计算机组成原理实验仪一台
(2)双踪示波器一台
(3)直流万用表一只
(4)逻辑测试笔一支
五、实验任务
(1)连接实验仪的数码开关、控制开关、按钮开关、时钟信号源和微程序控制器的指示灯。
注意:本次实验只做微程序控制器本身的实验,故微程序控制器输出的微命令信号与执行部件(数据通路)的连线暂不连接。连线完成后应仔细检查一遍,然后才可加上电源。
(2)观察时序信号。
时钟源用QA输出,用双踪示波器观测时序产生器的输入输出信号:MF,W1-W4,T1-T4。比较相位关系,画出其波形,并标注测量所得的脉冲宽度。
了解启停控制信号的功能,并熟练地使用连接这些控制信号的按钮或开关。
(3)熟习微指令格式中三个字段的定义,按此定义将控制台指令微程序的八条微指令按十六进制编码,列于下表。三种控制台指令的功能由SWA、SWB两个二进制开关的状态来指定(KRD=01,KWE=10,PR=00)。此表必须在预习时完成。
微指令地址 |
微指令编码 |
微指令地址 |
微指令编码 |
00
07
27
3D
|
|
3C
17
3F
3E
|
|
单拍(DP)方式执行KT微程序,读出上述八条微指令,用P字段和微地址指示灯跟踪微指令执行情况,并与上表数据对照。用连续方式执行KWE和KRD(暂时断开微程序控制器到时序产生器的TJ信号),画出uA0信号波形,作出解释。
(4)用P3和SWA、SWB的状态组合,观察验证三种控制台指令微地址转移逻辑功能的实现。
(5)孰习05、10两条微指令的功能和P3测试的状态条件(IR7-IR4),用二进制开关设置IR7-IR4的不同状态,观察ADD至STP九条机器指令微地址转移逻辑功能的实现。(用逻辑笔测试有关逻辑电路的电平,分别做出测试记录,自行设计表格。)
(6)设置IR7-IR4的不同组合,用单拍方式执行ADD至STP九条机器指令微程序,用微地址和P字段指示灯跟踪微程序转移和执行情况。用逻辑笔测试小插座上输出的微命令信号,记录ADD、SUB、LDA、STA四条机器指令的微命令信号,自行设计表格。
六、实验要求
(1)做好实验预习,掌握微程序控制器和时序产生器的工作原理。
(2)根据实验任务所提的要求,在实验进行前务必列好所有表格、数据和理论分析值。
(3)写出实验报告,内容是
1.实验目的;
2.实验任务(2)的时序波形图和测量值;
3.实验任务(3)、(5)、(6)的表格。
|
|