控制器
控制器实现示意图.png
输入:操作码
opcode
和功能码func
-
实现:
步骤1 将操作码
opcode
和功能码func
接入到一个由与门的逻辑电路中,得到rtype
、add
、sub
、ori
、lw
、sw
、beq
等7组中间信号;
步骤2 将步骤1产生的7个中间信号接入到一个由或门组成的逻辑电路中,得到控制信号RegDst
、ALUSrc
、MemtoReg
、RegWr
、MemWr
、nPC_sel
、ExtOp
、ALUctr[0]
、ALUctr[1]
等9种控制信号 输出:控制信号
RegDst
、ALUSrc
、MemtoReg
、RegWr
、MemWr
、nPC_sel
、ExtOp
、ALUctr[0]
、ALUctr[1]
输入信号到中间信号
rtype = (~op5)·(~op4)·(~op3)·(~op2)·(~op1)·(~op0)
add = rtype·func5·(~func4)·(~func3)·(~func2)·(~func1)·(~func0)
sub = rtype·func5·(~func4)·(~func3)·(~func2)·(~func1)·(~func0)
ori = (~op5)·(~op4)·op3·op2·(~op1)·(~op0)
lw = op5·(~op4)·(~op3)·(~op2)·op1·op0
sw = op5·(~op4)·op3·(~op2)·(~op1)·(~op0)
beq = (~op5)·(~op4)·(~op3)·op2·(~op1)·(~op0)
中间信号到控制信号
RegDst = add + sub
ALUSrc = ori + lw + sw
MemtoReg = lw
RegWr = add + sub + ori + lw
MemWr = sw
nPC_sel = beq
ExtOp = lw + sw
ALUctr[0] = sub + beq
ALUctr[1] = or
汇总输入信号、中间信号、控制信号
控制器的输入输出关系总表.png
- 纵向
分解出每个指令需要的控制信号; - 横向
通过中间信号,可以建立起输入信号和单个控制信号之间的关系;