数电 补充讲义:控制器讲义
考纲:掌握有限状态机和控制器设计方法,掌握微码控制器设计方法。
8.1 概述
控制器的输出信号不仅仅选择和选通系统中数据处理器,而且也确定控制器本身的下一个状态(次态)。
控制器是为启动数字系统中数据处理器的微操作提供控制信号时间序列的。
8.2 状态机设计
8.2.1 基本结构和功能
状态机是指按有序方式遍历预先确定的状态序列的数字逻辑功能电路。主要完成两种操作:
- 状态机内部状态转换。其中次态由次态译码器根据现态和输入条件来确定;
- 根据状态转移产生输出信号。输出译码器根据现态和输入条件可确定输出信号。
根据是否使用输入信号决定了状态机的两种类型:Mealy状态机和Moore状态机。
输出取决于过去状态和当前状态的状态机称为有限状态机(FSM)。当给FSM一个新的输入,就根据该输入及当前状态会产生一个新的输出,同时FSM也会转移到下一个新状态上。
状态机的三种表示方法:状态图、状态表和流程图。
8.2.2 算法状态机图ASM
一、ASM图符号
ASM图有三种符号:状态框、判断框和条件框。
①. 状态框
上图(b)状态框名称是S1、S2、S3,状态代码分别是000、001和010,框内规定寄存器操作分别是把x的值赋给A,B清零、C置1,S3状态时输出Z。
②. 判断框
③. 条件框
条件框的输入通道必定来自判断框的分支,即条件框的操作或输出必须是同时满足状态与条件的情况下才进行。
上图(b)表示当系统处于状态S1时,如果条件X1=0,那么CLR被清“0”,否则CLR保持不变,同时不论X1为何值,系统的下一状态都是S2。
④. 开始块和结束块
用于标注算法流程图的首、尾。可省略。
二、ASM图时间划分
在ASM图中,一般把一个状态框和它下属的几个判断框和条件框,称为一个ASM块。ASM块描述了一个时钟周期内系统的工作情况。
ASM图是按时钟的节拍描述整个数字系统的操作。所有的操作和状态转换都发生在时钟的同一个跳变边沿。
三、状态机设计
四个步骤:
①. 确定任务;
②. 把设计任务转化为状态图。即列出采用的状态机全部可能的状态,并对每一个状态进行状态编码及定义相应的状态转换条件;
③. 根据状态图和输出函数,画出状态转移图;
④. 建立激励函数和输出函数,画出逻辑电路。
8.3 控制器的设计
不必追求状态最简、触发器数量最少。为使控制状态单纯而明确,可采用“一对一”法设置触发器,即一个状态设一个触发器,避免状态分配的麻烦。
8.3.1 计数器型控制器
将所要求的控制状态按一定原则进行编码分配,就可设计出一种状态计数型的控制器。
计数器含有n个触发器。
触发器的状态作为状态变量以二进制编码的形式赋于ASM流图中的每一个状态框,而条件输出框不予赋值。
按照输入条件及状态流程图所规定的状态转移的要求,设计次态控制逻辑,使计数器状态按流程图所规定的转移顺序进行计数转移。
计数器状态经译码后输出,作为有关的控制信号。脉冲控制信号一般用作寄存器的打入信号,电位信号一般用作数据通路选择信号。
例1:下图为某一控制器的算法流程图,请设计一个计数器型控制器。
解:本题采用$D$型触发器设计。编码$01$状态没有用到,为避免电源刚接通时状态被锁在$01$的无用状态,将$01$的次态设为$00$。
由真值表可写出次态激励函数$A(D)$和$B(D)$的表达式:
$B(D)=B’A’X+B’A’X’=BA$
$A(D)=B’A’X$
控制器的主要目的是产生一定的控制命令。从算法流程图可得控制信号:
$C_1=状态P=B’A’$
$C_2=状态P和X’的”与”=B’A’X’$
最后可以画出具体电路逻辑图:
例2:一个简单的$8$位二进制无符号数并行加法运算器,数据从存储器通过同一个总线输入,控制算法分四步:
- 溢出标志寄存器$C$清零,先取被加数至寄存器$A$
- 将$A$中被加数送入寄存器$B$
- 后取加数至寄存器$A$
- 将$A$与$B$中的数相加,结果存于$B$,且$1$位进位溢出标志存放于寄存器$C$
请设计该控制器,要求采用计数器型。假设状态周期$T=T_1+T_2$计数器状态变化发生在$T_1$时序,控制信号$LDA,LDB$发生在$T_2$时序。
解:由设计要求知,并行加法运算器的控制器的设计中,要求控制器有四个控制状态。设四个状态的名字为$a、b、c、d$,并把操作命令命名为:
- $\overline{CLR}-$寄存器$C$清零
- $LDA-$寄存器$A$接收数据
- $LDB-$寄存器$B$接收从加法器送来的数据
- $ADD-$加法使能信号
根据控制算法,可作出$ASM$流程图:
根据流程图可得到状态转换表:
选用$D$触发器,则求得触发器次态激励方程如下:
$B(D)=B’A+BA=A$
$A(D)=B’A’+B’A=B’$
从算法流程图还可得到个控制信号的逻辑函数关系为:
$LDA=(B’A’+BA)T_2$
$LDB=(BA’+B’A)T_2=(B\oplus A)T_2$
$\overline{CLR}=B’A’$
$ADD=BA’$
其中$LDA、LDB$为脉冲控制信号,$\overline{CLR}、ADD$为电位控制信号。写入控制信号$LDA、LDB$应在$T_2$上升沿有效。电位控制信号持续时间应于状态周期$T$相同。
由此可画出运算器与控制器电路图:
8.3.3 多路选择器型控制器
多路选择器的任务:按控制算法要求,为其对应的触发器生成次态激励函数。
所有多路选择器输出的组合就是控制器次态的编码。
设计步骤:
- 给ASM图中每一个二进制编码状态赋予一个十进制数码,和多路选择器的输入端编码相对应
- 按ASM流程图建立起状态转换表
- 求出MUX的各个数据输入端的函数值
- 按ASM流程图写出控制命令的逻辑表达式,公式:$NS=\sum PS\cdot C$
- 画出具体电路图,完成控制器的设计
例3:设计一个多路选择器型控制器,实现下图的控制算法。
解: 由流程图可得状态转移表:
根据状态转移表,利用$NS=\sum PS\cdot C$公式,写出数据选择器各端口的输入:
此时用$PS$作为$MUX$地址输入,用转换条件$C$作为$MUX$的数据输入。画出$MUX$型控制器电路:
例4:下图为某控制器的$ASM$流程图,用$MUX$来实现该控制器
解:由流程图可得状态转移表:
根据状态转移表,利用$NS=\sum PS\cdot C$公式,写出数据选择器各端口的输入:
此时用$PS$作为$MUX$地址输入,用转换条件$C$作为$MUX$的数据输入。画出$MUX$型控制器电路:
8.3.4 定序型控制器
一对一法。ASM流程图中有多少个状态,就使用多少个触发器,即触发器的数目代表了状态数。所以定序性控制器需要较多数量的触发器。
避免了状态分配的麻烦,也不需要状态译码
设计步骤:
- 根据课题要求划分子系统
- 设计控制算法,画出ASM流程图
- 按一对一法,对ASM流程图进行状态编码
- 由ASM流程图,列出状态转移表
- 写出各个触发器的次态激励函数表达式,公式:$NS=\sum PS\cdot C$
- 画出控制器的具体电路图
例5: 有一个数字比较系统,能连续对两个二进制数据进行比较,操作过程如下:先将两个数写入寄存器$R_A$和$R_B$,然后进行比较,最后将大数移入寄存器$R_A$中。其方框图和$ASM$流程图如下。其中$X$为输入信号,$LDR_A,LDR_B$为写入控制信号,$CAP$是三态门使能控制信号,$A>B$是比较器输出信号。
设计定序型控制器。假设状态变化发生在$T_1$时序,写入寄存器操作发生在$T_2$时序,状态周期$T=T_1+T_2$
解: 由流程图可得状态转移表:
由于状态与触发器是一对一的,所以各触发器的次态激励方程可按$NS=\sum PS\cdot C$公式写出:
控制信号逻辑表达式如下:
画出定序型控制器的逻辑电路图。注意写入控制信号应和$T_2$相与,用$T_1$上升沿改变触发器状态。
8.4 微码控制器
8.4.1 微码控制器的基本原理
微码控制器的基本思想: 仿照通常的解题程序,把所有控制信号汇集一起编码,称为微指令,存放在一个EPROM存储单元里。系统运行时,一条一条地读出这些微指令,解码产生执行部件所需的各种控制信号,控制各逻辑执行规定的操作。
一个数字系统基本上可以分成控制部件和执行部件两大部分:
- 控制部件:控制器
- 执行部件:ALU、寄存器组、存储器RAM等
微命令:控制部件通过控制线向执行部件发出各种控制命令。
微操作:执行部件接受微命令所执行的操作。
反馈信息:执行部件通过反馈线向控制部件反映当前操作的结果,以便控制部件根据执行部件的“状态”标志下达新的微命令。
基本周期/机器周期:几个时钟周期。表示从ROM中读出微码指令与执行这条微码指令的时间总和。
微指令:一组实现一定操作功能的微命令的组合。这些微命令分头并行地控制执行部件进行相应的微操作。
微指令除给出微命令信息外,还应给出测试判别信息,用来实现控制算法流程图的条件分支。 微指令中还包含一个下址字段,该字段将指明ROM中下一条微指令的地址。
长条框内的符号×表示一个二进制位(bit),其中:
- 微命令字段用于操作控制:$×=1\to$有微命令;$×=0\to $无微命令
- 测试判别字段和下址字段一起实现顺序控制:$×=0\to $下址字段信息即是下条微指令的地址;$×=1\to $跟据反馈线来的“状态”信息对下址字段信息进行修改,修改后的地址即为下条微指令的地址
微程序是由若干条微码指令组成的序列。微程序实质上就是讲控制算法流程图用EPROM等来实现。
8.4.2 微程序控制器的一般结构
微程序控制器的一般结构与微码指令的格式密切相关。
- 控制存储器:是一个ROM,用于存放微码程序,即全部的微指令。其容量取决于微指令的总数。假如有128条微指令,则微地址寄存器长度为7位;ROM的字长取决于微指令长度,如果微指令为32位,则ROM字长就是32位。ROM可使用EPROM、E2PROM、EAROM。
- 微命令寄存器:用来暂存由控制存储器读出的当前微码指令的控制信息,包括微命令字段和测试字段。可由八D寄存器组成。
- 微地址寄存器:存放下条微指令的地址。可由带R和S端的D触发器组成。
- 地址转移逻辑:当微程序出现分支时修改微地址寄存器的内容,并按修改好的微地址读出下条微指令。输入:测试标志$P_i$和执行部件反馈的“状态条件”信号。采用组合逻辑方法进行设计。
微地址寄存器和微命令寄存器两种总长度即为一条微指令的长度,故两个合在一起称为微指令寄存器。
微程序控制器中,若微指令长度为$2^n$位,微地址寄存器的长度为$n$位。
一个基本机器周期中的控制时序信号:用上一机器周期的T4时钟前沿修改微地址寄存器内容并从ROM中读一条微指令,经过一段时间后被读出,用当前周期的T1时间存入微指令寄存器;T2,T3时间用来控制处理,控制执行部件进行操作;T4时间修改微地址寄存器中的内容,再读下一条微指令。
8.4.3 微程序控制器的设计
微程序控制器设计的主要任务有两个:硬件设计和微程序编制。
- 硬件设计:选取存储器和寄存器,设计地址转移逻辑
- 微程序编制:需要确定微程序流程图,即控制算法流程图
不需要状态化简和分配
不允许两条微指令使用同一个微地址
重点看例题
例6:数字比较系统硬件方框图及ASM流程图如下图所示,请设计其微程序控制器。
解:本题中只有四条微指令,令其地址为0000,0100,0101,1000,是任意安排的用4位二进制表示的微地址。$16×8 E^2PROM$的存储容量为16个单元,故最多存放16条微指令。
其次,第4条微指令执行后微程序流程图出现分支转移,因此在此处出现了判别测试标志$P(1)$,根据转移条件$(A>B)$来决定下条微指令是执行第$2$条微指令$(0100)$,还是第$3$条微指令$(0101)$。这两条微指令地址的差别仅在于最低位上是$1$还是$0$。为此第$4$条微指令的下地址安排为$0100$(只是考虑方便性)。注意,微程序不出现分支时,下个微地址可任意安排(在$E^2PROM$存储容量的范围内)。
本系统的控制信号有$3$个$(LDR_A,LDR_B,CAP)$,故微命令字段为$3$位。加上判别测试字段$1$位,下地址字段$4$位,故微指令字长度为$8$位。故微指令格式如下图:
微地址转移逻辑表达式为:
当判别测试标志$P(1)=1$,比较器反馈信号$(A>B)=1$,且在微指令工作周期的$T3$时刻,将$\mu A_3$触发器置$”1”$,而其它$3$个触发器不做修改,即原来的内容保持不变。
控制存储器$E^2PROM$中存放由$4$条微指令组成的微程序,它们是按微指令格式转换的二进制代码。微程序代码如下图。
易错点
①. 在设计MUX型控制器时,写状态方程时,如果没有对应的$1$处没有状态条件,则应该方程应该等于$1$。
②. 在设计控制器应用时,若有个微命令是打开装置(假设是$A$),则凡是装置在运作的状态,都应满足$A=1$。
③. 画控制器流程图与ASM图的区别:1. 判断框里的条件变为$P(1),P(2)…$,在分支上写$X=0,X=1$;2. 条件框变为一个新的状态。