微程序设计实验 [实验三 微程序设计]

微程序设计实验 [实验三 微程序设计],第1张

实验三微程序设计 一、 实验目的:

1掌握时序产生器的组成及工作原理;掌握微程序控制器的组成及工作原理; 2根据给出的指令系统、微指令格式、微命令的字段译码方案、地址转移逻辑电路分别设计部分微程序流程图、微指令的二进制代码; 3掌握微程序的编制、写入和读出验证的方法;

4根据给出的汇编语言和机器语言源程序,通过改变SE1~SE6的值,模拟P(1)测试,观察微程序的运行过程,掌握由微程序解释机器语言源程序的工作原理。 二、实验设备

TDN-CM+计算机组成原理教学实验系统一台。

三、实验内容

1实验原理

实验所用的时序电路原理如图5-1所示,可产生4个等间隔的时序信号TS1-TS4,其中φ为时钟信号,由实验台左上方的方波信号源提供,可产生频率及脉宽可调的方波信号。学生可根据实验自行选择方波信号的频率及脉宽。为了便于控制程序的运行,时序电路发生器也设置了一个启停控制触发器Cr,使TS1-TS4信号输出可控。图5-1中STEP(单步)、STOP(停机)分别是来自实验台上方中部的两个二进制开关STEP、STOP的模拟信号。START键是来自实验板上方中部的一个微动开关START的按键信号。当STEP的开关为0时(EXEC),一旦按下启动键,运行触发器Cr一直处于“1”状态,因此时序信号TS1-TS4将周而复始地发送出去。当STEP为1(STEP)时,一旦按下启动键,机器便处于单步运行状态,即此时只发送一个CPU周期的时序信号就停机。利用单步方式,每次只读一条微指令,可以观察微指令的代码与当前微指令的执行结果。另外,当机器连续运行时,如果STOP开关置“1”(STOP),也会使机器停机。

由于时序电路的内部线路已经连好,所以只需将时序电路与方波信号源连接(即将时序电路的时钟脉冲输入端φ接至方波信号发生器输出端H23),时序电路的CLR已接至实验板右下方的CLR模拟开关上。

2微程序控制电路与微指令格式 (1)微程序控制电路

微程序控制器的组成见图5-2,其中控制存储器采用3片2816的EPROM,具有掉电保护功能,微命令寄存器18位,用两片8D触发器(74LS273)和一片4D(74LS175)触发器组成。微地址寄存器6位,用三片正沿触发的双D触发器(74LS74)组成,它们带有清“0”端和预置端。在不判别测试的情况下,T2时刻打入微地址寄存器的内容即为下一条微指令

2

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

在该实验电路中设有一个编程开关(位于实验台中部上方),它具有三种状态:PROM(编程)、READ(校验)、RUN(运行)。当处于“编程状态”时,学生可根据微地址和微指令格式将微指令二进制代码写入到控制存储器2816中。当处于“校验状态”时,可以对写入控制存储器中的二进制代码进行验证,从而可以判断写入的二进制代码是否正确。当处于“运行状态”时,只要给出微程序的入口微地址,则可根据微程序流程图自动执行微程序。图中微地址寄存器输出端增加了一组三态门,目的是隔离触发器的输出,增加抗干扰能力,并用来驱动微地址显示灯。

如图5-1

(2)微指令格式

微指令字长共24位,其微指令格式及每位的功能如表5-1所示。

表5-1 微指令格式及字段译码功能

A、B、C字段经过译码器译码后的信号使用说明:

A字段 B字段 C字段

A9、A8经译码器译码后的信号使用说明:

计数器存储器RAM6116:

功能 不选择 读 写 其中UA5-UA0为6位的后续微地址,A、B、C为三个译码字段,分别由三个控制位译码出多位。C字段中的P(1)-P(4)是四个测试字位。其功能是根据机器指令及相应微代码进行译码,使微程序转入相应的微地址入口,从而实现微程序的顺序、分支、循环运行,其原理如图5-3所示,图中I7-I2为指令寄存器的第7-2位输出,SE6-SE1为微程序控制器单元微地址锁存器的异步置“1”输入端。AR为算术运算是否影响进位及判零标志控制位,其为低电零有效。B字段中的RS-B、RD-B、RI-B分别为源寄存器选通信号、目的寄存器选通

