微程序控制器实验报告之欧阳家百创编

合集下载

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

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

计算机组成原理实验之微程序控制器实验一、实验目的1.掌握时序发生器的组成原理。

2.掌握微程序控制器的组成原理。

二、实验内容1.实验电路(1)时序发生器电路本实验所用的时序电路见图4.1。

电路由一个500KHz晶振、2片GAL22V10、一片74LS390组成,可产生两级等间隔时序信号T1-T4、W1-W3,其中一个W由一轮T1-T4组成,相当于一个微指令周期或硬连线控制器的一拍,而一轮W1-W3可以执行硬连线控制器的一条机器指令。

另外,供数字逻辑实验使用的时钟由MF经一片74LS390分频后产生。

图4.1 时序信号发生器(2)微程序控制器电路图4.2微程序控制器电路微地址转移逻辑表达式:A5=D5=μA5;A4=D4=C•P2+μA4;A3=D3=IR7•P1+μA3;A2=D2=IR6•P1+SWC•P0+μA2;A1=D1=IR5•P1+SWB•P0+μA1;A0=D0=IR4•P1+SWA•P0+μA0。

2.一些关键技术(1)微指令格式图4.3微指令格式(3)上述8条指令的微程序流程图如图4.4所示图4.4微程序流程图(4)微程序代码表表4-2微程序代码表微指令KT RRF WRF RRM WRM PR当前微地址00 0C 1E 06 07 0B 1D 0D 0E 0A 02 03 09 04 05 08 0F 下一微地址08 1E 06 07 1E 1D 0D 0E 1D 02 03 02 04 05 04 0F 10P0 1 . . . . . . . . . . . . . . . .P1 . . . . . . . . . . . . . . . . 1P2 . . . . . . . . . . . . . . . . .备用. . . . . . . . . . . . . . . . .TJ . 1 . . 1 1 . 1 1 . 1 . 1 . 1 . .LDIR . . . 1 . . . 1 . . . . . . . . 1PC+1 . . . . . . . . . . . . . . . . .LDPC# . 1 . . . 1 . . . . . . . . . 1AR+1 . . . . . . . . . . . 1 . . 1 . .LDAR# . 1 . . . 1 . . . 1 . . 1 . . . . LDDR1 . . . . . . . . . . . . . . . . . LDDR2 . . . . . . . . . . . . . . . . . LDRi . . . . . . . . 1 . . . . . . . .SW_BUS# . 1 1 . . 1 1 . 1 1 . . 1 1 . 1 . RS_BUS# . . . . 1 . . . . . . . . . . . . ALU_BUS# . . . . . . . . . . . . . . . . . RAM_BUS# . . . . . . . . . . 1 . . . . . . CER# . . . 1 . . . 1 . . . . . . . . 1 CEL# . . 1 . . . 1 . . . 1 . . 1 . . . LR/W# . . 0 . . . 0 . . . 1 . . 0 . . . Cn# . . . . . . . . . . . . . . . . .M . . . . . . . . . . . . . . . . .S0 . . . . . . . . . . . . . . . . .S1 . . . . . . . . . . . . . . . . .S2 . . . . . . . . . . . . . . . . .S3 . . . . . . . . . . . . . . . . .表4-2微程序代码表(续)微指令ADD SUB AND STA LDA JC STP OUT当前微地址10 18 11 19 12 1A 13 1B 14 1C 15 1F 16 17 下一微地址18 0F 19 0F 1A 0F 1B 0F 1C 0F 0F 0F 0F 0FP0 . . . . . . . . . . . . . .P1 . . . . . . . . . . . . . .P2 . . . . . . . . . . 1 . . .备用. . . . . . . . . . . . . .TJ . . . . . . . . . . . . 1 1LDIR . . . . . . . . . . . . . .PC+1 . 1 . 1 . 1 . 1 . 1 1 . 1 1LDPC# . . . . . . . . . . . 1 . .AR+1 . . . . . . . . . . . . . .LDAR# . . . . . 1 . 1 . . . . .LDDR1 1 . 1 . 1 . 1 . . . . . . .LDDR2 1 . 1 . 1 . . . . . . . . .LDRi . 1 . 1 . 1 . . . 1 . . . .SW_BUS# . . . . . . . . . . . . . .RS_BUS# . . . . . . 1 . 1 . . 1 . 1ALU_BUS# . 1 . 1 . 1 . 1 . . . . . .RAM_BUS# . . . . . . . . . 1 . . . .CER# . . . . . . . . . . . . . .CEL# . . . . . . . 1 . 1 . . . .LR/W# . . . . . . 0 . 1 . . . .Cn# . . . 1 . . . . . . . . . .M . 0 . 0 . 1 . 0 . . . . . .S0 . 1 . 0 . 1 . 0 . . . . . .S1 . 0 . 1 . 1 . 0 . . . . . .S2 . 0 . 1 . 0 . 0 . . . . . .S3 . 1 . 0 . 1 . 0 . . . . . .注:后缀为#的信号都是低电平有效信号,为了在控存ROM中用“1”表示有效,这些信号在控制器中经过反相后送往数据通路。

