当前位置:文档之家› (新)计算机组成原理课程设计——微程序设计报告书

(新)计算机组成原理课程设计——微程序设计报告书

课程设计指导教师评定成绩表指导教师评定成绩:指导教师签名: 年月日重庆大学本科学生课程设计任务书说明:1、学院、专业、年级均填全称,如:光电工程学院、测控技术、2003。

2、本表除签名外均可采用计算机打印。

本表不够,可另附页,但应在页脚添加页码。

计算机组成原理课程设计报告书一、设计目的:综合运用所学过的计算机原理知识,设计并实现较为完整的计算机。

掌握运用计算机原理知识解决问题和设计指令程序的能力。

通过课程设计的综合训练,培养实际分析问题,编写程序指令和动手能力、团队协作精神,帮助学生系统掌握计算机组成原理课程的主要内容。

二、设计要求:设计要求:用微程序控制器实现以下指令功能调用:CALL addr ;指令功能与80X86相同,addr是8位二进制地址返回:RET ;存储器到存储器传送:MOV memi , memj ; memi ←(memj), i<>j,memi内存单元地址带右移的加法运算:ADD Ri , Rj , N ; Ri ←(Ri)+(Rj)>>N ,Rj中内容不变N=0-7根据模型计算机的数据路径以及微程序控制器的工作原理,设计各指令格式以及编码,并实现各机器指令微代码,根据定义的机器指令,自拟编写包含以下指令的应用程序。

三、微程序控制器的原理:A.微程序控制的基本思想:1. 若干微命令编制成一条微指令,控制实现一步操作;2. 若干微指令组成一段微程序,解释执行一条机器指令;3. 微程序事先存放在控制存储器中,执行机器指令时再取出。

B.基本组成:控制存储器,微指令寄存器,微地址寄存器,地址转移逻辑框图:图1 微程序控制器组成原理框图控制存储器(CM):用来存放实现全部指令系统的微程序,位于CPU中。

它是一种只读型存储器,要求速度快,读出周期短微指令寄存器:存放当前由控制存储器读出的一条微指令信息,分为微地址寄存器和微命令寄存器两个部分。

其中微地址寄存器决定将要访问的下一条微指令的地址,微命令寄存器则保存一条微指令的操作控制字段和判别测试字段(P)的信息地址转移逻辑:自动完成修改微地址的任务。

微程序控制器:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作。

它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。

这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。

微程序存储在一种专用的存储器中,称为控制存储器,微程序控制器原理框图如图2所示图2 微程序控制器原理框图C.微程序控制计算机的工作过程:下面通过计算机启动、执行程序直到停机的过程,来说明微程序是如何控制计算机工作的:计算机加电以后,首先由复位信号(Reset)将开机后执行的第一条指令的地址送入PC内,同时将一条"取指"微指令送入微指令寄存器中,并将其他一些有关的状态位或寄存器置于初始状态。

当电压达到稳定值后,自动启动计算机,产生节拍电位和工作脉冲。

为保证计算机正常工作,电路必须保证开机后第一个机器周期信号的完整性,在该CPU周期末,产生开机后第一个工作脉冲。

然后计算机开始执行程序,不断地取出指令、执行指令。

程序可以存放在固定存储器中,也可以利用固化在只读存储器(ROM)中的一小段引导程序,将要执行的程序和数据从外部设备调入主存。

实现各条指令的微程序是存放在微程序控制器中的。

当前正在执行的微指令从微程序控制器中取出后放在微指令寄存器中,由微指令的控制字段中的各位直接控制信息和数据的传送,并进行相应的处理。

当遇到停机指令或外来停机命令后,应该待当前这条指令执行完毕后再停机或至少在本机器周期结束时停机。

要保证停机后,重新启动计算机能继续工作而且不出现任何错误。

四、总体设计(系统构成):实现一个简单的 CPU,并且在此CPU 的基础上,继续构建一个简单的模型计算机。

CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图3所示。

这个CPU 在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必须和主存挂接后,才有实际的意义,所以还需要在该CPU 的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。

图3基本CPU构成原理图程序计数器PC:程序计数器PC由两片4位可预置二进制计数器构成8位的计数器。

使用“可预置”是因为转移指令需要直接修改PC的值。

其电路原理如下图。

图3 程序计数器PC地址寄存器AR:地址寄存器保存访问存储器时的地址信息,由74LS273实现。

其电路原理如下图。

图4 地址寄存器AR指令寄存器IR:指令寄存器IR存放的是正在执行的机器指令,它作为指令译码器电路的输入,实现程序跳转控制。

其电路原理如下图。

图5 指令寄存器IR寄存器堆R0:寄存器R0使用的芯片是74LS374,该芯片是8个三态D-FF。

其R0电路原理如下图。

