购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 CPU的时序与时钟电路

计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的,本节将介绍有关电路及CPU的时序。

2.4.1 振荡器和时钟电路

时钟电路用于产生单片机工作所需的时钟信号。单片机在时钟信号控制下,各部件之间协调一致地工作,时钟信号控制着计算机的工作节奏。

如图 2-19 所示为MCS-51单片机的时钟电路。如图 2-19(a)所示,引脚XTAL1和XTAL2之间跨接晶体振荡器和微调电容,可以和芯片内部的振荡器构成一个稳定的自激振荡器,这就是单片机的时钟电路,这种方式称之为内部时钟源方式。电容器C 1 和C 2 的主要作用是帮助振荡器起振,且电容器大小对振荡频率有微调作用,典型值为C 1 = C 2 =30pF。振荡频率主要由石英晶振的频率确定,目前,51 系列单片机的晶振频率范围是fosc为1.2MHz~60MHz,其典型值为 6MHz、12MHz、11.0592MHz、20MHz、24MHz、33 MHz、40MHz等。

8051 的工作时钟也可以由外部时钟信号提供,如图 2-19(b)所示,外部的时钟信号由XTAL2 引脚引入。由于XTAL2 端逻辑电平不是TTL的,故需外接一上拉电阻,外接的时钟频率应低于 12MHz。

另外,80C51 的外部时钟接法与 8051 不同,如图 2-19(c)所示,其外部时钟信号由XTAL1脚引入,而XTAL2 脚悬空。

图 2-19 MCS-51系列单片机的时钟电路

2.4.2 CPU的时序及有关概念

1.时序的概念

所谓时序是指各种信号的时间序列,它表明了指令执行中各种信号之间的相互关系。单片机本身就是一个复杂的时序电路,CPU执行指令的一系列动作都是在时序电路控制下一拍一拍进行的。为达到同步协调工作的目的,各操作信号在时间上有严格的先后次序,这些次序就是CPU的时序。

CPU的时序信号有两大类:一类用于单片机内部,控制片内各功能部件;另一类信号通过控制总线送到片外,这类控制信号的时序在系统扩展中比较重要。

2. CPU的典型时序

单片机指令的执行过程分为取指令、译码、执行三个过程。取指令的过程实质上是访问程序存储器的过程,其时间长短取决于指令的字节数,译码与执行的时间长短取决于指令的类型。对于MCS-51单片机的指令系统,其指令长度为1~3个字节。其中单字节指令的运行时间有单机器周期、双机器周期和四机器周期;双字节指令有双字节单机器周期指令和双字节双机器周期指令;三字节指令则都为双机器周期指令。下面就简单介绍几个典型的时序。

对于单机器周期指令,是在S1P2 时刻把指令读入指令寄存器,并开始执行指令,在S6P2 结束时完成指令操作。中间在S4P2 时刻读的下一条指令要丢弃,且程序计数器PC也不加1。对于双字节单机器周期指令,则在同一机器周期的S4P2时刻将第二个字节读入指令寄存器,并开始执行指令。无论是单字节还是双字节指令,均在S6P2时刻结果该指令的操作。如图 2-20(a)、图 2-20(b)所示。

对于单字节双周期指令,在2个机器周期内要发生4次读操作码的操作,由于是单字节指令,后 3 次读操作都无效,如图 2-20(c)所示。但访问外部数据存储器指令MOVX的时序有所不同。它也是单字节双周期指令,在第一机器周期有2次读操作,后一次无效,从S5 时刻开始送出外部数据存储器的地址,随后读或写数据,读写期间在ALE端不产生有效信号。在第二个机器周期,不发生读操作,如图2-20(d)所示。

通常算术和逻辑操作在节拍P1期间进行,内部寄存器的传送在节拍P2期间进行。

2.4.3 时序定时单位

8051单片机以晶体振荡器的振荡周期(或外部引入的时钟信号的周期)为最小的时序单位。所以片内的各种微操作都是以晶振周期为时序基准。如图2-21所示。

由图 2-21 中可以看出,8051 单片机的基本定时单位共有四个,它们从小到大分别是:

(1)晶振周期。晶振周期是由振荡电路产生振荡脉冲的周期,又称节拍(如P1、P2)。

(2)时钟周期。它是晶振周期的两倍,也即一个时钟周期包含两个相互错开的节拍,也称S状态时间。

图 2-20 CPU的时序图

图 2-21 8051 单片机时钟信号图

(3)机器周期。MCS-51单片机有固定的的机器周期,它是由晶振频率12分频后形成的,也就是说,一个机器周期是晶振周期的 12 倍宽。

单片机的基本操作周期为机器周期。一个机器周期有 6 个状态,每个状态由两个脉冲(晶振周期)组成。即 1 个机器周期= 6 个状态周期= 12 个晶振周期。

若单片机采用12MHz的晶体振荡器,则一个机器周期为1μs,若采用6MHz的晶体振荡器,则一个机器周期为2μs。

(4)指令周期。指令周期是执行一条指令所需要的时间。不同的指令,其执行时间各不相同,如果用占用机器周期多少来衡量,MCS-51单片机的指令可分为单周期指令、双周期指令及四周期指令。

2.4.4 CPU的取指令和执行指令时序

单片机执行程序的过程,实际上就是执行所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令→分析指令→执行指令。

(1)取指令即根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。

(2)分析指令阶段则是将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

(3)计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。

一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。

下面将举个实例来说明指令的执行过程:开机时,程序计算器PC变为 0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。

例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,0000H单元中已存放 74H,0001H单元中已存放E0H。当单片机开始运行时,首先是进入取指令阶段,其次序是:

·程序计数器的内容(这时是 0000H)送到地址寄存器。

·程序计数器的内容自动加 1(变为 0001H)。

·地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电路,使地址为 0000H的单元被选中。

·CPU使读控制线有效。

·在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。

取指阶段完成,进入译码分析和执行指令阶段。由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指令阶段很相似,只是此时PC已为 0001H。指令译码器结合时序部件,产生 74H操作码的微操作系列,使数字E0H从0001H单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC= 0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能。 MV/7BAhtLr+54OEdl8+DXFFyIXfKzo9j8Yh6PGG+0t84gPoz3fGiOKvVzcyI5QpC

点击中间区域
呼出菜单
上一章
目录
下一章
×