微程序控制器实验报告

微程序控制器实验报告

计算机组成原理实验及课程设计报告书系别:计算机系专业:计算机科学与技术课程:计算机组成原理指导教师:实验人:班级:实验时间: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.实验过程a.程序设计首先,需要设计微程序控制器所使用的指令集。

本实验选取了一个简单的指令集,包括加载寄存器、存储器和输入输出操作等指令。

b.微指令设计根据指令集的要求,设计相应的微指令。

每个微指令包含了控制信号的信息,用于控制计算机的不同部件。

c.微程序设计根据微指令的设计,设计相应的微程序。

微程序是一系列的微指令的有序序列,用于控制计算机的指令执行。

d.实验搭建根据设计好的微程序,搭建微程序控制器的电路,并将电路与开发板连接。

e.实验验证将编写好的程序加载到存储器中,并通过控制信号监测计算机的运行情况。

验证微程序控制器的设计是否正确。

4.实验结果与分析经过实验验证,微程序控制器能够正常工作,并且能够按照设计好的微程序执行指令集中的各项操作。

通过观察控制信号的变化,可以得出微程序控制器是否正常工作的结论。

5.实验结论本实验以设计一个简单的微程序控制器为目标,通过设计微指令和微程序,并搭建相应的电路,成功实现了微程序控制器的功能。

通过本实验,我对微程序控制器的组成和设计原理有了更深入的了解。

6.实验总结微程序控制器是计算机中的重要组成部分,通过控制信号的变化,实现了对指令执行的控制。

本实验通过设计微指令和微程序,搭建相应的电路,成功实现了微程序控制器的功能。

通过本实验,我不仅对微程序控制器有了更深入的理解,还提高了我对计算机原理的理解能力和动手实践能力。

微程序控制器原理实验报告

微程序控制器原理实验报告

微程序控制器原理实验报告一、引言微程序控制器作为计算机系统的重要组成部分,扮演着指挥和控制计算机操作的关键角色。

本实验报告将对微程序控制器的原理进行探讨,并描述相关实验的设计、步骤、结果和分析。

二、微程序控制器的原理2.1 微程序控制器的概念微程序控制器是一种控制计算机操作的技术,通过将指令集中的每个指令分解为一系列微操作,并以微指令的形式存储在控制存储器中,从而实现指令的执行控制。

2.2 微指令的组成和格式微指令由多个字段组成,每个字段代表一个微操作控制信号。

常见的微指令格式包括微地址字段、条件码字段、操作码字段等。

2.3 微指令的执行过程微指令的执行过程包括指令的取指、译码、执行和写回等阶段。

每个阶段对应微指令的不同部分,通过控制信号的转换和传递,完成相应的操作。

三、微程序控制器的设计与实验3.1 设计思路在进行微程序控制器实验前,需要明确实验的目标和设计思路。

实验通常包括以下几个步骤:确定指令集、确定微指令格式、设计控制存储器、设计控制逻辑电路等。

3.2 实验步骤1.确定指令集:根据实验需求,确定需要支持的指令集。

2.确定微指令格式:根据指令集的要求,设计适合的微指令格式。

3.设计控制存储器:根据微指令格式,设计控制存储器的结构和内容。

4.设计控制逻辑电路:根据微指令的执行过程,设计控制逻辑电路,实现指令的控制和转换。

5.构建实验平台:将设计的控制存储器和控制逻辑电路构建成实验平台,并与计算机系统相连。

6.进行实验:在实验平台上执行指令,观察和记录实验结果。

3.3 实验结果与分析根据实验步骤中的设计和操作,得到了相应的实验结果。

通过比对实验结果和预期效果,可以对微程序控制器的设计和实验进行分析和评估。