数据通路如图:图8数据通路图五、详细设计微程序功能设计: (1)指令设计助记符 机器指令码 说明ADD 0000 0000 ******** ******** (data1+data2 )<<1 ->R0 OUT 0011 0000 R0->OUTMOV 0100 0000 (addr1)->(addr2) LDI 0110 0000 ******** (data)->R0 CALL 0111 0000 ******** 调用子程序 RET: 1000 0000 子程序返回 ADD 是三字节指令,后面两个******** ********是要进行加法的数据,本指令的功能是数据一加上数据二之后左移一位,结果存在R0里;OUT 是输出;MOV 指令实现的是将内存地址一的数据传输到内存地址二,因为它单字节指令,所以微指令执行期间要靠IN 单元输入要操作的内存地址;LDI 是双字节指令,把后面的********送到R0里;R0-B 88R0(74LS374)T4LDR0 图6 寄存器R0CALL是调用子程序,也还是双字节指令,********是要调用子程序的入口地址;RET指令用在子程序的末尾,帮助子程序正确返回。

(2)微指令设计根据机器指令所实现的功能,画出微程序流程图。

微程序流程图:当全部微程序设计完毕后,将每条微指令代码化,下表即为将微程序流程图按微指令格式转化而成的“二进制微代码表”。

二进制微代码表地址十六进制高五位S3-S0 A字段B字段C字段MA5-MA000 000001 000000 0000 000 000 000 00000101 006D43 00000 0000 110 110 101 000011 03 107070 00010 0000 111 000 001 110000 30 006D49 00000 0000 110 110 101 001001 09 10100A 00010 0000 001 000 000 001010 0A 006D4B 00000 0000 110 110 101 001011 0B 10200C 00010 0000 010 000 000 001100 0C 04920D 00000 1001 001 001 000 001101 0D 039201 00000 0111 001 001 000 000001 34 186006 00011 0000 110 000 000 00011006 103007 00010 0000 011 000 000 00011107 186008 00011 0000 110 000 000 00100008 200401 00100 0000 000 010 000 000001 37 006D53 00000 0000 110 110 101 01001113 101014 00010 0000 001 000 000 01010014 006415 00000 0000 110 010 000 01010115 200C16 00100 0000 000 110 000 010110 16005341000000000101001101 000001 36 006D51 00000 0000 110 110 101 010001 11 103001 00010 0000 011 000 000 000001 38 006412 00000 0000 110 010 000 01001012 105141 00010 0000 101 000 101 000001 33 280401 00101 0000 000 010 000 000001实验准备:按下图连接电路实验接线图:将微程序和机器程序以指定的格式写入到以TXT 为后缀的文件中联机运行。

指令格式:微指令格式:机器指令格式:$M XX XXXXXX $P XX XX十六进制微指令代码十六进制机器指令代码十六进制地址十六进制地址标志符标志符根据流程图及指令格式,安排微指令地址的地址编码及微指令编码: ; //****** Start Of Main Memory Data ****** //$P 00 40 ;MOV$P 01 60 ;LDI$P O2 F1 ;DATA$P 03 70 ;CALL$P 04 06 ;ADDR$P 05 30 ;0UT$P 06 00 ;ADD$P 07 11 ;DATA$P 08 22 ;DA TA$P 09 30 ;OUT$P 0A 60 ;LDI$P 0B F1 ;DATA$P 0C 80 ;RET;; //******* End Of Main Memory Data ******* //; //**** Start Of MicroController Data **** //$M 00 000001 ; NOP$M 01 006D43 ; PC->AR,PC 加1$M 03 107070 ; MEM->IR, P<1>;ADD程序段$M 30 006D49 ;PC->AR PC+1$M 09 10100A ;M->A$M 0A 006D4B ;PC->AR PC+1$M 0B 10200C ;M->B$M 0C 04920D ;A+B->A$M 0D 039201 ;A<<1->R0;MOV程序段$M 34 186006 ;IN->AR$M 06 103007 ;MEM->R0$M 07 186008 ;IN->AR$M 08 200401 ;R0->MEM;CALL程序段$M 37 006D53 ;PC->AR PC+1$M 13 101014 ;MEM->A$M 14 006415 ;R0->AR$M 15 200C16 ;PC->MEM$M 16 005341 ;A->PC;LDI程序段$M 36 006D05 ;PC->AR,PC+1$M 11 103001 ;MEM->R0;RET程序段$M 38 006412 ;R0->AR$M 12 105141 ;MEM->PC;OUT指令$M 33 280401 ;R0->IO; //** End Of MicroController Data **//联机:选择联机软件的“【转储】—【装载】”功能,在打开文件对话框中选择上面所保存的文件,软件自动将机器程序和微程序写入指定单元。

相关主题