实验六微程序控制单元实验
- 格式:doc
- 大小:101.00 KB
- 文档页数:5
组成原理No.4实验---欧阳光明(2021.03.07)微程序控制器实验组员:组号:21号时间:周二5、6节【实验目的】(1)掌握时序发生器的组成原理。
(2)掌握微程序控制器的组成原理。
(3)掌握微程序的编制、写入、观察微程序的运行情况【实验设备】TDNCM,【实验原理】图中,微指令格式如下:【实验步骤】将全部微程序指令格式变成二进制代码,可得到如下图所示的二进制代码表。
(一)连接电路图:按照下图所示连接实验电路图。
(3)观察时序信号观察方波信号源的输出端H23,调节电位器W1,使输出波形的频率最慢。
将时序电路中的“STOP”开关置为“RUN”,“STEP”开关置为“EXEC”。
按动START键,测量TS1~TS4各点的波形,比较他们的相互关系,画出波形,并标注测量所得的脉冲宽度,见下图:注:其中TS2~TS4的高电平宽度所测结果与TS1的相同,在图中未标注。
(四)实际操作①编程:将编程开关置为PROM(编程状态)。
将“STATE UNIT”单元中的STEP开关置为“STEP”,STOP开关置为“RUN”状态。
用二进制模拟开关置微地址UA5~UA0。
在MK24~MK1开关上置微代码,置0显示灯亮,置1灭。
按动START键,则将微代码写入到对应的地址单元中。
重复后三步操作,将需要的微代码写入到芯片中。
②校验:将编程开关READ(校验)状态。
将“STATE UNIT”单元中的STEP开关置为“STEP”,STOP开关置为“RUN”状态。
用二进制开关置好微地址UA5~UA0。
按动START键,读出微代码,观察显示灯的状态是否与写入的相同。
若不同,则编写错误,重新编程。
③单步运行:将编程开关置于“RUN(运行)”状态。
将“STATE UNIT”单元中的STEP开关置为“STEP”,STOP开关置为“RUN”状态。
使CLR开关从1→0→1,此时微地址寄存器MA5-MA0清“0”,从而给出运行微指令的入口地址为000000(二进制)。
微程序控制器组与微程序设计实验报告实验目的:1.了解微程序控制器组的组成和工作原理;2.掌握微程序设计的基本方法;3.学习使用微程序设计语言进行微程序编写;4.验证微程序的功能和正确性。
实验仪器:1.微程序控制器组;2.计算机。
实验原理:实验步骤:1.设计微指令集:根据实验要求,设计微指令的功能,并确定每个微指令的格式和编码方式。
2.设计微程序地址译码器:根据微指令的编码方式,设计地址译码器,将微指令的编码转化为实际的地址。
3.设计微程序存储器:根据微指令的格式和编码方式,设计存储器,存储微指令。
可以选择使用只读存储器或者随机存储器。
4.设计微指令执行器:根据微指令的格式和编码方式,设计执行器,执行微指令的功能操作。
可以使用组合逻辑电路或者微控制器实现。
5.进行微程序编写:使用微程序设计语言,根据微指令集的功能要求,编写微程序,并存储到微程序存储器中。
6.连接实验仪器:将微程序控制器组和计算机连接起来,确保数据传输的正确性。
7.运行实验程序:根据实验要求,执行微程序,并通过计算机输出结果。
实验结果:经过实验,微程序控制器组成功控制了计算机的各个部件的操作和数据流。
微程序设计也能够正确的控制计算机的运行,并输出了预期的结果。
实验总结:通过本次实验,我对微程序控制器组的组成和工作原理有了更深入的了解。
微程序设计是一种灵活、可扩展的指令级程序设计方法,可以根据需求设计出各种功能强大的微程序。
通过实验,我学会了使用微程序设计语言进行微程序编写,并验证了微程序的功能和正确性。
微程序控制器组的应用范围广泛,不仅可以用于计算机中,还可以应用于其他各种控制系统中。
本次实验让我对计算机控制系统的理论和实践有了更深入的了解,提高了我在计算机控制领域的专业技能。
微程序控制器_实验报告本次实验使用的是微程序控制器,主要涵盖了微程序控制器的概念、微指令的设计、微指令的执行以及测试和调试方法等。
首先,我们需要了解什么是微程序控制器。
微程序控制器是一种专门用于控制计算机操作的控制器,其中的微指令由微程序控制器产生。
微程序控制器的主要优点是提高了计算机系统的可控性和可编程性,可避免在操作过程中出现复杂的电路切换。
在实验中,我们主要是操作微指令的设计和执行。
微指令需要根据指令的类型以及相应的操作码进行设计,确保计算机能够正确地执行指令。
在设计微指令过程中,我们要考虑到指令执行时需要进行的操作、信号的传递以及各个部分之间的协调。
在微指令设计完成后,需要进行微指令的执行。
微指令执行的过程也是十分关键的,这需要对微指令的执行顺序进行精密设计以保证整个计算机发挥最大的性能。
实验中我们了解了基本的微指令执行步骤,包括状态存储器、微指令计数器、微指令发生器以及微指令存储器等。
除了微指令设计和执行外,测试和调试也是实验中比较重要的步骤。
这一步骤旨在确保整个计算机系统能够正常运行,同时也可以在测试过程中发现和纠正存在的错误。
在测试过程中,我们需要编写测试程序,通过输入不同的指令类型和操作码来测试微指令是否能够正确地执行。
在调试过程中,我们需要通过检查微指令执行的每个步骤,找到代码中存在的错误并进行修正,以保证计算机的正常运行。
在实验中,学习了微程序控制器的基本知识,包括微指令的设计和执行以及测试和调试方法。
这些知识对于计算机专业的学生非常重要,可以帮助他们深入了解计算机系统的运行原理及其基本结构。
同时也可以为今后的工作和研究提供基础知识和经验。
一、实验目的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;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。
高金山、刘万成老师班微程序控制器实验综合作业安排:(2014年5月)作业内容:1、设计一条新的机器指令,该指令的功能是把一个通用寄存器的内容传送到一个内存单元ADR中,STRA [ ADR ] ,SR即:[ADR] SR注意:《1》、操作码选用要求:按实验课分组组号选择,不同组选用不同的操作码,见后面各组分配表;《2》、微地址选用要求:也是不同组选用不同的首地址,见后面各组分配表;2、实验指导书59页思考题以及60页表格内容(空表格见后面);实验报告总体要求以及作业内容1的具体要求如下:1、对于作业内容1要求写出:(1)你实验课的分组组号;(2)你组要求使用的操作码和微程序首地址;(3)新指令的指令格式;(4)指令功能;(5)每一个执行步骤的说明;(6)完整的微程序;(7)以及每一条微指令控制信号和下地址的解释说明;2、对于作业内容1要在模拟程序上实现扩展和调试验证。
给出进行扩展指令和验证调试过程的贴图;(注意:实验课不同分组的操作码和微程序首地址不同)3、完成作业内容2即59页思考题和60页填表;4、实验体会及总结;5、每个同学要独立完成一份电子版实验报告;6、实验报告命名为:学号--姓名—高老师班—微程序控制实验7、最后一次实验课(中断实验)上课之前,将电子版实验报告交到刘万成老师的邮箱1792742986@附1:作业内容1中,新指令的操作码与实验课对应的组号:附2:实验指导书59页思考题和60页设计型实验表格,见下页。
思考题:1、在进行56页到59页的实验时,你可能已经发现不同指令在执行的过程中都会经过相同的微地址,也就是说,不同指令的微程序也有公用部分。
请你找出这些公共的微指令,说明它们所做的工作。
2、总结机器指令和微程序之间的关系。
3、总结指令的一般流程。
二、设计型实验1.设计几条指令的功能、格式和执行流程,设计每条微指令各字段的具体编码值,包括控制码的各字段、下地址字段、形成下址用到的条件码。
评语: 课中检查完成的题号及题数:课后完成的题号与题数:成绩: 自评成绩:实验报告实验名称:微程序控制器实验日期:班级:学号:姓名:一、实验目的:1.掌握微程序控制器的组成原理。
2.掌握微程序的编制、写入,观察微程序的运行过程。
二、实验内容:1.了解如何将微码加载到微控存中,了解指令并运行。
2.通过微程序控制器实验能得简单运算结果。
3.设计并修改电路,编写用微程序实现存储器中两个单字节十六进制数的加法运算,结果输出至OUT单元。
三、项目要求及分析:要求:操作数由IN单元输入至MEM,在由MEM中读出操作数并在ALU中运算。
四、具体实现:1. 按图1-3-10 所示连接实验线路,仔细查线无误后接通电源。
如果有‘滴’报警声,说明总线有竞争现象,应关闭电源,检查接线,直到错误排除。
图1-3-10 实验接线图2. 对微控器进行读写操作,分两种情况:手动读写和联机读写。
1) 手动读写进行手动读或是写,都需要手动给出地址,系统专门安排了一个ADDR 单元,做为地址输入。
ADDR 单元原理如图1-3-11 所示,可以看出本单元实为一个加减计数器。
当开关为‘加1’档时,在T2 的下沿计数器进行加1 计数,当开关为‘减1’档时,在T2 的下沿计数器进行减1计数,当开关置为‘置数’档时,计数器置初值,其作用相当于直通,SA7…SA0 的输出值就是二进制开关组的值。
在实验中选择什么档位,取决于写入数据的地址是否连续,如果是连续地址,选择‘加1’或是‘减1’档会方便一些。
如果是离散地址,选择‘置数’档会方便一些。
图1-3-11 ADDR 单元原理图(1) 手动对微控器进行编程(写)①按图1-3-12 接好线(部分实验接线被改变,手动读写微控器完成后应予恢复)。
②将MC 单元编程开关置为‘编程’档,时序单元状态开关置为‘单步’档,ADDR单元状态开关置为‘置数’档。
③使用ADDR 单元的低6 位SA5…SA0 给出微地址MA5…MA0,微地址可以通过MC 单元的MA5…MA0 微地址灯显示。
计算机科学与技术系实验报告专业名称计算机科学与技术课程名称计算机组成原理项目名称微程序控制器实验班级学号姓名同组人员实验日期一、实验目的与要求实验目的(1)掌握微程序控制器的组成原理(2)掌握微程序控制器的编制、写入,观察微程序的运行过程实验要求(1)实验之前,应认真准备,写出实验步骤和具体设计内容,否则实验效率会很低,一次实验时间根本无法完成实验任务,即使基本做对了,也很难说懂得了些什么重要教学内容;(2)应在实验前掌握所有控制信号的作用,写出实验预习报告并带入实验室; (3)实验过程中,应认真进行实验操作,既不要因为粗心造成短路等事故而损坏设备,又要仔细思考实验有关内容,把自己想不明白的问题通过实验理解清楚; (4)实验之后,应认真思考总结,写出实验报告,包括实验步骤和具体实验结果,遇到的问题和分析与解决思路。
还应写出自己的心得体会,也可以对教学实验提出新的建议等。
实验报告要交给教师评阅后并给出实验成绩;二、实验逻辑原理图与分析画实验逻辑原理图逻辑原理图分析地址转移逻辑微地址寄存器控制存储器地址译码P 字段控制字段状态条... ...微命令信号指令寄存器IROP微程序控制器的基本任务是完成当前指令的翻译个执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示成为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,称为控制存储器。
三、数据通路图及分析(画出数据通路图并作出分析)(1)连接实验线路,检查无误后接通电源。
如果有警报声响起,说明有总线竞争现象,应关闭电源,检查连线,直至错误排除。
(2)对微控制器进行读写操作,分两种情况:手动读写和联机读写。
1、手动读写手动对微控制器进行编程(写)1.将时序与操作台单元的开关KK1置为“停止”档,KK3置为“编程”档,KK4置为“控存”档,KK5置为“置数”档2.使用CON单元的SD05——SD00给出微地址,IN单元给出低8位应写入的数据,连续两次按动时序与操作台单元的ST,将IN单元的数据写到该单元的低8位。
一、实验目的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. 微程序编译与仿真结果在仿真软件中加载编译后的机器代码,进行仿真实验。
微程序控制器实验组员:组号:21号时光:周二5.6节【实验目标】(1)控制时序产生器的构成道理.(2)控制微程序控制器的构成道理.(3)控制微程序的编制.写入.不雅察微程序的运行情形【实验装备】TDNCM,【实验道理】图中,微指令格局如下:【实验步调】将全体微程序指令格局变成二进制代码,可得到如下图所示的二进制代码表.(一)衔接电路图:按照下图所示衔接实验电路图.(3)不雅察时序旌旗灯号不雅察方波旌旗灯号源的输出端H23,调节电位器W1,使输出波形的频率最慢.将时序电路中的“STOP”开关置为“RUN”,“STEP”开关置为“EXEC”.按动START键,测量TS1~TS4各点的波形,比较他们的互相关系,画出波形,并标注测量所得的脉冲宽度,见下图:注:个中TS2~TS4的高电平宽度所测成果与TS1的雷同,在图中未标注.(四)现实操纵①编程:将编程开关置为PROM(编程状况).将“STATE UNIT”单元中的STEP开关置为“STEP”,STOP开关置为“RUN”状况.用二进制模仿开关置微地址UA5~UA0.在MK24~MK1开关上置微代码,置0显示灯亮,置1灭.按动START键,则将微代码写入到对应的地址单元中.反复后三步操纵,将须要的微代码写入到芯片中.②校验:将编程开关READ(校验)状况.将“STATE UNIT”单元中的STEP开关置为“STEP”,STOP开关置为“RUN”状况.用二进制开关置好微地址UA5~UA0.按动START键,读出微代码,不雅察显示灯的状况是否与写入的雷同.若不合,则编写错误,从新编程.③单步运行:将编程开关置于“RUN(运行)”状况.将“STATE UNIT”单元中的STEP开关置为“STEP”,S TOP开关置为“RUN”状况.使CLR开关从1→0→1,此时微地址存放器MA5-MA0清“0”,从而给出运行微指令的进口地址为000000(二进制).按动START键,启动时序电路,则每按动一次,读出一条微指令后停机,微地址显示灯和微敕令显示灯将显示所读出的一条指令.④强置运行:经由过程UA5~UA0端口工资置分支地址,实验中置微地址为001010(12)⑤持续运行:将编程开关置于“RUN(运行)”状况.将单步开关“STEP”置为“EXEC”状况.使CLR开关从1→0→1,此时微地址存放器清“0”,从而给出运行微指令的进口地址为000000(二进制).按动START键,则可持续读出微指令.【实验成果】实验中所置微地址为001010(12),持续运行后,就得出持续的000111(07)和001101(15).可知操纵准确.【问题剖析】。
组成原理实验报告题目:微程序控制器实验姓名:班级:学号:同组人:完成日期:2012年6月目录==============================一、实验目的-----------------------------------------------------------------------------------3二、实验设备-----------------------------------------------------------------------------------3三、实验任务-----------------------------------------------------------------------------------3四、预备知识----------------------------------------------------------------------------------4五、实验要求----------------------------------------------------------------------------------6六、实验电路分析,操作与数据记录-----------------------------------------------8七、收获和体会--------------------------------------------------------------------------14一、实验目的1、复习与巩固微程序控制器基本原理。
2、练习简单微程序的控制与调试。
3、为整机实验做准备。
4、进一步加深对运算器、存储器及时序电路的理解。
5、熟练连接硬件电路,为课程设计做好准备。
二、实验设备及器件JZYL—Ⅱ型计算机组成原理教学实验仪一台;芯片:74LSl81:运算器芯片2片74LS373:八D锁存器片74LS244:数据开关片74LS193:同步4位计数器片6116存储器或2114存储器1~2片三、实验任务按照下面的参考电路实现取数、加法、或操作等运算。
微程序控制器实验报告11组:082457 刘秀良082396 石冰冰【实验目的】学习微程序的编写方法,了解微程序控制的实现过程【实验设备】TDN-CM++实验仪一套、PC机一台【实验内容】要求编写以下五条指令的微程序,在数据通路图中观察执行过程1、IN R0 INPUT →R02、OUT [ADDR] RAM →LED3、ADD [ADDR],R0 RAM+R0 →R04、STA R0 R0 →RAM5、JMP ADDR RAM →PC【实验步骤】1、连接实验线路2、根据24位微指令格式及指令功能编写相应微程序,按P25所写步骤将微程序写入ROM(或者)3、输入微程序,共有两种方法:(1)通过开关手动输入①将编程开关置为PROM,STEP置为STEP,STOP置为RUN②在SWITCH UNIT用开关置微地址MA5-MA0③在MK24-MK1开关上置24位微码④启动时序电路,按START按钮⑤重复③- ④步,完成输入所有微码(2)直接从电脑输入:将微程序转换为16进制,在CMPP20环境下直接从键盘输入 4、在实验箱上,将中间的编程开关置为”RUN”,在UA5-UA0开关上置微地址,拨动右下角CLR开关(1->0->1),看右上角的6位地址灯,按单步微指令执行,观察数据通路图中的数据流动实验线路注: 从实验箱手动输入微码时: UA5…UA0 => MA5…MA0从电脑输入微码时: UA5…UA0 => SE6…SE1微指令格式五条指令微操作流程注:图中地址是八进制【实验总结】通过本次实验我们掌握了微程序控制的实现过程及使用方法,知道了五条指令微操作流程,加深了对微程序控制的认识。
计算机组成原理微程序控制器部件教学实验微程序控制器是由微指令组成的,每个微指令对应一个操作或一个操作序列。
它通过微指令来描述指令的执行过程,包括指令的取指,指令的解码,操作数的获取,以及操作的执行。
微程序控制器的本质是一个状态机,通过不同的状态和状态转移来完成指令的执行,从而实现计算机的功能。
在计算机组成原理的教学实验中,微程序控制器部件是非常重要的一个实验内容。
通过搭建微程序控制器的实验平台,学生可以更好地理解计算机指令的执行过程,加深对计算机硬件的认识。
在微程序控制器部件的教学实验中,可以从以下几个方面展开。
1.搭建实验平台:首先需要搭建一个微程序控制器的实验平台,包括微指令存储器、微指令控制器、状态寄存器等硬件部件。
同时需要编写相应的微指令和微程序,对不同的指令进行模拟执行。
2.模拟指令的执行过程:通过编写微指令和微程序,可以模拟指令的执行过程。
通过手动设置各个硬件部件的状态,可以观察指令的取指、解码、执行等过程。
通过模拟执行不同的指令,可以帮助学生理解指令的执行过程和计算机的工作原理。
3.分析指令的执行效率:在实验中,可以通过不同的指令和微程序,分析指令的执行效率。
比如,可以比较不同指令的执行时间,找出其中的瓶颈和优化方法。
通过实验分析,学生可以深入理解指令的执行原理和计算机硬件的优化方法。
4.扩展实验内容:在熟悉了微程序控制器的基本原理后,可以进一步扩展实验内容。
比如,可以设计一个简单的指令集,编写相应的微指令和微程序,实现更复杂的指令的执行过程。
通过扩展实验内容,可以更好地理解微程序控制器部件的原理和功能。
总之,计算机组成原理微程序控制器部件的教学实验是一门重要的实践课程,通过搭建实验平台和编写微指令和微程序,可以帮助学生更好地理解计算机硬件的工作原理,加深对计算机指令执行过程的认识,提高计算机组成原理的学习效果。
实验4 微程序控制器实验一实验目的(1) 掌握微程序控制器的组成原理。
(2) 掌握微程序的编制、写入,观察微程序的运行过程。
二实验设备PC机一台,TD-CMA实验系统一套。
三实验原理微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,称为控制存储器微程序控制器组成原理框图控制器是严格按照系统时序来工作的,因而时序控制对于控制器的设计是非常重要的,从前面的实验可以很清楚地了解时序电路的工作原理,本实验所用的时序由时序单元来提供,分为四拍TS1、TS2、TS3、TS4。
在实验平台中设有一组编程控制开关KK3、KK4、KK5(位于时序与操作台单元),可实现对存储器(包括存储器和控制存储器)的三种操作:编程、校验、运行。
考虑到对于存储器(包括存储器和控制存储器)的操作大多集中在一个地址连续的存储空间中,实验平台提供了便利的手动操作方式。
编辑完成后需进行校验,以确保编辑的正确。
以校验00H 单元为例,对于控制存储器进行校验的具体操作步骤如下:首先将KK1拨至‘停止’档、KK3拨至‘校验’档、KK4拨至‘控存’档、KK5拨至‘置数’档。
由CON 单元的SD05——SD00开关给出需要校验的控存单元地址(000000),连续两次按动开关ST ,MC 单元指示灯M7——M0显示该单元低8位数据(00010001);KK5拨至‘加1’档,再连续两次按动开关ST ,MC 单元指示灯M15——M8显示该单元中8位数据(00100010);再连续两次按动开关ST ,MC 单元指示灯M23——M16显示该单元高8位数据(00110011)。
微程序控制器设计实验报告竭诚为您提供优质⽂档/双击可除微程序控制器设计实验报告篇⼀:微程序控制器的设计与实现微程序控制器的设计与实现⼀、设计⽬的1、巩固和深刻理解“计算机组成原理”课程所讲解的原理,加深对计算机各模块协同⼯作的认识。
2、掌握微程序设计的思想和具体流程、操作⽅法。
3、培养学⽣独⽴⼯作和创新思维的能⼒,取得设计与调试的实践经验。
4、尝试利⽤编程实现微程序指令的识别和解释的⼯作流程。
⼆、设计内容按照要求设计⼀指令系统,该指令系统能够实现数据传送,进⾏加、减运算和⽆条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、⽴即数寻址等五种寻址⽅式。
三、设计具体要求1、仔细复习所学过的理论知识,掌握微程序设计的思想,并根、据掌握的理论写出要设计的指令系统的微程序流程。
指令系统⾄少要包括六条指令,具有上述功能和寻址⽅式。
2、根据微操作流程及给定的微指令格式写出相应的微程序3、将所设计的微程序在虚拟环境中运⾏调试程序,并给出测试思路和具体程序段4、撰写课程设计报告。
四、设计环境1、伟福cop2000型组成原理实验仪,cop2000虚拟软件。
2、Vc开发环境或者Java开发环境。
五、设计⽅案(1)设计思想编写⼀个指令系统,根据所编写的指令的功能来设计相应的微程序。
⾸先利⽤moV传送指令来给寄存器和累加器传送⽴即数,实现⽴即数寻址;利⽤寄存器寻址⽅式,⽤ADDc指令对两者进⾏相加运算;利⽤寄存器间接寻址⽅式,⽤sub指令实现减运算;利⽤累加器寻址⽅式,⽤cpL指令实现对累加器寻址;利⽤存储器寻址⽅式,⽤Jmp指令实现程序的⽆条件跳转。
这样,所要设计的指令系统的功能就全部实现了。
(2)微指令格式采⽤⽔平微指令格式的设计,⼀次能定义并执⾏多个并⾏操作微命令的微指令,叫做⽔平型微指令。
其⼀般格式如下:按照控制字段的编码⽅法不同,⽔平型微指令⼜分为三种:全⽔平型(不译法)微指令,字段译码法⽔平型微指令,以及直接和译码相混合的⽔平型微指令。
实验六 微程序控制单元实验
一、实验目的
1. 熟悉微程序控制器的工作原理。
2. 掌握微程序编制及微指令格式。
二、实验要求
按照实验步骤完成实验项目,熟悉微程序的编制、写入、观察运行状态。
三、实验原理
⒈ 微程序控制电路
微程序控制器的组成见图6-1,其中控制存储器采用4片6116静态存储器 ,微命令
寄存器32位,用三片8D触发器(273)和一片4D(175)触发器组成。微地址寄存器6位,
用三片正沿触发的双D触发器(74)组成,它们带有清零端和置位端。在不判别测试的情况
下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。当T4时刻进行测试判别时,
转移逻辑满足条件后输出的负脉冲通过置位端将某一触发器输出端置为“1”状态,完成地
址修改。
⒉ 微指令格式
表6-1
M25 M24 M23 M22 M21 M20 M19 M18
C B A AR 未用 P(3) A9 A8
M17 M16 M15 M14 M13 M12 M11 M10
CE LOAD CN M S0 S1 S2 S3
M9 M8 M7 M6 M5 M4 M3 M2
P(2)
LDAR LDPC LDIR LDDR2 LDDR1 LDR0 WE
8 7 6 5 4 3 M1 M0
UA0 UA1 UA2 UA3 UA4 UA5 P(1) SW-B
A字段 B字段
C B A 选择
0 0 0 禁止
0 0 1 PC-B
0 1 0 ALU-B
0 1 1 299-B
1 0 0 Rs-B
1 0 1 Rd-B
1 1 0 保留位
1 1 1 保留位
其中UA5~UA0为6位的后续微地址,A、B二译码字段,分别由6个控制位译码
输出多位。B段中的PX3、PX2、PX1 三个测试字位。其功能是根据机器指令及相应微代
码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行。
M20 M9 M1 选择 测试字_
PX3 PX2 PX1
0 0 0 关闭测试
0 0 1 P(1) 识别操作码
0 1 0 P(2) 判寻址方式
0 1 1 P(Z) Z标志测试
1 0 0 P(I) 中断响应
1 0 1 P(D) 中断服务
1 1 0 P(C) C标志测试
1 1 1 保留位
⒊ 微程序流程与代码
图6-2为几条机器指令对应的参考微程序流程图,将全部微程序按微指令格式变成二
进制代码,可得到模型机(一)所例举的8位指令代码。
图6-2 微程序流程图
四、实验内容
(一)微程序的编写
为了解决微程序的编写,本装置设有微程序读写命令键,学生可根据微地址和微指令
格式将微指令代码以快捷方式写入到微程序控制单元。具体的操作方法是按动位于本实验装
置右中则的红色复位按钮使系统进入初始待令状态。再按动【增址】命令键使工作方式提示
位显示“H”。
微程序存贮器读写的状态标志是:显示器上显示8个数字,左边1、2位显示实验装
置的当前状态,左边3、4位显示区域号(区域的分配见表7-2),左边5、6位数字是微
存贮单元地址,硬件定义的微地址线是ua0~ua5共6根,因此它的可寻址范围为
00H~3FH;右边2位数字是该单元的微程序,光标在第7位与第8位之间,表示等待修
改单元内容。
表6-2
区域号 微程序区对应位空间 对应位控制功能
0 31··············24 C B A AR 保留 PX3 A9 A8
1 23··············16 CE LOAD CN M S0 S1 S2 S3
2 15···············08 PX2 LDAR LDPC LDIR LDR2 LDR1 LDR0 WE
3 07···············00 UA0 UA1 UA2 UA3 UA4 UA5 PX1 SW-B
用【读】命令键可以对微程序存贮器进行检查(读出)或更改(写入)。对微程序存
贮器读写,一般应先按MON,使实验系统进入初始待命状态。然后输入所要访问的微程序
区域地址,再按【读】命令键,实验系统便以该区域的00H作为起始地址,进入微程序存
贮器读写状态。
下面举例说明操作规程:
按键 8位LED显示 说 明
【
返回】
D Y _ H P. 返回初始待命状态
【
读】
D Y _ H P. 初始待命状态,按【读】键无效
0 D Y _ H 0 按数字键0,从0区域0地址开始
【
读】
C n 0 0 0 0 X X 按【读】命令键,进入微程序读状态,左边第3位
起显示00(区域号)、00(微地址)、XX(该微
程
序单元的内容),光标闪动移至第7位
55 C n 0 0 0 0 5 5 按55键,将内容写入00区域00H单元
【
增址】
C n 0 0 0 1 X X 按【增址】命令键,读出00区域下一个单元
01H,光标重新移至第7位
AA C n 0 0 0 1 A A 按AA键,将内容写入00区域01H单元
【
返回】
D Y _ H P. 返回初始待命状态
1 D Y _ H 1 再按数字键1,从1区域0地址开始
【
读】
C n 0 1 0 0 X X 按【读】命令键,进入微程序读状态,左边第3位
起显示01(区域号)、00(微地址)、XX(该微
程
序单元的内容),光标闪动移至第7位
55 C n 0 1 0 0 5 5 按55键,将内容写入01区域00H单元
【
增址】
C n 0 1 0 1 X X 按【增址】命令键,读出01区域下一个单元
01H,光标重新移至第7位
AA C n 0 1 0 1 A A 按AA键,将内容写入01区域01H单元
【
返回】
D Y _ H P. 按【返回】退出存储操作返回初始状态
按以上所说明的操作规程,通过键盘在微地址00H单元所对应的四个区域地址分别输
入55H,在微地址01H单元所对应的四个区域地址分别输入0AAH。
(二)手动方式下的微地址打入操作
微程序控制器的组成见图6-1,其中微命令寄存器32位,用三片8D触发器(273)和
一片4D(175)触发器组成。它们的清零端由CLR来控制微控制器的清零。它们的触发端
CK接T2,在时序节拍的T2时刻将微程序的内容打入微控制寄存器(含下一条微指令地址)。
⑴ 微地址控制原理
图6-3 微地址控制原理图
⑵ 微地址控制单元的实验连接
图6-4 实验连线示意图
按图6-5所示,连接实验电路:
① 总线接口连接:用8芯扁平线连接图6-4
中所有标明“”或“”图案
的总线接口。
② 时钟信号“”连接:用双头实验导线连接图7-4中所有标明“”图案的插
孔
(注:Dais-CMH的时钟信号已作内部连接)。
⑶ 微地址的打入操作
在“L”状态下,首先令SW-B=0,然后向数据开关置数,再按【单步】键,在机器
周期的T2时刻把数据开关的内容打入微地址锁存器。实验步骤如下:
注:【单步】键的功能是启动时序电路产生T1~T4四拍单周期脉冲
⑷ 微地址的修改与转移
按图6-3所示,微地址锁存器的置位端R受CE5~CE0控制,当测试信号CE5~CE0
输出负脉冲时,通过锁存器置位端R将某一锁存器的输出端强行置“1”,实现微地址的修
改与转移。
按微程序流程图6-2所示的微控制流程,对指令译码寄存器IR分别打入微控制流程
定义的操作码20H、40H、60H、80H、0A0H,然后打入流程图定义的基地址08H,按
【单步】键,在机器周期T4节拍按微控制流程对IR指令寄存器的内容进行测试和判别,
使后续微地址转向与操作码相对应的微程序入口地址。举例操作如下:
① 当IR寄存器为20H、微地址为08H,按【单步】键后微地址为09H。
② 当IR寄存器为60H、微地址为08H,按【单步】键后微地址为0BH。
注:【单步】键的功能是启动时序电路产生T1~T4四拍单周期脉冲
五、实验思考题
思考题6.1:本次实验采用的控制存储器芯片属于何种类型的存储器?控制存储器的
单元数与字长分别为多少?本机采用的微指令格式如何?IN,ADD,STA,OUT,JMP
指令对应的微程序的长度分别是多少?