四、总结与展望微程序控制器作为计算机系统的关键组成部分,通过微操作的方式实现指令的执行控制。

本实验报告对微程序控制器的原理进行了探讨,并描述了相关实验的设计、步骤、结果和分析。

通过实验,我们深入理解了微程序控制器的工作原理和设计方法。

微程序控制器_实验报告

微程序控制器_实验报告

微程序控制器_实验报告本次实验使用的是微程序控制器,主要涵盖了微程序控制器的概念、微指令的设计、微指令的执行以及测试和调试方法等。

首先,我们需要了解什么是微程序控制器。

微程序控制器是一种专门用于控制计算机操作的控制器,其中的微指令由微程序控制器产生。

微程序控制器的主要优点是提高了计算机系统的可控性和可编程性,可避免在操作过程中出现复杂的电路切换。

在实验中,我们主要是操作微指令的设计和执行。

微指令需要根据指令的类型以及相应的操作码进行设计,确保计算机能够正确地执行指令。

在设计微指令过程中,我们要考虑到指令执行时需要进行的操作、信号的传递以及各个部分之间的协调。

在微指令设计完成后,需要进行微指令的执行。

微指令执行的过程也是十分关键的,这需要对微指令的执行顺序进行精密设计以保证整个计算机发挥最大的性能。

实验中我们了解了基本的微指令执行步骤,包括状态存储器、微指令计数器、微指令发生器以及微指令存储器等。

除了微指令设计和执行外,测试和调试也是实验中比较重要的步骤。

这一步骤旨在确保整个计算机系统能够正常运行,同时也可以在测试过程中发现和纠正存在的错误。

在测试过程中,我们需要编写测试程序,通过输入不同的指令类型和操作码来测试微指令是否能够正确地执行。

在调试过程中,我们需要通过检查微指令执行的每个步骤,找到代码中存在的错误并进行修正,以保证计算机的正常运行。

在实验中,学习了微程序控制器的基本知识,包括微指令的设计和执行以及测试和调试方法。

这些知识对于计算机专业的学生非常重要,可以帮助他们深入了解计算机系统的运行原理及其基本结构。

同时也可以为今后的工作和研究提供基础知识和经验。

微程序控制器实验报告

微程序控制器实验报告

一、实验目的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;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。

微程序控制器实验报告

微程序控制器实验报告

微程序控制器实验报告微程序控制器实验报告引言微程序控制器是一种常见的计算机控制器,它采用微程序的方式来实现指令的执行。

在本次实验中,我们将学习和探索微程序控制器的工作原理,并通过实验验证其功能和性能。

实验目的本次实验的主要目的是通过设计和实现一个简单的微程序控制器,来深入理解微程序控制器的工作原理和原理图设计。

实验过程1. 设计微指令集在设计微程序控制器之前,首先需要确定微指令集。

微指令集是由一系列微指令组成的,每个微指令对应一个控制信号,用于控制计算机的各个组件的操作。

在本次实验中,我们选择了常见的微指令集,包括存储器读写、算术逻辑运算、数据传输等指令。

2. 设计微指令控制存储器微指令控制存储器是微程序控制器的核心组件,用于存储微指令集。

在本次实验中,我们使用了静态随机存储器(SRAM)来实现微指令控制存储器。

通过将微指令集编码为二进制数,并将其存储在SRAM中的不同地址位置,实现对微指令的存储和读取。

3. 设计微指令解码器微指令解码器用于解析微指令,并产生相应的控制信号。

在本次实验中,我们使用了组合逻辑电路来实现微指令解码器。

通过将微指令的不同位与控制信号相连,实现对微指令的解码和控制信号的生成。

4. 设计微程序计数器微程序计数器用于控制微程序的执行顺序。

在本次实验中,我们使用了计数器和触发器来实现微程序计数器。

通过将微程序计数器的输出与微指令控制存储器的地址输入相连,实现对微指令的顺序读取。

实验结果通过实验,我们成功设计并实现了一个简单的微程序控制器。

在实验中,我们编写了微指令集,并将其存储在微指令控制存储器中。

通过微指令解码器和微程序计数器的协作,我们成功实现了对微指令的解码和执行。

实验结果表明,微程序控制器能够准确地控制计算机的各个组件的操作,并实现指令的执行。

实验总结通过本次实验,我们深入了解了微程序控制器的工作原理和原理图设计。

微程序控制器作为一种常见的计算机控制器,具有灵活性和可扩展性。

