五邑大学计算机组成原理实验报告三:微程序控制器实验

合集下载

微程序控制器

微程序控制器
(7)按一次+1键,准备写该控存单元的最高8位;IN单元开关给出数据(01000100),按一次nWR键,最高8位数据写入最后一片6116/2816的同时,打入uM31-24对应的锁存器中,uM单元的uM26、uM30灯点亮,uM24-25、uM27-29、uM31指示灯熄灭
如果再按一次+1键,uPC+1,uM单元uPC7-uPC0显示当前地址(00000001)
(2)如果uM/M键上方指示灯亮,表示处于uM编辑状态,直接转第三步;否则,按uM/M键一次,使uM/M键上方指示灯点亮
(3)IN单元开关给出uM的首地址(00000000),按一次ADDR键,uPC单元的8个发光二级管全熄灭(1:点亮,0:熄灭)
(4)IN单元开关给出该控存单元数据的低八位(00010001),按一次nWR键,低八位数据写入6116/2816的同时,打入uM7-0对应的锁存器中,uM单元的uM0、uM4灯点亮,uM1-3、uM5-7指示灯熄灭
如校验的微指令出错,则返回输入操作,修改该单元的数据后再进行校验,直至确认输入的微代码全部准确无误为止,完成对微指令的输入。
实验仪器及元件
实验
原理及电
路图
实验过程及
结果记录
(按实验步骤和实验要求提供相应的实验数据及实验波形)
实验结果
分析
(结合实验过程和内容对数据及波形进行分析)
思考
微程序控制的基本思想,就是仿照通常的解题程序的方法,把操作控制信号编成所谓的“微指令”,存放到一个只读存储器里.当机器运行时,一条又一条地读出这些微指令,从而产生全机所需要的各种操作控制信号,使相应部件执行所规定的操作.
(6)按一次+1键,准备读该控存单元的31-24位;按一次nRD键,从另一片6116/2816(最高八位)读出数据,打入uM31-24对应的锁存器中,uM31-24指示灯显示数据(01000100)

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

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

计算机组成原理实验之微程序控制器实验一、实验目的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”表示有效,这些信号在控制器中经过反相后送往数据通路。

《计算机组成原理》微程序设计实验报告

《计算机组成原理》微程序设计实验报告

《计算机组成原理》实验报告学院:计算机学院专业:交通工程班级学号:AP0804114学生姓名:黄佳佳实验日期:2010.12.14指导老师:李鹤喜成绩评定:五邑大学信息学院计算机组成原理实验室实验五微程序设计实验一、实验目的:深入掌握微程序控制器的工作原理,学会设计简单的微程序。

二、预习要求:1.复习微程序控制器工作原理;2.复习计算机微程序的有关知识。

三、实验设备:EL-JY-II型计算机组成原理实验系统一台,连接线若干。

四、微程序的设计:1.微指令格式设计微指令编码格式的主要原则是使微指令字短、能表示可并行操作的微命令多、微程序编写方便。

微指令的最基本成份是控制场,其次是下地址场。

控制场反映了可以同时执行的微操作,下地址场指明下一条要执行的微指令在控存的地址。

微指令的编码格式通常指控制场的编码格式,以下几种编码格式较普遍。

1)最短编码格式这是最简单的垂直编码格式,其特点是每条微指令只定义一个微操作命令。

采用此格式的微指令字短、容易编写、规整直观,但微程序长度长,访问控存取微指令次数增多从而使指令执行速度慢。

2)全水平编码格式这种格式又称直接编码法,其特点是控制场每一位直接表示一种微操作命令。

若控制场长n位,则至多可表示n个不同的微操作命令。

采用此格式的微指令字长,但可实现多个允许的微操作并行执行,微程序长度短,指令执行速度快。

3)分段编码格式是将控制场分成几段。

若某段长i位,则经译码,该段可表示2i个互斥的即不能同时有效的微操作命令。

采用这种格式的微指令长度较短,而可表示的微操作命令较多,但需译码器。

