微程序控制和设计知识分享
- 格式:doc
- 大小:189.50 KB
- 文档页数:13
微程序控制器的设计与实现一、引言微程序控制器是一种用于指令执行的高级控制器,它通过微指令序列来控制计算机的操作。
本文将介绍微程序控制器的设计与实现方法,包括微程序的设计原理、控制存储器的组织结构、微指令的编码和执行过程等。
二、微程序设计原理微程序设计是一种将指令的操作码映射为一系列微指令的方法。
每个微指令对应着计算机的一条基本操作,例如存储器读取、算术运算等。
微指令序列通过微程序计数器来控制,实现指令的顺序执行。
三、控制存储器的组织结构控制存储器是存储微指令序列的重要组成部分。
它通常采用的是RAM (Random Access Memory)的结构,以实现对微指令的随机读取。
控制存储器的地址由微程序计数器提供,通过地址译码器来选择对应的微指令。
四、微指令的编码微指令的编码是将指令的操作码映射为一系列控制信号的过程。
常见的编码方式有水平编码和垂直编码两种。
水平编码将每个控制信号独立编码,占用较多的位数;垂直编码则将多个控制信号合并编码,占用较少的位数。
根据具体的设计需求,可以选择适合的编码方式。
五、微指令的执行过程微指令的执行过程包括指令的获取、解码和执行三个阶段。
指令的获取是通过微程序计数器提供的地址从控制存储器中读取相应的微指令;指令的解码是将微指令中的控制信号解码为具体的操作;指令的执行是根据解码后的控制信号执行相应的操作,例如读取存储器、进行算术运算等。
六、实现微程序控制器的步骤实现微程序控制器的步骤包括微指令的设计、控制存储器的编程、控制信号的生成等。
首先,根据指令集的要求设计微指令的格式和编码方式;然后,根据微指令的格式编程控制存储器,将微指令序列存储其中;最后,根据微指令的编码生成相应的控制信号,控制计算机的操作。
七、实例分析以一个简单的加法指令为例,介绍微程序控制器的实现过程。
首先,设计微指令的格式,包括操作码、源操作数、目的操作数等字段;然后,编程控制存储器,将微指令序列存储其中;最后,根据微指令的编码生成相应的控制信号,例如读取源操作数、读取目的操作数、进行加法运算等。
实验10 微程序控制器设计实验报告姓名:X XX 学号:X XX 专业:计算机科学与技术课程名称:计算机组成同组学生姓名:无实验时间:实验地点:指导老师:XXX一、实验目的和要求1.掌握微程序控制原理2.掌握微程序控制器的设计方法二、实验内容和原理实验内容:1.设计一个微程序控制单元并进行仿真实验原理:1.微程序的原理:●在多时钟CPU设计的实验中,所有的控制信号均根据操作码以及所处的时钟周期,由组合逻辑的方式产生各个状态下的控制信号。
●微程序是将CPU每条指令和所有时钟的控制信号,预先以二进制形式写在控制存储器中。
●多时钟周期的每个状态都对应一组控制信号。
●每条指令都有若干个状态对应若干组控制信号。
●微指令按一定顺序存放在控制存储器中。
2.工作原理图3.微程序控制逻辑图4.微指令及其控制码5.控制存储器内容三、主要仪器设备1.Spartan-III开发板1套2.装有ISE的PC机1台四、操作方法与实验步骤实验步骤:1.创建新的工程和新的源文件2.编写verilog代码(包括以下模块top,MicroCtrl,pbdebounce,time_1ms)3.对程序进行波形仿真4.编写UCF引脚文件,通过编译。
5.. 生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能实验代码:Top.vmodule top(input system_clk,input clk_i,input rst_i,output [3:0] anode4,output [7:0] segment4,output reg [7:0] led);wire clk;wire rst;reg [2:0] pc;reg [5:0] opcode;wire [17:0] rom_out;pbdebounce p0(system_clk, clk_i, clk);pbdebounce p1(system_clk, rst_i, rst);initial beginpc=0;endalways @ (posedge clk or posedge rst) beginif (rst==1)pc=0;else if (rom_out[1:0]==0)pc=pc+1;endalways @ * begincase (pc)0: opcode = 6'b000000; //R-type1: opcode = 6'b100011; //LW2: opcode = 6'b101011; //SW3: opcode = 6'b000100; //BEQ4: opcode = 6'b000010; //Jdefault: opcode = 6'b000000;endcaseendMicroCtrl MicroCtrl(clk, rst, opcode, rom_out);display display(system_clk, rom_out[17:2], anode4, segment4); always @ * beginled[1:0] = rom_out[1:0];led[2]=0;case (pc)0: led[7:3] = 5'b10000; //R-type1: led[7:3] = 5'b01000; //LW2: led[7:3] = 5'b00100; //SW3: led[7:3] = 5'b00010; //BEQ4: led[7:3] = 5'b00001; //Jdefault: led[7:3] = 5'b11111;endcaseendendmodulempc=0;endalways @ * begincase (mpc)0: rom_out={16'h0851,2'b11};1: rom_out={16'h1800,2'b01};2: rom_out={16'h3000,2'b10};3: rom_out={16'h00C0,2'b11};4: rom_out={16'h0300,2'b00};5: rom_out={16'h00A0,2'b00};6: rom_out={16'hA000,2'b11};7: rom_out={16'h0500,2'b00};8: rom_out={16'h6006,2'b00};9: rom_out={16'h0009,2'b00};default: rom_out=0;endcaseendalways @ (posedge clk or posedge rst) begin if (rst==1)mpc=0;else begincase (rom_out[1:0])0: mpc=0;3: mpc=mpc+1;1: case (opcode)6'b000000: mpc=6; //R-type6'b100011: mpc=2; //LW6'b101011: mpc=2; //SW6'b000100: mpc=8; //BEQ6'b000010: mpc=9; //Jdefault: mpc=0;endcase2: case (opcode)6'b100011: mpc=3; //LW6'b101011: mpc=5; //SWdefault: mpc=0;endcaseendcaseendendendmoduleDisplay.vmodule display(input wire clk,input wire [15:0] digit,//显示的数据output reg [ 3:0] node, //4个数码管的位选output reg [ 7:0] segment);//七段+小数点reg [3:0] code = 4'b0;reg [15:0] count = 15'b0;always @(posedge clk) begincase (count[15:14])//与(count[1:0])的不同?起到分频的作用2'b00 : beginnode <= 4'b1110;code <= digit[3:0];end2'b01 : beginnode <= 4'b1101;code <= digit[7:4];end2'b10 : beginnode <= 4'b1011;code <= digit[11:8];end2'b11 : beginnode <= 4'b0111;code <= digit[15:12];endendcasecase (code)4'b0000: segment <= 8'b11000000;4'b0001: segment <= 8'b11111001;4'b0010: segment <= 8'b10100100;4'b0011: segment <= 8'b10110000;4'b0100: segment <= 8'b10011001;4'b0101: segment <= 8'b10010010;4'b0110: segment <= 8'b10000010;4'b0111: segment <= 8'b11111000;4'b1000: segment <= 8'b10000000;4'b1001: segment <= 8'b10010000;4'b1010: segment <= 8'b10001000;4'b1011: segment <= 8'b10000011;4'b1100: segment <= 8'b11000110;Timer_1ms.vmodule timer_1ms(input wire clk,output reg clk_1ms);reg [15:0] cnt;initial begincnt [15:0] <=0;clk_1ms <= 0;endalways@(posedge clk)if(cnt>=25000) begincnt<=0;clk_1ms <= ~clk_1ms;endelse begincnt<=cnt+1;endendmodule五、实验结果与分析1. 仿真结果如下(仿真时间较长,分2张图展示):Ox00c00 0x0300 2’b003.程序运行成功后,将代码下载到实验板spartan3上验证按动按钮,发现数码管上显示的数值即仿真输出码的[17:2]位,且出现顺序一致,说明程序成功。
微程序控制器的设计与实现微程序控制器的设计原理是基于指令的操作码来进行控制的。
在计算机系统中,每个指令都有一个唯一的操作码,微程序控制器根据这个操作码来判断下一步应该执行的动作。
因此,微程序控制器的首要任务是建立一套指令操作码和对应控制动作的映射关系。
微程序控制器的设计可以分为两个阶段,即微程序的编写和微程序控制器的实现。
在微程序编写阶段,需要根据计算机系统的指令集架构和系统的需求来编写每一条指令的微程序。
在微程序控制器的实现阶段,先将每条指令的微程序编码成微指令,然后将这些微指令存储在微程序存储器中。
当执行一条指令时,微程序控制器会根据指令的操作码在微程序存储器中找到对应的微指令,并执行相应的控制动作。
微程序控制器的实现方法有多种,其中最常见的是使用ROM(只读存储器)作为微程序存储器。
ROM的每个地址存储一个微指令,可以根据操作码的位数确定ROM的大小。
此外,还可以使用RAM(随机存储器)作为微程序存储器,以便在微程序运行中修改微指令。
为了提高微程序控制器的执行效率,还可以采用流水线技术,将微程序的执行过程划分为多个阶段,并在流水线中同时执行多条指令的微程序。
微程序控制器的设计与实现对计算机系统的性能有着重要的影响。
首先,微程序控制器可以将指令执行过程分解成多个微指令,使得每个微指令只包含一个简单的控制动作,从而提高了指令执行的精确性和可靠性。
其次,微程序控制器对指令执行的控制粒度更细,可以实现更灵活的指令调度和并行处理,提高了指令级并行性。
此外,微程序控制器还可以根据指令的类型、频率和资源需求等特点,进行自适应的指令调度和资源分配,进一步提高系统的性能。
在评价微程序控制器的效果时,需要考虑其控制精确性、执行效率、资源利用率等方面的指标。
控制精确性是指微程序控制器是否能够准确执行指令的操作,以及是否能够正确处理异常情况和中断请求。
执行效率是指微程序控制器每秒钟能够执行多少条指令,衡量了微程序控制器的性能优劣。
EDA第六次实验日志微程序控制器实验实验预习:1.微程序控制器的组成和工作原理是什么?2.微程序、微指令、微命令之间有什么关系?3.微指令、微程序如何设计与调试?预习解答:1. 微程序控制器的组成和工作原理是什么?微程序控制器的原理图如图所示。
微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。
(1)控制寄存器控制寄存器用来存放实现全部指令系统的所有微程序,它是一种只读型存储器。
一旦微程序固化,机器运行时则只读不写。
其工作过程是:读出一条微指令并执行;重复上面动作知道微程序结束。
读出一条微指令并执行微指令的时间总和称为一个微指令周期。
通常在串行方式的微程序控制器中,微指令周期就是只读寄存器是的工作周期。
控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定,即取决于微程序的数量。
对控制寄存器的要求是读出周期要短,因此通常采用双极型半导体只读寄存器。
(2)微指令寄存器微指令寄存器用来存放由控制器读出的一条微指令信息。
其中微指令寄存器决定将要访问的下一条微指令的地址,而微命令寄存器则保存一条微指令的操作控制字段和判别测试字段的信息。
(3)地址转移逻辑在一般情况下,微指令由控制存储器读出后直接给出下一条微指令的地址,通常简称为微地址,这个微地址信息就存放在微地址寄存器中。
如果微程序不出现分支,那么下一条微指令的地址就直接由微地址寄存器给出,当程序出现分支时,意味着微程序出现条件转移,在这种情况下,通过判别测试字段P和执行内部的“状态条件”反馈信息,去修改微地址寄存器的内容;并按照改好的内容去读下一条微指令。
地址转移逻辑就承担自动完成修改微地址的任务。
其工作原理分为:一、将程序和数据通过输入设备送入存储器;二、启动运行后,从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事;三、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回到存储器指定的单元中;四、运算任务完成后,就可以根据指令将结果通过输出设备输出。
微程序控制器的设计与实现微程序控制器是一种基于微程序的控制器,它通过微指令序列来控制计算机的执行流程。
本文将详细介绍微程序控制器的设计与实现。
一、引言微程序控制器是计算机中重要的控制单元之一,它负责将指令转换为微指令序列,并控制计算机的执行流程。
微程序控制器的设计与实现是计算机体系结构中的关键问题之一,本文将从微程序控制器的设计原理、设计方法和实现步骤等方面进行详细介绍。
二、微程序控制器的设计原理1. 微程序控制器的基本原理微程序控制器是一种通过微指令序列来控制计算机的执行流程的控制器。
它将指令的操作码作为输入,通过查找微程序存储器中的微指令序列,生成控制信号,控制计算机的各个部件进行相应的操作。
2. 微程序控制器的工作原理微程序控制器的工作原理是将指令的操作码作为输入,通过查找微程序存储器中的微指令序列,生成控制信号,控制计算机的各个部件进行相应的操作。
微程序存储器中存储了一系列微指令,每个微指令对应一个操作,通过顺序执行这些微指令,实现对计算机的控制。
三、微程序控制器的设计方法1. 微程序控制器的设计流程微程序控制器的设计流程包括以下几个步骤:(1)确定指令集和操作码:根据计算机的需求确定指令集和操作码。
(2)设计微指令格式:根据指令集和操作码设计微指令的格式,包括操作类型、操作数等。
(3)设计微指令序列:根据指令集和操作码设计微指令序列,确定每个微指令对应的操作。
(4)设计微程序存储器:根据微指令序列设计微程序存储器,将微指令序列存储在微程序存储器中。
(5)生成控制信号:根据微指令序列和输入的操作码,通过查找微程序存储器,生成相应的控制信号。
(6)验证和调试:对设计的微程序控制器进行验证和调试,确保其正常工作。
2. 微程序控制器的设计方法微程序控制器的设计方法包括水平微程序控制器和垂直微程序控制器两种。
(1)水平微程序控制器:水平微程序控制器将微指令序列分为多个水平层次,每个水平层次对应一个微指令。
微程序控制器的设计与实现
微程序控制器是一种用于控制微程序的硬件设备,它通常由控制存储器、控制
逻辑和时序电路组成。
微程序控制器的设计与实现可以分为以下几个步骤:
1. 确定微指令的格式:微指令是微程序的最小执行单位,包含了一系列控制信号,用于控制计算机的各个部件。
在设计微程序控制器之前,需要确定微指令的格式,包括控制信号的位数和编码方式。
2. 设计控制存储器:控制存储器用于存储微程序,每一个微指令对应一个存储
单元。
在设计控制存储器时,需要确定存储单元的数量和位数,以及存储单元的编址方式。
3. 设计控制逻辑:控制逻辑用于根据当前微指令和计算机的状态生成控制信号。
在设计控制逻辑时,需要根据微指令的格式和计算机的功能要求,确定各个控制信号的生成方式和逻辑关系。
4. 设计时序电路:时序电路用于控制微程序的执行顺序和时序要求。
在设计时
序电路时,需要考虑微指令的执行时间和时序要求,确保微程序的执行顺序和时序满足计算机的功能要求。
5. 实现微程序控制器:根据上述设计结果,可以开始实现微程序控制器。
实现
过程包括选择适当的集成电路、设计电路图、布线和焊接等步骤。
6. 调试和测试:完成微程序控制器的实现后,需要进行调试和测试,确保其功
能和性能符合设计要求。
调试和测试过程包括功能验证、时序分析和性能评估等步骤。
总之,微程序控制器的设计与实现需要进行微指令格式的确定、控制存储器的
设计、控制逻辑的设计、时序电路的设计、微程序控制器的实现以及调试和测试等步骤。
这些步骤需要根据计算机的功能要求和设计约束进行综合考虑和实现。
1.拟定指令系统
字长:定字长,8位
指令的格式:
操作码的位数:3位
寻址方式:直接寻址
load 4
add 5
store 6
bne 7
2.确定数据通路
P98
含有哪些部件,部件的功能,及其它们之间的连接
指令信息、地址信息、数据信息传送的路径,从而,得到所需的微命令(15个)。
3.采用微程序的控制器,设计微指令的格式P106
操作控制字段:采用直接控制法,位数与设计的微命令的个数一致。
如果下地址为:01111时,下条微指令的地址为:
01 OP的编码。
如:load指令,开始的下地址为:01000
如果下地址为:10000时, 依据ZF标志位产生分支。
下条微指令的地址为
其它,下条微指令的地址为就是微指令中提供的下地址。
注意:微地址要连续。
4.绘微程序的流程图P108
5.依据微程序的流程图给出微程序的编码P110
vhdl 代码的编写
1.定义存储器,存放验证的指令及操作数
2.定义控制存储器,存放微程序
3.定义进程。
进程中完成的操作为:如果reset='0',初始化工作。
包含PC=0,微地址为0。
否则在时钟上升沿时,取出微指令,获得下址,且依据有效的微命令,执行相应的微操作。
微程序控制器设计与实现一、引言微程序控制器是一种用于实现计算机指令执行的控制单元,它通过微指令的方式来控制计算机的操作。
本文将详细介绍微程序控制器的设计与实现,包括设计原理、实现步骤和性能评估等方面的内容。
二、设计原理微程序控制器的设计原理主要包括微指令的编码和解码、微指令存储器的设计、微指令的执行等方面。
1. 微指令的编码和解码微指令是对计算机指令进行细化和抽象的表示形式,它由一系列控制信号组成。
在微程序控制器中,需要将每个微指令编码为一个唯一的二进制码,并通过解码器将二进制码转换为相应的控制信号。
2. 微指令存储器的设计微指令存储器是存储微指令的关键组件,它通常由一组存储单元组成,每个存储单元存储一个微指令。
微指令存储器的设计需要考虑存储容量、读写速度和可靠性等因素。
3. 微指令的执行微指令的执行是微程序控制器的核心功能,它通过控制信号的传递和处理来实现计算机指令的执行。
在执行过程中,需要根据当前指令的操作码和操作数,从微指令存储器中读取相应的微指令,并按照微指令的要求执行相应的操作。
三、实现步骤微程序控制器的设计与实现可以按照以下步骤进行:1. 确定指令集和指令格式根据计算机的需求和应用场景,确定需要支持的指令集和指令格式。
指令集和指令格式的确定将直接影响微程序控制器的设计和实现。
2. 编码和解码微指令根据指令集和指令格式,设计并实现微指令的编码和解码逻辑。
编码和解码逻辑需要将指令转换为相应的微指令,并将微指令转换为控制信号。
3. 设计微指令存储器根据微指令的数量和存储要求,设计并实现微指令存储器。
微指令存储器的设计需要考虑存储容量、读写速度和可靠性等因素。
4. 实现微指令的执行逻辑根据微指令的要求,设计并实现微指令的执行逻辑。
执行逻辑需要根据当前指令的操作码和操作数,从微指令存储器中读取相应的微指令,并按照微指令的要求执行相应的操作。
5. 验证和调试微程序控制器在实现过程中,需要对微程序控制器进行验证和调试。
微程序控制器设计与实现微程序控制器是一种用于控制计算机指令执行的重要组件,它通过微指令序列来实现对计算机硬件的控制。
本文将探讨微程序控制器的设计和实现。
一、微程序控制器的概念和作用微程序控制器是一种基于微指令的控制方式,它将复杂的指令执行过程分解成一系列微操作,并通过微指令序列来控制计算机硬件的工作。
微程序控制器的主要作用是实现指令的解码和执行,并且具有高度的灵便性和可扩展性。
二、微程序控制器的设计原理微程序控制器的设计主要包括微指令的编码和微指令存储器的设计。
微指令的编码可以采用二进制编码或者是一种更高级的编码方式,如微指令格式。
微指令存储器可以采用ROM或者RAM的形式,其中ROM存储的是固定的微指令序列,而RAM则可以根据需要进行动态修改。
三、微程序控制器的实现方法微程序控制器的实现可以采用硬连线方式或者微指令存储器方式。
硬连线方式是将微指令的编码直接与控制信号相连,实现对硬件的控制。
而微指令存储器方式则是将微指令存储在微指令存储器中,通过读取存储器中的微指令来实现对硬件的控制。
四、微程序控制器的优点和局限性微程序控制器相对于硬连线方式的控制具有以下优点:首先,微程序控制器可以实现指令的动态修改,从而提高了计算机的灵便性和可扩展性;其次,微程序控制器可以将复杂的指令执行过程分解成一系列微操作,使得指令的执行更加高效。
然而,微程序控制器也存在一些局限性,如微指令存储器的容量限制和微指令的执行速度较慢等。
五、微程序控制器的应用领域微程序控制器广泛应用于计算机系统的控制单元中,如CPU、GPU等。
它可以实现对指令执行的精确控制,并且可以根据不同的应用需求进行灵便的定制。
六、微程序控制器的发展趋势随着计算机技术的不断发展,微程序控制器也在不断演化。
未来的微程序控制器可能会采用更高级的编码方式和更快的存储器技术,以提高指令的执行效率和系统的性能。
总结:微程序控制器是一种重要的计算机控制方式,它通过微指令序列来实现对计算机硬件的控制。
微程序控制器设计1.指令译码:首先,需要对指令进行译码,将机器指令转化为对应的微指令。
这一步骤通常使用逻辑门电路进行实现,其中每个指令对应一个逻辑门电路。
2.微指令设计:设计微指令的具体内容,包括指令的操作码以及对应的控制信号。
3.状态机设计:微程序控制器中使用状态机来控制指令的执行。
状态机设计需要明确每个状态的过渡条件和对应的执行操作。
状态机通常使用状态转换表或状态转换图进行表示。
4.控制存储器设计:控制存储器存储微指令,每个微指令对应一个控制存储器单元。
控制存储器的设计需要考虑容量和访问速度等因素。
5.控制信号发生器设计:控制信号发生器根据微指令产生对应的控制信号,用于控制计算机硬件的操作。
设计微程序控制器的过程可以简化为以下几个步骤:1.确定指令集:根据计算机体系结构的需求,确定设计所需要支持的指令集。
2.指令译码:对所支持指令进行译码,将机器指令转化为对应的微指令。
3.微指令设计:设计每个微指令的操作码和对应的控制信号。
每个微指令应当包含所有需要执行的操作,如读取数据、运算、存储结果等。
4.状态机设计:设计状态机的状态和状态之间的过渡条件。
每个状态应当对应一个微指令。
5.控制存储器设计:设计控制存储器的结构和容量。
每个控制存储器单元存储一个微指令。
6.控制信号发生器设计:根据当前微指令产生对应的控制信号。
这可以通过逻辑门电路来实现。
7.仿真和验证:使用计算机仿真软件对微程序控制器进行仿真和验证,确保设计的正确性和稳定性。
8.硬件实现:将设计好的微程序控制器转化为实际的硬件电路。
这一步需要进行电路设计和布线等工作。
总结起来,微程序控制器设计是一个复杂且关键的过程,需要深入了解计算机体系结构和指令集。
设计过程中需考虑指令译码、微指令设计、状态机设计、控制存储器设计和控制信号发生器设计等关键因素。
在设计完成后需要进行仿真和验证,并最终实现为实际的硬件电路。
通过合理的设计和实现,可以实现高效的微程序控制器,提升计算机整体性能。
微程序控制的运算器设计以微程序控制的运算器设计为题,我们将探讨微程序控制下的运算器设计及其优势。
一、引言随着计算机技术的不断发展,运算器作为计算机的核心部件之一,其设计和性能对整个计算机的运行速度和效率起着至关重要的作用。
微程序控制是一种常见的运算器设计方法,它通过微指令来控制运算器的操作,具有灵活性高、易于扩展和调试等优点。
二、微程序控制的基本原理在微程序控制下,运算器的控制逻辑由一组微指令来指导。
每条微指令包含了运算器的控制信号,通过微程序的执行,可以完成运算器的各种操作。
微程序通常由微指令存储器和微指令控制器两部分组成。
微指令存储器用于存储微指令序列,每条微指令对应一个操作,包括算术逻辑运算、数据传输等。
微指令控制器则根据指令寄存器中的指令地址,从微指令存储器中读取相应的微指令,并将控制信号送到运算器的各个功能模块,实现相应的操作。
三、微程序控制的优势1. 灵活性高:微程序控制使得运算器的功能可以通过修改微指令序列来扩展或修改,而无需对硬件进行改动。
这使得运算器的功能可以根据需求进行定制,适应不同的应用场景。
2. 易于扩展和调试:微程序控制下的运算器通过修改微指令序列就能实现新的功能,而无需对硬件进行改动。
这大大减少了修改和调试的难度,提高了开发效率。
3. 高效的指令执行:微程序控制可以将复杂的指令分解成多个微指令,每个微指令只完成一个简单的操作,这样可以提高指令的执行效率。
4. 可靠性强:微程序控制下的运算器通过微指令控制器来执行微指令,控制逻辑清晰,操作可靠。
同时,微指令存储器可以实现冗余备份,提高系统的可靠性。
四、微程序控制的设计过程微程序控制的设计过程主要包括以下几个步骤:1. 确定运算器的功能需求:根据具体的应用场景,确定运算器需要具备哪些功能,如加法、减法、乘法、除法、逻辑运算等。
2. 制定微指令的格式:根据运算器的功能需求,确定微指令的格式,包括操作码、地址码等。
3. 设计微指令序列:根据运算器的功能需求和微指令的格式,设计微指令序列,确保每条微指令都能正确执行所需的操作。
微程序控制和设计
成绩:实验报告
计算机组成原理实验
课程名
称:
微程序控制和设计
实验项
目:
姓名:舒鹏
专业:网络工程
班级:11-3
学号:1104020321
计算机科学与技术学院
实验教学中心2013 年 6月 24日
实验项目名称:微程序控制和设计
一、实验目的
综合运用所学计算机原理知识,设计微程序实现题目规定的指令。
二、实验内容
在做综合实验时,可以用COP2000计算机组成原理实验软件输入、修改程序,汇编成机器码并下载到实验仪上,由软件控制程序实现单指令执行、单微指令执行、全速执行,并可以在软件上观察指令或微指令执行过程中数据的走向、各控制信号的状态、各寄存器的值。
COP2000软件的使用方法见第七章“COP2000集成开发环境使用”。
也可以用实验仪自带的小键盘和显示屏来输入、修改程序,用键盘控制单指令或单微指令执行,用LED或用显示屏观察各寄存器的值。
实验仪上的键盘使用方法见第六章“实验仪键盘使用”。
在用微程序控制方式做综合实验时,在给实验仪通电前,拔掉实验仪上所有的手工连接的接线,再用8芯电缆连接J1和J2,控制方式开关拨到“微程序控制”方向。
若想用
COP2000软件控制组成原理实验仪,就要启动软件,并用快捷图标的“设置”功能打开设置窗口,选择实验仪连接的串行口,然后再按“连接COP2000实验仪”按钮接通到实验仪。
微指令格式:
模型机的指令码为8 位,根据指令类型的不同,可以有0 到2 个操作数。
指令码的最低两位用来选择R0-R3 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。
2)完成对R0,R1,R2,R3这四个寄存器的排序工作,按R0-R3降序排序。
3)排序采用冒泡排序法,分别对于R0和R1,R1和R2,R2和R3,三个关系进行判断。
若一个关系的前者小于后者,则通过stack寄存器交换两者的值,若前者大于后者,则继续进行下一个关系的大小判断。
三个关系依次判断一遍之后,可以保证四个数的最小的数在R3中。
再对于三个关系依次判断一遍之后,可以保证第二小的数在R2中,再对于三个关系依次判断一遍之后,可以保证第三小的数在R1中,此时最大的数就在R0中,排序完成。
4)循环执行了三次,用一个数记住循环计数,这个数存在EM中。
每次执行一次循环之后就减1,当循环计数为0时,程序结束。
指令/微指令表:
指令表
三、实验用设备仪器及材料
COP2000实验仪、导线若干、系统计算机。
四、实验原理
在综合实验中,模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM输出,而不是由开关输出。
在做综合实验之前,先用8芯电缆连接J1和J2,这样实验仪的监控系统会自动打开uM的输出允许,微程序的各控制信号就会接到各寄存器、运算器的控制端口。
此综合实验使用的指令是模型机的缺省指令/微指令系统。
六、实验结果分析
实验1:数据传送实验/输入输出实验
1.在COP2000软件中的源程序窗口输入下列程序
2.将程序另存为EX1.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机器码、反汇编指令。
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。
给出EX1.ASM程序跟踪结果。
实验2:数据运算实验(加/减/与/或)
1.在COP2000软件中的源程序窗口输入下列程序
2.将程序另存为EX2.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、
机器码、反汇编指令。
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。
给出EX2.ASM程序跟踪结果。
4.在了解数据运算的原理,可以加上一些数据传输指令给累加器A或寄存器R?赋值,再运算,并观察运算结果。
练习:综合运用实验1与实验2的相关功能操作完成任务。
将立即数44H,77H,33H,55H分别送入寄存器R0,R1,R2,R3中,立即数11H 送入累加器A中,并完成下面的运输操作:
MOV R0, #44H
MOV R1, #77H
MOV R2, #33H
MOV R3, #55H
MOV A, #11H
ADDC A, R1
SUB A, @R1
AND A, #55H
OR A, 02H
IN
OUT
END
1)按快捷图标的F7,执行“单微指令运行”功能,观察执行下面每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。
给出EX2.ASM程序跟踪结果。
ADDC A, R1
SUB A, @R1
AND A, #55H
OR A, 02H
5)实现寄存器R0,R1,R2,R3的数据相加。
MOV R0, #44H
MOV R1, #77H
MOV R2, #33H
MOV R3, #55H
MOV A, R1
ADD A, R2
ADD A, R3
ADD A, R0
IN
OUT
END
试验二:
对于存放在R0~R3中的数进行排序,有序的存回R0~R3。
分析:
对待比较两个数采用减法比较大小,然后按照顺序存回。
针对排序过程可采用不同排序方法,如:冒泡排序,快速排序等。
并可以查看不同排序方法在实验仪器上的效率。
这个实验过程涉及到数大小比较,数据存储,程序跳转控制,这些过程均能在
COP2000计算机组成原理实验仪上完成。
在数据结构中,我们学习了对数字排序的不同算法,并详细学习了算法复杂度。
但是针对我们使用的计算机不能体会到不同算法在时间上的不同。
此次试验能够具体体会算法之间在时间复杂度上的区别。
有一定的实验意义。
综上所述:本次试验目标至少做出一种排序方法,并在此基础之上比较各种排序方法的效率。
试验代码为:
MOV R0 , #37H
MOV R1 , #17H MOV R2 , #29H MOV R3 , #41H MOV A , #03H MOV 02H, A LOOP:
MOV A ,R0
SUB A , R1
JC S0
M1:
MOV A ,R1
SUB A , R2
JC S1
M1:
MOV A ,R2
SUB A , R3
JC S2
M3:
SUB A ,#01H
JC S3
JMP LOOP
S0:
MOV A ,R0
PUSH R0 MOV R1 , A
POP R1
DCY
JMP M1
S1:
MOV A ,R1 PUSH R1 MOV R2 , A
POP R2
DCY
JMP M2
S2:
MOV A ,R2 PUSH R2 MOV R3 , A
POP R3
DCY
JMP M3
S3:
IN
OUT
END。