微程序控制器实验报告

合集下载

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

计算机组成原理实验报告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开关上置表中某个要写的微地址;D.在MK24-MK1开关上置表中要写的微地址后面的24位微代码,24位开关对应24位显示灯,开关置为1时灯亮,为0时灯灭;E.启动时序电路,即将微代码写入到E2PROM 2816的相应地址对应的单元中;F.重复C-E步骤,将表的每一行写入E2PROM 2816。

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

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

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

微程序控制器的组成与微程序设计实验报告

微程序控制器的组成与微程序设计实验报告

微程序控制器的组成与微程序设计实验报告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)掌握微程序的编制、写入,观察微程序的运行。

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

它的执行方法就是将控制各部件动作的微指令的集合进行编码,用数字代码的形式表示。

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

实验所用的时序控制电路框图如图所示,可产生四个等间隔的时序信号TS1~TS4,其中Φ为时钟信号,由实验系统左上方的方波信号源提供,可产生频率及脉宽可调的方波信号;STEP(单步)是来自实验系统上方中部的一个二进制开关STEP的模拟信号;START键是来自实验系统上方左部的一个微动开关START的按键信号。

当STEP开关为0时(EXEC),一旦按下START启动键,时序信号TS1~TS4将周而复始地发送出去。

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

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

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

时序状态图如图4.5-7所示。

由于时序电路的内部电路已经连好,所以只需将时序电路与方波信号源预习情况操作情况考勤情况数据处理情况连接,即将时序电路的时钟脉冲输入端ф接至方波信号发生器输出端H23上,按动启动键START后,就可产生时序信号TS1~TS4。

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

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

微程序控制器实验报告一、实验目的(1)掌握微程序控制器的功能、组成知识。

(2)掌握为程序的编制、写入、观察微程序的运行二、实验设备:PC机一台,TD-CM3+实验系统一套三、实验原理:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件的为命令序列,完成数据传送和个汇总处理操作,他的执行方法是将控制各部件的微命令的集合进行编码,即将微命令的集合仿照及其指令一眼,用数字代码的形式表示,这种表示陈伟微指令。

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

微程序存储在一种专用的存储器中,成为控制储存器四、实验步骤1.对为控制器进行读写操作:(1)手动读写:①按图连线:②将MC单元编程开关置为“编程”档,时序单元状态开关置为“单步”档,ADDR 单元状态开关置为“置数”档③使用ADDR单元的低六位SA5…SA0给出微地址MA5…MA0,微地址可以通过MC 单元的MA5…MA0微地址灯显示④CON单元SD27…SD20,SD17…SD10,SD07…SD00开关上置24位微代码,待写入值由MC单元的M23…M024位LED灯显示⑤启动时序电路(按动一次TS按钮),即将微代码写入到E2PROM2816的相应地址对应单元中⑥重复③④⑤三步,将下图微代码写入2816芯片中二进制代码表(2)联机读写:①将微程序写入文件,联机软件提供了微程序下载功能,以代替手动读写微控制器,但微程序得以指定的格式写入本次试验的微程序如下:://************************************************************// :// // :// 微控器实验指令文件 // :// // ://************************************************************// ://***************Start Of MicroController Data****************//$M 00 000001;NOP$M 01 007070;CON(INS)->IR,P<1>$M 04 002405;R0->A$M 05 04B201;R0->B$M 30 001404;A加B->RO$M 32 183001;IN->R0$M 33 280401;R0->OUT$M 35 000035;NOP;//***************End Of MicroController Data*******************// ②写入微程序用联机软件的“【转存】-【装载数据】”功能将改格式文件装载入试验系统。

微程序控制器实验报告

微程序控制器实验报告

一、实验目的1、通过实验,进一步理解微程序控制器的组成结构。

理解微程序控制器的控制原理2、加深理解微程序控制器的工作原理。

掌握指令流程与功能3、理解掌握微程序控制器的设计思路与方法二、实验内容与步骤1、微程序控制器的组成原理控制存储器:实现整个指令系统的所有微程序,一般指令系统是规定的由高速半导体存储器构成,容量视机器指令系统而定,取决于微程序的个数,其长度就是微指令字的长度。

微指令寄存器:存放从控存读出的当前微指令。

微操作控制字段将操作控制信号送到控制信号线上,微地址字段指出下一条微地址的形成。