微程序控制器的实验报告

微程序控制器的实验报告

计算机科学与技术系实验报告专业名称计算机科学与技术课程名称计算机组成与结构项目名称微程序控制器实验一、实验目的1.掌握微程序控制器的组成原理;2.掌握微程序的编制、写入、观察微程序的运行情况。

二、实验逻辑原理图与分析2.1 实验逻辑原理图及分析微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。

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

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

微程序存储在一种专用的存储器中,该存储器称为控制存储器,如图所示:微程序控制器组成原理框图控制器是严格按照系统时序来工作的,因而时序控制对于控制器的设计是非常重要的,从前面的实验可以很清楚地了解时序电路的工作原理。

本实验所用的时序单元来提供,分为四拍TS1、TS2、TS3、TS4。

在微程序控制器的组成中,控制器采用3片2816的E^2PROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(273)和一片4D(175)触发器组成。

为地址寄存器6位,用三篇正沿触发的双D触发器(74)组成,他们带有清“0”端和预置端。

在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为吓一条微指令地址。

当T4时刻惊醒测试判别式,转移逻辑满足条件后输出的负脉冲通过强置端将某一触发器置为“1”状态,完成地址修改。

三、数据通路图及分析(画出数据通路图并作出分析)本实验安排了四条机器指令,分别为ADD(00000000)、IN(00100000)、OUT(00110000)和HLT(01010000),括号中为各指令的二进制代码,指令格式如下:助记符机器指令码说明IN 0010 0000 IN->ROADD 0000 0000 RO+RO->ROOUT 0011 0000 RO->OUTHLT 0101 0000 停机试验中机器指令由CON单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,如下图所示:数据通路图几条机器指令对应的参考微程序流程图如下图所示。

微程序控制器实验报告

微程序控制器实验报告

组成原理实验报告题目:微程序控制器实验姓名:班级:学号:同组人:完成日期: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片三、实验任务按照下面的参考电路实现取数、加法、或操作等运算。

计算机组成原理实验报告3 微程序控制器实验

计算机组成原理实验报告3  微程序控制器实验

实验三微程序控制器实验一.实验目得与要求:实验目得:1.理解时序产生器得原理,了解时钟与时序信号得波形;2.掌握微程序控制器得功能,组成知识;3.掌握微指令格式与各字段功能;4.掌握微程序得编制,写入,观察微程序得运行,学习基本指令得执行流程.实验要求:1.实验前,要求做好实验预习,并复习已经学过得控制信号得作用;2.按练习一要求完成测量波形得操作,画出TS1,TS2,TS3,TS4得波形,并测出所用得脉冲Ф周期。

按练习二得要求输入微指令得二进制代码表,并单步运行五条机器指令. 二.实验方案:按实验图在实验仪上接好线后,仔细检查无误后可接通电源.1.练习一:用联机软件得逻辑示波器观测时序信号,测量Ф,TS1,TS2,TS3,TS4信号得方法如下:(1)TATEUNIT 中STOP开关置为“RUN”状态(向上拨),STEP开关置为“EX EC”状态(向上拨)。

(2) 将SWITCH UNIT中右下角CLR开关置为“1”(向上拨)。

(3)按动“START"按钮,即可产生连续脉冲。

(4)调试"菜单下得“显示逻辑示波器窗口,即可出现测量波形得画面。

(5)探头一端接实验仪左上角得CH1,另一端接STATE UNIT中得Ф插座,即可测出时钟Ф得波形。

(6)探头一端接实验仪左上角得CH2,另一端接STATE UNIT中得TS1插座,即可测出TS1得波形;(7)探头一端接实验仪左上角得CH1,另一端接STA TE UNIT中得TS2插座,即可测出TS2得波形.(8)将红色探头一端接实验仪左上角得CH1,另一端接STATE UNIT中得TS3插座,即可测出TS3得波形。

(9)将红色探头一端接实验仪左上角得CH1,另一端接STATE UNIT中得TS4插座,即可测出TS4得波形。

