计算机组成原理课程设计带进位运算指令的实现.doc
学 号: 0120810340113课 程 设 计课程名称计算机组成原理题 目带进位运算指令的实现学 院计算机科学与技术学院专 业计算机科学与技术班 级姓 名指导教师2010年1月10日目 录课程设计任务书11、设计原理11.1 实验原理11.2 实验目的11.3 模型机的逻辑框图21.4 指令类型及格式31.5 微指令与微程序介绍41.6 后续微地址的产生及微程序入口地址的形成52、调试过程与数据记录52.1 源程序代码5 2.2 指令码6 2.3 微程序6 2.4 微单步运行过程7 2.5 时序图103、设计心得114、参考文献12课程设计任务书学生姓名: 赵旭林 专业班级: 计算机 指导教师: 马保才 工作单位:计算机科学与技术学院题 目: 基本模型机的设计带进位运算指令的实现初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中带进位运算指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流程)。(10)课程设计总结(设计的特点、不足、收获与体会)。时间安排: 周一:熟悉相关资料。 周二:系统分析,设计程序。 周三、四:编程并上实验平台调试 周五:撰写课程设计报告。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日计算机组成原理课程设计 - 带进位运算指令的实现1设计原理1.1 实验原理在以往各个模块实验中,各模块的控制信号都是由实验者手动产生的。而在真正的实验系统中,模拟机的运行是在微程序的控制下,实现特定指令的功能。在本实验平台中,模型机从内存取出、解释、执行机器指令都将由微指令和与之相配合的时序来完成,即1条机器指令对应1个微程序。本次实验完成,依靠判断进位位CY是否溢出,若低位位运算有溢出,则将结果存入低地址,并且在两高位运算时,将低位的进位值也参与运算,若高位运算溢出,则不在主存RAM中给予保存。实验提供了四条带进位的运算指令:RRC A 将A寄存器中的内容带进位位一起循环右移RLC A 将A寄存器的的内容带进位位一起循环左移ADD A, Ri 将A寄存器的内容与Ri的内容相加,如果加法溢出将进位到CYJC addr 条件跳转指令,如果进位位CY溢出,跳转到addrJMP addr 无条件跳转指令,跳转到addr1.2设计目的 1. 掌握了各个单元模块的工作原理,进一步将其组成完整的系统,构成一台基本的模型计算机。 2. 在本实验中,我们将规划读写内存、寄存器、数值计算等功能,并且编写相应的微程序。请具体上机调试各个模块单元以便进一步掌握整机的概念。 3. 本实验是为了实验一组4位16进制数的运算,例如R1R0,将其中保存的数据作为一组表示一个整体的数,来参与运算,如R1=55H, R0=66H。则认为R1R0为5566H来参与与其它4位16进制数的运算。并将得出的结果存在主存中两个连续的单元中,高位存高地址,低位存低地址。1.3 模型机的逻辑框图1.4 指令类型及格式1. 指令类型1.算术/逻辑运算类指令: 如:加法,减法,取反,逻辑运算 ADD A, Ri SUB A, Ri2.移位操作类指令:带进位或不带进位的移位指令 RRC A3.数据传送类指令:CPU内部寄存器之间数据传递MOV A,RiMOV Ri,A4.程序跳转指令:跳转指令分为无条件跳转和有条件跳转指令 JMP addr 无条件跳转 JC addr CY=1 时跳转5. 存储器操作类指令:存储器读/写指令。把内存某单元内容写入寄存器中或把寄存器的内容写入存储器,如: LDA addr STA addr STA addr (A)-> addr2. 指令类型1.直接地址寻址: 双字节指令: LDA addr (addr)-> A STA addr (A)-> addr1716151413121110第1字节 操作码 A7A6A5A4A2A2A1A0第2字节 操作数地址addr 2.寄存器直接寻址:指令字节中含有寄存器选择码,决定选择哪个寄存器进行操作。如:单字节指令 : MOV A,Ri (Ri)->A1716151413121110 单字节 操作码与Ri选择码如:双字节指令: MOV Ri,#data data-> Ri1716151413121110第1字节 操作码与Ri选择码第2字节 dataD7D6D5D4D2D2D1D0 3.寄存器间接寻址:如:单字节指令: MOV A,Ri (Ri)->A 1716151413121110 操作码 Ri选择码 4.立即数寻址: 如: MOV A,#data data-> A MOV Ri,#data data-> Ri1716151413121110第1字节 操作码与Ri选择码D7D6D5D4D2D2D1D0第2字节 data1.5 微指令与微程序介绍 在计算机中,一条指令功能是由控制部件通过控制线向执行部件发出各种控制命令,执行部件接受命令时,按一定的次序执行一系列最基本操作完成。这些控制命令通常称为微命令,而最基本的操作称为微操作。1. 微指令在微操作控制的计算机中,将在CPU周期中使计算机实现一定操作功能的一组微命令的集合称为微指令。微指令是为实现某个操作功能而发出的控制信号的有关信息形成的。一条指令通常分为若干条微指令,按次序执行这些微指令,就可以实现指令的功能。微程序2. 微程序计算机的程序由指令序列构成。而计算机每条指令的功能均由指令序列解释完成,这些微指令序列的集合称为微程序。 1.6 后续微地址的产生以及微程序入口地址的形成微地址的运行顺序为下地址确定法,即采用计数增量方法,每条微指令执行过后微地址自动加1,指向下一条微指令地址。例如:确定了一条程序的微程序入口地址为01H,那么当执行完01H这条微指令后微地址加1,指向02H微地址。微地址寄存器由2片74LS161组成,当模型机在停止状态下,微地址被清零。当实验平台开始运行时,微地址从00H开始运行。且00H放置一条取指指令,根据程序开始地址从内存中读出第一条指令。2、 数据记录2.1 源程序代码带进位运算指令的实现MOV A,#81RRC AMOV A,#18MOV R0,#40MOV A,#18RLC AADD A,R0JC 10JMP 0ASTA 20HALT2.2 指令码 图表2 源程序中每条指令对应的指令码内存地址指令助记符指令码说明00HMOV A, #815FH立即数81H->A01H81H无效02HRRC A9FHA>>103HMOV A,#185FH立即数18H->A04H18H05HRLC AAFHA<<106HMOV R0,#406CH立即数40H->寄存器R007H40H08HMOV A,#185FH立即数18H->A09H18H0AHRLC AAFHA<<10BHADD A,R00CH(A)+(R0)->A0CHJC 10B7HCY有进位,跳转到0FH0DH10H0EHJMP 0ABFH跳转到0AH0FH0AH10HSTA 208FH将A的内容写入RAM地址20H11H20H12HHALTFFH停机2.3 微程序微程序的执行过程:0000 4D ,FF ,FF 取指指令 0017 DD ,FB ,FF DBUS>A 0018 4D ,FF ,FF 0027 FF ,F1 ,EF A>>1 0028 4D ,FF ,FF 取指指令 0017 DD ,FB ,FF DBUS>A0018 4D ,FF ,FF 002B FF ,E9 ,FF A<<1 002C 4D ,FF, FF 001B DD ,BF, FF DBUS>RI001C 4D ,FF, FF RI>DBUS>A0017 DD ,FB ,FF DBUS>A0018 4D ,FF ,FF002B FF ,E9 ,FF A<<1002C 4D ,FF, FF0003 FF ,FC, F9 A->BUS->DR10006 4D ,FF, FF 取指002F D4, FF ,FF DBUS->IR20030 4D, FF, FF IR2->ABUS002F D4 ,FF ,FF DBUS>PC003F FF ,DF ,FF 停机2.4 微单步运行过程 图表3 微单步运行过程微地址数据流程指令码数据总线地址总线操作数寄存器OOH取指微指令RAM->BUS->IR15FH00HIR1 = 5FHMOV A, #8117HBUS->A81H01HA=81H18H取指微指令 RAM->BUS->IR19FH02HIR1=9FHRRC A27HA>>140HA=40,CY溢出28H取指微指令 RAM->BUS->IR15FH03HIR1=0CHMOV A,#1817HBUS->A18H04HA=18H18H取指微指令 RAM->BUS->IR1AFH05HIR1=AFHRLC A2BHA<<131HA=31H,CY无溢出2CH取指微指令 RAM->BUS->IR16CH06HIR1=6CHMOV A,#401BHBUS->寄存器R040H07HR0=40H1CH取指微指令 RAM->BUS->IR15FH08HIR1=5FHMOV A,#182BHBUS->A18H09HA=18H2CH取指微指令 RAM->BUS->IR1AFH0AHIR1=AFHRLC A2BHA<<130HA=30H2CH取指微指令 RAM->BUS->IR10CH0BHIR1=0CHADD A, R003HA->DR130HDR1=30H04HR0->DR240HD32=40H05HALU->A70HALU=70 CY无溢出06H取指微指令 RAM->BUS->IR1B7H0CHIR1=B7HJC 0F2FHRAM->BUS->IR210H0DHIR2=10H30H取指微指令 RAM->BUS->IR1BFHOEHCY无溢出JMP 0A2FHRAM->BUS->IR20AH0FHIR2=OAH30H取指微指令 RAM->BUS->IR1AFH0AH跳转到OAH2BHA<<1E0HA=E0H2CH取指微指令 RAM->BUS->IR10CH0BHIR1=0CHADD A, R003HA->DR1E0HDR1=E0H04HR0->DR240HDR2=40H05HALU->A20HALU=70 CY无溢出06H取指微指令 RAM->BUS->IR1BFH0CHIR1=B7HJC 0FJC 0F2FHRAM->BUS->IR210H0DHIR2=10H30H取指微指令 RAM->BUS->IR18FH10HCY有溢出STA 2023HRAM->BUS>IR220H11HIR2=20H24HA->RAM(20H)20H20HRAM(20)=2025H取指微指令 RAM->BUS->IR18FH10HCY有溢出HALT3FH停机停机2.5 时序图PLS1: 微地址寄存器的工作脉冲,用来设置微程序的首地址及微地址加1.PLS2: PC计数器的工作脉冲,根据微指令的控制实现PC计数器的首地址及微地址和重置PC计数器(跳转指令)等功能。PLS3: 把24位微指令打入3片微指令锁存器。PLS4: 把当前总线上的数据打入微指令选通的寄存器中。典型代码的时序图如下:0018 微指令(取指微指令 RAM->BUS->IR1)的时序图如下:0003 微指令(A->DBUS->锁存器DR1)的时序图如下3、设计心得1. 次的课程设计是当场完成当场验收,所以时间比较紧。由于之前的准备不足,导致了刚开始做的时候出现了很多问题,包括最基本的连线,软件操作都出现了一些基本错误。这让我充分意识到在做课程设计之前要做好充分的准备工作,包括了解原理、流程、操作步骤等等。这样在做实验的时候就不会手忙脚乱而出现很多基本的错误了。2. 在上计算机组成原理课程的时候都是学习原理方面的知识,而课程设计需要运用平时学过的知识来实践。这次课程设计让我明白了平时不应该死读书,而是应该多把学到的知识运用到实践当中,活学活用才能最根本的掌握知识。3. 这次的课程设计激发我的学习兴趣,因为计算机组成原理是一门及其重要的课程,而仅仅看书只能学会一些理论方面的知识,会感觉比较枯燥乏味。通过实践动手操作,既能更加深刻的掌握知识,也能提升学习方面的兴趣。由于计算机组成原理涉及到得大多是硬件方面的知识,而自己之前对硬件了解的不是很多,也不是很感兴趣,但计算机专业学习硬件是必须的而且很有必要,所以以后需要在这方面更加下一番功夫,加深自己对硬件方面的了解。 4、参考文献1 薛胜军,计算机组成原理(第二版),华中科技大学出版社, 2005年7月2 唐朔飞,计算机组成原理, 北京高等出版社, 2000