2.微程序顺序控制方式的设计微程序顺序控制方式指在一条指令对应的微程序执行过程中,下一条微指令地址的确定方法,又叫后继地址生成方式。

下面是常见的两种。

1)计数增量方式这种方式的特点是微程序控制部件中的微地址中的微地址产生线路主要是微地址计数器MPC。

MPC 的初值由微程序首址形成线路根据指令操作码编码形成。

微程序控制器_实验报告

微程序控制器_实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

微程序控制器实验报告

微程序控制器实验报告

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

五邑大学计算机组成原理实验报告三:微程序控制器实验

五邑大学计算机组成原理实验报告三:微程序控制器实验

《计算机组成原理》实验报告学院:计算机学院专业:计算机科学与技术班级学号:150801 3115000820学生姓名:黄家燊实验日期:2016.12.25指导老师:李鹤喜五邑大学计算机学院计算机组成原理实验室实验一一、实验名称:微程序控制器实验二、实验目的(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*******************// ②写入微程序用联机软件的“【转存】-【装载数据】”功能将改格式文件装载入试验系统。

微程序控制实验报告(共10篇)

微程序控制实验报告(共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)。

(计算机组成原理)实验三 微控器实验

(计算机组成原理)实验三 微控器实验
(计算机组成原理)实验三 微控器实验
实验三 微控器实验
❖教材上实验6、7,内容有变动 ❖一、实验目的 ❖二、实验原理 ❖三、实验内容及要求 ❖四、实验步骤
一、实验目的
❖ 掌握时序产生器、微控制器的工作原 理。
❖ 掌握联机方式下,编写、装入、执行 微程序的方法。
❖ 掌握联机方式下,编写、装入、执行 程序的方法。
② 控存地址寄存器CMAR
❖ CMAR功能是:由输入信号SE6#~SE0#控制修改 当前微指令的下址字段M6~M0(即MA6~MA0), 以产生即后继微地址。
❖ CMAR由四片74LS74(2位带清零预置端的寄存器) 和一片74LS245(8位三态缓冲器)连接而成,四 片74LS74的清零端均接CLR开关,预置端则分别 接自输入信号SE6#~SE0#,因为预置端低电平有 效,所以当SEi#=0时,相应的Mi即MAi被置1。
寄存器译码电路
❖ 功能:依据指令的DR和SR字段,将微控器发出的统 一的寄存器控制信号,翻译为具体的不同的寄存器控 制信号。
❖ 输入信号有:
B-DR、DR-B#、SR-B#、SI-B#、SP-B#:来自微 控器单元MAIN CONTROL UNIT。
指令码I3-I0:来自指令寄存器(即SR、DR字段) ❖ 输出信号为:(送至寄存器单元REG UNIT)
D4
D3
D2
D1
③μIR74LS273
D8
D7
D1
D2
D3
D4
D5
D6
74LS74
2D
2Q
A 1CLK 1CD
2CLK 2CD
2SD
1SD
SE3
SE2
D8
T2
74LS74

微程序控制器实验报告

微程序控制器实验报告

组成原理实验---微程序控制器实验组员:组号:21号时间:周二5、6节【实验目的】(1)掌握时序发生器的组成原理。

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

(3)掌握微程序的编制、写入、观察微程序的运行情况【实验设备】TDN-CM++,【实验原理】微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制硬件逻辑部件工作的微命令序列,以完成数据传输和各种处理操作。

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

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

微程序存储在一种专用的存储器中,该存储器称为控制存储器。

实验所用的时序控制电路框图如图1可产生四个等间隔的时序信号TS1~TS4。

在图1中,?为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调额方波信号;STEP是来自实验板上方中部的一个二进制开关STEP的模拟信号;START键是来自实验板上方左部的一个微动开关START的按键信号。

当STEP开关为EXEC号TS1~TS4将周而复始地发送出去。

当STEP为STEP(1)时,按下START启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机了。

利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。

另外,如果STEP开关置“STEP”,会使机器停机,CLR开关执行1→0→1操作可以使时序清零。

时序状态图如下图所示。

由于时序电路的内部线路已经连好,因此只需将时序电路与方波信号源连接,即将时序电路的时钟脉冲输入端?接至方波信号发生器输入端H23上,按动启动键START后,就可产生时序信号TS1~TS4.时序电路的CLR已接至CLR模拟开关上。

编程开关具有三种状态:PROM(编程)、READ(校验)和RUN(运行)。

微指令格式如下:【实验步骤】(一)机器指令对应的参考微程序流程图,如下图将全部微程序指令格式变成二进制代码,可得到如下图所示的二进制代码表。

微程序控制器的实验报告

微程序控制器的实验报告

计算机科学与技术系实验报告专业名称计算机科学与技术课程名称计算机组成与结构项目名称微程序控制器实验一、实验目的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单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,如下图所示:数据通路图几条机器指令对应的参考微程序流程图如下图所示。

计算机组成原理实验报告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。

(完整word版)计算机组成原理实验报告_微控制器

(完整word版)计算机组成原理实验报告_微控制器

计算机组成原理实验报告题目:微程序控制器实验一、实验目的:(1)理解时序产生器的原理,了解时钟和时序信号的波形。

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

(3)掌握微指令格式和各字段功能。

(4)掌握微指令的编制、写入、观察微程序的运行二、实验设备PC机一台,TD—CM3+实验系统一套。

三、实验内容及要求:(一)实验原理:微程序控制电路与微指令格式(A)微程序控制电路微程序控制器的组成见图10,其中控制存储器采用3片2816的E2PROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(74273)和一片4D(74175)触发器组成.微地址寄存器6位,用三片正沿触发的双D触发器(7474)组成,它们带有清“0”端和预置端。

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

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

在该实验电路中设有一个编程开关(位于实验板右上方),它具有三种状态:PROM (编程)、READ(校验)、RUN(运行)。

当处于“编程状态”时,实验者可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。

当处于“校验状态”时,可以对写入控制存储器中的二进制代码进行验证,从而可以判断写入的二进制代码是否正确。

当处于“运行状态”时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。

图中微地址寄存器输出端增加了一组三态门,目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯。

微程序控制器原理图图10(B) 微指令格式微指令字长共24位,其控制位顺序如图所示。

图11 微指令格式A字段B字段C字MA5—-MA0为A,B,C为三个译码字段,分别由三个C字段中的P(1)是测试字位。

,从而实现微程序的顺序、分支、循环运。

图中I7一I2为指令寄存器的第7-—2位输出,SE5—SE0为微程序控制器单元微地址锁存器的强置端输出.(C)二进制代码表二进制微代码表将全部微程序按照指令格式变成二进制微代码可得上表(二)实验内容1.按照实验接线图连接好实验线路,并且检查线路,确保无误。

计算机组成原理实验报告_2

计算机组成原理实验报告_2

计算机组成原理实验报告——微程序控制器实验1.一. 实验目的:2.能看懂教学计算机(TH-union)已经设计好并正常运行的数条基本指令的功能、格式及执行流程。

并可以自己设计几条指令, 并理解其功能, 格式及执行流程, 在教学计算机上实现。

3.深入理解计算机微程序控制器的功能与组成原理4.深入学习计算机各类典型指令的执行流程5.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念6.学习微程序控制器的设计过程和相关技术二. 实验原理:微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。

其工作原理分为:1.将程序和数据通过输入设备送入存储器;2.启动运行后从存储器中取出程序指令送到控制器去识别, 分析该指令要求什么事;3.控制器根据指令的含义发出相应的命令(如加法、减法), 将存储单元中存放的操作数据取出送往运算器进行运算, 再把运算结果送回存储器指定的单元中;4、运算任务完成后, 就可以根据指令将结果通过输出设备输出三. 微指令格式:1)微地址形成逻辑TH—UNION 教学机利用器件形成下一条微指令在控制器存储器的地址.下地址的形成由下地址字段及控制字段中的CI3—SCC控制.当为顺序执行时,下地址字段不起作用.下地址为当前微指令地址加1;当为转移指令(CI3—0=0011)时,由控制信号SCC提供转移条件,由下地址字段提供转移地址.2)控制字段控制字段用以向各部件发送控制信号,使各部件能协调工作。