2.观察微程序控制器得工作原理:①关掉实验仪电源,拔掉前面测时序信号得接线;②编程写入E2PROM 2816A.将编程开关(MJ20)置为PROM(编程)状态;B.将实验板上STA TE UNIT 中得STEP置为STEP状态,STOP置为RUN状态,SWITCHUNIT中CLR开关置为1状态;C.在右上角得SWITCHUNIT中UA5—UA0开关上置表3、2中某个要写得微地址;D.在MK24-MK1开关上置表3、2中要写得微地址后面得24位微代码,24位开关对应24位显示灯,开关置为1时灯亮,为0时灯灭;E.启动时序电路,即将微代码写入到E2PROM 2816得相应地址对应得单元中;F.重复C—E步骤,将表3、2得每一行写入E2PROM 2816。

单片机实验报告之欧阳歌谷创作

单片机实验报告之欧阳歌谷创作

1目录一、欧阳歌谷(2021.02.01)二、实验一 (1)三、实验二 (7)四、实验三 (11)五、实验四 (15)欧阳歌谷创编2021年2月11实验一定时/计数器验证实验一、实验目的熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时。

二、实验设备及器件IBM PC机一台 PROTEUS 硬件仿真软件Keil C51。

三、实验内容用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始。

四、实验要求要求采用Proteus软件实现上述实验。

五、实验步骤1.打开Proteus ISIS编辑环境,按照表1-1所列的元件清单添加元件。

元件名称所属类所属子类AT89C51Microprocessor8051 FamilyCAP Capacitors GenericCAP-ELEC Capacitors GenericCRYSTAL Miscellaneous——RES Resistors Generic 7SEG-COM-CAT-GRN Optoelectronics7-Segment Displays PULLUP Modeling Primitives Digital[Miscellaneous]元件全部添加后,在Proteus ISIS的编辑区域中按图1-1所示的原理图连接硬件电路。

图1-1 电路原理图2.根据参考程序绘出流程图,并辅以适当的说明。

流程图如图1-2所示:图1-2 程序流程图3.打开KeilμVision4,新建Keil项目,选择AT89C51单片机作为CPU,将参考程序导入到“Source Group 1”中。

在“Options for Target”对话窗口中,选中“Output”选项卡中的“Create HEX File”选项和“Debug”选项卡中的“Use:Proteus VSM Simulator”选项。

微程序控制实验报告

微程序控制实验报告

微程序控制实验报告微程序控制实验报告一、引言微程序控制是一种基于微指令的计算机控制方式,它将指令的执行过程细化为一系列微操作,通过微指令控制单元来实现。

本实验旨在通过设计和实现一个简单的微程序控制器,加深对微程序控制原理的理解。

二、实验目的1. 掌握微程序控制的基本原理;2. 熟悉微程序控制器的设计和实现方法;3. 实践运用微程序控制器设计一个简单的计算器。

三、实验原理微程序控制器由微指令存储器、微程序计数器、微指令译码器和控制逻辑组成。

微指令存储器存储了一系列微指令,每个微指令对应一个微操作。

微程序计数器用于指示当前执行到的微指令地址。

微指令译码器负责将微指令转换为控制信号,控制逻辑根据控制信号来控制计算机各个部件的工作。

四、实验步骤1. 设计微指令集:根据计算器的功能需求,设计一套适合的微指令集,包括算术运算、存储器读写等操作。

2. 编写微指令存储器的初始化程序:将设计好的微指令集存储在微指令存储器中,为后续的微程序执行做准备。

3. 实现微程序计数器:设计一个计数器电路,用于指示当前执行到的微指令地址,并实现计数器的自增和重置功能。

4. 设计微指令译码器:根据微指令的格式和编码规则,设计一个译码器电路,将微指令转换为控制信号。

5. 实现控制逻辑:根据微指令的控制信号,设计一个控制逻辑电路,控制计算器各个部件的工作。

6. 连接和调试:将各个部件按照设计连接起来,并进行调试和测试,确保微程序控制器能够正常工作。

五、实验结果与分析经过实验,我们成功实现了一个简单的微程序控制器,并用它设计了一个计算器。

该计算器能够进行基本的算术运算和存储器读写操作。

在实验过程中,我们发现微程序控制器的设计和实现相对复杂,需要充分考虑微指令的设计和控制逻辑的编写。

同时,微程序控制器的执行效率相对较低,对于复杂的程序,可能需要较长的执行时间。

六、实验总结通过本次实验,我们深入了解了微程序控制的原理和实现方法。

微程序控制器是一种灵活且可扩展的控制方式,可以根据不同的需求设计不同的微指令集和控制逻辑,具有一定的通用性。

计算机组成原理微程序控制器实验报告

计算机组成原理微程序控制器实验报告