微地址寄存器:存放将要访问的下一条微指令地址地址转移逻辑:形成将要执行的微指令地址,形成方式:取指令公操作所对应的微程序一般从控存的0地址开始,所以微程序的人口地址0是由硬件控制的。

当出现分支时,通过判别测试字段、微地址字段、和执行部件的反馈信息形成后即微地址。

Cpu设计步骤:1.拟定指令系统2.确定总体结构(数据通路)3.安排时序4.拟定指令流程。

根据指令系统,写出对应所有机器指令的全部微操作机器节拍安排,然后列出操作时间表5.确定微指令的控制方式、下地址形成方式、微指令格式及微指令字长,编写全部的微指令的代码,最后将编写的微指令放入控制存储器中。

微程序控制器的设计步骤(1)设计微程序确定微程序流程图,也就是控制算法流程图。

(2)确定微指令格式微指令格式中的操作控制字段取决于执行部件的子系统需要多少微指令。

假定采用直接控制方式,执行部件需要10个微命令,则操作控制字段需要10位。

测试判别字段取决于微程序流程图中有多少处分支转移。

假定有3处分支,则测试判别字段需要3位。

下址字段取决于微程序流程图的规模。

假定微程序共用50条微指令,则下址字段至少需要6位。

这是因为ROM地址译码时,26=64,6位地址可容纳64条微指令。

(3)将微程序编译成二进制代码(4)微程序写入控制存储器(5)设计硬件电路三、实验现象--CPU 头文件cpu_defsLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE cpu_defs IS --定义程序包,包头,包体TYPE opcode IS (load, store, add, sub, bne); --这个语句适合于定义一些用std_logic 等不方便定义的类型,综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0 CONSTANT word_w: NATURAL :=8;CONSTANT op_w: NATURAL :=3;CONSTANT rfill: STD_LOGIC_VECTOR(op_w-1 downto 0):=(others =>'0');--FUNCTIOn slv2op(slv:IN STD_LOGIC_VECTOR) RETURN opcode;FUNCTION op2slv(op:in opcode) RETURN STD_LOGIC_VECTOR;END PACKAGE cpu_defs;PACKAGE BODY cpu_defs ISTYPE optable IS ARRAY(opcode) OF STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);--数组有5个元素,其他均0CONSTANT trans_table:optable :=("000", "001", "010", "011", "100");FUNCTION op2slv(op:IN opcode) RETURN STD_LOGIC_VECTOR ISBEGINRETURN trans_table(op);END FUNCTION op2slv;END PACKAGE BODY cpu_defs;--实验7-8 微程序控制器实验LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL,IEEE.NUMERIC_STD.ALL;USE WORK.CPU_DEFS.ALL;--使用自己定义的程序包ENTITY CPU ISPORT( clock : IN STD_LOGIC;--时钟reset : IN STD_LOGIC;--复位mode : IN STD_LOGIC_VECTOR(2 DOWNTO 0); --查看用mem_addr : INUNSIGNED(word_w-op_w-1 DOWNTO 0);--地址output : OUT STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);data_r_out : OUT STD_LOGIC_VECTOR(19 DOWNTO 0);--微指令Rop_out : OUT STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);--操作码add_r_out : OUT UNSIGNED(4 DOWNTO 0) --微地址R);END ENTITY;ARCHITECTURE rtl OF CPU ISTYPE mem_array IS ARRAY (0 TO 2**(word_w-op_w)-1) OF STD_LOGIC_VECTOR(word_w-1DOWNTO 0);--定义RAMSIGNAL mem : mem_array;CONSTANT prog : mem_array:=(0=> op2slv(load) & STD_LOGIC_VECTOR(TO_UNSIGNED(4,word_w-op_w)),1=> op2slv(add) & STD_LOGIC_VECTOR(TO_UNSIGNED(5,word_w-op_w)),2=> op2slv(store) & STD_LOGIC_VECTOR(TO_UNSIGNED(6,word_w-op_w)),3=> op2slv(bne) & STD_LOGIC_VECTOR(TO_UNSIGNED(7,word_w-op_w)), --TO_UNSIGNED转换函数将4转换为5位“00100”4=> STD_LOGIC_VECTOR(TO_UNSIGNED(2,word_w)),5=> STD_LOGIC_VECTOR(TO_UNSIGNED(3,word_w)),OTHERS => (OTHERS =>'0'));TYPE microcode_array IS ARRAY (0 TO 14) OF STD_LOGIC_VECTOR(19 DOWNTO 0); CONSTANT code : microcode_array:=(--控制存储器0=> "00010100010000000001",1=> "00000000000110000010",2=> "00001010000000000011",3=> "00000100001000001111",4=> "00100010000000000000",5=> "00000000000100000000",6=> "00000010100001000000",7=> "00000010100000100000",8=> "00000000000110000100",9=> "01000001000000000101",10=> "00000000000110000110",11=> "00000000000110000111",12=> "00000000000110010000",13=> "10000010000000000000",14=> "00000000000000000000");SIGNAL count : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL op : STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);SIGNAL z_flag : STD_LOGIC;SIGNAL mdr_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL mar_out : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL IR_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL acc_out : UNSIGNED(word_w-1 DOWNTO 0);SIGNAL sysbus_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);EGINPROCESS(reset,clock)VARIABLE instr_reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE acc : UNSIGNED(word_w-1 DOWNTO 0);CONSTANT zero : UNSIGNED(word_w-1 DOWNTO 0):=(OTHERS =>'0')VARIABLE mdr : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE mar : UNSIGNED(word_w-op_w-1 DOWNTO 0);VARIABLE sysbus : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE microcode : microcode_array;VARIABLE add_r : UNSIGNED(4 DOWNTO 0);VARIABLE data_r : STD_LOGIC_VECTOR(19 DOWNTO 0);VARIABLE temp : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGINIF reset='0' THENadd_r:=(OTHERS =>'0');count <= (OTHERS =>'0');instr_reg := (OTHERS =>'0');acc := (OTHERS =>'0');mdr := (OTHERS =>'0');mar := (OTHERS =>'0');z_flag <='0';mem <= prog;sysbus :=(OTHERS =>'0');ELSIF RISING_EDGE(clock) THEN--microprogram controllerdata_r := code(TO_INTEGER(add_r));IF data_r(4 DOWNTO 0)="01111" THEN --判断下地址temp:="01" & op(2 DOWNTO 0);add_r := UNSIGNED(temp);ELSIF data_r(4 DOWNTO 0)="10000" THENIF z_flag='1' THENadd_r:="01110";ELSEadd_r :="01101";END IF;ELSEadd_r := UNSIGNED(data_r(4 DOWNTO 0));END IF;data_r_out <=data_r;add_r_out <= add_r;--PCIF data_r(16)='1' THEN --PC_bus='1'sysbus := rfill & STD_LOGIC_VECTOR(count);END IF;IF data_r(19)='1' THEN --load_PC='1'count <= UNSIGNED(mdr(word_w-op_w-1 DOWNTO 0));ELSIF data_r(10)='1' THEN --INC_PC='1'count <= count+1;ELSEcount <= count;END IF;--IRIF data_r(15)='1' THEN --load_IRinstr_reg := mdr;END IF;IF data_r(9)='1' THEN --Addr_bus='1'sysbus := rfill & instr_reg(word_w-op_w-1 DOWNTO 0);END IF;op <= instr_reg(word_w-1 DOWNTO word_w-op_w);IR_out <= instr_reg;op_out <=op;--ALUIF data_r(17)='1' THEN --load_ACC='1'acc:=UNSIGNED(mdr);END IF;IF data_r(11)='1' THEN --ALU_ACC='1'IF data_r(6)='1' THEN --ALU_add='1'acc := acc + UNSIGNED(mdr);ELSIF data_r(5)='1' THEN --ALU_sub='1'acc := acc - UNSIGNED(mdr);END IF;END IF;IF data_r(18)='1' THEN --ACC_bus='1'sysbus := STD_LOGIC_VECTOR(acc);END IF;IF acc=zero THENz_flag <='1';ELSEz_flag <='0';END IF;acc_out<= acc;--RAMIF data_r(14)='1' THEN --load_MAR='1'mar := UNSIGNED(sysbus(word_w-op_w-1 DOWNTO 0));ELSIF data_r(12)='1' THEN --load_MDR='1'mdr := sysbus;ELSIF data_r(8)='1' THEN --CS='1'IF data_r(7)='1' THEN --R_NW='1'mdr := mem(TO_INTEGER(mar));ELSEmem(TO_INTEGER(mar))<=mdr;END IF;END IF;IF data_r(13)='1' THEN --MDR_bus='1'sysbus:=mdr;END IF;mdr_out <= mdr;mar_out <= mar;END IF;sysbus_out <=sysbus;END PROCESS;PROCESS(mode,mem_addr)BEGIN--mode=0 -> sysbus--mode=1 -> PC--mode=2 -> result of ALU--mode=3 -> IR--mode=4 -> MAR--mode=5 -> MDR--mode=6 -> memoutput <= (OTHERS =>'0');CASE mode isWHEN "000" =>output<=sysbus_out;WHEN "001" =>output(word_w-op_w-1 DOWNTO 0)<= STD_LOGIC_VECTOR(count);WHEN "010" =>output <= STD_LOGIC_VECTOR(acc_out);WHEN "011" =>output <= IR_out;WHEN "100" =>output(word_w-op_w-1 DOWNTO 0) <= STD_LOGIC_VECTOR(mar_out);WHEN "101" =>output <= mdr_out;WHEN "110" =>output <= mem(TO_INTEGER(mem_addr));WHEN others =>output <= (OTHERS =>'Z');END CASE;END PROCESS;END ARCHITECTURE;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。

微程序控制器实验报告

微程序控制器实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验五—微程序控制器实验报告

实验五—微程序控制器实验报告

实验报告专业:计算机科学与技术班级:计算机科学与技术(1)班学号:201024131147姓名:赵倩倩课程名称:计算机组成原理学年:2010—2011 学期1课程类别:专业必修试验时间:2011年11月28日实验名称:微程序控制实验实验目的和要求:实验目的:1.掌握微程序控制器的组成原理2.为模型机定义五条机器指令,并编写相应的微程序3.掌握微程序的编制,写入,观察微程序的运行实验要求:按实验目的完成相应的操作,将实验结果记下并分析实验总结。

实验软硬件要求:TDN-CM++计算机组成原理教学实验系统一台,排线若干。

实验内容,方法和步骤(可附页)实验原理:1.时序控制电路:控制器的功能是产生执行指令所需的控制信号,但执行指令时所需的控制信号是依赖于具体计算机的数据通路的,电路框图如下数据通路结构图Ø:始终脉冲输入端,接到方波发生器的输出(H23),W1调节频率,W2调脉宽。

START键是实验板上一个微动开关START的按键信号。

STEP(单步开关)STEP开关为0时(EXEC),一旦按下启动键,时序信号TS0—TS3将周而复始地发送出去。

STOP:拨动开关,STOP停机;RUN,运行。

CLR:拨动开关,时序清零。

TS0—TS3等间隔的时序信号输出。

实验模型机有五条指令:IN(输入)ADD(加法)STA(存数)OUT(输出)JMP(无条件转移)指令对应的参考微程序流程2.微程序控制电路微程序控制电路组成:控制存储器,微命令寄存器,微地址寄存器。

编程开关:PROM(编程),根据微地址和微指令格式将微指令二进制代码写入到控制存储器中。

READ(校验):可以对写入控制存储器中的二进制代码进行验证。

RUN(运行):只要给出微地址的入口微地址,则可以根据微程序流程图自动执行微程序。

3.微指令格式微指令字长共24位,其中UA5—UA0为6位的后续微地址,A,B,C为三个译码器字段,分别由三个控制位译码出多位。

微程序实验报告

微程序实验报告

一、实验目的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. 微程序编译与仿真结果在仿真软件中加载编译后的机器代码,进行仿真实验。

微程序控制器实验报告

微程序控制器实验报告

4.6 微程序控制器实验预习翻阅计算机组成与体系结构等书籍,复习微代码等知识。

波形仿真(以LDA指令为例)参数设置:End time : 5.0us Grad size: 100.00ns信号设置:clk :时钟脉冲输入信号;qd :启动时序电路的输入信号,低电平有效tj :实现停机的输入信号,高电平有效dp :实现单拍执行的输入信号,高电平有效。

KWE|RD :强读强写输入信号,均为低电平有效。

CLR : 清零输入信号,低电平有效。

IR7~5 :即IR7 ,IR6 ,IR5 ,指令地址输入信号。

pc_sel: 包含:pc_clr (PC清零信号,低电平有效) pc_load , pc_en ;bus_sel:总线输出信号。

分别为:sw_bus , r4_bus ,r5_bus ,alu_bus ,pc_bus;ld_reg :显示寄存器装载的输出信号。

分别为:ldr5 ,ldr4 ,ldr2 ,ldr1 ,ldar ,lddirM , CN ,s4~1 : 共同为显示运算选择的输出信号。

we|rd :存储器的写信号和读信号。

P1 : 判别信号。

a 4~1 : 下址输出信号。

t 4~1:即t4, t3, t2, t1:节拍脉冲输出信号波形分析:仿真结论:波形仿真符合预期结果。

运用模拟器运行LDA装载指令说明:图中:OP 为操作码,对应IR;M_ADDR 为当前地址,M_NXT_ADDR 为下一地址;其他的显示寄存器数据。

如图中编号及箭头所示:1、初始状态。

所有数据都为02、执行当前地址M_ADDR=01H下的指令:PC->AR,PC+1;生成下一地址:M_NXT_ADDR=02H,此时PC=01H3、执行当前地址M_ADDR=02H下的微指令:RAM->IR;此时OP=20H,则在绝对跳转时会选择LDA,相对地产生的下一个地址为M_NXT_ADDR=09H。

4、执行当前地址M_ADDR=09H的微指令:PC->AR,PC+1,AR=01H,产生下一个微地址M_NXT_ADDR=15H;5、执行当前地址M_ADDR=15H的微指令:RAM->AR,此时01H地址中的值为0DH,故AR=0DH,产生下一个微地址为M_NXT_ADDR=16H;6、执行当前地址M_ADDR=16H的微指令:RAM->R5,此时0DH地址中存放的值为55H,故R5=55H,产生下一个微地址为M_NXT_ADDR=01H。

微程序控制器的实验报告

微程序控制器的实验报告

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

微程序控制实验报告

微程序控制实验报告

微程序控制实验报告微程序控制实验报告引言:微程序控制是一种通过微指令序列来控制计算机硬件的方法。

通过将指令的操作码映射到微指令序列,可以实现复杂的指令执行过程。

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

一、实验目的本实验的主要目的是设计和实现一个8位微程序控制器。

通过该实验,我们将能够:1. 理解微程序控制的工作原理;2. 掌握微程序控制器的设计方法;3. 学习如何使用微指令序列来控制计算机硬件。

二、实验原理微程序控制是一种基于微指令的控制方式,它将指令的操作码映射到一组微指令序列。

这些微指令序列定义了计算机硬件在执行指令过程中的控制信号。

通过微指令序列,我们可以实现复杂的指令执行过程,如数据传输、算术逻辑运算、分支跳转等。

三、实验设计本实验中,我们设计了一个简单的8位微程序控制器。

该控制器包括以下几个模块:1. 指令寄存器(IR):用于存储当前执行的指令;2. 指令译码器(ID):将指令的操作码解码为微指令地址;3. 微指令存储器(MS):存储微指令序列;4. 控制信号发生器(CG):根据微指令地址生成控制信号;5. 数据通路(DP):执行指令的计算机硬件。

四、实验步骤1. 设计微指令序列:根据指令集的要求,设计一组微指令序列,包括数据传输、算术逻辑运算、分支跳转等操作。

2. 实现微指令存储器:使用存储器芯片或其他逻辑门电路实现微指令存储器,并将微指令序列存储其中。

3. 实现指令译码器:设计指令译码器,将指令的操作码解码为微指令地址。

4. 实现控制信号发生器:根据微指令地址生成控制信号,控制数据通路的操作。

5. 实现数据通路:根据指令要求,设计并实现数据通路,包括寄存器、算术逻辑单元等。

6. 连接各个模块:将指令寄存器、指令译码器、微指令存储器、控制信号发生器和数据通路连接起来,形成一个完整的微程序控制器。

五、实验结果与分析经过实验,我们成功实现了一个简单的8位微程序控制器。

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

微程序控制器组成实验报告

微程序控制器组成实验报告

微程序控制器组成实验报告微程序控制器组成实验报告一、引言微程序控制器是计算机中的重要组成部分,它负责解析指令并控制计算机的各个部件进行相应操作。

本实验旨在通过实际操作,深入了解微程序控制器的组成和工作原理。

二、实验目的1. 理解微程序控制器的基本概念和工作原理;2. 掌握微程序控制器的组成结构;3. 实践使用微程序控制器进行指令解析和控制。

三、实验原理微程序控制器由控制存储器和控制逻辑组成。

控制存储器中存储了一系列微指令,每个微指令对应一条机器指令的执行步骤。

控制逻辑根据当前指令的操作码,从控制存储器中读取相应的微指令,并根据微指令的控制信号控制各个部件的操作。

四、实验步骤1. 搭建实验平台:将微程序控制器与计算机主板相连,并连接相应的输入输出设备;2. 下载微程序控制器的控制存储器:将预先编写好的微指令存储到控制存储器中;3. 编写控制逻辑:根据机器指令的操作码,编写相应的控制逻辑,实现指令的解析和控制;4. 运行实验:通过输入指令,观察微程序控制器的工作情况,验证控制逻辑的正确性。

五、实验结果与分析在实验中,我们成功搭建了微程序控制器的实验平台,并下载了相应的微指令。

通过输入不同的指令,我们观察到微程序控制器能够正确解析指令并控制计算机的各个部件进行相应操作。

这证明了我们编写的控制逻辑是正确的。

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

微程序控制器通过控制存储器中的微指令,实现了对机器指令的解析和控制。

掌握了微程序控制器的基本原理后,我们能够编写相应的控制逻辑,实现自定义的指令解析和控制功能。

七、实验心得本次实验让我对微程序控制器有了更深入的了解。

通过亲自搭建实验平台和编写控制逻辑,我深刻体会到微程序控制器在计算机中的重要作用。

同时,实验过程中也遇到了一些问题,但通过不断尝试和调试,最终解决了这些问题,提高了自己的实践能力。

八、展望微程序控制器作为计算机的核心组件之一,具有广泛的应用前景。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验六_CPU_微程序控制器实验

实验六_CPU_微程序控制器实验

CPU__微程序控制器实验实验目的1.理解微程序控制器的控制原理2.进一步掌握指令流程和功能3.了解掌握微程序控制器的设计思路和方法实验原理微程序控制器的设计思想是由英国剑桥大学的威尔克斯(Wilkes)教授于1951年提出来的, 即将机器指令的操作(从取指令到执行)分解成若干个更基本的微操作序列, 并将有关的控制信号(微命令)按照一定的格式编成微指令, 存放到一个只读存储器中, 当机器运行时, 一条一条地读出这些微指令, 从而产生全机所需要的各种操作控制信号, 使相应部件执行所规定的操作。

微指令格式:N _µA 0N _µA 1N _µA 2N _µA 3N _µA 4P 0P 1P 2P C _i n cl j _i n s t r u c tc _z _j _f l a gl d _I Ro p _c o d e 0o p _c o d e 1o p _c o d e 2c h a n g e _zc h a n g e _cD R W rs e l _m e m d a t aM e m _W r i t e1234567891011121314151617181920D W _i n s t r u c t实验步骤(1)实验台设置成FPGA-CPU 独立调试模式, REGSEL=0、CLKSEL=1.FDSEL=0.使用实验台上的单脉冲, 即STEP_CLK 短路子短接, 短路子RUN_CLK 断开;(2)将设计在Quartus II 下输入, 编译后下载到TEC-CA 上的FPGA 中;(3)按复位键后, 拨动实验台上的开关SD5~SD0, 改变IR[15…12]、进位标志C 和结果为0标志Z, 观察指示灯R15~R0、A4~A0、A12~A8、A14和A15显示的信号, 追踪每条指令的执行过程并把相应数据填在表6-1中。

(4)观察每条指令的执行过程, 每个节拍进行的微操作和微操作控制信号。

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

微程序控制器实验报告 Prepared on 22 November 2020一、实验目的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 cpu_defs IS --定义程序包,包头,包体TYPE opcode IS (load, store, add, sub, bne); --这个语句适合于定义一些用std_logic 等不方便定义的类型,综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为0CONSTANT 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 使用自己定义的程序包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) OFSTD_LOGIC_VECTOR(word_w-1 DOWNTO 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:=(--控制存储器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;现象结果:四、实验体会原本对于控制器的设计还是一片空白,通过实验初步理解微程序控制器的组成结构。

相关文档
最新文档