不带进位的与或运算指令的实现.docx
- 文档编号:5513447
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:17
- 大小:829.53KB
不带进位的与或运算指令的实现.docx
《不带进位的与或运算指令的实现.docx》由会员分享,可在线阅读,更多相关《不带进位的与或运算指令的实现.docx(17页珍藏版)》请在冰豆网上搜索。
不带进位的与或运算指令的实现
不带进位的与或运算指令的实现
一,课程设计目的
构造模型机实现不带进位的与或运算,使用软件HKCPT调试并执行一段程序,了解程序的编译、加载过程。
通过微单步,单拍调试,理解模型机中的数据流向。
二,课程设计说明
(1)设计原理
在实验系统中,模型机的运行是在微程序的控制下进行的,可实现特定指令的功能。
在本实验平台中,模型机从内存中读出、解释、执行机器指令将由微指令和与之相配合的时序来完成,即1条机器指令对应1个微程序。
(2)模型机逻辑框图
根据设计的要求以及试验器材的逻辑组合,构造模型机逻辑框图如下图所示:
374
(3)设计指令系统
<1>指令类型
试验平台内采用的是8位数据总线和8位总线方式,在设计中主要使用以下指令:
[1]逻辑运算类指令,例如逻辑或运算:
ORLA,#36
[2]数据传送类指令,例如,CPU内部寄存器之间数据传递:
MOVA,R1
[3]存储器操作类指令,存储器写指令。
寄存器中的内容写入存储器,例如:
STAADDR
<2>操作数寻址方式及编码
[1]直接地址寻址
例如,双字节指令:
LDAADDR(ADDR)->A
STAADDR(A)->ADDR
第1字节第2字节
I7
I6
I5
I4
I3
I2
I1
I0
A7
A6
A5
A4
A3
A2
A1
A0
操作码操作数地址
[2]寄存器直接寻址
指令字节中含有寄存器选择码,决定选哪个寄存器进行操作。
例如,单字节指令:
MOVA,Ri(Ri)->A
单字节
I7
I6
I5
I4
I3
I2
I1
I0
操作码与Ri选择码
例如,双字节指令:
MOVRi,#datadata->Ri
第1字节第2字节
I7
I6
I5
I4
I3
I2
I1
I0
D7
D6
D5
D4
D3
D2
D1
D0
[3]寄存器间接寻址
例如,但字节指令:
MOVA,@Ri(Ri)->A
Ri选择码
I7
I6
I5
I4
I3
I2
I1
I0
[4]立即数寻址
例如:
MOVA,#DATADA->A
MOVRI,#DATADATA->RI
第1字节第2字节
D7
D6
D5
D4
D3
D2
D1
D0
I7
I6
I5
I4
I3
I2
I1
I0
(4)设计微程序及其实现方法
在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至多有24个微操作控制信号,可由微代码直接实现。
如果采用多组编码译码,那么24位微代码通过二进制译码可实现2的n次幂个互斥的微操作控制信号。
由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。
在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7,这种方法称为“按操作码散转”,如下表所示:
按操作码换散
指令操作码
微程序首地址
MD7,MD6
I7
I6
I5
I4
MD1、MD0
MD7~MD0
0
0
0
0
0
1
003H
0
0
0
0
1
1
007H
0
0
0
1
0
1
00BH
0
0
0
1
1
1
00FH
0
0
1
0
0
1
013H
0
0
1
0
1
1
017H
0
0
1
1
0
1
01BH
0
0
1
1
1
1
01FH
0
1
0
0
0
1
023H
0
1
0
0
1
1
027H
0
1
0
1
0
1
02BH
0
1
0
1
1
1
02FH
0
1
1
0
0
1
033H
0
1
1
0
1
1
037H
0
1
1
1
0
1
03BH
0
1
1
1
1
1
03FH
每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。
微程序首地址形成
MD7
MD6
MD5
MD4
MD3
MD2
MD1
MD0
0
0
I7
I6
I5
I4
1
1
微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过之后微地址自动加1,指向下一条微指令地址。
微地址寄存器由2片74LS161组成,在模型机停止状态下,微地址被清零。
当试验平台开始运行时,微地址从OOH开始运行。
且OOH放置一条取指指令,根据程序开始地址从内存中读出第一条指令。
(5)设计模型机运行中的指令安排
本实验模型机已确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用微操作码散转换方式,微地址采用计数增量方式,所以可确定模型机中时序单元所产生的每一拍的作用。
本实验中为了让实验者更好地观察实验的各个中间过程各寄存器的值,由监控单元产生了4个脉冲信号。
4个脉冲信号组成一个微指令周期,为不同地寄存器提供工作脉冲。
微指令波形如下图所示:
SIGN
PLS1 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。
PLS2 PC计数器的工作脉冲,根据微指令的控制实现PC计数器加1和重置PC计数器加1和重置PC计数等功能。
PLS3把24微指令打入3片微指令锁存器。
PLS4把当前总线上的数据打入微指令选通的寄存器中。
(6)设计指令执行流程
根据模型机逻辑图和目前硬件条件来设计指令系统中每条指令的执行流程。
在每个系统中,一条指令从内存取出到执行完毕,需要若干个机器周期,任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。
一条指令共需几个机器周期取决于指令在机器内实现的复杂程度。
对于微程序控制的计算机,在设计指令执行流程时,要保证每条微指令所含的微操作的必要性和合理性,还应知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存信息的功能,而且必须保证总线传输信息时信息的唯一性。
取指微指令执行过程如下:
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。
在处于停机状态时,脉冲PLS1对微地址寄存器(74LS161)无效,微地址寄存器保持为零。
脉冲PLS2对PC计数器无效,同时PLS2把HALT=1打入启停单元的运行状态寄存器(74LS74)中,把模型机制为运行状态,使微程序锁存器输出有效。
PLS3把微程序存储器OOH单元(OOH单元存放取指微指令)的内容打入微指令锁存器中,并且输出取指微指令。
PLS4把从程序存储器读出的数据打入指令寄存器。
在模型机处于运行状态时,脉冲PLS1将微地址寄存器加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器的微指令打入微指令锁存器并且输出。
PLS4把当前总线上的数据打入当前微指令所选通的寄存器。
三,源程序及执行结果
(1)源程序清单
MOVRO,#22
MOVR1,#44
MOVA,RO
ORLA,#66
STA30
MOVA,R1
ANLA,#11
STA34
HALT
(2)执行结果如下图
以下为或运算时的执行情况:
以下为与运算时的执行情况:
四,分析
通过软件HKCPT的微单步功能可观察各个变量的变化。
累加器、有关寄存器、含每条指令执行的时序分析、存储器的变化如下表所示:
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
取指微指令
RAM->BUS->IR1
PLS1:
微地址清零
PLS2:
置模型机运行
PLS3:
取指微指令输出
PLS4:
BUS->IR1
无效
无效
6CH
6CH
无效
无效
00H
00H
微地址:
00H
PC=00H
锁存微指令
MOVR0,#22
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
RAM->寄存器R0
PLS1:
置微地址
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS->寄存器R0
6CH
6CH
22H
22H
00H
00H
01H
01H
微地址:
1BH
PC=01H
锁存微指令
寄存器R0=40H
T1
取微指令
RAM->BUS->IR1
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
取指微指令输出
PLS4:
BUS->IR1
22H
22H
6DH
6DH
01H
01H
02H
02H
微地址:
1CH
PC=02H
锁存微指令
IR1=6DH
MOVR1,#44
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
RAM->寄存器R1
PLS1:
置微地址
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS->寄存器R0
6DH
6DH
44H
44H
02H
02H
03H
03H
微地址:
1BH
PC=03H
锁存微指令
寄存器R1=44H
T1
取微指令
RAM->BUS->IR1
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
取指微指令输出
PLS4:
BUS->IR1
44H
44H
3CH
3CH
03H
03H
04H
04H
微地址:
1CH
PC=04H
锁存微指令
IR1=0FH
MOVA,R0
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
A->DR1
PLS1:
置微地址
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS->寄存器R0
3CH
3CH
00H
00H
04H
04H
无效
无效
微地址:
0FH
PC=05H
锁存微指令
DR1=00H
T1
寄存器R0->锁存器DR2
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
取指微指令输出
PLS4:
BUS->锁存器DR2
00H
00H
22H
22H
无效
无效
无效
无效
微地址:
10H
PC=05H
锁存微指令
DR2=22H
T2
ALU->A
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
微指令输出
PLS4:
BUS->A
22H
22H
22H
22H
无效
无效
无效
无效
微地址:
11H
PC=05H
锁存微指令
A=6FH
T3
取微指令
RAM->BUS->IR1
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
取指微指令输出
PLS4:
BUS->IR1
22H
22H
CFH
CFH
无效
无效
05H
05H
微地址:
12H
PC=05H
锁存微指令
IR1=6DH
ORLA,#66
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
A->DR1
PLS1:
置微地址
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS->寄存器R0
CFH
CFH
22H
22H
05H
05H
无效
无效
微地址:
33H
PC=06H
锁存微指令
DR1=22H
T1
BUS->DR2
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
取指微指令输出
PLS4:
BUS->锁存器DR2
22H
22H
66H
66H
无效
无效
无效
无效
微地址:
34H
PC=06H
锁存微指令
DR2=66H
T2
ALU->A
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
微指令输出
PLS4:
BUS->A
66H
66H
66H
66H
无效
无效
无效
无效
微地址:
35H
PC=06H
锁存微指令
A=66H
T3
取微指令
RAM->BUS->IR1
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
取指微指令输出
PLS4:
BUS->IR1
66H
66H
8FH
8FH
无效
无效
06H
06H
微地址:
36H
PC=06H
锁存微指令
IR1=8FH
STA30
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
RAM→BUS→IR2
PLS1:
置微地址
PLS2:
PC+1
PLS3:
取微指令输出
PLS4:
BUS→IR2
8FH
8FH
30H
30H
06H
06H
07H
07H
微地址:
23H
PC=07H
锁存微指令
IR2=30H
T1
A→RAM(30H)
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS→RAM
30H
30H
66H
66H
07H
07H
08H
08H
微地址:
24H
PC=08H
锁存微指令
RAM(30)=66H
T2
取微指令
RAM→BUS→IR1
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
取微指令输出
PLS4:
BUS→IR1
66H
66H
3DH
3DH
08H
08H
09H
09H
微地址25H
PC=08H
锁存微指令
IR1=0FH
MOVA,R1
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
A->DR1
PLS1:
置微地址
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS->寄存器R0
3DH
3DH
00H
00H
09H
09H
无效
无效
微地址:
0FH
PC=09H
锁存微指令
DR1=00H
T1
寄存器R1->锁存器DR2
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
取指微指令输出
PLS4:
BUS->锁存器DR2
00H
00H
44H
44H
无效
无效
无效
无效
微地址:
10H
PC=10H
锁存微指令
DR2=44H
T2
ALU->A
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
微指令输出
PLS4:
BUS->A
44H
44H
44H
44H
无效
无效
无效
无效
微地址:
11H
PC=0AH
锁存微指令
A=44H
T3
取微指令
RAM->BUS->IR1
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
取指微指令输出
PLS4:
BUS->IR1
44H
44H
DFH
DFH
无效
无效
0AH
0AH
微地址:
12H
PC=0BH
锁存微指令
IR1=DFH
ANLA,#11
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
A→DR1
PLS1:
置微地址
PLS2:
PC+1
PLS3:
取微指令输出
PLS4:
A→DR1
DFH
DFH
44H
44H
0AH
0AH
0BH
0BH
微地址:
37H
PC=0CH
锁存微指令
DR1=44H
T1
BUS→DR2
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
微指令输出
PLS4:
BUS→DR2
44H
44H
11H
11H
无效
无效
无效
无效
微地址:
38H
PC=0CH
锁存微指令
DR2=11H
T2
ALU→A
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
微指令输出
PLS4:
BUS→A
11H
11H
00H
00H
无效
无效
无效
无效
微地址:
39H
PC=0CH
锁存微指令
A=00H
T3
取微指令
RAM→BUS→IR1
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
取微指令输出
PLS4:
BUS→IR1
00H
00H
8FH
8FH
无效
无效
0CH
OCH
微地址:
3AH
PC=0CH
锁存微指令
IR1=8FH
STA34
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
RAM→BUS→IR2
PLS1:
置微地址
PLS2:
PC+1
PLS3:
取微指令输出
PLS4:
BUS→IR2
8FH
8FH
34H
34H
0CH
0CH
0DH
0DH
微地址:
23H
PC=0DH
锁存微指令
IR2=34H
T1
A→RAM(34H)
PLS1:
微地址+1
PLS2:
PC+1
PLS3:
微指令输出
PLS4:
BUS→RAM
34H
34H
00H
00H
0DH
0DH
0EH
0EH
微地址:
24H
PC=0EH
锁存微指令
RAM(34)=00H
T2
取微指令
RAM→BUS→IR1
PLS1:
微地址+1
PLS2:
PC不变
PLS3:
取微指令输出
PLS4:
BUS→IR1
00H
00H
FFH
FFH
0EH
0EH
0FH
0FH
微地址25H
PC=0EH
锁存微指令
IR1=FFH
HALT
微周期
数据流程
节拍
数据总线
地址总线
操作寄存器
T0
置模型机为停止状态
PLS1置微地址
PLS2:
停机
PLS3:
取微指令输出
PLS4:
BUS→IR1
FFH
FFH
无效
无效
10H
10H
无效
无效
微地址3FH
PC=0FH
五,设计总结
通过这次的课程设计,实现了不带进位的与或运算指令,在此过程中,我收获颇丰.这次课程设计不仅提高了我的动手实践能力,同时也提高了我的独立思考能力.通过本次实验,不仅将自己学的计算机组成原理的理论知识得到巩固,而且将理论知识运用于实践,增强了自己的动手能力.通过自己动手操作与思考,我了解了各个单元的工作原理,了解了每一个微单步过程中,微地址、数据总线、地址总线、操作寄存器和数据流程的变化。
通过本次实验,我对计算机组成原理的实验箱的工作原理有了更加透彻的了解.计算机的硬件部分的各个部分的逻辑关系和功能的实现,以及指令的流程,微程序的执行过程,这些重要知识,在本次课程设计中我都有了深入的了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 带进 运算 指令 实现