微程序控制器实验报告

  • 格式:docx
  • 大小:220.01 KB
  • 文档页数:17

下载文档原格式

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

微程序控制器实验

预习报告

1.微程序控制器的组成和工作原理。微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。其工作原理分为:一、将程序和数据通过输入设备送入存储器;二、启动运行后,从存储器中取出程序指令送到控制器去识别,分析该指令要求什么事;三、控制器根据指令的含义发出相应的命令(如加法、减法),将存储单元中存放的操作数据取出送往运算器进行运算,再把运算结果送回存储器指定的单元中;四、运算任务完成后,就可以根据指令将结果通过输出设备输出

2.微程序、微指令、微命令之间的关系。一系列微指令的有序集合称为微程序。

在微程序控制方式之下,从控制存储器中取出,完成一个或几个微操作的命令称为微指令。

控制部件通过控制线向执行部件发出各种控制命令, 通常把这种控制命令叫做微命令。

所以总的来说:微程序包含微指令,而每条微指令包含的微命令控制。

3. 微指令、微程序的设计及调试。

在微程序流程图中,根据每个状态的微指令,将其进行编码,设计出所需硬件及执行效率较高的微程序控制电路,然后进行调试。

思考题:

1. 举例说明实验中出现的基本概念:微命令、微操作、微指令、微程序?

微命令:控制器发出的每个控制信号,如对运算单元的控制m cn s3 s2 s1

s0 发出的010101 等。

微操作:由微命令控制实现的最基本的操作称为微操作。如发出运算器加运算的微命令后,运算器进行加法计算,就称为微操作。微指令:完成一个或几个微操作的指令。如控制器进行存数据的命令后,需要有we信号有效,pc 保持,来控制这些的指令即为微指令。微程序:微程序包含微指令。如微程序流程中包括很多微指令控制,进行一些加减运算,存储数据,地址自加一等等。

2.解释并比较微程序控制器的几种设计方法?微序列控制器通过吧控制信号存储在一个查找Rom,(1) 用水平编码生成微操作(2) 用垂直编码生成微操作(3) 从微代码直接产生控制信号。

3.微程序控制器的控制对象、手段及方法?控制器如何取指令?微程序

控制器控制对象分为硬件方面和软件方面,硬件方面为数据通路的控制信号,软件方面为测试程序的控制信号。

控制器根据状态机的不同状态进行指令读取,在不同状态下取得的指令也不同。

4.控制器的功能?如何取指令、分析指令、执行指令?通过下址取得指

令,根据控制信号进行不同信号的开启或关闭也就是分析指令,然后再在控制信号的作用下执行指令。

5.下址的产生方法?常用的有哪些,实验中用到了哪些?A:计数器方

式――在顺序执行微指令时,后续微指令地址由现行微指令加上一个增量来产生;在非顺序执行微指令时,必须在执行现行微指令后,转去执行指定后续微指令地址的下一条微指令。

B:增量方式与断定方式的结合――微指令的顺序控制字段分成两部

分:条件选择字段与转移地址字段. 由这两个字段结合,当转移条件满足时,将转移地址字段作下一个微地址;若无转移要求,则直接从微程序计数器中取得下一条微指令. 一般用于微指令执行时,需要外部判断条件的场合。

C:多路转移方式――当微程序不产生分支时,后续微地址直接由微指令的顺序控制字段给出;否则有若干个后续地址可以选择,此时必须由顺序控制字段的"判别测试"和"状态条件"信息来选择其中一个微地

址一般用于有多个转移且可以使用组合逻辑设计转移地址逻辑的场合。

实验中用到了多路转移方式。

6.每条机器指令的指令码如何与其入口微地址对应?微程序分支如何处理?

通过编码方式,将指令码的状态分成不同的几个,再运用微地址进行编

码,对不同的指令码编程不同的地质,一一对应。

在不同分支出现时利用临时寄存器IR 对几个分支进行编码,映射为不

同状态。

7.如何简化微程序流程图,使其ADD、AND指令在部分微指令中合并?(如AR→RAM、RAM→DR2、R5→DR1)

只对ALU 部分的下址进行区分,其他部分用同样的下址即可,这样可以省去一个IR 的编码状态。