控制字段中各控制信号有如下几类:①对运算器部件为了完成数据运算和传送功能, 微指令向其提供了24位的控制信号, 包括:4位的A、B口地址, 用于选择读写的通用积存器3组3位的控制码I8-I6、I5-I3、I2-I6, 用于选择结果处置方案、运算功能、数据来源。

3组共7位控制信号控制配合的两片GAL20V83位SST, 用于控制记忆的状态标志位2位SCI, 用于控制产生运算器低位的进位输入信号2位SSH, 用于控制产生运算器最高, 最地位(和积存器)移位输入信号②对内存储器I/O和接口部件, 控制器主要向它们提供读写操作用到的全部控制信号, 共3位, 即MRW③对CPU内部总线数据来源的控制, 主要通过3位编码标记为DCD, 来选择把哪一组数据发送到内部总线(IB)上。

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

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

计算机组成原理实验报告三:微程序控制器实验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中读出。

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

计算机组成原理实验报告-微程序控制器
0 1 0 0 0 0
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):存放将要访问的下一条微指令的微地址。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机组成原理》
实验报告
学院:计算机学院
专业:计算机科学与技术
班级学号:150801 3115000820
学生姓名:黄家燊
实验日期:2016.12.25
指导老师:李鹤喜
五邑大学计算机学院计算机组成原理实验室
实验一
一、实验名称:微程序控制器实验
二、实验目的
(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*******************// ②写入微程序用联机软件的“【转存】-【装载数据】”功能将改格式文件装载入试验系统。

③校验位程序。

选择联机软件的“【转存】-【刷新指令区】”可独处机器指令和微指令,并在指令区显示,检查是否与表相同
(2)运行微程序:
①连线:将电路按图所示连接起来,自习检查线路无误后接通电源。

如果有报警声,说明有竞争现象,应关闭电源,检查连线,直到错误排除
本实验采用的是本机运行,运行过程如下:
①将MC单元的编程开关置为“运行”档,MEM单元的编程开关也置为“运行”
档,按动CON单元的CLR按钮,将微地址寄存器清零,同时也将指令寄存器,ALU单元的暂存器A和暂存器B清零
②将时序单元的状态开关置为“单拍”档,然后按动TS按钮,体会系统在T1
和T2节拍中各做的工作。

T1节拍微控制器将后续地址打入微地址寄存器,当前微指令打入微指令寄存器,并产生执行部件相应的控制信号,T2节拍根据T1节拍产生的控制信号做出相应的执行动作,如果测试位有效,还要根据指令及单前微地址寄存器中的内容进行译码,使微程序转入相应的微地址入口,实现微程序的分支
③按动CON单元的CLR按钮,清零微地址寄存器(MAR)等,并将时序单元的状
态开关置为“单步”档
④置IN单元数据位00100011,按动TS按钮,当MC单元后续微地址显示为000001
是,在CON单元的SD27…SD20模拟给出IN指令00100000并继续单步执行,当MC单元后续微地址显示为000001是,说明当前指令已完成;在CON单元的D27…D20各处ADD指令00000000,该指令将会在下个T2被打入指令寄存器,他将R0中的数据和其自身相加后送RO;接下来在CON单元的SD27…SD20给出OUT指令00110000并继续单步执行,在MC单元后续微地址显示为
00000001是,观察OUT单元的显示是否为01000110
五、实验结果:
由实验可得按要求完成实验步骤后,数据会按照数据通路进行流程验算,最终的到两个数字相加的结果
六、实验反思:
通过此次的微程序控制器的实验,我们通过实际操作基本掌握微程序控制器的功能、组成知识。

以及程序的编制、写入、观察微程序的运行等功能。

了解到了理论知识与实际操作的差别。

相关文档
最新文档