1. 隐藏数据通路的实现细节
我们首先把数据通路的实现细节隐藏起来,只看下面这8个控制信号,

分析指令位域,我们从指令编码中还可以得到opcode和func位域,如下图所示,这两个位域决定了执行什么指令,

因此,我们可以通过opcode和func这两个位域产生所需的8个控制信号。实现这个功能的部件叫控制逻辑,或控制器,如下图所示,

2. 控制信号的逻辑表达式
我们总结笔记12-14的内容,将各个指令的控制信号汇总成一张表,如下图所示,

2.1 如何写出控制信号的逻辑表达式
以RegDst为例,我们只看第一行,发现只有当add指令或sub指令时,RegDst才需要为1,其他指令都为0,因此可以写出,
RegDst = add + sub,即add指令或sub指令时,RegDst置1.
那什么时候才是add指令或sub指令呢,我们看opcode和func。
下图是R型指令和I型指令的位域分布,add和sub都是R型指令,

因此,
add = rtype & func5 & ~func4 & ~func3 & ~func2 & ~func1 & ~func0
其中rtype为1表示是一条R型指令。
同样的方法得到sub指令的表达式,
sub = rtype & func5 & ~func4 & ~func3 & ~func2 & func1 & ~func0
当opcode全部为0时,就是一条R型指令,因此,
rtype = ~op5 & ~op4 & ~op3 & ~op2 & ~op1 & ~op0
这样就可以得到RegDst这个信号完整的逻辑表达式,并可以使用与门和非门构建出来。
采用类似的方法,可以构建出来所有控制信号的逻辑表达式,如下图所示,

注意到,上图中,下面add,sub等指令都是opcode和func每个位本身或其非的与,上面控制信号是各个指令的或。因此我们可以构建如下的控制逻辑,

这样,我们就完成了控制信号的集成,构建了控制逻辑,也就是笔记10中,处理器设计的第5步。