计算机组成原理课程设计基本模型机的设计跳转指令的实现管理资料Word文档格式.docx
《计算机组成原理课程设计基本模型机的设计跳转指令的实现管理资料Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计基本模型机的设计跳转指令的实现管理资料Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
时间安排:
周一:
熟悉相关资料。
周二:
系统分析,设计程序。
周三、四:
编程并上实验平台调试周五:
撰写课程设计报告。
指导教师签名:
年月日
系主任(或责任教师)签名:
基本模型机的设计
——跳转指令的实现
1、课程设计的题目
2、设计的目的及设计原理。
此次课程设计的主要目的有:
在详细了解所发的资料内容后,根据书本的理论和之前的实践知识,掌握计算机组成原理实验平台的各个单元模块的工作的原理,并了解软件HKCPT的联机、使用方式,是学会规划读/写内存、寄存器、数值计算等功能,要会编写相应的微程序,并在软件HKCPT加以实现。
实验系统中模型机的运行是在微程序的控制下进行的,在实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和与之相配合的时序来完成,即1条机器指令对应一个微程序。
这次实验将能在微程序控制下自动产生各部件单元的控制信号,实现特定指令的功能。
计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
本实验采用五条机器指令:
SUB(减法)、ADD(二进制加法)、STA(存数)、MOV(赋值)、JMP(无条件转移)、JC、RRC(循环右移)。
3、根据设计要求给出模型机的逻辑框图
其中运算器由2片74L181构成8位字长的ALU单元。
2片74LS374作为2个数据锁存器(DR1、DR2),8芯插座ALU-IN作为数据输入端,可通过短8芯扁平电缆,把数据输入端连接到数据总线上。
数据输入锁存器DR1的EDR1为低电平,并且D1CK有上升沿时,那来自数据总线的数据打入锁存器DR1。
同样使EDR2为低电平、D2CK有上升沿时把数据总线上的数据打入数据锁存器DR2。
4、设计指令系统,并分析指令格式
此次实验涉及的指令有以下几种:
MOVR1,#Data将立即数Data送到寄存器A中
MOVR0,#Data将立即数Data送到寄存器RI中
MOVA,#Data将立即数Data送到寄存器A中
JMPAddr跳转到Addr处开始执行
JCAddr如果有进位(借位)跳转到Addr处开始执行
RLCA带进循环左移一位
AddA,R0将寄存器R0中的数据加到累加器A中
SUBA,R1将累加器A中的数据减去寄存器R1中的数据
STAAddr将寄存器中内容写入存储器中
HALT停机指令
指令系统如下表:
指令格式
一般指令由操作码和操作码组成,如下所示:
操作码
地址码
此实验所涉及指令的格式如下:
MOV指令采用双字节指令,其格式如下:
I7
I6
I5
I4
I3
I2
I1
I0
第1字节:
操作码及Ri
D7
D6
D5
D4
D3
D2
D1
D0
第2字节:
Data
JMP指令采用双字节指令,其格式如下:
A7
A6
A5
A4
A3
A2
A1
A0
Addr
JC指令采用双字节指令,其格式如下:
RLC指令采用单字节指令,其格式如下:
ADD指令采用单字节指令,其格式如下:
SUB指令采用单字节指令,其格式如下:
STA取数据指令,其格式如下:
操作码Data
停机指令(HALT),其格式如下:
5设计微程序及其实现的方法
在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多可有24个微操作控制信号,可右微代码直接实现。
如果采用多组编码译码,那么24位微代码通过二进制译码可实现
个互斥的微操作控制信号。
由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。
每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。
微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动加1,指向下下一条微指令地址。
例如:
确定了一条程序的微程序入口地址位07H,那么当执行完07H这条微指令后微地址加1,指向08H微地址。
微地址寄存器由2篇74LS161组成,当模型机在停机状态下,微地址被清零。
当实验平台开始运行时,微地址从00H开始运行。
且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。
00
取指微指令
01
02
03
减法指令微程序
(1)
04
减法指令为程序
(2)
05
06
07
MOV指令微程序
(1)
08
MOV指令微程序
(2)
09
MOV指令微程序(3)
0A
0B
0C
0D
0E
…
在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7,这种方法成为“按操作码散转”(如下表所示)。
微程序首地址形成
MD7
MD6
MD5
MD4
MD3
MD2
MD1
MD0
0
按操作码散转
指令操作码
微程序首地址
MD7、MD6
MD1、MD0
MD7~MD0
003H
007H
00BH
00FH
013H
017H
01BH
01FH
023H
027H
02BH
02FH
033H
037H
03BH
03FH
6模型机当中时序的设计安排
1)、由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用技术增量方式,所以可确定模型机中时序单元中所产生的每一节拍的作用。
2)、在本实验中,由监控单元产生了一个PLS-O的信号来控制时序产生(如下图所示)。
PLS-O信号经过时序单元的处理产生了4个脉冲信号。
4个脉冲信号组成一个为周期,为不同的寄存器提供工作脉冲。
它们分别实现的功能是:
(1)PLS1:
微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1.
(2)PLS2:
PC计数器的工作脉冲,根据微指令的控制实现PC计数器加1和重置PC计数器(跳转指令)等功能。
(3)PLS3:
把24位微指令打入3片微指令锁存器。
(4)PLS4:
把当前总线上的数据打入微指令选通的寄存器中。
SIGN
PLS1
PLS2
PLS3
PLS4
微指令周期
PLS1微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。
PLS2PC计数器的工作脉冲,根据位置的控制实现PC计数器加1和重置PC计数器(跳转指令)等功能。
PLS3把24位微指令打入微指令锁存器。
PLS4把当前总线上的数据打入微指令选通的寄存器中
时序变化
时序变化图
1)初始状态的时序图
2)执行JZ时的时序图
3)执行JC时的时序
4)执行JMP时的时序图
7设计指令执行流程
在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令周期中都必须有一个机器周期作为“取指令周期”,成为公操作周期。
而一条指令共需要几个机器周期取决于指令在机器内实现的复杂程度。
对于微程序控制的计算机,在设计指令执行流程时,要保证每条指令所含有的微操作的必要性和合理性,还要知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存器信息的功能,而且必须包证总线传输信息时信息的唯一性。
例如本次课程设计中用到的取值微指令、ADD、JMP、RRC、MOVE等指令
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。
在处于停机状态时,脉冲PLS1对微地址寄存器无效,微地址寄存器保持为0。
脉冲PLS2对PC计数器无效,同时PLS2把HALT=1打入启停单元中的运行状态寄存器中,把模型机置为运行状态,使微程序锁存器输出有效。
PLS3把微程序存储器00H单元中内容打入微指令锁存器中,并且输出取指微指令。
PLS4把从程序存储器中读出的数据打入指令寄存器中。
在模型机处于运行状态时,脉冲PLS1将微地址寄存器加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器中的微指令打入微指令锁存器并且输出。
PLS4把当前总线上的数据打入当前微指令所选通的寄存器。
ADD指令的执行流程
ADDA,Ri,该指令功能为(A)+(Ri)->
A,需执行以下微操作:
(PC)+1
PC;
PC加1,为取下一条指令字节准备
(A)
DR1;
累加器A内容送ALU
(Ri)
DR2;
寄存器Ri内容送ALU
(A)+(Ri)
IDB
A;
使ALU执行加法,经IDB送入A
CY;
据加法结果置进位标志
(PC)
IAB
OAB;
PC计数器内容做访问内存地址
(RAM)
ODB
IR1;
从内存该地址单元读出指令寄存器IR1.
此程序由四个微指令周期:
+1为取下条字节准备,累加器A内容送ALU的DR1锁存器
1.寄存器Ri内容送ALU的DR2锁存器
2.ALU将计算结果送累加器A,据加法结果置进位标志CY
3.取指微指令,从内存读出指令送指令寄存器
JMP指令的执行流程
JMPaddr,该指令功能为addr->
PC,需执行如下操作:
IR2;
取本指令第二字节IR2
IR2
LAB
由IR2内容形成转移地址送PC
从内存该地址单元读出指令寄存器IR1
此程序由两个微指令周期:
1.PC+1从内存中取得指令第2个字节送入IR2.
2.IR2内容形成地址转移到PC,从内存中读出指令字节送指令寄存器。
RRC指令的执行流程
RRCA,该指令功能是将累加器A中的内容带进位CY循环右移一位,即->
CY->
A7->
A6->
…->
A1->
A0->
需执行如下微操作:
(A)、CY
A,CY;
控制累加器A带CY右环移一位
(PC)
(RAM)
1.PC加1,为取下一条指令字节准备,控制累加器A带CY右环移一位
2.取指微指令,从内存中读出指令送指令寄存器
MOV指令的执行流程
A,#data
该指令功能为data->
A,需执行如下操作:
PC加1,为取本指令下一字节备
A;
取出本指令第二字节
PC加1,为取下一条指令字节备
1.PC+1从内存中取得指令第2个字节送入累加器A。
2.PC+1执行取指微指令,从内存中读出指令送指令寄存器
双字节指令MOVRi,#data
该指令功能为data->
Ri;
+1从内存中取得指令第2个字节送入寄存器Ri。
+1执行取指微指令,从内存中读出指令送指令寄存器
8源程序以及程序的指令代码及微程序
、转移指令实现的源程序
MOVA,#82
RRCA
MOVA,#32
RLCA
MOVA,#18
JZ08
ADDA,R0
JC12
JMP0A
MOVR1,#42
ADDA,R1
STA40
HALT
程序的指令序列
00MOVA,#82
02RRCA;
03MOVA,#32;
05RLCA;
06MOVA,#18;
08RLCA;
09JZ08;
0BADDA,R0;
0CJC12;
0EJMP0A;
10MOVR1,#42;
12ADDA,R1;
13STA40;
15HALT;
16HALT;
17HALT;
18HALT;
19HALT;
1AHALT;
1BHALT;
1CHALT;
1DHALT;
1EHALT;
1FHALT;
微指令序列
M23-M0
00[00],[00],[00]取指指令
01[00],[00],[00]
02[00],[00],[00]
03[00],[00],[00]A->
Dbus->
DR1
04[00],[00],[00]Ri->
DR2
05[00],[00],[00]ALU->
A
06[00],[00],[00]取指指令
07[00],[00],[00]A->
08[00],[00],[00]Ri->
DR2
09[00],[00],[00]ALU->
0A[00],[00],[00]取指指令0B[00],[00],[00]Ri->
0C[00],[00],[00][IR2]->
Abus,Dbus->
0D[00],[00],[00]取指指令
0E[00],[00],[00]
0F[00],[00],[00]Ri->
10[00],[00],[00]取指指令
11[00],[00],[00]
12[00],[00],[00]
13[00],[00],[00]A->
Ri
14[00],[00],[00]取指指令
15[00],[00],[00]
16[00],[00],[00]
17[00],[00],[00]Dbus->
18[00],[00],[00]取指指令
19[00],[00],[00]
1A[00],[00],[00]
1B[00],[00],[00]Dbus->
1C[00],[00],[00]取指指令
1D[00],[00],[00]
1E[00],[00],[00]
1F[00],[00],[00]Dbus->
20[00],[00],[00][IR2]->
Abus,RAM->
21[00],[00],[00]取指指令
22[00],[00],[00]
23[00],[00],[00]Dbus->
24[00],[00],[00][IR2]->
Abus,A->
RAM
25[00],[00],[00]取指指令
26[00],[00],[00]
27[00],[00],[00]A>
>
28[00],[00],[00]取指指令
29[00],[00],[00]
2A[00],[00],[00]
2B[00],[00],[00]A<
<
2C[00],[00],[00]取指指令
2D[00],[00],[00]
2E[00],[00],[00]
2F[00],[00],[00]Dbus->
30[00],[00],[00][IR2]->
PC
31[00],[00],[00]
32[00],[00],[00]
33[00],[00],[00]A->
34[00],[00],[00]RAM->
35[00],[00],[00]ALU->
36[00],[00],[00]取指指令
37[00],[00],[00]A->
38[00],[00],[00]RAM->
39[00],[00],[00]ALU->
3A[00],[00],[00]取指指令
3B[00],[00],[00]
3C[00],[00],[00]
3D[00],[00],[00]
3E[00],[00],[00]
3F[00],[00],[00]停机
微地址
M23-M0
数据流程
数据总线
地址总线
操作寄存器
00H
4DFFFF
取指微指令RAM->
IR1
5FH
IR1=5FH
MOVA,#82由两个微指令周期组成
17H
DDFBFF
82H
01H
A=82H
18H
9FH
02H
IR1=9FH
RRCA由两个微指令周期组成
27H
FFF1FE
A>
41H
无效
A=41H
28H
03H
MOVA,#32由两个微指令周期组成
32H
04H
A=32H
AFH
05H
IR1=AFH
RLCA由两个微指令周期组成
2BH
FFE9EF
A<
64H
A=64H
2CH
06H
MOVA,#18由两个微指令周期组成
07H
A=18H
08H
30H
A=30H
B3H
09H
IR1=B3H
JZ08由两个微指令周期组成
2FH
D4FFFF
0AH
IR2=08H
[IR2]->
0CH
0BH
IR1=0CH
ADDA,R0由四个微指令周期组成