信号及变址寄存器选通信号(均为低电平有效),其功能是根据机器指令来进行三个工作寄存器R0、R1及R2的选通译码,其原理如图5-4,图中I0-I3为指令寄存器的第0-3位,LDRi为打入工作寄存器信号的译码器使能控制位,高电平有效。

3.汇编指令格式和指令系统

助记符号 指令格式 功能

IN Rd 0000 ×× Rd (SW)-->Rd

ADD Rd×× Rd d)+(addr)-->Rd addr

STA Rds ××s)-->addr addr

×× ××addr

×× ××addr

说明:指令格式中IN指令为单字长(8位)指令,其它指令为双字长指令(16位),指令格式中给出了各条指令的 *** 作码编码,Rs为源寄存器编码(共2位),Rd为目的寄存器编码(共2位)。

4实验步骤

(1)图5-5给出了几条机器指令对应的参考微程序流程图,设计ADD和JMP机器指令对应的微程序流程图,将有关的微程序按微指令格式编写二进制代码,填入表5-2所示的二进制代码表。

运行微程序

表5-2 微指令的二进制代码表

(2)按图5-6连接实验线路,仔细查线无误后接通电源。

(3)观测时序信号

用双踪示波器(或用PC示波器功能)观察方波信号源的输出,时序电路中的“STOP”开关置为“RUN”,“STEP”开关置为“EXEC”。按动START按键,从示波器上可观察到TS1、TS2、TS3、TS4各点的波形,比较它们的相互关系,画出其波形,并标注测量所得到的脉冲宽度,如图5-7所示。

(4)观察微程序控制器的工作原理: ①编程

A将编程开关置为PROM(编程)状态;

B将实验板上“STATE UNIT”中的“STEP”置为“STEP”,“STOP”置为“RUN”状态; C用二进制模拟开关置微地址MA5-MA0;

D在MK24-MK1开关上置微代码,24位开关对应24位显示灯,开关量为“0”时灯亮,

开关量为“1”时灯灭;

E启动时序电路(按动启动按钮“START”),即将微代码写入到E2PROM(2816)的相

应地址对应的单元中;

F重复C-E步骤,将表5-2的微代码写入到2816。 ②校验

A将编程开关设置为READ(校验)状态;

B将实验板的“STEP”开关置为“STEP”状态,“STOP”开关置为“RUN”状态; C用二进制开关置好微地址MA5-MA0;

D按动“START”键,启动时序电路,读出微代码。观察显示灯MD24-MD1的状态(灯

亮为“0”,灯灭为“1”),检查读出的微代码是否与写入的相同。如果不同,则将开关置于PROM编程状态,重新执行①即可。

③单步运行

A将编程开关置于“RUN(运行)”状态;

B将实验板的“STEP”开关置为“STEP”状态,“STOP”开关置为“RUN”状态; C *** 作CLR开关(拨动开关在实验板右下角)使CLR信号1->0->1,微地址寄存器

MA5-MA0清零,从而明确本机的运行入口微地址为000000(二进制);

D按动“START”键,启动时序电路,则每按动一次启动键,读出一条微指令后停机,

此时实验台上的微地址显示灯和微命令显示灯将显示所读出的一条指令。

注意:在当前条件下,可将“MICR0-CONTROLLER”单元的SE6-SE1接至“SWITCH UNIT”中的S3-Cn对应二进制开关上(即:将SE1-SE6对应二进制开关置为“1”),当需要人为设置分支地址时,可通过强制端SE1-SE6人为设置分支地址,将某个或某几个二进制开关置为“0”,相应的微地址位即被强置为“1”,从而改变下一条微指令的地址。(二进制开关置为“0”,相应的微地址位将被强置为“1”)

④连续运行

A将编程开关置为“RUN(运行)”状态;

