硬件基础-微程序控制器实验报告
微程序控制器原理实验报告
微程序控制器原理实验报告一、引言微程序控制器作为计算机系统的重要组成部分,扮演着指挥和控制计算机操作的关键角色。
本实验报告将对微程序控制器的原理进行探讨,并描述相关实验的设计、步骤、结果和分析。
二、微程序控制器的原理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;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。
硬件基础 微程序控制器实验报告
湖南大学HUNAN UNIVERSITY硬件基础实验2实验报告一、实验预习1.书中的图形实现微程序控制器,中间的映射逻辑究竟是怎么实现的?答:但出现分支时,预设端信号由IR决定。
IR为1时信号有效,输出为1.通过IR的值映射为下址的低三位,从而产生下址。
2.书中设计用到了强写强读,为什么要设计这个功能?答:满足用户因为没有初始化mif文件时输入数据的需要。
二、实验目的微程序控制器实验的主要任务:生成CPU里的控制信号,并使程序按正确的顺序执行。
核心部分是ROM,存放机器指令的微程序。
1、掌握微程序控制器的组成、工作原理;2、掌握微程序控制器的基本概念和术语:微命令、微操作、微指令、微程序等;3、掌握微指令、微程序的设计及调试方法;4、通过单步运行若干条微指令,深入理解微程序控制器的工作原理;二、实验电路图1附:电路图过大,请放大观察详情三、实验原理将机器指令的操作(从取指到执行)分解为若干个更基本的微操作序列,并将有关的控制信息(微命令)以微码的形式编成微指令输入到控制存储器中。
这样,每条机器指令将与一段微程序对应,取出微指令就产生微命令,以实现机器指令要求的信息传送与加工。
四、实验步骤及概述1)设计状态机部分a、编写VHDL代码如下LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY zhuangtaiji ISPORT (reset : IN STD_LOGIC := '0';clock : IN STD_LOGIC;qd : IN STD_LOGIC := '0';dp : IN STD_LOGIC := '0';tj : IN STD_LOGIC := '0';t1 : OUT STD_LOGIC;t2 : OUT STD_LOGIC;t3 : OUT STD_LOGIC;t4 : OUT STD_LOGIC);END zhuangtaiji;ARCHITECTURE BEHAVIOR OF zhuangtaiji ISTYPE type_fstate IS (idle,st1,s_st2,st4,st2,st3,s_st4,s_st3);SIGNAL fstate : type_fstate;SIGNAL reg_fstate : type_fstate;BEGINPROCESS (clock,reset,reg_fstate)BEGINIF (reset='1') THENfstate <= idle;ELSIF (clock='1' AND clock'event) THENfstate <= reg_fstate;END IF;END PROCESS;PROCESS (fstate,qd,dp,tj)BEGINt1 <= '0';t2 <= '0';t3 <= '0';t4 <= '0';CASE fstate ISWHEN idle =>IF (NOT((qd = '1'))) THENreg_fstate <= st1;ELSEreg_fstate <= idle;END IF;t1 <= '0';t2 <= '0';t3 <= '0';t4 <= '0';WHEN st1 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st1;ELSIF (((dp = '1') AND NOT((tj = '1')))) THENreg_fstate <= s_st2;ELSEreg_fstate <= st2;END IF;t1 <= '1';t2 <= '0';t3 <= '0';t4 <= '0';WHEN s_st2 =>IF ((tj = '1')) THENreg_fstate <= s_st2;ELSEreg_fstate <= s_st3;END IF;t1 <= '0';t2 <= '1';t3 <= '0';t4 <= '0';WHEN st4 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st4;ELSIF (((dp = '1') AND NOT((tj = '1')))) THENreg_fstate <= idle;reg_fstate <= st1;END IF;t1 <= '0';t2 <= '0';t3 <= '0';t4 <= '1';WHEN st2 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st2;ELSIF (((dp = '1') AND NOT((tj = '1')))) THEN reg_fstate <= s_st3;ELSEreg_fstate <= st3;END IF;t1 <= '0';t2 <= '1';t3 <= '0';t4 <= '0';WHEN st3 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st3;ELSIF (((dp = '1') AND NOT((tj = '1')))) THEN reg_fstate <= s_st4;ELSEreg_fstate <= st4;END IF;t1 <= '0';t2 <= '0';t3 <= '1';t4 <= '0';WHEN s_st4 =>IF ((tj = '1')) THENreg_fstate <= s_st4;ELSEreg_fstate <= idle;END IF;t1 <= '0';t2 <= '0';t3 <= '0';t4 <= '1';WHEN s_st3 =>IF ((tj = '1')) THENreg_fstate <= s_st3;reg_fstate <= s_st4;END IF;t1 <= '0';t2 <= '0';t3 <= '1';t4 <= '0';WHEN OTHERS =>t1 <= 'X';t2 <= 'X';t3 <= 'X';t4 <= 'X';report "Reach undefined state";END CASE;END PROCESS;END BEHAVIOR;b、新建block file选定zhaungtaiji得到电路图2)设计rom部分a、编写VHDL代码如下LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rom ISPORT(address : IN STD_LOGIC_VECTOR (4 DOWNTO 0);q : OUT STD_LOGIC_VECTOR (27 DOWNTO 0));END rom;ARCHITECTURE SYN OF rom ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (27 DOWNTO 0);BEGINsub_wire0<="1011000000100000010100000001" WHEN address= "00000" ELSE "1110100100100000010101100010" WHEN address= "00001" ELSE "1001000100100000010100101000" WHEN address= "00010" ELSE "1110100100100000010100010101" WHEN address= "01001" ELSE "1001101100100000010100010110" WHEN address= "10101" ELSE "1001001100100000011100000001" WHEN address= "10110" ELSE "1110100100100000010100010111" WHEN address= "01010" ELSE "1001101100100000010100011000" WHEN address= "10111" ELSE "1001010100100000010000000001" WHEN address= "11000" ELSE "1110100100100000010100011001" WHEN address= "01011" ELSE "1001101100100000010100011010" WHEN address= "11001" ELSE "1001001100100000010100000001" WHEN address= "11010" ELSE "1001000101100000010000011011" WHEN address= "01100" ELSE "1001000100110000001100000001" WHEN address= "11011" ELSE "1110100100100000010100011100" WHEN address= "01101" ELSE "1011001100100000010100000001" WHEN address= "11100" ELSE "1110100100100000010100000011" WHEN address= "01110" ELSE "1001101100100000010100000100" WHEN address= "00011" ELSE "1001001100100000010110000101" WHEN address= "00100" ELSE "1001000101100000010000000110" WHEN address= "00101" ELSE "1001000100101001101100000001" WHEN address= "00110" ELSE "1110100100100000010100011101" WHEN address= "01111" ELSE "1001101100100000010100011110" WHEN address= "11101" ELSE "1001001100100000010110011111" WHEN address= "11110" ELSE "1001000101100000010000000111" WHEN address= "11111" ELSE "1001000100100001111100000001" WHEN address= "00111" ELSE "1011000000100000010100010011" WHEN address= "01000" ELSE"1110100100100000010100010100" WHEN address= "10011" ELSE "1001001100100000010100010011" WHEN address= "10100" ELSE "1011000000100000010100010001" WHEN address= "10000" ELSE "1110100100100000010100010010" WHEN address= "10001" ELSE "1001010000100000010100010001" ;q <= sub_wire0(27 DOWNTO 0);END SYN;b、新建block file选定rom得到电路图3)、整合电路图整合电路图如图1所示。
微程序控制器实验报告
微程序控制器实验报告微程序控制器实验报告引言微程序控制器是一种常见的计算机控制器,它采用微程序的方式来实现指令的执行。
在本次实验中,我们将学习和探索微程序控制器的工作原理,并通过实验验证其功能和性能。
实验目的本次实验的主要目的是通过设计和实现一个简单的微程序控制器,来深入理解微程序控制器的工作原理和原理图设计。
实验过程1. 设计微指令集在设计微程序控制器之前,首先需要确定微指令集。
微指令集是由一系列微指令组成的,每个微指令对应一个控制信号,用于控制计算机的各个组件的操作。
在本次实验中,我们选择了常见的微指令集,包括存储器读写、算术逻辑运算、数据传输等指令。
2. 设计微指令控制存储器微指令控制存储器是微程序控制器的核心组件,用于存储微指令集。
在本次实验中,我们使用了静态随机存储器(SRAM)来实现微指令控制存储器。
通过将微指令集编码为二进制数,并将其存储在SRAM中的不同地址位置,实现对微指令的存储和读取。
3. 设计微指令解码器微指令解码器用于解析微指令,并产生相应的控制信号。
在本次实验中,我们使用了组合逻辑电路来实现微指令解码器。
通过将微指令的不同位与控制信号相连,实现对微指令的解码和控制信号的生成。
4. 设计微程序计数器微程序计数器用于控制微程序的执行顺序。
在本次实验中,我们使用了计数器和触发器来实现微程序计数器。
通过将微程序计数器的输出与微指令控制存储器的地址输入相连,实现对微指令的顺序读取。
实验结果通过实验,我们成功设计并实现了一个简单的微程序控制器。
在实验中,我们编写了微指令集,并将其存储在微指令控制存储器中。
通过微指令解码器和微程序计数器的协作,我们成功实现了对微指令的解码和执行。
实验结果表明,微程序控制器能够准确地控制计算机的各个组件的操作,并实现指令的执行。
实验总结通过本次实验,我们深入了解了微程序控制器的工作原理和原理图设计。
微程序控制器作为一种常见的计算机控制器,具有灵活性和可扩展性。
微程序控制器实验报告
组成原理No.4实验---微程序控制器实验组员:组号:21号时间:周二5、6节【实验目的】(1)掌握时序发生器的组成原理。
(2)掌握微程序控制器的组成原理。
(3)掌握微程序的编制、写入、观察微程序的运行情况【实验设备】TDN-CM++,【实验原理】微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,该存储器称为控制存储器。
实验所用的时序控制电路框图如图1所示,可产生四个等间隔的时序信号TS1~TS4。
在图1中,为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调额方波信号;STEP是来自实验板上方中部的一个二进制开关STEP的模拟信号;START键是来自实验板上方左部的一个微动开关START的按键信号。
当STEP开关为EXEC(0)时,一旦按下START启动键,时序信号TS1~TS4将周而复始地发送出去。
当STEP为STEP(1)时,按下START启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机了。
利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。
另外,如果STEP开关置“STEP”,会使机器停机,CLR开关执行1→0→1操作可以使时序清零。
时序状态图如下图所示。
由于时序电路的内部线路已经连好,因此只需将时序电路与方波信号源连接,即将时序电路的时钟脉冲输入端接至方波信号发生器输入端H23上,按动启动键START后,就可产生时序信号TS1~TS4.时序电路的CLR已接至CLR模拟开关上。
编程开关具有三种状态:PROM(编程)、READ(校验)和RUN(运行)。
微程序控制实验报告(共10篇)
微程序控制实验报告(共10篇)微程序控制器实验报告计算机组成原理实验报告一、实验目的:(1)掌握微程序控制器的组成原理。
(2)掌握微程序的编制、写入,观察微程序的运行过程。
二、实验设备:PC 机一台,TD-CMA 实验系统一套。
三、实验原理:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,称为控制存储器,微程序控制器原理框图如图所示:微程序控制器组成原理框图在实验平台中设有一组编程控制开关KK3、KK4、KK5(位于时序与操作台单元),可实现对存储器(包括存储器和控制存储器)的三种操作:编程、校验、运行。
考虑到对于存储器(包括存储器和控制存储器)的操作大多集中在一个地址连续的存储空间中,实验平台提供了便利的手动操作方式。
以向00H 单元中写入332211 为例,对于控制存储器进行编辑的具体操作步骤如下:首先将KK1 拨至‘停止’档、KK3 拨至‘编程’档、KK4 拨至‘控存’档、KK5 拨至‘置数’档,由CON 单元的SD05——SD00 开关给出需要编辑的控存单元首地址(000000),IN 单元开关给出该控存单元数据的低8 位(00010001),连续两次按动时序与操作台单元的开关ST(第一次按动后MC 单元低8 位显示该单元以前存储的数据,第二次按动后显示当前改动的数据),此时MC 单元的指示灯MA5——MA0 显示当前地址(000000),M7——M0 显示当前数据(00010001)。
然后将KK5 拨至‘加1’档,IN 单元开关给出该控存单元数据的中8 位(00100010),连续两次按动开关ST,完成对该控存单元中8 位数据的修改,此时MC 单元的指示灯MA5——MA0 显示当前地址(000000),M15——M8 显示当前数据(00100010);再由IN 单元开关给出该控存单元数据的高8 位(00110011),连续两次按动开关ST,完成对该控存单元高8 位数据的修改此时MC 单元的指示灯MA5——MA0 显示当前地址(000000),M23——M16 显示当前数据(00110011)。
实验三:微程序控制器实验
《计算机组成原理》实验报告实验三:微程序控制器实验学院:专业:班级:学号:学生姓名:实验日期:指导老师:成绩评定:计算机学院计算机组成原理实验室实 验 三一、 实验名称:微程序控制器实验二、 实验目的:掌握微程序的编制、写入、观察微程序的运行情况 ,了解微程序流程原理。
三、 实验原理:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。
它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。
这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。
微程序存储在一种专用的存储器中,该存储器称为控制存储器。
微程序流程图: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.掌握微程序的编制、写入、观察微程序的运行情况。
二、实验逻辑原理图与分析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单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,如下图所示:数据通路图几条机器指令对应的参考微程序流程图如下图所示。
计算机组成原理微程序控制器部件教学实验
计算机组成原理微程序控制器部件教学实验微程序控制器是由微指令组成的,每个微指令对应一个操作或一个操作序列。
它通过微指令来描述指令的执行过程,包括指令的取指,指令的解码,操作数的获取,以及操作的执行。
微程序控制器的本质是一个状态机,通过不同的状态和状态转移来完成指令的执行,从而实现计算机的功能。
在计算机组成原理的教学实验中,微程序控制器部件是非常重要的一个实验内容。
通过搭建微程序控制器的实验平台,学生可以更好地理解计算机指令的执行过程,加深对计算机硬件的认识。
在微程序控制器部件的教学实验中,可以从以下几个方面展开。
1.搭建实验平台:首先需要搭建一个微程序控制器的实验平台,包括微指令存储器、微指令控制器、状态寄存器等硬件部件。
同时需要编写相应的微指令和微程序,对不同的指令进行模拟执行。
2.模拟指令的执行过程:通过编写微指令和微程序,可以模拟指令的执行过程。
通过手动设置各个硬件部件的状态,可以观察指令的取指、解码、执行等过程。
通过模拟执行不同的指令,可以帮助学生理解指令的执行过程和计算机的工作原理。
3.分析指令的执行效率:在实验中,可以通过不同的指令和微程序,分析指令的执行效率。
比如,可以比较不同指令的执行时间,找出其中的瓶颈和优化方法。
通过实验分析,学生可以深入理解指令的执行原理和计算机硬件的优化方法。
4.扩展实验内容:在熟悉了微程序控制器的基本原理后,可以进一步扩展实验内容。
比如,可以设计一个简单的指令集,编写相应的微指令和微程序,实现更复杂的指令的执行过程。
通过扩展实验内容,可以更好地理解微程序控制器部件的原理和功能。
总之,计算机组成原理微程序控制器部件的教学实验是一门重要的实践课程,通过搭建实验平台和编写微指令和微程序,可以帮助学生更好地理解计算机硬件的工作原理,加深对计算机指令执行过程的认识,提高计算机组成原理的学习效果。
微程序控制实验报告
微程序控制实验报告微程序控制实验报告引言:微程序控制是一种通过微指令序列来控制计算机硬件的方法。
通过将指令的操作码映射到微指令序列,可以实现复杂的指令执行过程。
本实验旨在通过设计和实现一个简单的微程序控制器,加深对微程序控制原理的理解。
一、实验目的本实验的主要目的是设计和实现一个8位微程序控制器。
通过该实验,我们将能够:1. 理解微程序控制的工作原理;2. 掌握微程序控制器的设计方法;3. 学习如何使用微指令序列来控制计算机硬件。
二、实验原理微程序控制是一种基于微指令的控制方式,它将指令的操作码映射到一组微指令序列。
这些微指令序列定义了计算机硬件在执行指令过程中的控制信号。
通过微指令序列,我们可以实现复杂的指令执行过程,如数据传输、算术逻辑运算、分支跳转等。
三、实验设计本实验中,我们设计了一个简单的8位微程序控制器。
该控制器包括以下几个模块:1. 指令寄存器(IR):用于存储当前执行的指令;2. 指令译码器(ID):将指令的操作码解码为微指令地址;3. 微指令存储器(MS):存储微指令序列;4. 控制信号发生器(CG):根据微指令地址生成控制信号;5. 数据通路(DP):执行指令的计算机硬件。
四、实验步骤1. 设计微指令序列:根据指令集的要求,设计一组微指令序列,包括数据传输、算术逻辑运算、分支跳转等操作。
2. 实现微指令存储器:使用存储器芯片或其他逻辑门电路实现微指令存储器,并将微指令序列存储其中。
3. 实现指令译码器:设计指令译码器,将指令的操作码解码为微指令地址。
4. 实现控制信号发生器:根据微指令地址生成控制信号,控制数据通路的操作。
5. 实现数据通路:根据指令要求,设计并实现数据通路,包括寄存器、算术逻辑单元等。
6. 连接各个模块:将指令寄存器、指令译码器、微指令存储器、控制信号发生器和数据通路连接起来,形成一个完整的微程序控制器。
五、实验结果与分析经过实验,我们成功实现了一个简单的8位微程序控制器。
计算机组成原理微程序控制器实验报告
计算机组成原理实验报告三:微程序控制器实验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. 实践使用微程序控制器进行指令解析和控制。
三、实验原理微程序控制器由控制存储器和控制逻辑组成。
控制存储器中存储了一系列微指令,每个微指令对应一条机器指令的执行步骤。
控制逻辑根据当前指令的操作码,从控制存储器中读取相应的微指令,并根据微指令的控制信号控制各个部件的操作。
四、实验步骤1. 搭建实验平台:将微程序控制器与计算机主板相连,并连接相应的输入输出设备;2. 下载微程序控制器的控制存储器:将预先编写好的微指令存储到控制存储器中;3. 编写控制逻辑:根据机器指令的操作码,编写相应的控制逻辑,实现指令的解析和控制;4. 运行实验:通过输入指令,观察微程序控制器的工作情况,验证控制逻辑的正确性。
五、实验结果与分析在实验中,我们成功搭建了微程序控制器的实验平台,并下载了相应的微指令。
通过输入不同的指令,我们观察到微程序控制器能够正确解析指令并控制计算机的各个部件进行相应操作。
这证明了我们编写的控制逻辑是正确的。
六、实验总结通过本次实验,我们深入了解了微程序控制器的组成和工作原理。
微程序控制器通过控制存储器中的微指令,实现了对机器指令的解析和控制。
掌握了微程序控制器的基本原理后,我们能够编写相应的控制逻辑,实现自定义的指令解析和控制功能。
七、实验心得本次实验让我对微程序控制器有了更深入的了解。
通过亲自搭建实验平台和编写控制逻辑,我深刻体会到微程序控制器在计算机中的重要作用。
同时,实验过程中也遇到了一些问题,但通过不断尝试和调试,最终解决了这些问题,提高了自己的实践能力。
八、展望微程序控制器作为计算机的核心组件之一,具有广泛的应用前景。
计算机组成原理实验报告-微程序控制器
01
0 0 0 0 0 0 0 1 1
1 1 0
1 1 0
1 1 0
0 0 0 0 1 0
02
0 0 0 0 0 0 0 0 1
1 0 0
0 0 0
0 0 1
0 0 1 0 0 0
03
0 0 0 0 0 0 0 0 1
1 1 0
0 0 0
0 0 0
0 0 0 1 0 0
04
0 0 0 0 0 0 0 0 1
0 0 1 1 1 1
17
0 0 0 0 0 0 0 0 1
0 1 0
0 0 0
0 0 0
0 1 0 1 0 1
20
0 0 0 0 0 0 0 1 1
1 1 0
1 1 0
1 1 0
0 1 0 0 1 0
21
0 0 0 0 0 0 0 1 1
1 1 0
1 1 0
1 1 0
0 1 0 1 0 0
22
0 0 0 0 0 0 0 0 1
(2)读微指令。
(3)产生微操作命令。
(4)形成下一条微指令地址。
(5)取下一条微指令。…………重复(1)~(4)过程,直到该机器指令送入IR为止。
2、执行阶段Βιβλιοθήκη (1)当指令存入IR后,由指令的OP部分送到微地址形成部件,形成该指令对应的微程序的首地址。
(2)读出微指令。
(3)产生微操作命令。
(4)形成下一条微指令地址。…………重复(1)~(4)过程,直到该机器指令执行完为止。
2、微指令寄存器:微指令寄存器(CMIR)存放由控制存储器读出的一条微指令信息
3、微地址寄存器(CMAR):存放将要访问的下一条微指令的微地址。
硬件设计基础实验报告(3篇)
第1篇一、实验目的本次实验旨在使学生掌握硬件设计的基本原理和方法,了解电路设计的基本流程,提高学生的动手实践能力和创新意识。
通过本次实验,学生应能够:1. 熟悉常用电子元器件及其特性;2. 掌握电路原理图的设计与绘制;3. 学会电路板的设计与制作;4. 理解电路调试的基本方法。
二、实验原理电路设计是电子技术领域的基础,它涉及到电子元器件的选择、电路原理图的绘制、电路板的制作以及电路的调试。
本次实验主要围绕以下原理展开:1. 电子元器件原理:电子元器件是电路设计的基础,包括电阻、电容、电感、二极管、晶体管等。
了解这些元器件的工作原理和特性,有助于设计出满足要求的电路。
2. 电路原理图设计:电路原理图是电路设计的核心,它将电路中的各个元器件和连接关系以图形化的方式呈现出来。
学会绘制电路原理图是进行电路设计的基础。
3. 电路板设计:电路板是电路的物理载体,其设计包括元器件布局、布线以及PCB(印刷电路板)的制作。
电路板设计需要遵循一定的原则,以确保电路的可靠性和稳定性。
4. 电路调试:电路调试是电路设计过程中的重要环节,通过调试可以发现电路中的问题并加以解决。
电路调试需要使用各种测试仪器和调试方法。
三、实验内容本次实验主要包括以下内容:1. 元器件识别与测试:识别常用电子元器件,测试其基本参数和特性。
2. 电路原理图设计:根据实验要求,设计一个简单的电路原理图。
3. 电路板设计:根据电路原理图,设计电路板,包括元器件布局、布线等。
4. 电路板制作:制作电路板,包括PCB的制作和元器件的焊接。
5. 电路调试:调试电路,验证电路的功能是否满足设计要求。
四、实验步骤1. 元器件识别与测试:- 识别常用电子元器件,如电阻、电容、电感、二极管、晶体管等;- 测试元器件的基本参数和特性,如电阻的阻值、电容的容量、二极管的正向导通电压等。
2. 电路原理图设计:- 根据实验要求,设计一个简单的电路原理图;- 在电路原理图中标注元器件的型号、参数等信息。
计算机组成原理实验报告3--微程序控制器实验
实验三微程序控制器实验一.实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的功能,组成知识;3.掌握微指令格式和各字段功能;4.掌握微程序的编制,写入,观察微程序的运行,学习基本指令的执行流程。
实验要求:1.实验前,要求做好实验预习,并复习已经学过的控制信号的作用;2.按练习一要求完成测量波形的操作,画出TS1,TS2,TS3,TS4的波形,并测出所用的脉冲Ф周期。
按练习二的要求输入微指令的二进制代码表,并单步运行五条机器指令。
二.实验方案:按实验图在实验仪上接好线后,仔细检查无误后可接通电源。
1.练习一:用联机软件的逻辑示波器观测时序信号,测量Ф,TS1,TS2,TS3,TS4信号的方法如下:(1) TATE UNIT 中STOP开关置为“RUN”状态(向上拨),STEP开关置为“EXEC”状态(向上拨)。
(2) 将SWITCH UNIT 中右下角CLR开关置为“1”(向上拨)。
(3) 按动“START”按钮,即可产生连续脉冲。
(4)调试”菜单下的“显示逻辑示波器窗口,即可出现测量波形的画面。
(5)探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的Ф插座,即可测出时钟Ф的波形。
(6)探头一端接实验仪左上角的CH2,另一端接STATE UNIT中的TS1插座,即可测出TS1的波形;(7)探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的TS2插座,即可测出TS2的波形。
(8)将红色探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的TS3插座,即可测出TS3的波形。
(9)将红色探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的TS4插座,即可测出TS4的波形。
2.观察微程序控制器的工作原理:①关掉实验仪电源,拔掉前面测时序信号的接线;②编程写入E2PROM 2816A.将编程开关(MJ20)置为PROM(编程)状态;B.将实验板上STATE UNIT 中的STEP置为STEP状态,STOP置为RUN状态,SWITCH UNIT中CLR开关置为1状态;C.在右上角的SWITCH UNIT中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. 微程序控制器的组成和工作原理。
微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。
其工作原理分为:一、将程序和数据通过输入设备送入存储器;二、启动运行后,从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事;三、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回存储器指定的单元中;四、运算任务完成后,就可以根据指令将结果通过输出设备输出2.微程序、微指令、微命令之间的关系。
一系列微指令的有序集合称为微程序。
在微程序控制方式之下,从控制存储器中取出,完成一个或几个微操作的命令称为微指令。
控制部件通过控制线向执行部件发出各种控制命令,通常把这种控制命令叫做微命令。
所以总的来说:微程序包含微指令,而每条微指令包含的微命令控制。
3.微指令、微程序的设计及调试。
在微程序流程图中,根据每个状态的微指令,将其进行编码,设计出所需硬件及执行效率较高的微程序控制电路,然后进行调试。
思考题:1. 举例说明实验中出现的基本概念:微命令、微操作、微指令、微程序?微命令:控制器发出的每个控制信号,如对运算单元的控制m cn s3 s2 s1 s0发出的010101等。
微操作:由微命令控制实现的最基本的操作称为微操作。
如发出运算器加运算的微命令后,运算器进行加法计算,就称为微操作。
微指令:完成一个或几个微操作的指令。
如控制器进行存数据的命令后,需要有we信号有效,pc保持,来控制这些的指令即为微指令。
微程序:微程序包含微指令。
如微程序流程中包括很多微指令控制,进行一些加减运算,存储数据,地址自加一等等。
2. 解释并比较微程序控制器的几种设计方法?微序列控制器通过吧控制信号存储在一个查找Rom,(1)用水平编码生成微操作(2)用垂直编码生成微操作(3)从微代码直接产生控制信号。
3. 微程序控制器的控制对象、手段及方法?控制器如何取指令?微程序控制器控制对象分为硬件方面和软件方面,硬件方面为数据通路的控制信号,软件方面为测试程序的控制信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大学HUNAN UNIVERSITY硬件基础实验2实验报告一、实验预习1.书中的图形实现微程序控制器,中间的映射逻辑究竟是怎么实现的?答:但出现分支时,预设端信号由IR决定。
IR为1时信号有效,输出为1.通过IR的值映射为下址的低三位,从而产生下址。
2.书中设计用到了强写强读,为什么要设计这个功能?答:满足用户因为没有初始化mif文件时输入数据的需要。
二、实验目的微程序控制器实验的主要任务:生成CPU里的控制信号,并使程序按正确的顺序执行。
核心部分是ROM,存放机器指令的微程序。
1、掌握微程序控制器的组成、工作原理;2、掌握微程序控制器的基本概念和术语:微命令、微操作、微指令、微程序等;3、掌握微指令、微程序的设计及调试方法;4、通过单步运行若干条微指令,深入理解微程序控制器的工作原理;二、实验电路图1附:电路图过大,请放大观察详情三、实验原理将机器指令的操作(从取指到执行)分解为若干个更基本的微操作序列,并将有关的控制信息(微命令)以微码的形式编成微指令输入到控制存储器中。
这样,每条机器指令将与一段微程序对应,取出微指令就产生微命令,以实现机器指令要求的信息传送与加工。
四、实验步骤及概述1)设计状态机部分a、编写VHDL代码如下LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY zhuangtaiji ISPORT (reset : IN STD_LOGIC := '0';clock : IN STD_LOGIC;qd : IN STD_LOGIC := '0';dp : IN STD_LOGIC := '0';tj : IN STD_LOGIC := '0';t1 : OUT STD_LOGIC;t2 : OUT STD_LOGIC;t3 : OUT STD_LOGIC;t4 : OUT STD_LOGIC);END zhuangtaiji;ARCHITECTURE BEHAVIOR OF zhuangtaiji ISTYPE type_fstate IS (idle,st1,s_st2,st4,st2,st3,s_st4,s_st3);SIGNAL fstate : type_fstate;SIGNAL reg_fstate : type_fstate;BEGINPROCESS (clock,reset,reg_fstate)BEGINIF (reset='1') THENfstate <= idle;ELSIF (clock='1' AND clock'event) THENfstate <= reg_fstate;END IF;END PROCESS;PROCESS (fstate,qd,dp,tj)BEGINt1 <= '0';t2 <= '0';t3 <= '0';t4 <= '0';CASE fstate ISWHEN idle =>IF (NOT((qd = '1'))) THENreg_fstate <= st1;ELSEreg_fstate <= idle;END IF;t1 <= '0';t2 <= '0';t3 <= '0';t4 <= '0';WHEN st1 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st1;ELSIF (((dp = '1') AND NOT((tj = '1')))) THEN reg_fstate <= s_st2;ELSEreg_fstate <= st2;END IF;t1 <= '1';t2 <= '0';t3 <= '0';t4 <= '0';WHEN s_st2 =>IF ((tj = '1')) THENreg_fstate <= s_st2;ELSEreg_fstate <= s_st3;END IF;t1 <= '0';t2 <= '1';t3 <= '0';t4 <= '0';WHEN st4 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st4;ELSIF (((dp = '1') AND NOT((tj = '1')))) THEN reg_fstate <= idle;ELSEreg_fstate <= st1;END IF;t1 <= '0';t2 <= '0';t3 <= '0';t4 <= '1';WHEN st2 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st2;ELSIF (((dp = '1') AND NOT((tj = '1')))) THEN reg_fstate <= s_st3;ELSEreg_fstate <= st3;END IF;t1 <= '0';t2 <= '1';t3 <= '0';t4 <= '0';WHEN st3 =>IF (((tj = '1') AND NOT((dp = '1')))) THENreg_fstate <= st3;ELSIF (((dp = '1') AND NOT((tj = '1')))) THEN reg_fstate <= s_st4;ELSEreg_fstate <= st4;END IF;t1 <= '0';t2 <= '0';t3 <= '1';t4 <= '0';WHEN s_st4 =>IF ((tj = '1')) THENreg_fstate <= s_st4;ELSEreg_fstate <= idle;END IF;t1 <= '0';t2 <= '0';t3 <= '0';t4 <= '1';WHEN s_st3 =>IF ((tj = '1')) THENreg_fstate <= s_st3;ELSEreg_fstate <= s_st4;END IF;t1 <= '0';t2 <= '0';t3 <= '1';t4 <= '0';WHEN OTHERS =>t1 <= 'X';t2 <= 'X';t3 <= 'X';t4 <= 'X';report "Reach undefined state";END CASE;END PROCESS;END BEHAVIOR;b、新建block file选定zhaungtaiji得到电路图2)设计rom部分a、编写VHDL代码如下LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY rom ISPORT(address : IN STD_LOGIC_VECTOR (4 DOWNTO 0);q : OUT STD_LOGIC_VECTOR (27 DOWNTO 0));END rom;ARCHITECTURE SYN OF rom ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (27 DOWNTO 0);BEGINsub_wire0<="" WHEN address= "00000" ELSE"" WHEN address= "00001" ELSE"" WHEN address= "00010" ELSE"" WHEN address= "01001" ELSE "" WHEN address= "10101" ELSE "" WHEN address= "10110" ELSE "" WHEN address= "01010" ELSE "" WHEN address= "10111" ELSE "" WHEN address= "11000" ELSE "" WHEN address= "01011" ELSE "" WHEN address= "11001" ELSE "" WHEN address= "11010" ELSE "" WHEN address= "01100" ELSE "" WHEN address= "11011" ELSE "" WHEN address= "01101" ELSE "" WHEN address= "11100" ELSE "" WHEN address= "01110" ELSE "" WHEN address= "00011" ELSE "" WHEN address= "00100" ELSE "" WHEN address= "00101" ELSE "" WHEN address= "00110" ELSE "" WHEN address= "01111" ELSE "" WHEN address= "11101" ELSE "" WHEN address= "11110" ELSE "" WHEN address= "11111" ELSE "" WHEN address= "00111" ELSE "" WHEN address= "01000" ELSE "" WHEN address= "10011" ELSE "" WHEN address= "10100" ELSE "" WHEN address= "10000" ELSE "" WHEN address= "10001" ELSE "" ;q <= sub_wire0(27 DOWNTO 0);END SYN;b、新建block file选定rom得到电路图3)、整合电路图整合电路图如图1所示。