如今,微控制器的功能日渐强大,已经从早期的单片机转向基于SoC结构的MCU体系。在这个转变过程中,内核成为了决定一颗MCU的性能和应用场景的关键。比如我们常说MCU的位数就是根据内核来确定的,不同的内核代表了不同的MCU性能。例如,早期的8051就是8位单片机的典型内核,现在主流的Arm Cortex M系列则代表了32位MCU最常见的内核;Cortex M0+则是低功耗低成本MCU的标签;Cortex M7内核的MCU作为高性能微控制器的代表甚至可以进行部分视频处理应用,而PowerPC架构的内核则常见于汽车动力总成部分的MCU应用场景。
如何配置强大的CPU内核?
内核是一颗MCU中的主处理单元(也可以说是MCU的CPU),内核基本决定了一颗MCU半数以上的技术指标,因此对CPU内核进行配置就成为应用MCU的最关键步骤。今天我们就以东芝的TLCS-870/C1内核作为示例,带大家共同学习一下CPU整体配置的基本知识。
首先我们来认识一下微控制器的各个基本功能,如下图所示,CPU具有用于存放微控制器中各种数据和程序的存储电路以及用于执行计算的运算电路。其中各个部分功能如下。
PSW(程序状态字):用于保存操作结果和指令执行结果状态的寄存器,由各种标志组成。
通用寄存器:用于储存数据的存储电路,根据存储电路的位置,通用寄存器分别称为W、A、B、C、D、E、H、L等。储存计算结果的地方称为累加器。在TLCS-870/C1中,W、A、B、C、D、E、H、L、IX和IY这十个寄存器具有累加器功能。
程序计数器(PC):用于储存存储器地址以读取指令的存储电路。
ALU(算术逻辑单元):用于执行计算的运算电路。
指令寄存器:用于暂时存储读取指令的存储电路。
指令解码器:对存储在指令寄存器中的指令进行解密,并将其发送到控制单元。
中断控制电路:用来控制中断功能。
在这些功能中,程序计数器(PC)是管理下一步要执行指令存储地址的寄存器。每次执行一条指令时,程序计数器指定的地址将进行+n处理(1字指令为+1,2字指令为+2)。当在中断指令等情况下,PC将存储跳转目标地址。CPU从PC读取下一条要执行指令所在的地址,并依次执行。例如,如果PC中存储了0x8020(地址),则意味着CPU正在执行地址为0x8019的指令。如果从PC读取了地址0x8020,则CPU下一步要执行指令的地址0x8021将储存在PC中。这个过程可以参考图2所示的流程示意。
而通用寄存器可用于各种用途,例如累加器和数据处理。TLCS-870/C1有八个8位寄存器:W、A、B、C、D、E、H和L。这八个寄存器也可以作为16位寄存器成对使用:WA、BC、DE和HL。这些组合只适用于相邻的寄存器,例如,B和E、H和E等不能组合。此外,TLCS-870/C1还有两个16位通用寄存器IX和IY。这些寄存器主要作为访问存储器时的索引寄存器。
在CPU执行指令后,会有一个标志指示存储器的内容以及计算结果的状态。PSW(程序状态字)的作用就是收集这些标志。下图是A寄存器(00111110)和B寄存器(11100000)相加的例子。计算结果(100011110)本应储存在A寄存器中。但是,由于A寄存器只能储存8位,所以将进位标设置为“1”,并将进位标志保留为发生进位的信息。因此,在A寄存器中,存储不包括最高有效位1的(00011110)作为计算结果。例如,如果计算结果是(100000000),则在进位标志中设置1,(00000000)储存在A寄存器中,所以在零标志中设置1。
今天我们跟大家一起了解了微控制器的CPU部分功能单元和基本指令执行的知识,下一节我们将带大家一起认识另一个CPU配置的关键环节“中断处理”。请大家持续关注哦~
来源:东芝半导体
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。