带进位运算指令的实现.docx
《带进位运算指令的实现.docx》由会员分享,可在线阅读,更多相关《带进位运算指令的实现.docx(20页珍藏版)》请在冰豆网上搜索。
![带进位运算指令的实现.docx](https://file1.bdocx.com/fileroot1/2023-2/1/f423c2a6-7fa9-4cbd-8147-9f463d231b2f/f423c2a6-7fa9-4cbd-8147-9f463d231b2f1.gif)
带进位运算指令的实现
学号:
0120810340631
课程设计
题目
基本模型机的设计——带进位运算指令的实现
学院
计算机科学与技术学院
专业
计算机科学与技术
班级
计算机0806
姓名
张军
指导教师
杨青
2011
年
1
月
13
日
课程设计任务书
学生姓名:
张军专业班级:
计算机0806
指导教师:
杨青工作单位:
计算机科学与技术学院
题目:
基本模型机的设计——带进位运算指令的实现
初始条件:
理论:
学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。
实践:
计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。
2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。
3、课程设计的书写报告应包括:
(1)课程设计的题目。
(2)设计的目的及设计原理。
(3)根据设计要求给出模型机的逻辑框图。
(4)设计指令系统,并分析指令格式。
(5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。
(6)模型机当中时序的设计安排。
(7)设计指令执行流程。
(8)给出编制的源程序,写出程序的指令代码及微程序。
(9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中带进位运算指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。
(10)课程设计总结(设计的特点、不足、收获与体会)。
时间安排:
周一:
熟悉相关资料。
周二:
系统分析,设计程序。
周三、四:
编程并上实验平台调试周五:
撰写课程设计报告。
指导教师签名:
2011年1月13日
系主任(或责任教师)签名:
2011年1月13日
基本模型机的设计——
带进位运算指令的实现
1、设计的目的
1、在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本模型计算机。
2、掌握微程序设计思想和设计方法,设计实现一个简单的模型机,该模型机由运算器、寄存器、译码电路、存储器、和存储微指令用的控制存储器组成,并能实现一些简单的机器指令,并根据设计好的指令设计简单的机器指令程序,实现输入、输出、存储器读写和简单的加、减控制指令。
3、将实验设备通过串口连接计算机,通过联机软件将机器指令程序和编写的微指令程序存入主存中,并运行此段程序,通过联机软件显示和观察该段程序的运行,验证编写的指令和微指令的执行情况是否符合设计要求,并对程序运行结果的正、误分析其原因。
4、改变相应的电路实现带进位运算指令的模型机的设计与实现观察相应的结果和记录相应的数据。
并得出相应的设计结论。
2、设计的原理
在各个模块的实验中,各个模块的控制信号都是有试验者手动模拟产生的。
而在真正的实验系统中,模型机的运行是微程序的控制下,实现特定指令的功能。
在本实验平台中,模型机从内存中取出、解释、执行机器指令都将有微指令和与之配合的时序来完成,即1条机器指令对应1条微程序。
3、模型机的逻辑框图
根据设计要求,对实验仪器硬件资源进行逻辑组合,便可以设计出该模型机的逻辑框图如下:
4、设计指令系统
本实验平台采用的是8为数据总线和8位地址总线的方式,在设计指令系统的时候,应考虑有哪几种指令的类型,哪几种寻址方式和编码方式。
4、1指令类型:
1、带进位的移位操作指令:
RRCA,RLCA
2、算术运算加法指令:
ADDA,Ri
3、数据传送指令:
MOVA,Ri
4、带进位的有条件的程序跳转指令:
JCaddr
5、无条件跳转指令:
JMPaddr
6、存储操作指令:
STAaddr
4、2操作数寻址方式及编码:
1、直接寻址方式:
指令地址码字段直接给出操作数的有效地址。
如:
双字节指令STAaddr
第一字节:
操作码第二字节:
操作数地址addr
I7
I6
I5
I4
I3
I2
I1
I0
A7
A6
A5
A4
A3
A1
A0
2、立即数寻址:
指令中的地址字段指出的不是操作数的地址,而是操作数本身。
如:
MOVA,#datadata->A
MOVRi,#datadata->Ri
第一字节:
操作码及Ri选择码第二字节:
data
I7
I6
I5
I4
I3
I2
I1
I0
A7
A6
A5
A4
A3
A1
A0
3、寄存器直接寻址:
指令的地址码字段指出的是寄存器的地址,而寄存器中存放的才是操作数。
如:
ADDA,Ri(Ri)+A->A
第一字节:
操作码第二字节:
Ri
I7
I6
I5
I4
I3
I2
I1
I0
A7
A6
A5
A4
A3
A1
A0
5、设计微程序及其实现的方法
本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么至少可以有24个微操作控制信号,可由微代码直接实现。
如果采用多组编码译码,那么24位微代码通过二进制译码可实现2^n个互斥的微操作控制信号。
由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。
在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0~MD7,这种方法称为“按操作码散转”(如下表所示)。
微程序首地址形成
MD7
MD6
MD5
MD4
MD3
MD2
MD1
MD0
0
0
I7
I6
I5
I4
1
1
按操作码散转
指令操作码
微程序首地址
MD7
MD6
I7
I6
I5
I4
MD1
MD0
MD7~MD0
0
0
0
0
0
0
1
1
003H
0
0
0
0
0
1
1
1
007H
0
0
0
0
1
0
1
1
00BH
0
0
0
0
1
1
1
1
00FH
0
0
0
1
0
0
1
1
013H
0
0
0
1
0
1
1
1
017H
0
0
0
1
1
0
1
1
01BH
0
0
0
1
1
1
1
1
01FH
0
0
1
0
0
0
1
1
023H
0
0
1
0
0
1
1
1
027H
0
0
1
0
1
0
1
1
02BH
0
0
1
0
1
1
1
1
02FH
0
0
1
1
0
0
1
1
033H
0
0
1
1
0
1
1
1
037H
0
0
1
1
1
0
1
1
03BH
0
0
1
1
1
1
1
1
03FH
每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。
微指令的运行顺序为下地址确定法,即采用技术增量法,每条微指令执行过后微地址自动加1,指向下一条微指令地址。
例如:
确定一跳微程序的入口地址为07H,那么当执行完07H这条微指令后微地址加1,指向08H的微地址。
微地址寄存器由2片74LS161组成,当模型机在停止状态下,微地址被清零。
当实验平台开始运行时,微地址从00H开始运行。
且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。
00
取指微指令
01
02
03
加法指令微程序
04
减法指令微程序
05
06
07
MOV指令微程序
08
带进位移位指令微程序
09
MOV指令微程序
0A
0B
0C
0D
0E
0F
……
……
6、模型机当中时序的设计安排
由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转的方式,微地址采用技术增量的方式,所以可确定模型机中时序单元中所产生的每一拍的作用。
在本实验中为了让实验者更好的观察实验的各个中间过程中各个寄存器的值,由监控单元产生一个PLS-O的信号来控制时序产生。
如下图:
PLS-O的信号经过时序单元的处理产生一个4个脉冲信号。
4个脉冲信号组成一个微周期,为不同的寄存器提供工作脉冲。
S0:
微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1。
S1:
PC计数器的工作脉冲,根据微指令的控制实现PC计数器加1和重置PC计数器(跳转指令)等功能。
S2:
把24位微指令打入3片微指令锁存器。
S3:
把当前总线上的数据打入微指令选通的寄存器。
7、设计指令执行流程
根据模型机整机逻辑图和目前硬件条件来设计指令系统中的每条指令的执行流程。
在每个系统中,一条指令从内存中取出到执行完毕,需要若干个机器周期,在任何指令中都必须有一个机器周期作为“取指令周期”,称为公操作周期。
而一条指令共需要几个机器周期取决于指令在机器内实现的负责程度。
取指微指令执行过程:
在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。
在处于停机状态时,脉冲S0对微地址寄存器(74LS161)无效,微地址寄存器保持为零。
脉冲S1对PC计数器无效,同时S1把HALT=1打入启停单元中的运行状态寄存器(74LS74)中,把模型机置为运行状态,是微程序锁存器输出有效。
S2把微程序存储器00H单元中的内容打入微指令锁存器中,并且输出取指微指令。
S3把从程序存储器中读出的数据打入指令寄存器中。
在模型机处于运行状态时,S3把从程序存储器中读出的数据打入指令寄存器中。
将PC计数器加1,S2把微程序存储器中的微指令打入微指令锁存器并且输出。
S3把当前总线上的数据打入当前微指令所选通的寄存器。
以下举例说明指令的数据信息流:
单字节指令RRCA(功能是将累加器A中的内容带进位CY有循环移一位)
—>CY—>A7—>A6……—>A1—>A0—>
_________________________________
须执行如下操作:
(PC)+1—PCCK—>PC;PC加1,为取下条指令字节做准备
(A)、CY—PC-O—>A、CY;控制累加器A带CY右循环移一位(移入CY作A7,移除的A0送CY)
(PC)—PC-O—>LAB—BUS—>OAB;PC程序计数器内容作为访问内存地址
(RAM)—RM—>ODB—BUS—>IDB—EIR1、S3—>IR1;从内存该地址单元读出指令字节送指令寄存器IR1。
此程序由2个微指令周期组成:
1、PC加1,为取下条指令字节做准备;
2、取指微指令,从内存读出指令送指令寄存器。
8、源程序代码
8、1指令代码
MOVA,#81立即数81H送给A
RRCA(A)>>1
MOVA,#18(A)->RAM(21H)
RLCA(A)<<1
MOVR0,#40立即数40H送给寄存器R0
MOVA,#18立即数18H送给A
RLCA(A)<<1
ADDA,R0(A)+(R0)->A
JC10若CY有进位,跳转到10H
JMP0A跳转到0AH
STA20(A)->RAM
HALT停机
8、2微指令序列
微地址
微指令
指令功能
0000
010011011111111111011011
取指指令
0017
110111011111101111111111
Dbus->A
0018
011111011111111111111111
取指指令
0027
111111111111000111101111
A>>1
0028
111111111110100111101111
取指指令
0017
110111011111101111111111
Dbus->A
0018
010011011111111111111111
取指指令
001B
110111011011111111111111
Dbus->Ri
001C
010011011111111111111111
取指指令
0017
110111011111101111111111
Dbus->A
0018
010011011111111111111111
取指指令
002B
111111111110100111101111
A<<1
002C
010011011111111111111111
取指指令
0003
111111111111110011111001
A->Dbus->DR1
0004
111111110111111101111001
Ri->Dbus->DR2
0005
111111111111101110101001
ALU->Dbus->A
0006
010011011111111111111111
取指指令
002F
110101001111111111111111
Dbus->IR2
0030
010011011111111111111111
[IR2]->Abus,Dbus->PC
000B
111101110111111111111111
Ri->Dbus->IR2
000C
110110011111101111111111
[IR2]->Abus,Dbus->A
000D
010011011111111111111111
取指指令
003F
111111111101111111111111
停机
9、使用软件HKCPT的联机与脱机方式的实现过程
下程序以16进制输入程序存储器,在调试时请关注进位位CY、A寄存器中的值。
内存地址
指令助记符
指令码
说明
00H
MOVA,#81
5FH
立即数81H->A
01H
81H
02H
RRCA
9FH
A>>1
03H
MOVA,#18
5FH
立即数18H->A
04H
18H
05H
RLCA
AFH
A<<1
06H
MOVR0,#40
6CH
立即数40H->寄存器R0
07H
40H
08H
MOVA,#18
5FH
立即数18H->A
09H
18H
0AH
RLCA
AFH
A<<1
0BH
ADDA,R0
0CH
(A)+(R0)->A
0CH
JC10
B7H
CY有进位跳转到0FH
0DH
10H
0EH
JMP0A
BFH
跳转到0AH
0FH
0AH
10H
STA20
8FH
将A内容写入RAM地址20H
11H
20H
12H
HALT
FFH
停机
运行结果为:
RAM20H单元中的内容为20H
运行程序:
通过软件HKCPT的微单步功能可观察各个变量的变化。
微单步运行过程显示如下:
微地址
数据流程
数据总线
地址总线
操作寄存器
00H
取指微指令RAM->BUS->IR1
5FH
00H
IR1=5FH
MOVA,#81
17H
BUS->A
81H
01H
A=81H
18H
取指微指令RAM->BUS->IR1
9FH
02H
IR1=9FH
RRCA
27H
A>>1
40H
无效
A=40,CY溢出
28H
取指微指令RAM->BUS->IR1
5FH
03H
IR1=0CH
MOVA,#18
17H
BUS->A
18H
04H
A=18H
18H
取指微指令RAM->BUS->IR1
AFH
05H
IR1=AFH
RLCA
2BH
A<<1
31H
无效
A=31HCY无溢出
2CH
取指微指令RAM->BUS->IR1
6CH
06H
IR1=6CH
MOVR0,#40
1BH
BUS->寄存器R0
40H
07H
R0=40H
1CH
取指微指令RAM->BUS->IR1
5FH
08H
IR1=5FH
MOVA,#18
2BH
BUS->A
18H
09H
A=18H
2CH
取指微指令RAM->BUS->IR1
AFH
0AH
IR1=AFH
RLCA
2BH
(A)<<1
30H
无效
A=30H
2CH
取指微指令RAM->BUS->IR1
0CH
0BH
IR1=0CH
ADDA,R0
03H
A->锁存器DR1
30H
无效
DR1=30H
04H
寄存器R0->锁存器DR2
40H
无效
DR2=40H
05H
ALU->A
70H
无效
ALU=70CY无溢出
06H
取指微指令RAM->BUS->IR1
B7H
0CH
IR1=B7H
JC0F
2FH
RAM->BUS->IR2
10H
0DH
IR2=10H
30H
取指微指令RAM->BUS->IR1
BFH
0EH
CY无溢出
JMP0A
2FH
RAM->BUS->IR2
0AH
0FH
IR2=0AH
30H
取指微指令RAM->BUS->IR1
AFH
0AH
跳转0AH
RLCA
2BH
(A)<<1
E0H
无效
A=E0H
2CH
取指微指令RAM->BUS->IR1
0CH
0BH
IR1=0CH
ADDA,R0
03H
A->锁存器DR1
E0H
无效
DR1=E0H
04H
寄存器R0->锁存器DR2
40H
无效
DR2=40H
05H
ALU->A
20H
无效
ALU=70CY有溢出
06H
取指微指令RAM->BUS->IR1
BFH
0CH
IR1=B7H
JC0F
2FH
RAM->BUS->IR2
10H
0DH
IR2=10H
30H
取指微指令RAM->BUS->IR1
8FH
10H
CY有溢出
STA20
23H
RAM->BUS->IR2
20H
11H
IR2=20H
24H
A->RAM(20H)
20H
20H
RAM(20)=20
25H
取指微指令RAM->BUS->IR1
FFH
12H
IR1=FFH
HALT
3FH
置模型机为停止状态
无效
无效
置停止状态
带进位运算指令的时序图:
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
11、
10、课程设计总结
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
比如一些芯片的功能,平时看课本,这次看了,下次就忘了,通过动手实践让我们对各个元件映象深刻。
认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
所以这个期末测试之后的课程设计对我们的作用是非常大的。
最后,还要感谢指导老师的认真监督、细心指导,以及给我们组的设计提出的宝贵意见。
虽然本学期组成原理课程已经结束,但仍觉得有很多东西要学,我会在以后的学习生活中不断努力,争取更大的进步。
本科生课程设计成绩评定表
班级:
计科0806 姓名:
张军 学号:
0120810340631
序号
评分项目
满分
实得分
1
学习态度认真、遵守纪律
10
2
设计分析合理性
10
3
设计方案正确性、可行性、创造性
20
4
设计结果正确性
40
5
设计报告的规范性
10
6
设计验收
10
总得分/等级
评语:
注:
最终成绩以五级分制记。
优(90-100分)、良(80-89分)、中(70-79分)、
及格(60-69分)、60分以下为不及格
指导教师签名:
2011年月 日