第七章 微序列控制单元设计

合集下载

计算机组成原理实验报告 微程序控制单元实验(整理).pptx

计算机组成原理实验报告 微程序控制单元实验(整理).pptx
五、总结 通过本次实验我掌握了微程序控制器的原理,同时也掌握了微程序的编制、写入、观察微
程序的运行,学习了指令的执行流程 ,我觉得这次实验的原理比较容易理解,实施起来也不 难,但是在实验过程中,不知道是因为接线的问题还是仪器的问题一度不能成功,录入了数 据还是跳转不到要去的地方。我们小组以为是输入数据时出错,重新输了好多遍,但是都还 是一样的结果。在老师的指导下终于得到了正确的结果。顺利的完成了实验。这次实验使我 懂得要认真弄清楚每一步实验的原理和所需要的知识点,这样才可以有速度完成实验,同时 也知道做实验需要持之以恒的恒心、信心与耐心。
(M0~M23)。 3. 按脉冲单元中的 PLS2 脉冲按键,在 MOCK 上产生一个上升沿,把当前微程序存储器
输出的微指令打入微指令锁存器。可在 CPT-B 上的微指令指示灯显示出当前微指
第 页 3共 4 页
学海无涯
令,应为 11H、11H、11H。
4.置 MLD=1,微代码的地址 MD0~MD7(对应二进制开关 H0~H7)为 05H(对应开关如
五总结通过本次实验我掌握了微程序控制器的原理同时也掌握了微程序的编制写入观察微程序的运行学习了指令的执行流程我觉得这次实验的原理比较容易理解实施起来也不难但是在实验过程中不知道是因为接线的问题还是仪器的问题一度不能成功录入了数据还是跳转不到要去的地方
学海无 涯
西华大学数学与计算机学院实验报告
课程名称:计算机组成原理 指导教师:祝昌宇 实验名称:微程序控制单元实验
完毕后按“NEXT”键,在地址 06H 处输入 66H、66H、66H 三个字节,完毕后
按“ENTER”键。输入完毕。
(二)微地址打入操作
1. 按启停单元中的停止按钮,置实验机为停机状态,此时微地址寄存器被请零。 2. 按启停单元中的运行按钮,置实验机为运行状态。此时微程序存储器为读状态,微

微程序控制器的设计与实现

微程序控制器的设计与实现

微程序控制器的设计与实现一、引言微程序控制器是一种用于指令执行的高级控制器,它通过微指令序列来控制计算机的操作。

本文将介绍微程序控制器的设计与实现方法,包括微程序的设计原理、控制存储器的组织结构、微指令的编码和执行过程等。

二、微程序设计原理微程序设计是一种将指令的操作码映射为一系列微指令的方法。

每个微指令对应着计算机的一条基本操作,例如存储器读取、算术运算等。

微指令序列通过微程序计数器来控制,实现指令的顺序执行。

三、控制存储器的组织结构控制存储器是存储微指令序列的重要组成部分。

它通常采用的是RAM (Random Access Memory)的结构,以实现对微指令的随机读取。

控制存储器的地址由微程序计数器提供,通过地址译码器来选择对应的微指令。

四、微指令的编码微指令的编码是将指令的操作码映射为一系列控制信号的过程。

常见的编码方式有水平编码和垂直编码两种。

水平编码将每个控制信号独立编码,占用较多的位数;垂直编码则将多个控制信号合并编码,占用较少的位数。

根据具体的设计需求,可以选择适合的编码方式。

五、微指令的执行过程微指令的执行过程包括指令的获取、解码和执行三个阶段。

指令的获取是通过微程序计数器提供的地址从控制存储器中读取相应的微指令;指令的解码是将微指令中的控制信号解码为具体的操作;指令的执行是根据解码后的控制信号执行相应的操作,例如读取存储器、进行算术运算等。

六、实现微程序控制器的步骤实现微程序控制器的步骤包括微指令的设计、控制存储器的编程、控制信号的生成等。

首先,根据指令集的要求设计微指令的格式和编码方式;然后,根据微指令的格式编程控制存储器,将微指令序列存储其中;最后,根据微指令的编码生成相应的控制信号,控制计算机的操作。

七、实例分析以一个简单的加法指令为例,介绍微程序控制器的实现过程。

首先,设计微指令的格式,包括操作码、源操作数、目的操作数等字段;然后,编程控制存储器,将微指令序列存储其中;最后,根据微指令的编码生成相应的控制信号,例如读取源操作数、读取目的操作数、进行加法运算等。

第七章微序列控制单元设计

第七章微序列控制单元设计
同济大学软件学院?????????????????????????????????nn22n2n211微命令11微程序指令微程序指令微指令微指令完成一组微操作微命令微命令微指令微程序指令程序???程序指令微程序微指令微操作控制信号微操作的关系同济大学软件学院4
第七章 微序列控制单元设计
7.1 微序列控制器设计基础
用来产生存储到寄存器中的下一个地址,
这些位连同指令的操作码和标志值一起输入
到组合逻辑以产生下一条微指令的地址。
同济大学 软件学院
3. 微程序控制器的工作过程 ① 启动取指令微程序 (PC)→MAR,读出机器指令→IR,PC增量 ② 根据IR中的操作码,通过微地址形成电路产生该指令 的微程序的起始微地址,并送入μMAR中。 ③ μMAR中的微地址经译码、驱动,从被选的控存单元 中取出一条微指令。 ④ 微指令的操作控制字段经译码或直接产生一组微操作 控制信号并送往有关的功能部件,控制其完成所规定 的微操作。
同济大学 软件学院
4.下址的产生 四种常用方法:
◆ 当前地址加1:微代码存储器中的下一地址,
即当前地址加1。
微代码程序在微代码存储器中顺序存放。
(提高可读性、微程序易于调试)
同济大学 软件学院
◆ 绝对地址:由微代码存储器提供。 ◆ 映射逻辑
每个微序列控制器必须能够访问正确的执
行周期,这功能可用映射逻辑来实现。 (1)已读取指令的操作码输入到一个映射硬件, 此硬件将该操作码转换或映射成该指令执行 周期的第一条微指令所在的地址;
同济大学 软件学院
2.非常简单微序列控制器初步的水平微代码
同济大学 软件学院
3.非常简单微序列控制器优化后的水平微代码
优化微代码:
◆ 在所有的状态中,ARDR和IRDR的值是相同的。

第七章微程序控制单元设计

第七章微程序控制单元设计

第七章微序列控制单元的设计1. 修改非常简单微序列控制器,将其状态分配给下列地址。

给出这些分配所需的映射逻辑。

2. 根据习题1状态分配,重写非常简单微序列控制器优化后的水平微代码。

3. 一个CPU由下面的RTL代码指定。

把微操作分配到几个域中使总的位数最少,每个微操作OP**2返回到FETCH1。

FETCH1: AR←PCFETCH2: DR←M,PC←PC+1FETCH3: IR,AR←DROP001: DR←MOP002: AC←AC⊕DROP011: AC←AC’,PC←PC+1OP012: AC←AC+1OP101: DR←M,AC←AC+1OP102: DR←DR+1OP111: DR←MOP112: PC←PC+DR[5..0]4. 用水平微代码验证非常简单CPU的功能。

5.用垂直微代码验证非常简单CPU的功能。

6.用直接生成控制信号的方法验证非常简单CPU的功能。

7.像第六章习题6那样,我们希望修改非常简单CPU,使之包含一条新指令CLEAR,它设置AC←0。

CLEAR指令的操作码是111X XXXX,而INC指令的操作码改为110X XXXX,其余指令的操作码都不变。

试给出新的状态图、RTL代码、寄存器部分所要作的修改、微序列控制器的改动以及它的水平微代码,并验证新指令的功能。

8.采用垂直微代码重作习题7的微序列控制器,列出微代码域重新分配的情况。

9.采用直接产生控制信号重作习题7的微序列控制器。

10.像第六章习题10那样,我们希望修改非常简单CPU,使之包含一个新的8位的寄存器R和两条新指令。

指令MV AC完成R←AC的传送,其指令代码是1110 XXXX;指令MOVR完成操作AC←R,指令代码是1111 XXXX;而INC指令的新代码是110X XXXX;其它的指令代码保持不变。

试给出新的状态图、RTL代码、寄存器部分所要作的修改、微序列控制器的改动以及它的水平微代码,并验证新指令的功能。

计组-微程序控制器设计报告

计组-微程序控制器设计报告

实验10 微程序控制器设计实验报告姓名:X XX 学号:X XX 专业:计算机科学与技术课程名称:计算机组成同组学生姓名:无实验时间:实验地点:指导老师:XXX一、实验目的和要求1.掌握微程序控制原理2.掌握微程序控制器的设计方法二、实验内容和原理实验内容:1.设计一个微程序控制单元并进行仿真实验原理:1.微程序的原理:●在多时钟CPU设计的实验中,所有的控制信号均根据操作码以及所处的时钟周期,由组合逻辑的方式产生各个状态下的控制信号。

●微程序是将CPU每条指令和所有时钟的控制信号,预先以二进制形式写在控制存储器中。

●多时钟周期的每个状态都对应一组控制信号。

●每条指令都有若干个状态对应若干组控制信号。

●微指令按一定顺序存放在控制存储器中。

2.工作原理图3.微程序控制逻辑图4.微指令及其控制码5.控制存储器内容三、主要仪器设备1.Spartan-III开发板1套2.装有ISE的PC机1台四、操作方法与实验步骤实验步骤:1.创建新的工程和新的源文件2.编写verilog代码(包括以下模块top,MicroCtrl,pbdebounce,time_1ms)3.对程序进行波形仿真4.编写UCF引脚文件,通过编译。

5.. 生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能实验代码:Top.vmodule top(input system_clk,input clk_i,input rst_i,output [3:0] anode4,output [7:0] segment4,output reg [7:0] led);wire clk;wire rst;reg [2:0] pc;reg [5:0] opcode;wire [17:0] rom_out;pbdebounce p0(system_clk, clk_i, clk);pbdebounce p1(system_clk, rst_i, rst);initial beginpc=0;endalways @ (posedge clk or posedge rst) beginif (rst==1)pc=0;else if (rom_out[1:0]==0)pc=pc+1;endalways @ * begincase (pc)0: opcode = 6'b000000; //R-type1: opcode = 6'b100011; //LW2: opcode = 6'b101011; //SW3: opcode = 6'b000100; //BEQ4: opcode = 6'b000010; //Jdefault: opcode = 6'b000000;endcaseendMicroCtrl MicroCtrl(clk, rst, opcode, rom_out);display display(system_clk, rom_out[17:2], anode4, segment4); always @ * beginled[1:0] = rom_out[1:0];led[2]=0;case (pc)0: led[7:3] = 5'b10000; //R-type1: led[7:3] = 5'b01000; //LW2: led[7:3] = 5'b00100; //SW3: led[7:3] = 5'b00010; //BEQ4: led[7:3] = 5'b00001; //Jdefault: led[7:3] = 5'b11111;endcaseendendmodulempc=0;endalways @ * begincase (mpc)0: rom_out={16'h0851,2'b11};1: rom_out={16'h1800,2'b01};2: rom_out={16'h3000,2'b10};3: rom_out={16'h00C0,2'b11};4: rom_out={16'h0300,2'b00};5: rom_out={16'h00A0,2'b00};6: rom_out={16'hA000,2'b11};7: rom_out={16'h0500,2'b00};8: rom_out={16'h6006,2'b00};9: rom_out={16'h0009,2'b00};default: rom_out=0;endcaseendalways @ (posedge clk or posedge rst) begin if (rst==1)mpc=0;else begincase (rom_out[1:0])0: mpc=0;3: mpc=mpc+1;1: case (opcode)6'b000000: mpc=6; //R-type6'b100011: mpc=2; //LW6'b101011: mpc=2; //SW6'b000100: mpc=8; //BEQ6'b000010: mpc=9; //Jdefault: mpc=0;endcase2: case (opcode)6'b100011: mpc=3; //LW6'b101011: mpc=5; //SWdefault: mpc=0;endcaseendcaseendendendmoduleDisplay.vmodule display(input wire clk,input wire [15:0] digit,//显示的数据output reg [ 3:0] node, //4个数码管的位选output reg [ 7:0] segment);//七段+小数点reg [3:0] code = 4'b0;reg [15:0] count = 15'b0;always @(posedge clk) begincase (count[15:14])//与(count[1:0])的不同?起到分频的作用2'b00 : beginnode <= 4'b1110;code <= digit[3:0];end2'b01 : beginnode <= 4'b1101;code <= digit[7:4];end2'b10 : beginnode <= 4'b1011;code <= digit[11:8];end2'b11 : beginnode <= 4'b0111;code <= digit[15:12];endendcasecase (code)4'b0000: segment <= 8'b11000000;4'b0001: segment <= 8'b11111001;4'b0010: segment <= 8'b10100100;4'b0011: segment <= 8'b10110000;4'b0100: segment <= 8'b10011001;4'b0101: segment <= 8'b10010010;4'b0110: segment <= 8'b10000010;4'b0111: segment <= 8'b11111000;4'b1000: segment <= 8'b10000000;4'b1001: segment <= 8'b10010000;4'b1010: segment <= 8'b10001000;4'b1011: segment <= 8'b10000011;4'b1100: segment <= 8'b11000110;Timer_1ms.vmodule timer_1ms(input wire clk,output reg clk_1ms);reg [15:0] cnt;initial begincnt [15:0] <=0;clk_1ms <= 0;endalways@(posedge clk)if(cnt>=25000) begincnt<=0;clk_1ms <= ~clk_1ms;endelse begincnt<=cnt+1;endendmodule五、实验结果与分析1. 仿真结果如下(仿真时间较长,分2张图展示):Ox00c00 0x0300 2’b003.程序运行成功后,将代码下载到实验板spartan3上验证按动按钮,发现数码管上显示的数值即仿真输出码的[17:2]位,且出现顺序一致,说明程序成功。

微控制单元简介介绍

微控制单元简介介绍

行项目管理和代码调试。
02
IAR Embedded Workbench
IAR Embedded Workbench是一款专业的微控制单元开发环境,支持
多种微控制单元型号和多种编程语言。它提供了高效的编译器和调试器
,以及强大的项目管理工具。
03
Eclipse
Eclipse是一款开源的集成开发环境,通过安装相应的插件可以用于微
微控制单元简介介绍
汇报人: 2024-01-09
目录
• 微控制单元的定义与特性 • 微控制单元的历史与发展 • 微控制单元的架构与工作原理 • 微控制单元的编程与开发 • 微控制单元的优势与挑战 • 微控制单元的应用实例
01
微控制单元的定义与特性
定义
• 微控制单元(MCU)是一种集成电路芯片,它集成了处理器、存储器、输入输出接口等核心组件,用于实现特定的控制功 能。MCU是微控制器的一种,其特点是具有高度的集成度和低功耗性能。
Assembly语言
Assembly语言是一种低级编程语言,直接与硬件交互。 在微控制单元编程中,Assembly语言常用于底层驱动和 性能敏感的代码部分。
开发环境
01
Keil uVision
Keil uVision是一款流行的微控制单元开发环境,支持多种微控制单元
型号和多种编程语言。它提供了丰富的工具和调试功能,方便开发者进
医疗设备
1 2 3
监护仪
微控制单元可以用于监护仪的信号处理和控制模 块,实现实时监测和报警功能,保障患者的生命 安全。
医学影像设备
微控制单元可以用于医学影像设备的图像采集、 处理和传输等功能,提高医学影像的质量和诊断 准确率。
植入式医疗器械

计算机组成原理课程设计(中央处理器--微程序控制器设计)

计算机组成原理课程设计(中央处理器--微程序控制器设计)

计算机组成原理课程设计:中央处理器-微程序控制器设计摘要本文档介绍了一个针对计算机组成原理课程的设计项目,即中央处理器的微程序控制器设计。

在设计中央处理器的微程序控制器时,我们将考虑指令的执行、数据的处理以及控制信号等关键方面。

通过这个设计项目,学生将深入了解计算机系统的核心组件并掌握微程序控制器的设计方法。

引言计算机组成原理课程旨在帮助学生理解计算机硬件系统的基本原理和组成部分。

其中,中央处理器是计算机系统中最核心的部分之一。

微程序控制器是中央处理器的关键组件,它通过微指令序列控制着处理器的各个部件。

本设计项目旨在实践计算机组成原理的理论知识和设计方法,使学生能够了解中央处理器的内部结构和工作原理,并掌握微程序控制器的设计技术。

设计目标本次设计的目标是: 1. 使用合适的指令集设计一个完整的微程序控制器。

2. 实现基本的指令执行功能,包括算术逻辑单元(ALU)操作、内存读写、条件分支和跳转等。

3. 考虑控制信号与数据通路之间的兼容性和时序关系。

4. 考虑指令的效率和性能,实现合理的指令编码和微指令生成策略。

设计内容1. 指令集设计在设计微程序控制器时,首先需要确定适合该设计的指令集。

指令集应该包括基本的算术、逻辑、移位和控制指令,以及内存读写指令。

根据实际需求,可以添加其他合适的指令。

2. 微指令设计为了实现指令集中的每个指令,需要设计相应的微指令。

微指令是一系列控制信号的序列,用于控制中央处理器中各个部件的操作。

每个微指令应该包含控制信号、操作码、寄存器的选择和数据通路的选择等信息。

3. 数据通路设计数据通路连接了CPU中各个部件,包括寄存器、ALU、控制器等。

在设计数据通路时,需要考虑指令的执行顺序、数据的传递和处理,以及控制信号的生成等。

数据通路应该支持指令的执行和数据操作。

4. 控制信号设计控制信号是微程序控制器中最关键的部分,它确定了中央处理器中各个部件的操作方式和时序。

在设计控制信号时,需要考虑不同指令的差异性和并行性,确保指令的正确执行。

微程序控制器的设计与实现

微程序控制器的设计与实现

微程序控制器的设计与实现
微程序控制器是一种用于控制微程序的硬件设备,它通常由控制存储器、控制
逻辑和时序电路组成。

微程序控制器的设计与实现可以分为以下几个步骤:
1. 确定微指令的格式:微指令是微程序的最小执行单位,包含了一系列控制信号,用于控制计算机的各个部件。

在设计微程序控制器之前,需要确定微指令的格式,包括控制信号的位数和编码方式。

2. 设计控制存储器:控制存储器用于存储微程序,每一个微指令对应一个存储
单元。

在设计控制存储器时,需要确定存储单元的数量和位数,以及存储单元的编址方式。

3. 设计控制逻辑:控制逻辑用于根据当前微指令和计算机的状态生成控制信号。

在设计控制逻辑时,需要根据微指令的格式和计算机的功能要求,确定各个控制信号的生成方式和逻辑关系。

4. 设计时序电路:时序电路用于控制微程序的执行顺序和时序要求。

在设计时
序电路时,需要考虑微指令的执行时间和时序要求,确保微程序的执行顺序和时序满足计算机的功能要求。

5. 实现微程序控制器:根据上述设计结果,可以开始实现微程序控制器。

实现
过程包括选择适当的集成电路、设计电路图、布线和焊接等步骤。

6. 调试和测试:完成微程序控制器的实现后,需要进行调试和测试,确保其功
能和性能符合设计要求。

调试和测试过程包括功能验证、时序分析和性能评估等步骤。

总之,微程序控制器的设计与实现需要进行微指令格式的确定、控制存储器的
设计、控制逻辑的设计、时序电路的设计、微程序控制器的实现以及调试和测试等步骤。

这些步骤需要根据计算机的功能要求和设计约束进行综合考虑和实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.典型的微指令格式
◆ 选择域:指明下一条微指令地址的来源
◆ 地址域:指明一个绝对地址
◆ 微操作域:一个或多个
同济大学 软件学院
2.微操作的三种编码方法
◆ 水平微代码

列出CPU所要执行的每一个微操作 将微指令微操作域中的一位分配给每个微操作
例如:一个CPU需要执行50个微操作, 它的每一条微指令的微操作域将占用50位。 微指令太长,大部分微操作位不是有效的。
存储单元内容。所有微指令集中组成CPU的微代
码或微程序。
◆ 下址产生模块产生所有可能的下一地址或下址,
然后从中选择一个正确的下址送入寄存器中。
同济大学 软件学院
典型微序列控制器的组成
同济大学 软件学院
2.微指令的组成 微指令由几个域组成,其bit位可分为两组。
◆ 微操作(微序列控制器的微序列部分)
同济大学 软件学院
◆ 垂直微代码
所有微操作组合成组,组中的每个微操作 被分配一个唯一的编码值。 例如:16个微操作 —— 四位二进制来编码 微指令位数少,但需要译码器。
◆ 控制信号的直接生成
微代码将微操作组合在一起,不同的是,它 把控制信号值直接存储在微指令中。 代码的可读性差,调试困难。
同济大学 软件学院
微操作是有效的,然后域中的每个微操作被赋予
一个唯一的域值。 例如:8种不同的微操作 —— 3位二进制 (从000到111之间的任何一个值)
同济大学 软件学院
微操作域位从微代码存储器输出到一个译 码器,译码器的输出就是在水平微代码中直接
产生的微操作。
同济大学 软件学院
同济大学 软件学院
二、为非常简单CPU设计垂直微代码 任务:给各种微操作分配不同的域 1. 指导性原则 (1) 对于同一状态下发生的两个不同的微操作,
微序列控制器:把控制信号存储在一个查找表
ROM,即微代码存储器中。按照正确的次序访问 ROM中的内容,查找表ROM就可以以适当的顺序发 出控制信号,从而实现处理器指令集中的指令。
同济大学 软件学院
几个基本概念 1. 微操作控制信号: 如:PCLOAD、ACINC 2. 微操作:由微操作控制信号控制实现的最基本操作。 一个微操作是在一组微操作控制信号的控制下实现的。 如:AR←PC ARLOAD、PCBUS
或者输入到组合逻辑以生成CPU 的控制信号,或者直接产生控制信号。
◆ 下一个地址(微序列控制器的序列控制部分)
用来产生存储到寄存器中的下一起输入
到组合逻辑以产生下一条微指令的地址。
同济大学 软件学院
3. 微程序控制器的工作过程 ① 启动取指令微程序 (PC)→MAR,读出机器指令→IR,PC增量 ② 根据IR中的操作码,通过微地址形成电路产生该指令 的微程序的起始微地址,并送入μMAR中。 ③ μMAR中的微地址经译码、驱动,从被选的控存单元 中取出一条微指令。 ④ 微指令的操作控制字段经译码或直接产生一组微操作 控制信号并送往有关的功能部件,控制其完成所规定 的微操作。
同济大学 软件学院
4.产生所需的控制信号
A R ← P C ; AR←DR[5..0]
PC←PC+1; PC←DR[5..0] DR←M IR←DR[7..6]
AC←AC + DR ; AC←AC ∧ DR ; AC←AC+1
同济大学 软件学院
7.2.4 用垂直微代码生成微操作
一、从垂直微代码中生成微操作的一般情况 在垂直微代码中,所有的微操作被分组到不 同的域中,使得任何状态一个域中最多只有一种
同济大学 软件学院
除了FETCH3,状态图中的每一种状态都可以这么设臵。 FETCH3必须映射到正确的执行周期,所以要求 SEL=1,表示采用映射地址。
同济大学 软件学院
同济大学 软件学院
7.2.3 用水平微代码生成微操作
1.非常简单CPU的微操作及它们的助记符
1 -- 微操作发生
0 -- 不发生
◆ DRM和PCIN都在FETCH2状态下发生,那么
这两种微操作必须被分配到不同的域中。
则该CPU的微操作至少需要两个域,把它
同济大学 软件学院
标记为M1和M2。 包括NOP操作在内每个域的微操作如下: M1 NOP M2 NOP
DRM
PCIN
( FETCH2: DR←M,PC←PC+1)
◆ PCIN和PCDR都能修改PC值,所以我们现在把PCDR
◆ 剩余的每一状态都必须转到一个具体的次态,
可以通过绝对跳转来实现。
同济大学 软件学院
必须确定CPU的几件事情: 从微代码存储器输出的绝对地址宽度有几位?
◆ CPU的状态图中共有九种状态,每种状态代表
一条微指令,从中选择的话最少需要4位绝对
地址。既然映射硬件也生成同样宽度的地址,
那么输出的地址就是4位宽度。
同济大学 软件学院
2.非常简单微序列控制器初步的水平微代码
同济大学 软件学院
3.非常简单微序列控制器优化后的水平微代码
优化微代码:
◆ 在所有的状态中,ARDR和IRDR的值是相同的。
用一个输出AIDR来驱动这两个微操作。
◆ AIDR组合了两个微操作AR←DR[5..0]和
IR←DR[7..6]
同济大学 软件学院
3. 微指令:控制完成一组微操作的二进制编码字。
4. 微程序或微代码:一系列微指令的有序集合。 每一条机器指令对应着一段微程序,通过解释 执行这段微程序,完成指令规定的操作功能。
同济大学 软件学院
一段微程序
(在控制存储器ROM中)
FETCH1(0) 100000000 微指令
FETCH2(1)
机器指令ADD (在主存中) FETCH3(2) ADD1(8) ADD2(9)
同济大学 软件学院
4.下址的产生 四种常用方法:
◆ 当前地址加1:微代码存储器中的下一地址,
即当前地址加1。
微代码程序在微代码存储器中顺序存放。
(提高可读性、微程序易于调试)
同济大学 软件学院
◆ 绝对地址:由微代码存储器提供。 ◆ 映射逻辑
每个微序列控制器必须能够访问正确的执
行周期,这功能可用映射逻辑来实现。 (1)已读取指令的操作码输入到一个映射硬件, 此硬件将该操作码转换或映射成该指令执行 周期的第一条微指令所在的地址;
同济大学 软件学院
四、增加硬件把这些位值转换为所代表的微操作

M1:把这个域输入到一个3-8译码器中
例如:输出2 → 微操作ARPC

M2:只有1位,不需要用译码器,直接驱动PCIN。
同济大学 软件学院
同济大学 软件学院
实践视角:毫微指令
毫微存储器与毫微指令
同济大学 软件学院
用毫微存储器可以减少微序列控制器中存储器的
同济大学 软件学院
程序、指令、微程序、微指令、微操作控制信号、微 操作的关系
1 1、微命令2、 微命令n) 微指令(微命令 完成一组微操作 指令1微程序1微指令2 程序 微指令n 微程序2 指令2 微程序n 指令n
操作控制部分:微操作域
3.产生微操作控制信号
同济大学 软件学院
7.2.1 基本布局
1.非常简单微序列
控制器的基本结构
同济大学 软件学院
2. 只用到两种可能的下址方式
操作码映射 绝对跳转

为什么可以这样做?
考虑第六章所示的该CPU的状态图。
◆ 取指令周期的最后一个状态FETCH3可以转到
四个执行周期中的一个,这必须通过映射输 入来实现。
也加到M2中。
同济大学 软件学院
◆ 把剩下的微操作任意分配给这两个域,但要注意
把那些改变同一个寄存器值的微操作放到同一个域中。
◆ 产生如下的分配
M1 NOP DRM ACIN
M2 NOP PCIN PCDR
PLUS
AND
同济大学 软件学院
ARPC
AIDR
(2) 每个域有五种微操作,因此每个域需要3位。 (3) 对这种分配进行一些调整,减少总的位数。
微指令需要一个4位的域来指向毫微存储器中的一个
正确的模式。
◆ 毫微存储器
16*32=512位
◆ 微代码存储器
额外的128*4=512位的指针
共512位+512位 = 1,024位
同济大学 软件学院
7.2.5 从微代码直接产生控制信号
1. 直接输出控制信号
微序列控制器为每个控制信号保留一位,以 代替水平微代码设计中的微操作和垂直微代码 设计中的M1和M2。 对微代码存储器的每个字来说,如果信号
有效,则相应的控制位臵1,否则臵0。
同济大学 软件学院
例如: FETCH2:DR←M和PC←PC+1
同济大学 软件学院
⑤ 微指令的地址控制字段及有关状态条件送往微地址
形成电路,产生下条微指令的地址,再去读取并执
行下条微指令。如此循环,直到一条机器指令的微 程序全部执行完毕。 ⑥ 一条指令的微程序执行结束,再启动取指令微指令 或微程序,读取下条机器指令。根据该指令码形成 起始微地址,又转入执行它的一段微程序。
◆ 多路选择器输出到寄存器的输入、以及寄存器
输出到微代码存储器的输入,也都是4位宽度。
同济大学 软件学院
7.2.2 生成正确序列并设计映射逻辑
设计控制有限状态机状态转换的微代码。 1.给有限状态机的每种状态分配一个微代码地址 着重考虑:每一执行周期的第一个状态的地址分配
(它决定了实现映射功能的逻辑)
(2)把这一地址装载到寄存器,微序列控制器就
能转入到正确的执行过程。
同济大学 软件学院
在取指令周期的末端使用一次。
◆ 微子程序
相关文档
最新文档