微程序控制实验报告
Logisim平台微程序控制实验-计算机组成原理

CPU的结构与功能
结构:CPU由控制器、运算器和寄存器组成
功能:控制器负责控制计算机的运行,运算器负责执行算术和逻辑运算,寄存器负责存储数据 和指令
指令集:CPU能够执行各种指令,包括算术指令、逻辑指令、控制指令等
工作原理:CPU通过读取指令、解码指令、执行指令的循环过程,实现对计算机的控制和运算。
控制器:控制计算机的运行,包括指令的 执行和程序的控制
运算器:进行算术和逻辑运算,包括加、 减、乘、除等基本运算
存储器:存储数据和程序,包括内存和外 存
输入设备:将数据或程序输入计算机,包 括键盘、鼠标等
输出设备:将计算机的处理结果输出,包 括显示器、打印机等
总线:连接计算机的各个部件,包括数据 总线、地址总线和控制总线
实验结果分析与讨论
实验目的:验证计算机组成原理的基 本概念和原理
实验方法:使用Logisim平台进行微 程序控制实验
实验结果:成功实现计算机组成原理 的基本功能
分析与讨论:实验结果与预期相符, 验证了计算机组成原理的基本概念和 原理,为后续课程学习打下基础。
06 实验总结与展望
实验总结回顾
实验目的:掌握微程序控制的基本原理和实现方法
实验内容:设计并实现一个简单的微程序控制器
实验方法:使用Logisim平台进行模拟和验证 实验结果:成功实现了微程序控制器的功能,并对计算机组成原理有了更 深入的理解
实验收获与感悟
掌握了Logisim平台的基本操作和微程序控制的原理 提高了计算机组成原理的理解和应用能力 学会了如何分析和解决实际问题 培养了团队合作和沟通能力 提高了对计算机科学的兴趣和热情
微程序控制的优势与局限性
优势:微程序控制可以实现复杂的控制功能,提高系统的灵活性和可扩展性。 优势:微程序控制可以简化硬件设计,降低硬件成本。 局限性:微程序控制需要大量的存储空间,可能导致系统资源紧张。 局限性:微程序控制可能会导致系统响应速度降低,影响系统性能。
微程序控制器实验报告

计算机组成原理实验及课程设计报告书系别:计算机系专业:计算机科学与技术课程:计算机组成原理指导教师:实验人:班级:实验时间:2009.5.28-2009.6.7 编制时间:2009.6.14微程序控制器实验报告(一) 实验目的通过看懂教学计算机中已经设计好并正常运行的数条基本指令(例如:ADD,MVRR,OUT,MVRD,JR,RET 等命令)的功能、格式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。
其最终要达到的目的是: 1. 深入理解计算机微程序控制器的功能、组成知识; 2. 深入的学习计算机各类典型指令的执行流程;3. 对指令的格式、寻址方式、指令系统、指令分类等建立具体的总体的概念;4. 学习微程序控制器的设计工程和相关技术。
(二)实验过程 RCL 指令 一、指令设计a)指令格式及功能:汇编格式: RCL DR机器指令: 00101010 00000000功能:带进位C 循环左移,最高位移入C ,C 移入最低位 b)指令流程图:c)控制信号表: MAPROM MP1 MP2 MP3MP4MP5 MP6 MP7 微指下指CI 3-0 SCC 3-0 0 /MR/W 0 I 2-0 SA I 8-6 SB I 5-3 B 口 A 口 0 SST SSHSCI DC2 DC1 50H 01H30H43H78H00H64H00H说明:把地址位2AH 单元内容修改为50H ,实现译码,找到为程序的入口地址。
二、实验操作:修改MAPROM 和控存 a)MAPROM 的修改:1、 试验箱断电2、取下M APROM ,插入扩展槽,连片选信号(6000H-7FFFH )3、试验箱开电,PC 机开机4、设置试验机工作模式为:连续、内存区、组合逻辑、16位、联机5、运行PCEC16,进行PC 机与试验箱联机取地址带进位C 循环左移6、>E 602BXXXX: 0050提示:修改完之后检查是否破坏了基本指令内存。
微程序控制器组与微程序设计实验报告