计算机组成原理实验报告三:微程序控制器实验2011-05-06 01:00:09|分类:实验报告| 标签:实验微程序字段微指令信号|字号大中小订阅实验三:微程序控制器实验一、实验目的与要求:实验目的:1、掌握时序产生器的原理和具体操作。

2、掌握微程序控制器的功能、组成知识。

3、掌握微程序的编制、写入、观察微程序的运行,学习基本指令的执行流程。

要求:做好实验预习,掌握进位控制运算器的原理。

实验之前,应认真准备,写出实验步骤和具体分析内容,否则实验效率会特别低,一次实验时间根本无法完成实验任务,即使基本做对了,也很难说学懂了些什么重要教学内容。

二、实验方案:【1】、连接好实验线路,检查无误后接通电源。

【2】、编程:(1)将编程开关(MJ20)置为PROM(编程)状态;(2)将STATE UNIT中的STEP置为"STEP"状态,STOP置为"RUN"状态;(3)在UA5-UA0开关上置要写的某个微地址(八进制);(4)在MK24-MK1开关上置要写的微地址相应的24位微代码,24位开关对应24位显示灯,开关量为"1"灯亮,为"0"灯灭;(5)启动时序电路(按动启动按钮START),即将微代码写入到E2PROM2816的相应地址对应的单元中;(6)重复(3)~(5)步骤将每一条微指令写入E2PROM2816。

【3】、校验:(1)将编程开关置为READ状态;(2)将STEP开关置为"STEP"状态,STOP开关置为"RUN"状态;(3)在开关UA5~UA0上置好要读的某个微地址;(4)按动START键,启动时序电路,观察显示灯MD24-MD1的状态,检查读出的微代码是否已写入的相同。

如果不同在将开关置于PROM编程状态,重新执行编程步骤;(5)重复(3)、(4)步骤将每一条微指令从E2PROM2816中读出。

微程序控制器设计实验报告

微程序控制器设计实验报告

微程序控制器设计实验报告竭诚为您提供优质⽂档/双击可除微程序控制器设计实验报告篇⼀:微程序控制器的设计与实现微程序控制器的设计与实现⼀、设计⽬的1、巩固和深刻理解“计算机组成原理”课程所讲解的原理,加深对计算机各模块协同⼯作的认识。

2、掌握微程序设计的思想和具体流程、操作⽅法。

3、培养学⽣独⽴⼯作和创新思维的能⼒,取得设计与调试的实践经验。

4、尝试利⽤编程实现微程序指令的识别和解释的⼯作流程。

⼆、设计内容按照要求设计⼀指令系统,该指令系统能够实现数据传送,进⾏加、减运算和⽆条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、⽴即数寻址等五种寻址⽅式。

三、设计具体要求1、仔细复习所学过的理论知识,掌握微程序设计的思想,并根、据掌握的理论写出要设计的指令系统的微程序流程。

指令系统⾄少要包括六条指令,具有上述功能和寻址⽅式。

2、根据微操作流程及给定的微指令格式写出相应的微程序3、将所设计的微程序在虚拟环境中运⾏调试程序,并给出测试思路和具体程序段4、撰写课程设计报告。

四、设计环境1、伟福cop2000型组成原理实验仪,cop2000虚拟软件。

2、Vc开发环境或者Java开发环境。

五、设计⽅案(1)设计思想编写⼀个指令系统,根据所编写的指令的功能来设计相应的微程序。

⾸先利⽤moV传送指令来给寄存器和累加器传送⽴即数,实现⽴即数寻址;利⽤寄存器寻址⽅式,⽤ADDc指令对两者进⾏相加运算;利⽤寄存器间接寻址⽅式,⽤sub指令实现减运算;利⽤累加器寻址⽅式,⽤cpL指令实现对累加器寻址;利⽤存储器寻址⽅式,⽤Jmp指令实现程序的⽆条件跳转。

这样,所要设计的指令系统的功能就全部实现了。

(2)微指令格式采⽤⽔平微指令格式的设计,⼀次能定义并执⾏多个并⾏操作微命令的微指令,叫做⽔平型微指令。

其⼀般格式如下:按照控制字段的编码⽅法不同,⽔平型微指令⼜分为三种:全⽔平型(不译法)微指令,字段译码法⽔平型微指令,以及直接和译码相混合的⽔平型微指令。

万年历(c++设计)之欧阳语创编

万年历(c++设计)之欧阳语创编

