1. 运算电路
ALU由两个运算数据输入端,一个运算数据输出端,一个运算类型控制端。
假定ALU 只支持8 位二进制数的加、减、与、或、非、左移1 位、右移1 位、赋值等操作,如图所示。两个8 位输入S1和S2,一个8 位输出DT,另一个输出为标志位FLG。
列出其功能表如下:
2. 取数电路
取数电路是从寄存器中取出作为运算电路输入的两个源操作数,采用两个选择器分别选择出这两个源操作数,S1从寄存器组中选择,信号OS1用于选择寄存器。S2不仅从寄存器组中选择,而且还可以选择立即数,信号OS2用于选择寄存器和立即数。
数据保存在四个8 位通用寄存器R0、R1、R2、R3 和程序计数器PC 中,使用3 位信号OS1
来选择寄存器的值,3 位信号OS2 来选择寄存器值或立即数IMM,所读取数据分别输出至S1
和S2 上。
功能表如下图所示:
3. 回写电路
将8 位数据D 保存至通用寄存器R0、R1、R2、R3之一。2 位信号LS 用来选择目标寄存器,信号LE 为锁存使能。所要保存的数据有两个来源,一个是运算结果DT,另一个是存储器总线上的数据DI。当保存存储器总线上的数据时,此时存储器读取控制信号nRD 必为低电平,利用该信号来进行数据源选择。选择后的数据也可以用来更新PC 值,数据D 重定义为PPC。
4. 取指电路
PC 输出作为指令存储器的地址输入,指令存储器进行片内译码来选择相应的指令存储单元并输出至指令数据总线ID 上。指令锁存信号ICLE 锁存当前总线上的指令代码并保存在IR 中。该操作是按照一定时序进行的,为时序逻辑电路,采用系统时钟CLK 来控制其操作。
5. 执行时序控制电路
每条指令的执行顺序是“取指-译指-取数-运算-回写”进行的,这需要控制单元协调多个电路按照规程进行工作,每个电路所需要的控制信号需要在不同时间内生效。
6. 指令译码电路
指令读取之后首先进行译码获得后续执行所需要的信号。译码器由条件判断电路和控制信号产生两部分组成。
(1)条件判断电路主要用于条件跳转型指令,其他类型的指令视为无条件指令。
(2)控制信号产生电路
6. 处理器电路
整体结构如下图所示: