微程序控制实验报告 北京交通大学
微程序控制器原理实验报告
微程序控制器原理实验报告一、引言微程序控制器作为计算机系统的重要组成部分,扮演着指挥和控制计算机操作的关键角色。
本实验报告将对微程序控制器的原理进行探讨,并描述相关实验的设计、步骤、结果和分析。
二、微程序控制器的原理2.1 微程序控制器的概念微程序控制器是一种控制计算机操作的技术,通过将指令集中的每个指令分解为一系列微操作,并以微指令的形式存储在控制存储器中,从而实现指令的执行控制。
2.2 微指令的组成和格式微指令由多个字段组成,每个字段代表一个微操作控制信号。
常见的微指令格式包括微地址字段、条件码字段、操作码字段等。
2.3 微指令的执行过程微指令的执行过程包括指令的取指、译码、执行和写回等阶段。
每个阶段对应微指令的不同部分,通过控制信号的转换和传递,完成相应的操作。
三、微程序控制器的设计与实验3.1 设计思路在进行微程序控制器实验前,需要明确实验的目标和设计思路。
实验通常包括以下几个步骤:确定指令集、确定微指令格式、设计控制存储器、设计控制逻辑电路等。
3.2 实验步骤1.确定指令集:根据实验需求,确定需要支持的指令集。
2.确定微指令格式:根据指令集的要求,设计适合的微指令格式。
3.设计控制存储器:根据微指令格式,设计控制存储器的结构和内容。
4.设计控制逻辑电路:根据微指令的执行过程,设计控制逻辑电路,实现指令的控制和转换。
5.构建实验平台:将设计的控制存储器和控制逻辑电路构建成实验平台,并与计算机系统相连。
6.进行实验:在实验平台上执行指令,观察和记录实验结果。
3.3 实验结果与分析根据实验步骤中的设计和操作,得到了相应的实验结果。
通过比对实验结果和预期效果,可以对微程序控制器的设计和实验进行分析和评估。
四、总结与展望微程序控制器作为计算机系统的关键组成部分,通过微操作的方式实现指令的执行控制。
本实验报告对微程序控制器的原理进行了探讨,并描述了相关实验的设计、步骤、结果和分析。
通过实验,我们深入理解了微程序控制器的工作原理和设计方法。
微程序控制器_实验报告
微程序控制器_实验报告本次实验使用的是微程序控制器,主要涵盖了微程序控制器的概念、微指令的设计、微指令的执行以及测试和调试方法等。
首先,我们需要了解什么是微程序控制器。
微程序控制器是一种专门用于控制计算机操作的控制器,其中的微指令由微程序控制器产生。
微程序控制器的主要优点是提高了计算机系统的可控性和可编程性,可避免在操作过程中出现复杂的电路切换。
在实验中,我们主要是操作微指令的设计和执行。
微指令需要根据指令的类型以及相应的操作码进行设计,确保计算机能够正确地执行指令。
在设计微指令过程中,我们要考虑到指令执行时需要进行的操作、信号的传递以及各个部分之间的协调。
在微指令设计完成后,需要进行微指令的执行。
微指令执行的过程也是十分关键的,这需要对微指令的执行顺序进行精密设计以保证整个计算机发挥最大的性能。
实验中我们了解了基本的微指令执行步骤,包括状态存储器、微指令计数器、微指令发生器以及微指令存储器等。
除了微指令设计和执行外,测试和调试也是实验中比较重要的步骤。
这一步骤旨在确保整个计算机系统能够正常运行,同时也可以在测试过程中发现和纠正存在的错误。
在测试过程中,我们需要编写测试程序,通过输入不同的指令类型和操作码来测试微指令是否能够正确地执行。
在调试过程中,我们需要通过检查微指令执行的每个步骤,找到代码中存在的错误并进行修正,以保证计算机的正常运行。
在实验中,学习了微程序控制器的基本知识,包括微指令的设计和执行以及测试和调试方法。
这些知识对于计算机专业的学生非常重要,可以帮助他们深入了解计算机系统的运行原理及其基本结构。
同时也可以为今后的工作和研究提供基础知识和经验。
微程序控制器实验报告
微程序控制器实验报告微程序控制器实验报告引言微程序控制器是一种常见的计算机控制器,它采用微程序的方式来实现指令的执行。
在本次实验中,我们将学习和探索微程序控制器的工作原理,并通过实验验证其功能和性能。
实验目的本次实验的主要目的是通过设计和实现一个简单的微程序控制器,来深入理解微程序控制器的工作原理和原理图设计。
实验过程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(运行)。
实验五 微程序控制实验
实验五微程序控制实验一、实验目的1、掌握微程序控制器的组成原理;2、为模型机定义五条机器指令,并编写相应的微程序;3、掌握微程序的编制、写入,观察微程序的运行。
二、实验设备TDN-CM+计算机组成原理教学实验箱一台,排线若干三、实验原理实验所用的半导体静态存储器电路可产生4个等间隔的时序信号TS1—TS4,其中Ø为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调的方波信号。
学生可根据实验自行选择方波信号源的频率及脉宽。
为了便于控制程序的运行,时序电路发生器也设置了一个启停控制触发器Cr,使TS1—TS4信号输出可控。
STEP(单步)STOP(停机)分别来自实验板上方中部的两个二进制开关STEP、STOP的模拟信号。
START建是来自实验板上方中部的一个微动开关,当START的按键信号STEP开关为0时(EXEC),一旦按下启动键,运行触发器Cr一直处于“1”状态,因此时序信号TS1—TS4将周而复始地发送出去。
当STEP为1时(STEP),一旦按下启动键,机器便处于处于单步运行状态,此时只发送1个CPU周期的时序信号就停机。
利用单步方式,每次只读一条微指令,可以观察到指令的代码与当前微指令的执行结果。
另外,当机器连续运行时,如果STOP开关置“1”(STOP),也会停机。
由于时序控制电路的内部线路已经连好,所以只需将时序电路与方波信号源连接(即将时序电路的脉冲输入端Ø接至方波信号发生器输出端H23),时序电路的CLR已经接至实验板右下方的CLR模拟开关上。
四、实验内容1、微程序控制电路微程序控制电路组成:控制存储器(3片2816的E2PROM,具有掉电保护功能),微命令寄存器18位(用两片8D触发器(74LS273)和1片4D(74LS175)触发器组成),微地址寄存器6位(用3片正沿触发的双D触发器(74LS74)组成,它们带有清“0”端和预置端)。
在不判断测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。
微程序控制实验报告 北京交通大学
微程序控制器实验报告北京交通大学一、实验目的通过看懂教学计算机中已经设计好并正常运行的数条基本指令(例如:ADD、MVRR、RET等指令)的功能、格式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。
其最终要达到:1.深入理解计算机微程序控制器的组成和运行原理;2.深入地学习计算机各类典型指令的执行流程;3.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念;4.学习微程序控制器的设计过程和相关技术。
二、实验内容综合型实验思考题1:在进行56页到59页的实验时,你可能已经发现不同指令在执行的过程中都会经过相同的微地址,也就是说,不同指令的微程序也有公用部分。
请你找出这些公共的微指令,说明它们所做的工作。
答:公共指令如下:(1)微址为00下址为00的指令,所做工作为:给出微程序的首地址并在启动时执行;(2)微址为30下址为3A的指令,所做工作为:完成检查中断请求。
思考题2:总结机器指令和微程序之间的关系。
答:机器指令和微程序之间的关系总结如下:(1)一条机器指令对应一个微程序,这个微程序是由若干条微指令构成的。
即,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令编成的微程序进行解释和执行;(2)从指令与微指令,程序与微程序,地址与微地址的一一对应关系上看,前者与内存储器有关,而后者与控制存储器有关,与此相关也有相对应的硬设备;(3)机器指令是把程序员编写的程序经编译以后成为机器能执行的以二进制码形式表示的指令;在微程序控制的计算机中通过执行一串微指令完成一条指令的功能;思考题3:总结指令的一般流程。
答:流程如下图:设计型实验1设计几条指令的功能、格式和执行流程,设计每条微指令各字段的具体编码值,包括控制码的各字段、下地址字段、形成下址用到的条件码。
写出指令格式、指令功能、执行流程及对应的微程序,确定各步的控制信号。
设计一条新的机器指令,该指令的功能是把一个通用寄存器的内容与一个内存单元ADR中的内容相加,结果保存到另外一个通用寄存器中,即:DR <- [ADR] + SR1.实验课的分组组号:第1组;2.小组要求使用的操作码和微程序首地址:操作码71H,微程序首地址51H;3.新指令的指令格式:双字长指令:1-8位操作码:01110001;9-12位DR:0000;13-16位SR:0000;17-32位ADR:0000 0000 0000 0000。
北京交通大学微机原理实验报告(yuan)
微机原理实验报告隋伟08212013自动化0801目录一、I/O地址译码与交通灯控制实验 (3)二、可编程定时器/计数器(8253) (6)三、中断实验(纯DOS) (11)四、模/数转换器…………………………………………………………18五、串行通讯……………………………………………………………16六、课程综合实验(抢答器) ……………………………………………28七、自主设计实验——LED显示 (32)八、参考文献 (35)一、I/O地址译码与交通灯控制实验一.实验目的通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
二.实验内容如图5-3,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律燃灭。
十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮3秒左右。
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮3秒左右。
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
(5)转(1)重复。
8255动态分配地址: 控制寄存器: 0C40BHA口地址: 0C408HC口地址: 0C40AH三.程序流程图和程序清单DATA SEGMENTX DB ?DATA ENDSSTACK1 SEGMENT STACKDW 100H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATAMOV DS,AX;---------------INIT---------------- MOV DX,0EC0BH ;写控制字MOV AL,80HOUT DX,ALL3: MOV DX,0EC0AHMOV AL,24H ;南北绿灯,东西红灯亮OUT DX,ALCALL DELAYCALL DELAY ;长延时,3s左右CALL DELAYCALL DELAYCALL DELAYCALL DELAYCALL DELAYMOV BL,8MOV AL,04HL0: XOR AL,40H ;南北黄灯闪,东西红灯亮OUT DX,ALCALL DELAY ;延时CALL DELAYDEC BL ;闪烁几次JNZ L0CALL DELAYMOV AL,81H ;南北红灯亮,东西绿灯亮OUT DX,ALCALL DELAYCALL DELAYCALL DELAY ;长延时,3s左右CALL DELAYCALL DELAYCALL DELAYCALL DELAYMOV BL,9MOV AL,80HL1: XOR AL,02H ;南北红灯亮,东西黄灯闪OUT DX,ALCALL DELAY ;延时CALL DELAYDEC BLJNZ L1 ;闪烁几次CALL DELAYMOV DL,0FFHMOV AH,06HINT 21HJZ L3 ;六号功能判断若无字符输入ZF=1继续循环;------------------------------MOV AH,4CHINT 21H;-----------延时函数------------DELAY : PUSH CXPUSH DXMOV CX,1FFFHLOP1: MOV DX,0FFFFHLOP2: DEC DXJNZ LOP2LOOP LOP1POP DXPOP CXRETCODE ENDSEND START四.实验遇到的问题和解决方法问题:绿灯灭后黄灯没有出现闪烁的效果,一直保持常亮解决方法:修改程序,通过利用异或和循环指令使绿灯灭、红灯亮后,黄灯口的状态从0到1循环变换,并通过调用延迟子程序,从而实现人眼可辨的黄灯闪的效果。
微程序控制实验报告(共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、微程序控制器的组成原理控制存储器:实现整个指令系统的所有微程序,一般指令系统是规定的由高速半导体存储器构成,容量视机器指令系统而定,取决于微程序的个数,其长度就是微指令字的长度。
微指令寄存器:存放从控存读出的当前微指令。
微操作控制字段将操作控制信号送到控制信号线上,微地址字段指出下一条微地址的形成。
微地址寄存器:存放将要访问的下一条微指令地址地址转移逻辑:形成将要执行的微指令地址,形成方式:取指令公操作所对应的微程序一般从控存的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 等不方PORT( clock: IN reset mode--查看用便定义的类型,综合器自动实现枚举类型元素的编码,一般将第一个枚举量(最左边)编码为 0CONSTANT word_w: NA TURAL :=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 ISTYPEoptable 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 IS BEGINRETURN 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 ISSTD_LOGIC;-- 时钟 : IN STD_LOGIC;-- 复位: 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);-- 微指令 R op_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-1 DOWNTO 0);-- 定义 RAM SIGNAL 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 SIGNAL op SIGNAL z_flag SIGNAL mdr_out SIGNAL mar_out SIGNAL IR_out SIGNAL acc_out : UNSIGNED(word_w-op_w-1 DOWNTO 0);: STD_LOGIC_VECTOR(op_w-1 DOWNTO 0); : STD_LOGIC;: STD_LOGIC_VECTOR(word_w-1 DOWNTO 0); : UNSIGNED(word_w-op_w-1 DOWNTO 0);: STD_LOGIC_VECTOR(word_w-1 DOWNTO 0); : UNSIGNED(word_w-1 DOWNTO 0);SIGNAL sysbus_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0); EGIN PROCESS(reset,clock)VARIABLE instr_reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);VARIABLE acc CONSTANT zero VARIABLE mdr VARIABLE mar VARIABLE sysbus : UNSIGNED(word_w-1 DOWNTO 0);: UNSIGNED(word_w-1 DOWNTO 0):=(OTHERS =>'0') : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);: UNSIGNED(word_w-op_w-1 DOWNTO 0);: 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' THEN add_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"THEN IF 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 mdr := sysbus;ELSIF data_r(8)='1' THEN IF data_r(7)='1' THEN--load_MDR='1'--CS='1'--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(cou nt);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.掌握微程序的编制、写入、观察微程序的运行情况。
二、实验逻辑原理图与分析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单元的二进制开关手动给出,其余单元的控制信号均由微程序控制器自动产生,为此可以设计出相应的数据通路图,如下图所示:数据通路图几条机器指令对应的参考微程序流程图如下图所示。
微程序控制器
用联机软件的“【转储】—【装载】”功能将该格式(*.TXT) 文件装载入实验系统。
四实验总结
本次课程设计连线复杂,不时有连接错误的, 按照指导书上所写的作,遇到很多不懂,错 误的,让我得尽信书不如无书,我对微程序 控制器,有了非常透彻的认识。 通过这次设计,使我们能清楚的了解微程序 控制器的基本组成、基本原理和设计步骤、 设计思路和调试步骤,最终能清晰的建立起 概念,为独立完成计算机设计奠定了基础。
thank you!
本实验安排了四条机器指令,分别为ADD(0000 0000)、IN(0010 0000)、OUT(0011 0000) 和 HLT ( 0101 0000 ),括号中为各指令的二进 制代码,指令格式如下: 助记符 机器指令码 说明 IN 0010 0000 IN ->R0 ADD 0000 0000 R0 + R0 -> R0 OUT 0011 0000 R0 -> OUT HLT 0101 0000 停机
微程序控制器实验报告
PPT制作者
1实验目的和运行环境 2实验原理 3实验步骤 4总结
1实验目的及要求 (1) 掌握微程序控制器的组成原理。 (2) 掌握微程序的编制、写入,观察微程序 的运行过程 实验环境 PC 机一台, TD-CMA 实验系统一套
2实验原理
微程序控制器的基本任务是完成当前指令的翻译和 执行,即将当前指令的功能转换成可以 控制的硬件逻辑部件工作的微命令序列,完成数据 传送和各种处理操作。它的执行方法就是将控制各 部件动作的微命令的集合进行编码,即将微命令的 集合仿照机器指令一样,用数字代码的形式表示, 这种表示称为微指令。这样就可以用一个微指令序 列表示一条机器指令,这种微指令序列称为微程序。 微程序存储在一种专用的存储器中,称为控制存储 器,微程序控制器原理框图如图所示。
微程序控制实验报告
微程序控制实验报告微程序控制实验报告引言:微程序控制是一种通过微指令序列来控制计算机硬件的方法。
通过将指令的操作码映射到微指令序列,可以实现复杂的指令执行过程。
本实验旨在通过设计和实现一个简单的微程序控制器,加深对微程序控制原理的理解。
一、实验目的本实验的主要目的是设计和实现一个8位微程序控制器。
通过该实验,我们将能够:1. 理解微程序控制的工作原理;2. 掌握微程序控制器的设计方法;3. 学习如何使用微指令序列来控制计算机硬件。
二、实验原理微程序控制是一种基于微指令的控制方式,它将指令的操作码映射到一组微指令序列。
这些微指令序列定义了计算机硬件在执行指令过程中的控制信号。
通过微指令序列,我们可以实现复杂的指令执行过程,如数据传输、算术逻辑运算、分支跳转等。
三、实验设计本实验中,我们设计了一个简单的8位微程序控制器。
该控制器包括以下几个模块:1. 指令寄存器(IR):用于存储当前执行的指令;2. 指令译码器(ID):将指令的操作码解码为微指令地址;3. 微指令存储器(MS):存储微指令序列;4. 控制信号发生器(CG):根据微指令地址生成控制信号;5. 数据通路(DP):执行指令的计算机硬件。
四、实验步骤1. 设计微指令序列:根据指令集的要求,设计一组微指令序列,包括数据传输、算术逻辑运算、分支跳转等操作。
2. 实现微指令存储器:使用存储器芯片或其他逻辑门电路实现微指令存储器,并将微指令序列存储其中。
3. 实现指令译码器:设计指令译码器,将指令的操作码解码为微指令地址。
4. 实现控制信号发生器:根据微指令地址生成控制信号,控制数据通路的操作。
5. 实现数据通路:根据指令要求,设计并实现数据通路,包括寄存器、算术逻辑单元等。
6. 连接各个模块:将指令寄存器、指令译码器、微指令存储器、控制信号发生器和数据通路连接起来,形成一个完整的微程序控制器。
五、实验结果与分析经过实验,我们成功实现了一个简单的8位微程序控制器。
微程序控制实验报告
微程序控制实验报告微程序控制实验报告一、引言微程序控制是一种基于微指令的计算机控制方式,它将指令的执行过程细化为一系列微操作,通过微指令控制单元来实现。
本实验旨在通过设计和实现一个简单的微程序控制器,加深对微程序控制原理的理解。
二、实验目的1. 掌握微程序控制的基本原理;2. 熟悉微程序控制器的设计和实现方法;3. 实践运用微程序控制器设计一个简单的计算器。
三、实验原理微程序控制器由微指令存储器、微程序计数器、微指令译码器和控制逻辑组成。
微指令存储器存储了一系列微指令,每个微指令对应一个微操作。
微程序计数器用于指示当前执行到的微指令地址。
微指令译码器负责将微指令转换为控制信号,控制逻辑根据控制信号来控制计算机各个部件的工作。
四、实验步骤1. 设计微指令集:根据计算器的功能需求,设计一套适合的微指令集,包括算术运算、存储器读写等操作。
2. 编写微指令存储器的初始化程序:将设计好的微指令集存储在微指令存储器中,为后续的微程序执行做准备。
3. 实现微程序计数器:设计一个计数器电路,用于指示当前执行到的微指令地址,并实现计数器的自增和重置功能。
4. 设计微指令译码器:根据微指令的格式和编码规则,设计一个译码器电路,将微指令转换为控制信号。
5. 实现控制逻辑:根据微指令的控制信号,设计一个控制逻辑电路,控制计算器各个部件的工作。
6. 连接和调试:将各个部件按照设计连接起来,并进行调试和测试,确保微程序控制器能够正常工作。
五、实验结果与分析经过实验,我们成功实现了一个简单的微程序控制器,并用它设计了一个计算器。
该计算器能够进行基本的算术运算和存储器读写操作。
在实验过程中,我们发现微程序控制器的设计和实现相对复杂,需要充分考虑微指令的设计和控制逻辑的编写。
同时,微程序控制器的执行效率相对较低,对于复杂的程序,可能需要较长的执行时间。
六、实验总结通过本次实验,我们深入了解了微程序控制的原理和实现方法。
微程序控制器是一种灵活且可扩展的控制方式,可以根据不同的需求设计不同的微指令集和控制逻辑,具有一定的通用性。
实验五 微程序控制实验
实验五微程序控制实验一、实验目的1、掌握微程序控制器的组成原理;2、为模型机定义五条机器指令,并编写相应的微程序;3、掌握微程序的编制、写入,观察微程序的运行。
二、实验设备TDN-CM+计算机组成原理教学实验箱一台,排线若干三、实验原理实验所用的半导体静态存储器电路可产生4个等间隔的时序信号TS1—TS4,其中Ø为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调的方波信号。
学生可根据实验自行选择方波信号源的频率及脉宽。
为了便于控制程序的运行,时序电路发生器也设置了一个启停控制触发器Cr,使TS1—TS4信号输出可控。
STEP(单步)STOP(停机)分别来自实验板上方中部的两个二进制开关STEP、STOP的模拟信号。
START建是来自实验板上方中部的一个微动开关,当START的按键信号STEP开关为0时(EXEC),一旦按下启动键,运行触发器Cr一直处于“1”状态,因此时序信号TS1—TS4将周而复始地发送出去。
当STEP为1时(STEP),一旦按下启动键,机器便处于处于单步运行状态,此时只发送1个CPU周期的时序信号就停机。
利用单步方式,每次只读一条微指令,可以观察到指令的代码与当前微指令的执行结果。
另外,当机器连续运行时,如果STOP开关置“1”(STOP),也会停机。
由于时序控制电路的内部线路已经连好,所以只需将时序电路与方波信号源连接(即将时序电路的脉冲输入端Ø接至方波信号发生器输出端H23),时序电路的CLR已经接至实验板右下方的CLR模拟开关上。
四、实验内容1、微程序控制电路微程序控制电路组成:控制存储器(3片2816的E2PROM,具有掉电保护功能),微命令寄存器18位(用两片8D触发器(74LS273)和1片4D(74LS175)触发器组成),微地址寄存器6位(用3片正沿触发的双D触发器(74LS74)组成,它们带有清“0”端和预置端)。
在不判断测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微程序控制器实验报告
北京交通大学
一、实验目的
通过看懂教学计算机中已经设计好并正常运行的数条基本指令(例如:ADD、MVRR、RET等指令)的功能、格式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、调试正确。
其最终要达到:
1.深入理解计算机微程序控制器的组成和运行原理;
2.深入地学习计算机各类典型指令的执行流程;
3.对指令格式、寻址方式、指令系统、指令分类等建立具体的总体概念;
4.学习微程序控制器的设计过程和相关技术。
二、实验内容
综合型实验
思考题1:在进行56页到59页的实验时,你可能已经发现不同指令在执行的过程中都会经过相同的微地址,也就是说,不同指令的微程序也有公用部分。
请你找出这些公共的微指令,说明它们所做的工作。
答:公共指令如下:
(1)微址为00下址为00的指令,所做工作为:给出微程序的首地址并在启动时执行;
(2)微址为30下址为3A的指令,所做工作为:完成检查中断请求。
思考题2:总结机器指令和微程序之间的关系。
答:机器指令和微程序之间的关系总结如下:
(1)一条机器指令对应一个微程序,这个微程序是由若干条微指令构成的。
即,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令编成的微程序进行解释和执行;
(2)从指令与微指令,程序与微程序,地址与微地址的一一对应关系上看,前者与内存储器有关,
而后者与控制存储器有关,与此相关也有相对应的硬设备;
(3)机器指令是把程序员编写的程序经编译以后成为机器能执行的以二进制码形式表示的指令;在微程序控制的计算机中通过执行一串微指令完成一条指令的功能;
思考题3:总结指令的一般流程。
答:流程如下图:
设计型实验1
设计几条指令的功能、格式和执行流程,设计每条微指令各字段的具体编码值,包括控制码的各字段、下地址字段、形成下址用到的条件码。
写出指令格式、指令功能、执行流程及对应的微程序,确定各步的控制信号。
设计一条新的机器指令,该指令的功能是把一个通用寄存器的内容与一个内存单元ADR中的内容相加,结果保存到另外一个通用寄存器中,即:DR <- [ADR] + SR
1.实验课的分组组号:
第1组;
2.小组要求使用的操作码和微程序首地址:
操作码71H,微程序首地址51H;
3.新指令的指令格式:
双字长指令:
1-8位操作码:01110001;
9-12位DR:0000;
13-16位SR:0000;
17-32位ADR:0000 0000 0000 0000。
4.指令功能:
把一个通用寄存器SR中的内容与一个内存单元ADR中的内容相加,并将结果保存到另外一个通用寄存器DR中。
5.每一个执行步骤的说明:
(1)SR->Q:将SR寄存器中的数据转至Q寄存器中;
(2)PC->AR,PC+1->PC:读指令,PC+1;
(3)MEM->AR:直接寻址,将ADR中存储的数据转存至临时存储器中;
(4)MEM+Q->Q:将MEM中数据与Q中数据求和,将结果存在Q寄存器中;
(5)Q->DR:将Q寄存器中的数据存入DR中。
6.完整的微程序如下表:
7.以及每一条微指令控制信号和下地址的解释说明;
(1)SR->Q
微址 51H:入口地址为51H;
下址 00H:顺序执行;
CI3-0 1110:顺序执行;
SCC3-0 0000:CI3-0不为0011时无效;MRW 100:无读写;
I2-0 100:从A口读SR的值;
I8-6 000:输出SR寄存器的值到Q寄存器;I5-3 000:加法功能实现R+S;
SST 000:CZVS的值保持不变;
SSH SCI 000:无进位;
DC2 000:不操作;
DC1 000:送开关内容到内部总线。
(2)PC->AR,PC+1->PC
微址52H 入口地址为52H;
下址00H:顺序执行;
CI3-0 1110:顺序执行;
SCC3-0 0000:CI3-0不为0011时无效;MRW 100:无读写;
I2-0 011:从B口读PC的值;
I8-6 010:A口与输出Y相连;
I5-3 000:加法功能实现R+S;
B口 0101:PC为R5,B口内容+1送到B口;A口 0101:输出A口的内容到AR;
SST 000:CZVS的值保持不变;
SSH SCI 001:进位;
DC2 011:地址寄存器接收;
DC1 000:送开关内容到内部总线。
(3)MEM->AR
微址 53H:入口地址为53H;
下址 00:顺序执行;
CI3-0 1110:顺序执行;
SCC3-0 0000:CI3-0不为0011时无效;MRW 001:读内存;
I2-0 111:从R端读数据;
I8-6 001:直接将ADR地址输出;
I5-3 000:加法功能实现R+S;
SST 000:CZVS的值保持不变;
SSH SCI 000:加法功能;
DC2 011:地址寄存器接收;
DC1 000:送开关内容到内部总线。
(4)MEM+Q->Q
微址 54H:入口地址为54H;
下址 00H:顺序执行;
CI3-0 1110:顺序执行;
SCC3-0 0000:CI3-0不为0011时无效;MRW 001:读内存;
I2-0 110:数据R来源于D,S来源于Q;I8-6 000:结果处理直接输出;
I5-3 000:加法功能实现R+S;
SST 000:CZVS的值保持不变;
SSH SCI 000:加法功能;
DC2 000:不操作;
DC1 000:送开关内容到内部总线。
(5)Q->DR
微址 55H:入口地址为55H;
下址 30H:中断执行入口地址;
CI3-0 0011:中断程序到下址30;
SCC3-0 0000:必转;
MRW 100:无读写;
I2-0 010:读寄存器Q中数据;
I8-6 011:将结果送给B口对应的寄存器;I5-3 000:R+S的加法操作;
SST 001:接收ALU的标志位输出的值;SSH SCI 000:加法功能;
DC2 000:不操作;
DC1 000:送开关内容到内部总线。
8.要在模拟程序上实现扩展和调试验证,给出进行扩展指令和验证调试过程的截图:(注意:实验课不同分组的操作码和微程序首地址不同)
三、实验体会及总结
由于本次微程序控制器的实验比较复杂,于是在课之前就进行了预习,查阅实验指导书,课后又和同组的小伙伴进行了反复地讨论。
在实验的过程中,虽然小伙伴有事没能一起调试,但是由于之前准备的充足,我一鼓作气地解决了从软件配置到程序设计,最后调试运行的各种问题,最终顺利的完成了此次实验。
在整个设计、编程、调试的过程中,我对于微程序控制器的理解更加深入,对它的整体架构、工作流程都有了新的认识。
我相信,这对于理解计算机组成原理理论课,甚至今后的学习都会很有帮助,让我对学习充满信心。