欧阳语创编面向对象技术实验报告(万年历)1.实验目的掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。

为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。

为了能更好地了解C++语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。

一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。

2.功能简介万年历,输入年份,可以显示出这一年的每个月份和所对应的星期天,可以查询每一天.3.流程图4.代码#include<iostream>#include<cmath>using namespace std;int i,c,day,year,k,a[50];void f1(int x) //大月{for( i=0;i<50;i++)a[i]=33;for(i=k-1;i>=0;i--)a[i]='\000'; //1号前均为空格for(i=k;i<31+k;i++)a[i]=a[i-1]+1;}void f2(int x) //小月{for( i=0;i<50;i++)a[i]=33;for(i=k-1;i>=0;i--)a[i]='\000';for(i=k;i<30+k;i++)a[i]=a[i-1]+1;}void f3(int x) //闰年二月{for( i=0;i<50;i++)a[i]=33;for(i=k-1;i>=0;i--)a[i]='\000';for(i=k;i<29+k;i++)a[i]=a[i-1]+1;}void f4(int x) //非闰年二月{for( i=0;i<50;i++)a[i]=33;for(i=k-1;i>=0;i--)a[i]='\000';for(i=k;i<28+k;i++)a[i]=a[i-1]+1;}void g(int y[],int z) // 输出日历表{cout<<"日"<<'\t'<<"一"<<'\t'<<"二"<<'\t'<<"三"<<'\t'<<"四"<<'\t'<<"五"<<'\t'<<"六"<<endl;for(i=0;i<50;i++){if(a[i]==0)cout<<(char)a[i]<<'\t';if(a[i]!=0&&a[i]!=33)cout<<a[i]<<'\t';else ;if(i%7==0)cout<<endl;}cout<<endl<<endl<<endl;}int main(){int s,count=0;cout<<"请输入年份:";cin>>year;cout<<endl;c=year;for(s=1;s<=year;s++)if(((s-1)%4==0&&(s-1)%100!=0)||(s-1)%400==0)count++;day=365*c+count; //相差天数cout<<"*********************"<<year<<"年日历*********************";cout<<endl<<endl<<endl<<endl;k=(day%7+6)%7+1;cout<<"一月"<<endl<<endl;f1(k);g(a,50);if((year%4==0&&year%100!=0)||year%400==0) //闰年二月{k=((day+31)%7+6)%7+1;cout<<"二月"<<endl<<endl;f3(k);g(a,50);day=day+31+29;}else //非闰年二月{k=((day+31)%7+6)%7+1;cout<<"二月"<<endl<<endl;f4(k);g(a,50);day=day+31+28;}k=(day%7+6)%7+1;cout<<"三月"<<endl<<endl;f1(k);g(a,50);k=((day+31)%7+6)%7+1;cout<<"四月"<<endl<<endl;f2(k);g(a,50);k=((day+31+30)%7+6)%7+1;cout<<"五月"<<endl<<endl;f1(k);g(a,50);k=((day+31+30+31)%7+6)%7+1;cout<<"六月"<<endl<<endl;f2(k);g(a,50);k=((day+31+30+31+30)%7+6)%7+1;cout<<"七月"<<endl<<endl;f1(k);g(a,50);k=((day+31+30+31+30+31)%7+6)%7+1;cout<<"八月"<<endl<<endl;f1(k);g(a,50);k=((day+31+30+31+30+31+31)%7+6)%7+1;cout<<"九月"<<endl<<endl;f2(k);g(a,50);k=((day+31+30+31+30+31+31+30)%7+6)%7+1;cout<<"十月"<<endl<<endl;f1(k);g(a,50);k=((day+31+30+31+30+31+31+30+31)%7+6)%7+1;cout<<"十一月"<<endl<<endl;f2(k);g(a,50);k=((day+31+30+31+30+31+31+30+31+30)%7+6)%7+1; cout<<"十二月"<<endl<<endl;f1(k);g(a,50);return 0;}5.代码分析大月和小月的定义void f1(int x) //大月{for( i=0;i<50;i++)a[i]=33;for(i=k-1;i>=0;i--)a[i]='\000'; //1号前均为空格for(i=k;i<31+k;i++)a[i]=a[i-1]+1;}主要运用了数组的循环语句进行对大月的定义。

科威PLC开发文档之欧阳法创编

科威PLC开发文档之欧阳法创编