B将实验板的单步开关“STEP”置为“EXEC”状态,“STOP”开关置为“RUN”状态; C使CLR从1->0->1,此时微地址寄存器清“0”,从而给出取指微指令的入口地址

为000000(二进制);

D启动时序电路,则可连续读出微指令。

思考题:

1为什么取指周期在这里要占用2个CPU周期?

2在解释OUT指令时,17、25微地址的微指令所完成的 *** 作为什么不能由一条微指令实现?

3在向RAM写入机器码时,24、30微地址的微指令所完成的 *** 作为什么不能由一条微指令实现?

注意事项

1、所有导线使用前须测通断; 2、不允许带电接线; 3、“0”——亮 “1”——灭;

4、注意连接线的颜色、数据的高低位。

回答:

与(ar+i)等价。

解析:

(ar+i),ar是数组,那么ar本身是指向ar[0]的指针,也就是ar[0] = ar。

求ar[i]就相当于求指针ar+i表示的值。这时就需要解引用运算符,指针ar+i表示的值为 (ar+i)。

第二个之所以错,是因为的优先级高于+,会先进行解引用ar+i = a[0]+i。

简介:

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的DMRitchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。

数组名词解释:

数组是计算机编程语言上,对于“Array”的中文称呼,是用于储存多个相同类型数据的集合。将相同数据类型的元素按一定顺序排列的集合,把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字成为数组名,编号成为下标。组成数组的各个变量成为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。

如果是说 VR 专业领域,涉及理论、设备、SDK研究与开发 ,这里方向很多,需要有深度的专业知识储备,基本上要做一个10年计划,从拿一两个相关专业的学位开始。我觉得这个方向不符合你的目标。\x0d\\x0d\如果是面向 VR 应用开发,VR 并不能成为一个独立的技术领域,实际上只是 3D 应用开发的一个简单扩展,关键还是要学习 3D 应用开发的相关技术。\x0d\\x0d\1、学习 C#语言。如果你没有编程基础,可以挑一本C#入门书先学起来,花一两个月,不用非常深入,做到能读能写简单的代码即可。当然,如果这个学习过程让你很兴奋很沉迷,那么恭喜你,这条路很适合你,你可以直接深入下去;\x0d\2、学习 Unity 引擎。一个 3D 引擎包含的知识面很广,不要泛泛地去学,找一本带项目实例的入门书,从简单的范例项目,一边敲代码一边学起,大概再花上两三个月。如果在学习 C# 的时候觉得单调,学习 Unity 的过程也很乏味,那应该严重认真考虑是不是要继续下去;\x0d\3、学习了 C# 和 Unity 的入门,方向坚定不移,可以再花半年的时间做/学习几个小项目,适当强化知识的深度和广度。然后题主应该有一定的积累来思考下一步的方向,建议以兴趣/性格导向为优先。如果喜欢做产品的快乐,那么掌握 3D 应用开发的各个环节,对设计、资产、技术、测试、运营、项目管理等各方面都具备一定的把控能力会非常有帮助;如果面向技术,那么需要回头补功课,算法、数据结构、3D 图形学等列个单子慢慢学起来,必须夯实基础才能深入。两个方向都不容易,要成为大牛10年的积累是必须的。但坚持3年,相信在一般的团队中已经可以贡献自己的力量了。\x0d\4、入门之后会发现,需要了解甚至深入学习的东西非常多,而且是越来越多。现在罗列给你没有意义。保持对多领域的关注,一步步走下去,经常审视自己的方向,结合兴趣和实际情况做选择,尽量少走弯路。\x0d\至于 VR,学习了 C# 和 Unity,用别人的 SDK,要做一个在场景里跑来跑去的小 Demo,不说分分钟,半天肯定够了,开始不用考虑太多。

以上就是关于微程序设计实验 [实验三 微程序设计]全部的内容,包括:微程序设计实验 [实验三 微程序设计]、C语言中,如果ar是个数组,那么表达式ar[i]与什么等价、学习VR/AR需要哪些基础等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9744121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存