课程设计说明书计算机组成原理课程设计院系:计算机科学与工程学院专业班级:学号:学生姓名:指导教师:2014年12月26日安徽理工大学课程设计(论文)任务书2014年12月1日安徽理工大学课程设计(论文)成绩评定表摘要计算机组成原理课程设计课题是基本模型机的设计与实现。
利用CPU与简单模型机来实现计算机组成原理课程设计,编写指令的应用程序,用微程序控制器实现一系列的指令功能,最终达到将理论与实践相联系。
本次设计完成了相关指令的格式以及编码的设计,实现了机器指令微代码,完成具有一定功能的程序。
本次课程设计的题目是输入一个16位的数,对其进行循环左移。
通过设计流程图,编写机器指令,微指令和控制信号程序。
首先向存储器中装入数据和程序,然后检查写入是否正确,启动程序执行。
另外,还需设计微程序:本课程设计要求实现机器指令:MOVV(传送),RU(输入),HUO(逻辑或),JIA(加法运算),JIAC(带进位的加法),TZ(判断A寄存器里的内容是否为零),TIAO(跳转)。
以上各微指令设计完毕后,用设计好的指令实现逻辑运算,连接线路在CPTH计算机组成原理教学实验箱运行程序,并将实验结果显示输出。
本次课程设计偏重于对计算机工作的原理和计算机微机的指令系统学习和深入的了解。
对以后的学习打下一个好的基础。
这一课题的实现不仅使我们对各种微指令有了熟练的掌握,更对以后的学习、工作中有深远的影响。
关键词:微指令,机器指令,循环左移目录1原理介绍 (1)1.1 cpu功能与原理 (1)1.2指令周期 (1)1.3微程序控制 (1)1.4微程序控制原理 (2)1.5微程序控制器 (2)2实验环境介绍 (3)2.1设计背景分析 (3)2.2设计目的与要求 (5)3 系统设计 (6)3.1.不带进位的循环左移 (6)3.2机器指令集的编写与功能 (6)3.3程序系统分析 (7)3.4程序微指令分析 (8)3.5实验结果 (10)4 实验总结 (13)4.1 设计体会 (13)4.2 系统改进 (13)5 参考文献 (14)1原理介绍1.1 cpu功能与原理数据缓存寄存器(DR)数据缓存寄存器用来暂时存放ALU的运算结果,或由数据存储器读出的一个数据字,或来自外部接口的一个数据字。
指令寄存器(IR)指令寄存器用来保存当前正在执行的一条指令,当执行一条指令时,先把它从指令cache存储器读出,然后再传送至指令寄存器。
程序计数器(PC)为了保证程序能够连续的执行下去,CPU必须具有某些首段来确定下一条指令的地址。
数据地址寄存器(AR)数据地址寄存器用来保存当前CPU所访问的cache存储器单元的地址.通用寄存器(R0~R3)当算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。
状态字寄存器(PSW)状态字寄存器保存由算数指令和逻辑指令运算或测试结果建立的各种条件代码。
1.2指令周期计算机所以能自动的工作,是因为CPU能从存放程序的内存里取出一条指令并执行这一条指令。
例如MOV指令的指令周期,MOV是一条RR型指令,它需要两个CPU周期,其中一个是取指周期,一个是执行周期。
取指周期中完成三件事:从指存取出指令,对程序计数器加1,以便为取下条指令做好准备,对指令操作码进行译码或测码。
执行周期操作控制器送出控制信号到通用寄存器,操作控制器送出控制信号到ALU,指定ALU做传送工作,操作控制器送出控制信号,打开ALU输出三态门,操作控制信号送出控制信号,将DBUS上的数据打入到数据缓冲寄存器中,操作控制信号送出控制信号,将数据韩冲寄存器打入到目标寄存器中。
1.3微程序控制微程序控制器同硬布线控制器相比较,具有规整性,灵活性,可维护性等一系列优点,在计算机系统中,微程序设计技术是利用软件方法来设计的一门技术。
微程序控制思想,就是仿照通常的解题程序方法,把操作控制信号编程所谓的微指令,存放到一个只读存储器中,当机器运行时,有一条一条的读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应的部件执行所规定的操作呢。
由于数据通路的结构关系,微操作可分为相容的和互斥的两种:互斥的微操作,是指不能同时或不能在同一个节拍内并行执行的微操作。
相容的微操作,是指能够同时或在同一个节拍内并行执行的微操作。
系列微指令的有序集合就是微程序。
一段微程序对应一条机器指令。
微地址:存放微指令的控制存储器的单元地址。
1.4微程序控制原理控制存储器(UCM):这是微程序控制器的核心部件,用来存放微程序。
其性能(包括容量、速度、可靠性等)与计算机的性能密切相关。
微指令寄存器(UIR):存放从UCM取出的正在执行的微指令,它的位数同微指令字长相等。
微地址形成部件:用来产生初始微地址和后继微地址,以保证微指令的连续执行。
微地址寄存器(UMAR) :它接受微地址形成部件送来的微地址,为下一步从μCM中读取微指令作准备。
1.5微程序控制器模型机作为一个整体来工作的,所有的微程序控制信号由微程序存储器UM输出,而不是由开关输出,在进行试验之前,先用8芯电缆接J1和J2,是系统处于非手动状态,这样试验仪的监控系统会自动打开uM的输出允许,由软件控制程序实现单指令执行,单微指令执行等,设计微指令应当追求的目标,有利于缩短微指令的长度,有利于缩小CM的容量,有利于提高微程序的执行速度。
2实验环境介绍2.1设计背景分析2.1.1 模型机指令集分析本次课程设计是在DJ-CPT816计算机组成原理实验仪和仿真软件上进行的。
该模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数,指令码的最低两位用来选择R0-R3寄存器。
在微程序控制方式下,用指令码作为微地址来寻址微程序存储器,找到执行该指令的微程序。
在本模型机中,一条指令最多分为四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24位控制位以控制寄存器的输入输出,选择运算器的运算功能,存储器的读写。
简言之,这次设计,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一条微程序,一条微程序又有若干微指令组成,一条微指令的功能由24位操作信号(即控制位)实现。
24位控制位分别介绍如下:XRD:外部设备读信号,当给出个外设的地址后,输出此信号,从指定外设读数据。
EMWR:程序存储器EM写信号EMRD:程序存储器EM读信号PCOE:将程序计数器PC的值送到地址总线ABUS上EMEN:将程序存储器EM与数据总线DBUS接通,有EMWR和EMRD决定是将DBUS数据写入EM中,还是从EM读出数据到DBUSIREN:将程序存储器EM独处的数据打入指令寄存器IR和微指令计数器uPCEINT:中断返回时清除中断响应和中断请求标志,便于下次中断。
ELP:PC打入允许,与指令寄存器的IR2.,IR3位结合,控制程序跳转。
MAREN:将数据总线DBUS上数据打入地址寄存器MARMAROE:将地址寄存器MAR的值送到地址总线ABUS上OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里STEN:将数据总线DBUS上数据存到堆栈寄存器里RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位FEN:将标志位存入ALU内部的标志寄存器X2,X1,X0三位组合来译码选择将数据送到DBUS上的哪个寄存器,见表2-1 WEN:将数据总线DBUS的值打入工作寄存器W中AEN:将数据总线DBUS的值打入累加器A中S2,S1,S0三位组合决定ALU做何种运算,见表2-22.1.2 模型机寻址方式分析模型机的寻址方式分四种:(1)累加器寻址:操作数为累加器A,例如“CPL A”是将累加器A 值取反,还有些指令是隐含寻址累加器A,例如“OUT”是将累加器A的值输出到输出端口寄存器OUT。
(2)寄存器寻址:参与运算的数据在R0-R3 的寄存器中,例如“ADD A,R0”指令是将寄存器R0 的值加上累加器A的值,再存入累加器A中。
(3)存储器直接寻址:参与运算的数据在存储器EM 中,数据的地址为指令的操作数。
例如“AND A,40H”指令是将存储器EM 中40H 单元的数据与累加器A的值做逻辑与运算,结果存入累加器A。
(4)立即数寻址:参与运算的数据为指令的操作数。
例如“SUB A,#10H”是从累加器A中减去立即数10H,结果存入累加器A。
2.2设计目的与要求(1)在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本模型计机。
(2)为其定义机器指令,并编写相应的微程序,具体上机调试掌握整机概念。
(3)掌握微程序控制器的组成原理。
(4)编写自己的指令集,并用此指令集来实现编程(5)掌握微程序的编写、写入,观察微程序的运行。
(6)通过课程设计,使学生将掌握的计算机组成基本理论应用于实践中,在实际操作中加深对计算机各部件的组成和工作原理的理解,掌握微程序计算机中指令和微指令的编码方法,深入理解机器指令在计算机中的运行过程。
本课程设计要求实现机器指令:MOVV(传送),RU(输入),HUO(逻辑或),JIA(加法运算),JIAC(带进位的加法),TZ(判断A寄存器里的内容是否为零),TIAO(跳转)。
要包括直接寻址,立即数寻址,寄存器寻址,间接寻址四种寻址方式。
最后要在设计的指令系统基础上,编写程序实现16位数不带进位的循环左移。
3 系统设计3.1.不带进位的循环左移16位数的循环左移原理图3-1如下:程序设计思路:一个16位数不带进位的循环左移,相当于该数与自身相加,程序流程图3-2如下:图3-2 程序框图3.2机器指令集的编写与功能(1)按照系统分析中得到的指令集,在DJ-CPT816实验软件中新建指令系统,生成.mac文件和.mic文件;(2)在DJ-CPT816实验软件中新建.asm文件,输入程序:LOOP1:RUMOVV R1,ARUMOVV R0,ALOOP:MOVV A,R0JIA A,R0MOVV R0,AMOVV A,R1JIAC A,R1MOVV R1,AHUO A,R0TZ LOOP1TIAO LOOP3.3程序系统分析(1)程序开始执行一条取指的微指令,读入程序第一条指令。
LOOP1:RU //手动输入一个数,存入A寄存器中MOVV R1,A //将A寄存器的内容存入R1寄存器作为16位数的高8位 RU //手动输入一个数,存入A寄存器中MOVV R0,A //将A寄存器的内容存入R0寄存器作为16位数的低8位LOOP:MOVV A,R0 //将R0寄存器的数即第八位存到A寄存器JIA A,R0 //将低八位数与自身相加,即*2MOVV R0,A //将相加后的结果回存到R0寄存器,作为新的第八位MOVV A,R1 //将R1寄存器的数即高八位存到A寄存器JIAC A,R1 //将低八位数与自身以及低位相加送来的进位相加MOVV R1,A //将相加后的结果回存到R1寄存器,作为新的高八位HUO A,R0 //将A寄存器的内容即高八位数与R0寄存器即第八位数相或TZ LOOP1 //若相或的结果为0则跳转至Loop1,重新输入新的数据进行移位TIAO LOOP //否则跳转至Loop继续左移(2)将程序另存为.asm文件,再汇编成机器码,调试窗口会显示出程序、机器码、反汇编指令,见表3-1。