本文首先讲解微处理器的重要组成部分,之后会穿插数电的知识进行相关功能电路的设计,以达到从理论到实践的效果。
一. 组成原理
1. 运算器
ALU是微处理器中执行所有算术和逻辑操作的部件。主要的功能是加减乘除,与或非异或比较等。(1)其中SRC1和SRC2是源操作数(source operand),代表ALU在运算时的输入数据,两个数据源均可以来自寄存器或者是立即数。
(2)OPR是选择信号,通过选择器来决定哪个运算器工作并输出最终的计算结果。
(3)DST是目标寄存器(destination register),表示运算结果存储的位置。
2. 寄存器组
如图2-8,二进制电路采用寄存器来保存数据的电平。N位二进制数可以采用N位寄存器进行保存。寄存器包括锁存使能线(LE),N位输入数据线(D)和N位输出数据线(Q)。仅当LE信号有效时,D才被锁存为Q作为输出。
如图2-9,可以把多个寄存器的D线并接在一起,由外部信号LS指定哪个寄存器进行锁存,之后通过译码器产生相应的寄存器的锁存信号,从而使该寄存器保存输入线D上的数据。外部信号OSB和OSA用于控制两个选择器的输出QA和QB
3. 处理电路
如图2-13,处理电路主要由ALU和寄存器组,内部控制通道和信号线组成。各个分部分已经在上述介绍,主要的衔接是寄存器组一组输入线连接内部通道控制选择器(由LS信号控制),两组输出线分别连接ALU的源操作数线。
除此之外,由于在运算过程中会产生借位,溢出,正负,零值等信息,设置了状态寄存器(PSR),通过CF,OV,SF,ZF等进行标识和保存。
4. 控制电路
通过改变处理电路中的不同取值来实现不同的功能,这些信号取值按序排列构成的二进制数称为一条操作指令。表示指令的二进制数本身数值是没有意义的,数的不同位代表不同信息。处理电路仅能识别二进制数表示的指令,也称二进制指令为机器指令。
5. 数据存储
在运算中需要读取或者存储大量的数据,这些数据保存在存储器中。在处理电路中,产生存储单元的地址是通过ALU计算出来的。存储单元地址是由一个寄存器与另一个寄存器或者常数相加得到。
在处理电路中产生读写存储器的信号时序的电路称为总线接口单元。
6. 处理器结构
整个处理器架构分为两个部件:
一个是与处理数据和控制流程相关的中央处理器(CPU),CPU由运算单元,寄存器组,控制单元以及总线接口单元构成。
一个是用于保存指令和数据的存储器,存储器包括指令存储器和数据存储器。
实现一个具体的功能需要多条指令按照一定顺序先后执行。将这些指令按照顺序排列起来构成了程序代码。程序代码需要预先放在指令存储空间中,处理电路按顺序逐条读取并进行执行。每条指令代码由若干字节构成,所以每条指令的首字节所在的存储地址视为该指令的地址。处理电路需要专用部件来执行读取指令的存储器读操作。
寄存器组有一个专用的程序计数器(PC),其值为当前需要读取的指令的地址。正常情况下,每次读取指令结束后,PC自动递增至下一条指令的地址。
将CPU的所有单元集中到一个芯片中就构成了微处理器(MPU)。当然MPU只是一个处理器,需要搭配内存等非常多的其他外设才可以构成一个系统。MCU内部有处理器、内存、Flash及其他模块,仅仅需要搭配少量外设就可以构成一个系统。
二. 系统结构
MPU在功能上由两部分组成:面向指令的控制单元和面向处理的数据通路。如下图所示
控制单元由控制器,程序计数器,指令地址递增器以及辅助电路构成。PC保存当前读取指令的地址。
控制器主要完成以下操作:
设置或者更新后续指令读取地址;
将指令地址锁存在PC中,使能指令存储器输出该地址保存的指令代码;
控制器对指令代码进行译码生成控制信号;
输出数据路径所需的控制信号,寄存器组选择出相应寄存器值;
ALU对这些数据进行运算;
锁存运算结果到寄存器或者读写数据寄存器。。
控制器的运行可以采用如下所示的状态机进行表示:指令读取(取指),指令译码(译指),操作数选取(取数),数据运算(执行),数据保存(回写)。控制器周而复始地按照这个顺序执行。
为了实现控制器的状态转移,系统采用统一时钟CLK 来驱动整个电路中的时序逻辑部分。