《计组课设——基本模型机的设计(共23页).doc》由会员分享,可在线阅读,更多相关《计组课设——基本模型机的设计(共23页).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上学 号: 课 程 设 计 题 目基本模型机的设计学 院计算机科学与技术专 业班 级姓 名 指导教师2013年01月17日专心-专注-专业课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位:计算机科学与技术学院题 目: 基本模型机的设计跳转指令的实现初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、
2、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件
3、HKCPT的联机方式与脱机方式的实现过程(包括编制程序中跳转指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。时间安排: 周一:熟悉相关资料。 周二:系统分析,设计程序。 周三、四:编程并上实验平台调试 周五:撰写课程设计报告。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日基本模型机的设计 跳转指令的实现1设计的目的及设计的原理1.1课程设计的题目 基本模型机的设计跳转指令的实现1.2设计的目的 1、掌握了各个单元模块的工作原理,进一步将其组成整的系统,构造成1台基本的模型计算机。 2、根据实验要求,
4、规划读写内存、寄存器、数值计算等功能,并且编写相应的微程序。用软件HKCPT的微单步功能观察指令运行状态,掌握微程序控制原理。 3、利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念,具体上机调试各个模块单元以便进一步掌握整机的概念。1.3设计的原理 在各个模型实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的试验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存中取出、解释、执行机器指令都由微指令和与之相配合的时序来完成,既1条机器指令对应1个微程序。2模型机的总体设计2.1基本模型机系统分析与设计
5、1、简单的模型计算机是由算术逻辑运算单元、微程序单元、堆栈寄存器单元、累加器、启停、时序单元、总线和存储器单元组成。 2、在模型机中,我们将要实现RAM的读写指令,寄存器的读写指令,跳转指令,ALU的加、减指令。把通用寄存器作为累加器A们进行左、右移等操作指令,整体构成一个单累加器多寄存器的系统。 3、根据设计要求,对实验仪硬件资源进行逻辑组合,便可设计出该模型机的整机逻辑框图。2.2模型机的逻辑框图3设计指令系统本实验平台内采用的是8位数据总线和8位地址总线,在设计指令系统时考虑有如下几种类型的指令和寻址方式及编码方式:3.1指令类型3.1.1算术/逻辑运算类指令 如:加法、减法、取反、逻辑
6、运算 ADD A,Ri , SUB A,Ri3.1.2移位操作类指令 带进位或不带进位的移位指令 RRC A , RLC A , RR A 3.1.3数据传送类指令 CPU内部寄存器之间数据传递 MOV A , Ri MOV Ri , A3.1.4程序跳转指令 跳转指令分为无条件跳转指令和有条件跳转指令。可根据寄存器内容为零来标志(ZD)、有无进位来标志(CY),也可根据用户自定义标志。 JMP addr 无条件跳转 JZ addr ZD=0 时跳转 JC addr CY=0 时跳转 JN addr 自定义3.1.5存储器操作类指令 存储器读/写指令。把内存某单元内容写入寄存器中或把寄存器中的
7、内容写入存储器。如: LDA addr (addr)-A STA addr (A)-addr3.2操作数寻址方式及编码3.2.1直接地址寻址 如:双字节指令 LDA addr (addr)-A STA addr (A)-addr 第1字节 I7I6I5I4I3I2I1I0 操作码 第2字节A7A6A5A4A3A2A1A0 操作数地址addr 3.2.2寄存器直接寻址指令字节中含有寄存器选择码,决定选择哪个寄存器进行操作。如:单字节指令 MOV A , Ri (Ri)-A 单字节I7I6I5I4I3I2I1I0 操作码与Ri选择码 如:双字节指令 MOV Ri ,#data data-Ri 第1
8、字节I7I6I5I4I3I2I1I0 操作码与Ri选择码 第2字节D7D6D5D4D3D2D1D0 Data3.2.3寄存器间接寻址如:单字节指令 MOV A ,Ri (Ri)-A Ri选择码I7I6I5I4I3I2I1I0 操作码3.2.4立即数寻址如:单字节指令 MOV A ,#data data-A MOV Ri,#data data-Ri 第1字节I7I6I5I4I3I2I1I0 操作码与Ri选择码 第2字节D7D6D5D4D3D2D1D0 Data4设计微程序及其实现的方法4.1微指令格式的设计 在本实验平台的硬件设计中,采用24位微指令,若微指令采用全水平不编码纯控制场的格式,那么
9、至多可有24个微操作控制信号,可右微代码直接实现。如果采用多组编码译码,那么24位微代码通过二进制译码可实现个互斥的微操作控制信号。 由于模型机指令系统规模较小,功能也不太复杂,所以采用全水平不编码纯控制场的微指令格式。4.2后续微地址的产生方法 每条指令由不超过4条的微指令组成,那么可根据下表组成每条微程序的首地址。微指令的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动加1,指向下下一条微指令地址。例如:确定了一条程序的微程序入口地址位07H,那么当执行完07H这条微指令后微地址加1,指向08H微地址。微地址寄存器由2篇74LS161组成,当模型机在停机状态下,微地
10、址被清零。当实验平台开始运行时,微地址从00H开始运行。且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。00取指微指令010203减法指令微程序(1)04减法指令为程序(2)050607MOV指令微程序(1)08MOV指令微程序(2)09MOV指令微程序(3)0A0B0C0D0E0D4.3微程序入口地址的形成 在模型机中,用指令操作码的高4位作为核心扩展成8位的微程序入口地址MD0MD7,这种方法成为“按操作码散转”(如下表所示)。微程序首地址形成MD7MD6MD5MD4MD3MD2MD1MD000 I7I6I5I411按操作码散转指令操作码微程序首地址MD7、MD6I7I6
11、I5I4MD1、MD0MD7MD0000001003H000011007H00010100BH00011100FH001001013H001011017H00110101BH00111101FH010001023H010011027H01010102BH01011102FH011001033H011011037H01110103BH01111103FH5模型机当中时序的设计安排 1、由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用技术增量方式,所以可确定模型机中时序单元中所产生的每一节拍的作用。 2、在本实验中,由监控单元产生了
12、一个PLS-O的信号来控制时序产生(如下图所示)。PLS-O信号经过时序单元的处理产生了4个脉冲信号。4个脉冲信号组成一个为周期,为不同的寄存器提供工作脉冲。它们分别实现的功能是:(1)PLS1:微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1.(2)PLS2:PC计数器的工作脉冲,根据微指令的控制实现PC计数器加1和重置PC计数器(跳转指令)等功能。(3)PLS3:把24位微指令打入3片微指令锁存器。(4)PLS4:把当前总线上的数据打入微指令选通的寄存器中。SIGNPLS1PLS2PLS3PLS4微指令周期微指令周期6设计指令执行流程 在每个系统中,一条指令从内存取出到执行完毕,
13、需要若干个机器周期,任何指令周期中都必须有一个机器周期作为“取指令周期”,成为公操作周期。而一条指令共需要几个机器周期取决于指令在机器内实现的复杂程度。 对于微程序控制的计算机,在设计指令执行流程时,要保证每条指令所含有的微操作的必要性和合理性,还要知道总线IAB,IDB,OAB,ODB仅是传输信息的通路,没有寄存器信息的功能,而且必须包证总线传输信息时信息的唯一性。例如本次课程设计中用到的取值微指令、ADD、JMP、RRC、MOVE等指令6.1取值微指令的执行流程 在模型机处于停机状态时,模型机的微地址寄存器被清零,微指令锁存器输出无效。在处于停机状态时,脉冲PLS1对微地址寄存器无效,微地
14、址寄存器保持为0。脉冲PLS2对PC计数器无效,同时PLS2把HALT=1打入启停单元中的运行状态寄存器中,把模型机置为运行状态,使微程序锁存器输出有效。PLS3把微程序存储器00H单元中内容打入微指令锁存器中,并且输出取指微指令。PLS4把从程序存储器中读出的数据打入指令寄存器中。 在模型机处于运行状态时,脉冲PLS1将微地址寄存器加1,脉冲PLS2将PC计数器加1,PLS3把微程序存储器中的微指令打入微指令锁存器并且输出。PLS4把当前总线上的数据打入当前微指令所选通的寄存器。6.2 ADD指令的执行流程 例如:ADD A,Ri,该指令功能为(A)+(Ri)-A,需执行以下微操作:(PC)
15、+1PC ;PC加1,为取下一条指令字节准备(A)DR1 ;累加器A内容送ALU(Ri)DR2 ;寄存器Ri内容送ALU(A)+(Ri)IDBA ;使ALU执行加法,经IDB送入ACY ;据加法结果置进位标志(PC)IABOAB ;PC计数器内容做访问内存地址(RAM)ODBIDBIR1 ;从内存该地址单元读出指令寄存器IR1.此程序由四个微指令周期:1. PC+1为取下条字节准备,累加器A内容送ALU的DR1锁存器2. 寄存器Ri内容送ALU的DR2锁存器3. ALU将计算结果送累加器A,据加法结果置进位标志CY4. 取指微指令,从内存读出指令送指令寄存器6.3 JMP指令的执行流程 例如:
16、JMP addr,该指令功能为addr-PC,需执行如下操作:(PC)+1PC ;PC加1,为取下一条指令字节准备(RAM)ODBIDBIR2 ;取本指令第二字节IR2IR2LABOAB ;由IR2内容形成转移地址送PC(PC)IABOAB ;PC计数器内容做访问内存地址(RAM)ODBIDBIR1 ;从内存该地址单元读出指令寄存器IR1此程序由两个微指令周期:1. PC+1从内存中取得指令第2个字节送入IR2.2. IR2内容形成地址转移到PC,从内存中读出指令字节送指令寄存器。6.4 RRC指令的执行流程 例如:RRC A,该指令功能是将累加器A中的内容带进位CY循环右移一位,即-CY-A
17、7-A6-A1-A0-,需执行如下微操作:(PC)+1PC ;PC加1,为取下一条指令字节准备 (A)、CYA,CY ;控制累加器A带CY右环移一位 (PC)IABOAB ;PC计数器内容做访问内存地址 (RAM)ODBIDBIR1 ;从内存该地址单元读出指令寄存器IR1此程序由两个微指令周期:1. PC加1,为取下一条指令字节准备,控制累加器A带CY右环移一位2. 取指微指令,从内存中读出指令送指令寄存器6.5 MOV指令的执行流程6.5.1双字节指令MOV A,#data 该指令功能为data-A,需执行如下操作:(PC)+1PC ;PC加1,为取本指令下一字节备 (RAM)ODBIDBA
18、;取出本指令第二字节(PC)+1PC ;PC加1,为取下一条指令字节备 (PC)IABOAB ;PC计数器内容做访问内存地址 (RAM)ODBIDBIR1 ;从内存该地址单元读出指令寄存器IR1.此程序由两个微指令周期:1. PC+1从内存中取得指令第2个字节送入累加器A。2. PC+1执行取指微指令,从内存中读出指令送指令寄存器6.5.2 双字节指令MOV Ri,#data 该指令功能为data-A,需执行如下操作:(PC)+1PC ;PC加1,为取本指令下一字节备 (RAM)ODBIDBRi ;取出本指令第二字节(PC)+1PC ;PC加1,为取下一条指令字节备 (PC)IABOAB ;P
19、C计数器内容做访问内存地址 (RAM)ODBIDBIR1 ;从内存该地址单元读出指令寄存器IR1此程序由两个微指令周期:1.PC+1从内存中取得指令第2个字节送入寄存器Ri。2.PC+1执行取指微指令,从内存中读出指令送指令寄存器7源程序以及程序的指令代码及微程序7.1跳转、转移指令实现的源程序 MOV A,#82 RRC A MOV A,#32 RLC A MOV A,#18 RLC A JZ 08 ADD A,R0 JC 12 JMP 0A MOV R1,#42 ADD A,R1 STA 40 HALT7.2 程序的指令序列 00 MOV A,#82 02 RRC A; 03 MOV A,
20、#32; 05 RLC A; 06 MOV A,#18; 08 RLC A; 09 JZ 08; 0B ADD A,R0; 0C JC 12; 0E JMP 0A; 10 MOV R1,#42; 12 ADD A,R1; 13 STA 40; 15 HALT; 16 HALT; 17 HALT; 18 HALT; 19 HALT; 1A HALT; 1B HALT; 1C HALT; 1D HALT; 1E HALT; 1F HALT;7.3 微指令序列M23-M0 00 00,00,00 取指指令 01 00,00,00 02 00,00,00 03 00,00,00 A-Dbus-DR1
21、04 00,00,00 Ri-Dbus-DR2 05 00,00,00 ALU-Dbus-A 06 00,00,00 取指指令 07 00,00,00 Ri-Dbus-DR2 08 00,00,00 ALU-Dbus-A 09 00,00,00 取指指令 0A 00,00,00Ri-Dbus-IR2 0B 00,00,00 IR2-Abus,Dbus-A 0C 00,00,00 取指指令 0D 00,00,00 0E 00,00,00 0F 00,00,00 Ri-Dbus-A 10 00,00,00 取指指令 11 00,00,00 12 00,00,00 13 00,00,00 A-Dbu
22、s-Ri 14 00,00,00 取指指令 15 00,00,00 16 00,00,00 17 00,00,00 Dbus-A 18 00,00,00 取指指令 19 00,00,00 1A 00,00,00 1B 00,00,00 Dbus-Ri 1C 00,00,00 取指指令 1D 00,00,00 1E 00,00,00 1F 00,00,00 Dbus-IR2 20 00,00,00 IR2-Abus,RAM-Dbus-A 21 00,00,00 取指指令 22 00,00,00 23 00,00,00 Dbus-IR2 24 00,00,00 IR2-Abus,A-Dbus-RA
23、M 25 00,00,00 取指指令 26 00,00,00 27 00,00,00 A1 28 00,00,00 取指指令 29 00,00,00 2A 00,00,00 2B 00,00,00 AIR2 30 00,00,00 IR2-Abus,Dbus-PC 31 00,00,00 32 00,00,00 33 00,00,00 A-Dbus-DR1 34 00,00,00 RAM-Dbus-DR2 35 00,00,00 ALU-A 36 00,00,00 取指指令 37 00,00,00 A-Dbus-DR1 38 00,00,00 RAM-Dbus-DR2 39 00,00,00
24、ALU-A 3A 00,00,00 取指指令 3B 00,00,00 3C 00,00,00 3D 00,00,00 3E 00,00,00 3F 00,00,00 停机8.使用软件HKCPT的实现过程指令序列微地址M23-M0数据流程地址总线数据总线控制单元指令寄存器 开始00H4DFFFF取指指令00H5F00H5FHMOV A,#8217HDDFBFFDbus-A01H82H17H5FH18H4DFFFF取指指令02H9F18H9FHRRC A27HFFF1EFA1FFHFF27H9FH28H4DFFFF取指指令03F5FH28H5FHMOV A,#3217HDDFBFFDbus-A04
25、H32H17H5FH18H4DFFFF取指指令05HAFH18HAFHRLC A2BHFFE9EFAA07H18H17H5FH18H4DFFFF取指指令08HAFH18HAFHRCL A2BHFFE9EFA1R20AH08H2FHD3H30H4DFFFF(IR2)-Abus.Dbus-Pc0BH0CH30H0CHADD A,R003HFFFCF9A-Dbus-DR1FFHFFH03H0CH04HFF7F79Ri-Dbus-DR1FFH00H04H0CH05HFFFBA9ALU-Dbus-AFFH0DHO5HOCH06H4DFFFF取指指令0CHB7HO6HB7HJC 122FHD4FFFFDb
26、us-IR20DH12H2FHB7H30H4DFFFF(IR2)-Abus.Dbus-Pc12H0DH30H0DHADD A,R103HFFFCF9A-Dbus-DR1FFHFFH03H0DH04HFF7F79Ri-Dbus-DR1FFH00H04H0DH05HFFFBA9ALU-Dbus-AFFH0DH05H0DH06H4DFFFF取指指令13H8FH06H8FHSTA 4023HD5FFFFDbus-IR214H40F23H8FH24HBBFDFF(IR2)-Abus.A-Dbus-RAM40HFFH24H8FH25H4DFFFF取指指令15HFFH25HFFHHALT3FHFFDFFF停
27、机FFHFFH3FHFFHADD A,R1 指令的微单步结构截图从结构框图来看,这一步的操作是从上一条指令对应的内存单元读出指令字节送指令寄存器中,并将吓一条指令字节的地址送至PC中;这一步, 累加器A中的内容经过数据总线送入运算器ALU的DR1锁存器中;在这一步微单步中,将寄存器Ri中的内容先送至数据总线,再送至运算器ALU的DR2锁存器中;这一步是ADD A,R1 指令中的最后一步。这一步的操作就是将ALU中的运算结果送至数据总线,然后在送回累加器中。ADD A,R1 指令执行完毕。ADD A,R1 指令的微单步时序截图9课程设计总结经过这次的课程设计,我基本了解掌握了计算机组成原理实验平
28、台的使用方法。并且在完成设计任务,实现跳转指令的过程中,我学会了基本模型机系统分析与设计,建立了更清晰完整的整机概念。除了在理论知识上我学到了不少之外,这次的课程更锻炼了我的动手能力,这和平时的课程相比,提供了一个不一样的学习方式与学习机会,让我对于实验平台的使用有了更具体的了解。1.为了避免由于对于试验流程不熟悉,对于实验要用到的专业知识不了解这些情况的发生,在实验前,要好好预习,了解实验内容,明确试验流程。2.尽管做过准备工作,但在实验过程中还是遇到了一些我们没办法解决的问题。比如,第一天实际操作的时候,在运行中我们发现程序陷入了一个死循环,后来回去查阅一些资料后,找到了问题,并很好的处理
29、了这个问题。3.跳转指令相对于另外三个指令来说,指令的条数较多,微指令条数也相应的比较多。实验数据中数字很多,对于二进制与十六进制的转换也没有很熟练,所以在刚开始实验的时候很容易出错。所以我们在实验数据的记录上由一个人来记录,另一个人来核对,这样就提高了正确率与效率。而且在实验中,小组成员分工合作,每个人负责一个版块,这也培养了我们的团队合作精神。4.对于一些书本上的知识,我们还是没有能很好的和实验相结合。我们发现这个程序段的每两条指令的地址有的相差一,有的相差二。这个简单的问题,我们思考了很久,最后询问了老师,得到了结果。其实后来我们观察可以发现,由于指令操作数的个数不同,导致了每两条指令的地址差不一样。而指令的地址是受到指令字常的影响的,所以呈现出这样的现象。这些只是都是我们在树上学到的基础的知识,但在实际操作的时候,我们却没有想到。然后,仅仅只掌握书本上的知识是不够的,还要很好的运用所学,因此,以后要多动手,多操作,将理论与实际相结合。5.有时候因为机器的原因,不得不重复将实验做几遍,这就要求我们做实验的时候不仅要有耐心,还要细心的去发现存在的一些问题。
限制150内