微程序控制器组与微程序设计实验报告实验目的:1.了解微程序控制器组的组成和工作原理;2.掌握微程序设计的基本方法;3.学习使用微程序设计语言进行微程序编写;4.验证微程序的功能和正确性。
实验仪器:1.微程序控制器组;2.计算机。
实验原理:实验步骤:1.设计微指令集:根据实验要求,设计微指令的功能,并确定每个微指令的格式和编码方式。
2.设计微程序地址译码器:根据微指令的编码方式,设计地址译码器,将微指令的编码转化为实际的地址。
3.设计微程序存储器:根据微指令的格式和编码方式,设计存储器,存储微指令。
可以选择使用只读存储器或者随机存储器。
4.设计微指令执行器:根据微指令的格式和编码方式,设计执行器,执行微指令的功能操作。
可以使用组合逻辑电路或者微控制器实现。
5.进行微程序编写:使用微程序设计语言,根据微指令集的功能要求,编写微程序,并存储到微程序存储器中。
6.连接实验仪器:将微程序控制器组和计算机连接起来,确保数据传输的正确性。
7.运行实验程序:根据实验要求,执行微程序,并通过计算机输出结果。
实验结果:经过实验,微程序控制器组成功控制了计算机的各个部件的操作和数据流。
微程序设计也能够正确的控制计算机的运行,并输出了预期的结果。
实验总结:通过本次实验,我对微程序控制器组的组成和工作原理有了更深入的了解。
微程序设计是一种灵活、可扩展的指令级程序设计方法,可以根据需求设计出各种功能强大的微程序。
通过实验,我学会了使用微程序设计语言进行微程序编写,并验证了微程序的功能和正确性。
微程序控制器组的应用范围广泛,不仅可以用于计算机中,还可以应用于其他各种控制系统中。
本次实验让我对计算机控制系统的理论和实践有了更深入的了解,提高了我在计算机控制领域的专业技能。
计算机组成原理 微程序控制器实验

深圳大学实验报告课程名称:操作系统实验项目名称:微程序控制器实验学院:计算机与软件学院专业:软件工程指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务处制一、实验目的:通过看懂教学计算机中已经设计好并正常运行的数条基本指令(例如,ADD、MVRR、OUT、MVRD、JR、RET等指令)的功能、格式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。
其最终要达到的目的是:1.深入理解计算机微程序控制器的功能、组成知识;2.深入地学习计算机各类典型指令的执行流程;3.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念;4.学习微程序控制器的设计过程和相关技术。
二、实验要求1.实验之前,应认真准备,写出实验步骤和具体设计内容,否则实验效率会特别低,一次实验时间根本无法完成实验任务,即使基本做对了,也很难说学懂了些什么重要教学内容;2.应在实验前掌握所有控制信号的作用,在脱机运算器实验中,已给出了与运算器有关的控制信号的作用,16 位机微程序控制器用到的控制信号的功能表可参见《技术说明与实验指导》的相关内容。
需要注意的是中断用到了DC23,在T4~T0= 0 0010一拍时DC23为1,其余节拍均为0;3.实验过程中,应认真进行实验操作,既不要因为粗心造成短路等事故而损坏设备,又要仔细思考实验有关内容,提高学习的主动性和创造性,把自己想不太明白的问题通过实验理解清楚,争取最好的实验效果,力求达到教学实验的主要目的;4.实验之后,应认真思考总结,写出实验报告,包括实验步骤和具体实验结果,遇到的主要问题和分析与解决问题的思路。
大家应该认识到,遇到一些问题是好事情,通过分析与解决这些问题,才提高了自己的工作能力,学习到更多的知识。
还未理解清楚,但实验结果正确了就匆忙结束实验,并没有达到教学实验的目的。
实验报告中,还应写出自己的学习心得和切身体会,也可以对教学实验提出新的建议等。
微程序实验报告

微程序实验报告微程序实验报告概述:微程序是一种指令执行的方式,它将指令集的操作分解为一系列微操作,通过微指令控制器逐步执行。
本次实验旨在通过设计和实现一个简单的微程序,深入理解微程序的工作原理和应用。
实验目的:1. 理解微程序的基本概念和原理;2. 学习如何设计和实现一个简单的微程序;3. 掌握微程序在指令执行过程中的作用和优势。
实验过程:1. 确定微指令集的操作和控制信号:根据实验要求,我们选择了一些常见的指令,如加法、减法、乘法等,并为每个指令定义了相应的微操作和控制信号。
2. 设计微指令控制器:根据微指令集的操作和控制信号,我们设计了一个简单的微指令控制器,用于逐步执行指令。
控制器包括状态寄存器、微指令存储器和控制逻辑电路等组件。
3. 实现微程序:根据设计的微指令控制器,我们编写了相应的微程序。
微程序是一系列微操作的有序序列,通过控制信号的变化逐步执行指令。
4. 运行实验样例:我们选择了几个实验样例,分别测试了加法、减法和乘法指令的执行过程。
通过观察指令执行的结果,验证了微程序的正确性和有效性。
实验结果:通过实验,我们成功设计和实现了一个简单的微程序,并验证了其在指令执行过程中的作用和优势。
微程序能够将复杂的指令集操作分解为一系列微操作,使得指令的执行过程更加灵活和高效。
结论:微程序是一种重要的指令执行方式,通过将指令集的操作分解为微操作,能够提高指令执行的效率和灵活性。
本次实验使我深入理解了微程序的工作原理和应用,掌握了微程序的设计和实现方法,为进一步研究和应用微程序打下了良好的基础。
展望:微程序作为一种重要的指令执行方式,在计算机体系结构和指令集设计中有着广泛的应用前景。
未来,我将进一步研究微程序的优化方法和应用场景,探索微程序在提高计算机性能和节约能源方面的潜力。
同时,我也期待能够参与更多的微程序设计和实现项目,不断提升自己在计算机体系结构领域的研究能力和创新能力。
总结:通过本次实验,我深入了解了微程序的工作原理和应用,掌握了微程序的设计和实现方法。
计算机组成原理实验报告三微程序控制器实验

微程序控制器实验报告一、实验目的(1)掌握微程序控制器的功能、组成知识。
(2)掌握为程序的编制、写入、观察微程序的运行二、实验设备:PC机一台,TD-CM3+实验系统一套三、实验原理:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件的为命令序列,完成数据传送和个汇总处理操作,他的执行方法是将控制各部件的微命令的集合进行编码,即将微命令的集合仿照及其指令一眼,用数字代码的形式表示,这种表示陈伟微指令。
这样就可以用一个微指令序列表示一条机器指令,这种为指令序列称作为程序。
微程序存储在一种专用的存储器中,成为控制储存器四、实验步骤1.对为控制器进行读写操作:(1)手动读写:①按图连线:②将MC单元编程开关置为“编程”档,时序单元状态开关置为“单步”档,ADDR 单元状态开关置为“置数”档③使用ADDR单元的低六位SA5…SA0给出微地址MA5…MA0,微地址可以通过MC 单元的MA5…MA0微地址灯显示④CON单元SD27…SD20,SD17…SD10,SD07…SD00开关上置24位微代码,待写入值由MC单元的M23…M024位LED灯显示⑤启动时序电路(按动一次TS按钮),即将微代码写入到E2PROM2816的相应地址对应单元中⑥重复③④⑤三步,将下图微代码写入2816芯片中二进制代码表(2)联机读写:①将微程序写入文件,联机软件提供了微程序下载功能,以代替手动读写微控制器,但微程序得以指定的格式写入本次试验的微程序如下:://************************************************************// :// // :// 微控器实验指令文件 // :// // ://************************************************************// ://***************Start Of MicroController Data****************//$M 00 000001;NOP$M 01 007070;CON(INS)->IR,P<1>$M 04 002405;R0->A$M 05 04B201;R0->B$M 30 001404;A加B->RO$M 32 183001;IN->R0$M 33 280401;R0->OUT$M 35 000035;NOP;//***************End Of MicroController Data*******************// ②写入微程序用联机软件的“【转存】-【装载数据】”功能将改格式文件装载入试验系统。
微程序控制器实验报告
一、实验目的1、通过实验,进一步理解微程序控制器的组成结构。
理解微程序控制器的控制原理2、加深理解微程序控制器的工作原理。
掌握指令流程与功能3、理解掌握微程序控制器的设计思路与方法二、实验内容与步骤1、微程序控制器的组成原理控制存储器:实现整个指令系统的所有微程序,一般指令系统是规定的由高速半导体存储器构成,容量视机器指令系统而定,取决于微程序的个数,其长度就是微指令字的长度。
微指令寄存器:存放从控存读出的当前微指令。
微操作控制字段将操作控制信号送到控制信号线上,微地址字段指出下一条微地址的形成。
微地址寄存器:存放将要访问的下一条微指令地址地址转移逻辑:形成将要执行的微指令地址,形成方式:取指令公操作所对应的微程序一般从控存的0地址开始,所以微程序的人口地址0是由硬件控制的。
当出现分支时,通过判别测试字段、微地址字段、和执行部件的反馈信息形成后即微地址。
Cpu设计步骤:1.拟定指令系统2.确定总体结构(数据通路)3.安排时序4.拟定指令流程。
根据指令系统,写出对应所有机器指令的全部微操作机器节拍安排,然后列出操作时间表5.确定微指令的控制方式、下地址形成方式、微指令格式及微指令字长,编写全部的微指令的代码,最后将编写的微指令放入控制存储器中。
微程序控制器的设计步骤(1)设计微程序确定微程序流程图,也就是控制算法流程图。
(2)确定微指令格式微指令格式中的操作控制字段取决于执行部件的子系统需要多少微指令。
假定采用直接控制方式,执行部件需要10个微命令,则操作控制字段需要10位。
测试判别字段取决于微程序流程图中有多少处分支转移。
假定有3处分支,则测试判别字段需要3位。
下址字段取决于微程序流程图的规模。
假定微程序共用50条微指令,则下址字段至少需要6位。
这是因为ROM地址译码时,26=64,6位地址可容纳64条微指令。
(3)将微程序编译成二进制代码(4)微程序写入控制存储器(5)设计硬件电路三、实验现象--CPU 头文件cpu_defsLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE cpu_defs IS --定义程序包,包头,包体TYPE opcode IS (load, store, add, sub, bne); --这个语句适合于定义一些用std_logic 等不方便定义的类型,综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0 CONSTANT word_w: NATURAL :=8;CONSTANT op_w: NATURAL :=3;CONSTANT rfill: STD_LOGIC_VECTOR(op_w-1 downto 0):=(others =>'0');--FUNCTIOn slv2op(slv:IN STD_LOGIC_VECTOR) RETURN opcode;FUNCTION op2slv(op:in opcode) RETURN STD_LOGIC_VECTOR;END PACKAGE cpu_defs;PACKAGE BODY cpu_defs ISTYPE optable IS ARRAY(opcode) OF STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);--数组有5个元素,其他均0CONSTANT trans_table:optable :=("000", "001", "010", "011", "100");FUNCTION op2slv(op:IN opcode) RETURN STD_LOGIC_VECTOR ISBEGINRETURN trans_table(op);END FUNCTION op2slv;END PACKAGE BODY cpu_defs;--实验7-8 微程序控制器实验LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL,IEEE.NUMERIC_STD.ALL;USE WORK.CPU_DEFS.ALL;--使用自己定义的程序包ENTITY CPU ISPORT( clock : IN STD_LOGIC;--时钟reset : IN STD_LOGIC;--复位mode : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --查看用mem_addr : INUNSIGNED(word_w-op_w-1 DOWNTO 0);--地址output : OUT STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);data_r_out : OUT STD_LOGIC_VECTOR(19 DOWNTO 0);--微指令Rop_out : OUT STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);--操作码add_r_out : OUT UNSIGNED(4 DOWNTO 0) --微地址R);END ENTITY;ARCHITECTURE rtl OF CPU ISTYPE mem_array IS ARRAY (0 TO 2**(word_w-op_w)-1) OF STD_LOGIC_VECTOR(word_w-1DOWNTO 0);--定义RAMSIGNAL mem : mem_array;CONSTANT prog : mem_array:=(0=> op2slv(load) & STD_LOGIC_VECTOR(TO_UNSIGNED(4,word_w-op_w)),1=> op2slv(add) & STD_LOGIC_VECTOR(TO_UNSIGNED(5,word_w-op_w)),2=> op2slv(store) & STD_LOGIC_VECTOR(TO_UNSIGNED(6,word_w-op_w)),3=> op2slv(bne) & STD_LOGIC_VECTOR(TO_UNSIGNED(7,word_w-op_w)), --TO_UNSIGNED转换函数将4转换为5位“00100”4=> STD_LOGIC_VECTOR(TO_UNSIGNED(2,word_w)),5=> STD_LOGIC_VECTOR(TO_UNSIGNED(3,word_w)),OTHERS => (OTHERS =>'0'));TYPE microcode_array IS ARRAY (0 TO 14) OF STD_LOGIC_VECTOR(19 DOWNTO 0); CONSTANT code : microcode_array:=(--控制存储器0=> "00010100010000000001",1=> "00000000000110000010",2=> "00001010000000000011",3=> "00000100001000001111",4=> "00100010000000000000",5=> "00000000000100000000",6=> "00000010100001000000",7=> "00000010100000100000",8=> "00000000000110000100",9=> "01000001000000000101",10=> "00000000000110000110",11=> "00000000000110000111",12=> "00000000000110010000",13=> "10000010000000000000",14=> "00000000000000000000");SIGNAL count : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL op : STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);SIGNAL z_flag : STD_LOGIC;SIGNAL mdr_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL mar_out : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL IR_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL acc_out : UNSIGNED(word_w-1 DOWNTO 0);SIGNAL sysbus_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);EGINPROCESS(reset,clock)VARIABLE instr_reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE acc : UNSIGNED(word_w-1 DOWNTO 0);CONSTANT zero : UNSIGNED(word_w-1 DOWNTO 0):=(OTHERS =>'0')VARIABLE mdr : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE mar : UNSIGNED(word_w-op_w-1 DOWNTO 0);VARIABLE sysbus : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE microcode : microcode_array;VARIABLE add_r : UNSIGNED(4 DOWNTO 0);VARIABLE data_r : STD_LOGIC_VECTOR(19 DOWNTO 0);VARIABLE temp : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINIF reset='0' THENadd_r:=(OTHERS =>'0');count <= (OTHERS =>'0');instr_reg := (OTHERS =>'0');acc := (OTHERS =>'0');mdr := (OTHERS =>'0');mar := (OTHERS =>'0');z_flag <='0';mem <= prog;sysbus :=(OTHERS =>'0');ELSIF RISING_EDGE(clock) THEN--microprogram controllerdata_r := code(TO_INTEGER(add_r));IF data_r(4 DOWNTO 0)="01111" THEN --判断下地址temp:="01" & op(2 DOWNTO 0);add_r := UNSIGNED(temp);ELSIF data_r(4 DOWNTO 0)="10000" THENIF z_flag='1' THENadd_r:="01110";ELSEadd_r :="01101";END IF;ELSEadd_r := UNSIGNED(data_r(4 DOWNTO 0));END IF;data_r_out <=data_r;add_r_out <= add_r;--PCIF data_r(16)='1' THEN --PC_bus='1'sysbus := rfill & STD_LOGIC_VECTOR(count);END IF;IF data_r(19)='1' THEN --load_PC='1'count <= UNSIGNED(mdr(word_w-op_w-1 DOWNTO 0));ELSIF data_r(10)='1' THEN --INC_PC='1'count <= count+1;ELSEcount <= count;END IF;--IRIF data_r(15)='1' THEN --load_IRinstr_reg := mdr;END IF;IF data_r(9)='1' THEN --Addr_bus='1'sysbus := rfill & instr_reg(word_w-op_w-1 DOWNTO 0);END IF;op <= instr_reg(word_w-1 DOWNTO word_w-op_w);IR_out <= instr_reg;op_out <=op;--ALUIF data_r(17)='1' THEN --load_ACC='1'acc:=UNSIGNED(mdr);END IF;IF data_r(11)='1' THEN --ALU_ACC='1'IF data_r(6)='1' THEN --ALU_add='1'acc := acc + UNSIGNED(mdr);ELSIF data_r(5)='1' THEN --ALU_sub='1'acc := acc - UNSIGNED(mdr);END IF;END IF;IF data_r(18)='1' THEN --ACC_bus='1'sysbus := STD_LOGIC_VECTOR(acc);END IF;IF acc=zero THENz_flag <='1';ELSEz_flag <='0';END IF;acc_out<= acc;--RAMIF data_r(14)='1' THEN --load_MAR='1'mar := UNSIGNED(sysbus(word_w-op_w-1 DOWNTO 0));ELSIF data_r(12)='1' THEN --load_MDR='1'mdr := sysbus;ELSIF data_r(8)='1' THEN --CS='1'IF data_r(7)='1' THEN --R_NW='1'mdr := mem(TO_INTEGER(mar));ELSEmem(TO_INTEGER(mar))<=mdr;END IF;END IF;IF data_r(13)='1' THEN --MDR_bus='1'sysbus:=mdr;END IF;mdr_out <= mdr;mar_out <= mar;END IF;sysbus_out <=sysbus;END PROCESS;PROCESS(mode,mem_addr)BEGIN--mode=0 -> sysbus--mode=1 -> PC--mode=2 -> result of ALU--mode=3 -> IR--mode=4 -> MAR--mode=5 -> MDR--mode=6 -> memoutput <= (OTHERS =>'0');CASE mode isWHEN "000" =>output<=sysbus_out;WHEN "001" =>output(word_w-op_w-1 DOWNTO 0)<= STD_LOGIC_VECTOR(count);WHEN "010" =>output <= STD_LOGIC_VECTOR(acc_out);WHEN "011" =>output <= IR_out;WHEN "100" =>output(word_w-op_w-1 DOWNTO 0) <= STD_LOGIC_VECTOR(mar_out);WHEN "101" =>output <= mdr_out;WHEN "110" =>output <= mem(TO_INTEGER(mem_addr));WHEN others =>output <= (OTHERS =>'Z');END CASE;END PROCESS;END ARCHITECTURE;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。
计算机组成原理实验报告微程序控制
计算机硬件实验室实验报告课程名称:姓名徐骁学号33 班级0920542 成绩设备名称及软件环境计算机、Proteus仿真软件、模型机仿真软件实验名称微程序控制器实验日期一.实验内容使用模型机验证微指令与微操作的关系,验证微程序执行时序。
二.理论分析或算法分析微操作码:包含指令执行的一个步骤中所包含的全部微命令的编码,即一条微指令所需的全部控制信号的编码, 用来发出操作控制信号。
微地址码:用来产生下一条微指令的地址,指出下一条微指令代码在控制存储器中的存储位置。
(一)、微程序控制原理:控制存储器:存放实现计算机指令系统的所有微程序由ROM (EPROM )实现。
控制存储器的字长是微指令字的长度。
控制存储器的容量取决于指令的数量和每条指令的微程序长度,也取决于微指令代码的利用率。
微指令寄存器:微指令寄存器(CMIR )存放由控制存储器读出的一条微指令信息 微地址寄存器(CMAR ):存放将要访问的下一条微指令的微地址。
微地址形成部件:能测试执行中的状态信息,修改微地址寄存器的内容,以便按修改后的内容去读下一条指令。
OPIR 微地址形成部件CMAR译码驱动状态条件 微地址微操作码 控制存储器微操作信号CMCMIR(二)、工作原理1、取指阶段(1)将取指微程序首地址置于CMAR 中。
(2)读微指令。
(3)产生微操作命令。
(4)形成下一条微指令地址。
(5)取下一条微指令。
…………重复(1)~(4)过程,直到该机器指令送入IR 为止。
2、执行阶段(1)当指令存入IR 后,由指令的OP 部分送到微地址形成部件,形成该指令对应的微程序的首地址。
(2)读出微指令。
(3)产生微操作命令。
(4)形成下一条微指令地址。
…………重复(1)~(4)过程,直到该机器指令执行完为止。
时序RAM IRPCAR微程序控制器产生器256×8LDARLDPCLDIRRDWELDPC →BUSDR 2DR 1LDR 0I/OR 3R 2R 1R 0LDR 3LDR 2LDR 1LDDR 1LDDR 2ALUALU →BUS BUSS 2S 1M -1S 3S 0模型机数据通路框图三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)(a) 五条指令的微程序流程图ADD1110 01 IN 13 12100201STAOUT SW →R0 P(1)PC →ARPC+1RAM →BUS BUS →IR 04 03PC →AR PC+1RAM →BUS BUS →AR15 07 PC →AR PC+1RAM →BUS BUS →AR 16 PC →AR PC+1RAM →BUS BUS →AR26 PC →AR PC+1RAM →BUS BUS →PCJMP14 0605 R0→DR1RAM →BUS BUS-DR0(DR1)+(DR2)→R001 R0→BUS BUS →RAM0117RAM →BUS BUS →DR101DR1→LED25 01运行微程序八进制地址 KWE 23 20 2000KRD RPP(1) 15 07 PC →AR PC+1RAM →BUS BUS →DR116PC →AR PC+1DR1→LED控制台213024PC →AR PC+1(SW)→BUS BUS →DR1DR1→RAM(b) 控制台微程序流程图八进制地址01四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)微地址S3 S2 S1 S0 M Cn WEA9 A8 A B C μA5--μA000 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 001 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 002 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 003 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 004 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 105 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 006 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 107 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 110 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 111 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 112 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 1 113 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 1 1 014 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 015 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 116 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 117 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 120 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 0 1 021 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 0 022 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 123 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 124 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 025 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 126 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 127 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 030 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1微程序代码表五.结论按照实验要求进行数据操作,实现实验结果,为了便于控制程序的运行,时序电路发生器设置了一个启停控制触发器Cr,使TS1-TS4信号输出可控。
实验三:微程序控制器实验
《计算机组成原理》实验报告实验三:微程序控制器实验学院:专业:班级:学号:学生姓名:实验日期:指导老师:成绩评定:计算机学院计算机组成原理实验室实 验 三一、 实验名称:微程序控制器实验二、 实验目的:掌握微程序的编制、写入、观察微程序的运行情况 ,了解微程序流程原理。
三、 实验原理:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,该存储器称为控制存储器。
微程序流程图:NOP00指令译码P<1>IN->R0R0->OUT NOPR0->AR0->BA+B->R00130320405333530ADDINOUTHLT01010135四、实验设备:TD-CMA实验系统一套五、实验步骤:1、对微控器进行编程(写)(1)将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘编程’档,KK4置为‘控存’档,KK5置为‘置数’档。
(2)使用CON单元的SD05-SD00给出微地址,IN单元给出低8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的低8位。
(3)将时序与操作台单元的开关KK5置为‘加1’档。
(4)IN单元给出中8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的中8位。
IN单元给出高8位应写入的数据,连续两次按动时序与操作台的开关ST,将IN单元的数据写到该单元的高8位。
(5)重复(1)(2)(3)(4)四步,将二进制代码表的微地址(地址和十六进制)写入芯片中。
2、对微控器进行校验(读)(1)将时序与操作台单元的开关KK1置为‘停止’档,KK3置为‘校验’档,KK4置为‘控存’档,KK5置为‘置数’档。
微程序实验报告
一、实验目的1. 理解微程序设计的基本原理和方法。
2. 掌握微程序控制器的设计方法。
3. 提高对计算机组成原理和汇编语言的理解。
二、实验环境1. 操作系统:Windows 102. 开发工具:Keil uVision53. 实验平台:STM32F103C8T6三、实验内容1. 微程序控制器的设计2. 微程序指令集的设计3. 微程序的编译与仿真四、实验步骤1. 微程序控制器的设计(1)确定微程序控制器的基本结构,包括控制单元、指令寄存器、地址计数器、微指令寄存器等。
(2)设计控制单元,实现微指令译码和操作控制功能。
(3)编写微指令序列,实现所需的功能。
2. 微程序指令集的设计(1)根据实验需求,设计微程序指令集,包括指令格式、操作码和操作数。
(2)编写微指令编码表,实现指令集的编码。
3. 微程序的编译与仿真(1)编写微程序代码,实现微程序的功能。
(2)将微程序代码编译成机器代码。
(3)在仿真软件中加载编译后的机器代码,进行仿真实验。
五、实验结果与分析1. 微程序控制器设计结果根据实验需求,设计了一个具有8级微程序的控制器。
控制器包括控制单元、指令寄存器、地址计数器、微指令寄存器等模块。
控制单元根据微指令译码和操作控制信号,实现对微程序的操作。
2. 微程序指令集设计结果根据实验需求,设计了以下微程序指令集:- 立即数加载指令:将立即数加载到指定寄存器。
- 寄存器加载指令:将寄存器内容加载到指定寄存器。
- 立即数存储指令:将立即数存储到指定内存地址。
- 寄存器存储指令:将寄存器内容存储到指定内存地址。
- 立即数加法指令:将立即数与寄存器内容相加,结果存储到寄存器。
- 寄存器加法指令:将寄存器内容与另一个寄存器内容相加,结果存储到寄存器。
- 立即数减法指令:将立即数与寄存器内容相减,结果存储到寄存器。
- 寄存器减法指令:将寄存器内容与另一个寄存器内容相减,结果存储到寄存器。
3. 微程序编译与仿真结果在仿真软件中加载编译后的机器代码,进行仿真实验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微程序控制实验报告
微程序控制实验报告
引言:
微程序控制是一种通过微指令序列来控制计算机硬件的方法。
通过将指令的操作码映射到微指令序列,可以实现复杂的指令执行过程。
本实验旨在通过设计和实现一个简单的微程序控制器,加深对微程序控制原理的理解。
一、实验目的
本实验的主要目的是设计和实现一个8位微程序控制器。
通过该实验,我们将能够:
1. 理解微程序控制的工作原理;
2. 掌握微程序控制器的设计方法;
3. 学习如何使用微指令序列来控制计算机硬件。
二、实验原理
微程序控制是一种基于微指令的控制方式,它将指令的操作码映射到一组微指令序列。
这些微指令序列定义了计算机硬件在执行指令过程中的控制信号。
通过微指令序列,我们可以实现复杂的指令执行过程,如数据传输、算术逻辑运算、分支跳转等。
三、实验设计
本实验中,我们设计了一个简单的8位微程序控制器。
该控制器包括以下几个模块:
1. 指令寄存器(IR):用于存储当前执行的指令;
2. 指令译码器(ID):将指令的操作码解码为微指令地址;
3. 微指令存储器(MS):存储微指令序列;
4. 控制信号发生器(CG):根据微指令地址生成控制信号;
5. 数据通路(DP):执行指令的计算机硬件。
四、实验步骤
1. 设计微指令序列:根据指令集的要求,设计一组微指令序列,包括数据传输、算术逻辑运算、分支跳转等操作。
2. 实现微指令存储器:使用存储器芯片或其他逻辑门电路实现微指令存储器,
并将微指令序列存储其中。
3. 实现指令译码器:设计指令译码器,将指令的操作码解码为微指令地址。
4. 实现控制信号发生器:根据微指令地址生成控制信号,控制数据通路的操作。
5. 实现数据通路:根据指令要求,设计并实现数据通路,包括寄存器、算术逻
辑单元等。
6. 连接各个模块:将指令寄存器、指令译码器、微指令存储器、控制信号发生
器和数据通路连接起来,形成一个完整的微程序控制器。
五、实验结果与分析
经过实验,我们成功实现了一个简单的8位微程序控制器。
通过该控制器,我
们能够执行各种指令,包括数据传输、算术逻辑运算、分支跳转等操作。
实验
结果表明,微程序控制是一种高效且灵活的控制方式,能够满足不同指令集的
要求。
六、实验总结
通过本次实验,我们深入了解了微程序控制的原理和实现方法。
通过设计和实
现一个简单的微程序控制器,我们掌握了微指令序列的设计和控制信号的生成
方法。
微程序控制是计算机硬件控制的重要方式,对于提高计算机的执行效率和扩展指令集具有重要意义。
总之,本实验通过设计和实现一个简单的8位微程序控制器,加深了我们对微程序控制原理的理解。
通过实验,我们掌握了微指令序列的设计方法和控制信号的生成方式。
微程序控制是一种高效且灵活的控制方式,对于提高计算机的执行效率和扩展指令集具有重要意义。
希望通过本次实验,我们能够更好地理解和应用微程序控制技术。