8.电路设计过程中如果出现多个状态机怎么办?将不同状态机的控制信号进行区分,在不同控制信号作用下进行多个状态机的控制。

实验日志

11月10日

对微指令的复习和理解,明白了下址的控制方法但是对电路中P1 的意义不太理解。

经过看微程序流程图,发现P1 在ldir 需要进行下载时有效,所以P1即为控制临时存储器IR 的控制信号,该控制信号由流程图中第四步中有效,来控制IR 的下址是否有效。

11月12日

编写ROM时发现P1 具体为1 的状态不同会出现不能强读强写,所以将P1 为1 改为当RAM数据传到IR 时令其有效,得到正确波形。

11月18日

仿真时发现ar 的第一个地址不正确,应该为00H 但是却是个不是个确定的值。经分析发现第一个ar 值应该为sw输入到总线上,而总线的值没有

k 输入,所以将k 的输入设定为00H,得到的仿真结果正确。

实验报告ROM部分代码(只显示编码部

分):Sw r4b r5b alu pcbus dr1 dr2 r4l r5l m cn s3 s2 s1 s0 we rd pclr pcld pcen ldar ldir p1 下址五位"0111100000000000010100000001" when address="00000" ELSE--SW-->PC "1111000000000000011110000010" when address="00001" ELSE--PC-->AR PC=PC+1 "1111100000000000110001101000" when address="00010" ELSE--RAM-->IR "1111000000000000011110010101" when address="01001" ELSE--LDA1:PC-->AR PC=PC+1 "1111100000000000110010010110" when address="10101" ELSE--LDA2: RAM--> AR "1111100010000000110000000001" when address="10110" ELSE--LDA3:RAM-->R5 "1111000000000000011110010111" when address="01010" ELSE--STA1: PC-->AR PC=PC+1 "1111100000000000110010011000" when address="10111" ELSE--STA2:RAM --> AR "1101100000000001010000000001" when address="11000" ELSE--STA3:R5-->RAM "1111000000000000011110011001" when address="01011" ELSE--OUT1: PC-->AR PC=PC+1 "1111100000000000110010011010" when address="11001" ELSE--OUT2: RAM --> AR "1111100000000000110000000001" when address="11010" ELSE--OUT3:RAM-->BUS "1101110000000000010000011011" when address="01100" ELSE--COM1 :R5-->DR1 "1110100011000000010000000001" when address="11011" ELSE--COM2:/ALU-->R5 "1111000000000000011110011100" when address="01101" ELSE--JMP1:PC-->AR PC=PC+1 "1111100000000000110100000001" when address="11100" ELSE--JMP2:RAM-->PC "1111000000000000011110000011" when address="01110" ELSE--ADD1:PC-->AR PC=PC+1 "1111100000000000110010000100" when address="00011" ELSE--ADD2:RAM-->AR "1111101000000000110000000101" when address="00100" ELSE--ADD3:RAM-->DR2 "1101110000000000010000000110" when address="00101" ELSE--ADD4:R5-->DR1 "1110100010110010010000000001" when address="00110" ELSE--ADD5:ALU--R5 加"1111000000000000011110011101" when address="01111" ELSE--AND1:PC-->AR PC=PC+1 "1111100000000000110010011110" when address="11101" ELSE--AND2:RAM-->AR "1111101000000000110000011111" when address="11110" ELSE--AND3:RAM-->DR2 "1101110000000000010000000111" when address="11111" ELSE--AND4:R5-->DR1 "1110100011010110010000000001" when address="00111" ELSE--AND5:ALU--R5 101011and "0111100000000000010100010001" when address="10000" ELSE--KWE1:SW-->PC "1111000000000000011110010010" when address="10001" ELSE--KWE2:PC-->AR PC=PC+1 "0111100000000001010000010001" when address="10010" ELSE--KWE3:SW-->RAM "0111100000000000010100010011" when address="01000" ELSE--KWE1:SW-->PC "1111000000000000011110010100" when address="10011" ELSE--KWE2:PC-->AR PC=PC+1 "1111100000000000110000010011" when address="10100" ELSE--KWE3:RAM-->BUS "1111100000000000100010000000";

没有加数据通路部分时的仿真波形:

相关主题