WSP-0301-24 文本显示器 时间:2021.03.09
创作:欧阳法
1.《复位》操作 M0—> 0-1-0 使系统重新运行
2. 《时间设置》
开启时间: D210 <PLC 中> 有断电保存数据功能 关闭时间: D220 <PLC 中>
间隔时间: D230 <PLC 中>
3. 设置时不用密码.
PLC 梯形图程序
测试数据
9X3+10=37s
1. PLC 程序清单:
当X7为ON 时,进行数据测试调试用。

取掉继电器后再调试。

L N 地 +24V COM X7 COM
科威PLC 下载线及通信线
PC 机(针)-------科威PLC (孔)
PC 机为9脚针头。

WSP-0301-24文本显示器下载线
3s
3s 10s
PC机(针)-------文本显示器(针)
WSP-0301-24文本显示器与PLC间通信线
系统安装及下载线问题:
1.PLC主机程序下载线可利用PLC和显示屏连接线
(将显示屏端连接到PC机RS-232)。

2.显示屏下载线可购买或自制一根,专门用来下载
显示屏程序。

微程序控制器实验报告之欧阳治创编

微程序控制器实验报告之欧阳治创编

组成原理No.4实验---时间2021.03.10 创作:欧阳治微程序控制器实验组员:组号: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(二进制)。

微机原理及其应用微型计算机温度控制系统设计课程设计报告之欧阳术创编

微机原理及其应用微型计算机温度控制系统设计课程设计报告之欧阳术创编

《微机原理及其应用》课程设计报告2011年3月2日一、课程设计题目及系统功能介绍微型计算机温度控制系统设计,假设工业现场温度范围为0~75℃,温度值经传感器检测后,经变送器变成0~5V范围内的电压信号。

电压信号送A/D转换器ADC0809转换成对应的数字量。

数字量经数字滤波后送入CPU作为本次采样值。

在LED数码显示器上显示温度值(采用十进制显示),并对温度进行测试和控制,当检测温度到达温度上限60℃时红灯亮,蜂鸣器报警,低于下限30℃时黄灯亮,蜂鸣器报警,以达到监控温度的目的。

本设计采用程序控制方式。

系统功能:每隔0.1秒钟对现场温度连续采集三次取平均值作为本次采样的有效值;判断温度是否高于上限值60℃或低于下限值30℃,如超出该范围则分别用红、黄发光二极管和报警;把采集来的电压值转化成温度值在LED显示器上显示;若键盘输入“R”则返回DOS,结束程序。

二、硬件设计系统的硬件工作原理: CPU通过8255查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用ADC0809模/数转换器采样,不到则继续七段数码管显示与LED灯和蜂鸣器的过程,循环以上。

系统框图如下:地址分配: 8255 288h8253 280hADC0809 298h-29fhDAC0832 290h重要芯片功能介绍:1、可编程并行接口8255采取工作方式0,输入控制字88h,即A口输出,C口高四位输入,C口低四位输出PA0—PA6对应接七段数码管a b c d e f g接口,PC0 PC1对应七段数码管的位码接口PC2 PC3对应黄红LED灯,PC4接8253计数器2的OUT2端口2、可编程定时器/计数器(8253)分别对8253的计数器1和计数器2初始化采用方式3和方式0,使计数器2产生每隔0 .1秒的高电平3、ADC0809模/数转换器如图虚线接线即可3、DAC0832数/模转换器DAC0832是用于蜂鸣器报警的三、软件设计先对硬件8255 8253进行初始化且用ADC0809第一次采样,通过8255的PC4端口查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用ADC0809模/数转换器采样,不到则继续七段数码管显示与LED灯和蜂鸣器的过程,最后若有键按下则返回DOS,否则返回继续查询PC4端口、循环。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组成原理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(二进制)。

按动START键,启动时序电路,则每按动一次,读出一条微指令后停机,微地址显示灯和微命令显示灯将显示所读出的一条指令。

④强置运行:
通过UA5~UA0端口人为置分支地址,试验中置微地址为001010(12)
⑤连续运行:
将编程开关置于“RUN(运行)”状态。

将单步开关“STEP”置为“EXEC”状态。

使CLR开关从1→0→1,此时微地址寄存器清“0”,从而给出运行微指令的入口地址为000000(二进制)。

按动START键,则可连续读出微指令。

【实验结果】
实验中所置微地址为001010(12),连续运行后,就得出连续的000111(07)和001101(15)。

可知操作正确。

【问题分析】。

相关文档
最新文档