1)机器周期和指令周期
计算机的一条指令由若干个字节组成。执行一条指令所需要的时间是以机器周期为单位的。一个机器周期是指CPU访问存储器一次所需要的时间。例如取指令、读存储器、写存储器等。有的微处理器系统对机器周期按其功能来命名,在MCS-51系统中没有采取这种方法。
MCS-51的一个机器周期包括12个振荡周期,分为6个S状态:S1~S6。而每个状态又分为两拍,称为P1和P2。因此,一个机器周期中的12个振荡周期表示为S1P1,S1P2,S2P1,…,S6P2。若采用6 MHz晶体振荡器,则每个机器周期恰为2 μs。
每条指令都由一个或几个机器周期组成。在MCS-51系统中,有单周期指令、双周期指令和四周期指令。四周期指令只有乘、除两条指令,其余指令都是单周期或双周期指令。
指令的运算速度和其机器周期数直接相关,机器周期数较少则执行速度快。在编程时要注意选用具有同样功能而机器周期数少的指令。
2)CPU取指、执行周期时序
每一条指令的执行都包括取指和执行两个阶段。在取指阶段,CPU从内部或者外部ROM中取出指令操作码及操作数,然后再执行这条指令的逻辑功能。
在8051指令系统中,根据各种操作的繁简程度,其指令可由单字节、双字节和三字节组成,从机器执行指令的速度看,单字节和双字节指令都可能是单周期或双周期,而三字节指令都是双周期,只有乘、除指令占4个周期。此时,执行一条指令的时间(指令周期)分别为2 μs、4 μs和8 μs(晶振频率6 MHz)。
图2.13列举了几种典型指令的取指和执行时序。用户可以通过观察XTAL2和ALE端信号,分析CPU取指时序。由图2.13可知,在每个机器周期内,地址锁存信号ALE两次有效,第一次出现在S1P2和S2P1期间,第二次出现在S4P2和S5P1期间。
图2.13 8051典型指令的取指、执行周期时序
单周期指令的执行始于S1P2,此时操作码被锁存于指令寄存器内。若是双字节指令,则同一机器周期的S4读第2个字节。如果是单字节指令,在S4仍作读操作,但无效,且程序计数器PC不加1。图2.13(a)和(b)分别给出了单字节单周期和双字节单周期指令的时序,都在S6P2结束时完成执行指令的操作。
图2.13(c)是单字节双周期指字的时序,两个机器周期内进行4次读操作。由于是单字节指令,故后面3次读操作无效。
图2.13(d)是访问片外数据存储器指令“MOVX”的时序,它是一条单字节双周期指令。在第一个机器周期S5开始送出片外数据存储器的地址后,进行读/写数据。在此期间无ALE信号的第二周期不产生取指操作。
注意:当对外部数据RAM进行读写时,ALE信号不是周期性的。在其他情况下,ALE信号作为一种周期信号,可以给其他外部设备作时钟用。
从时序上讲,算术和逻辑操作一般发生在节拍1期间,片内寄存器之间的数据传送操作发生在节拍2期间。
3)访问片外ROM的操作时序
MCS-51的程序存储器寻址空间为64 KB。其中8051/8751片内包含4 KB的ROM/EPROM,8031片内不带ROM。当片内ROM不够使用或用8031芯片时,需外扩程序存储器EPROM(见第4章的硬件图)。
如果指令是从片外EPROM中读取的,除了ALE用于低8位地址锁存信号之外,控制信号还有,接外扩EPROM的脚。此外,还要用到P0口和P2口:P0口分时用作低8位地址和数据总线,P2口用作高8位地址线,相应的时序图如图2.14(a)所示。
由于在8051单片机中ROM和RAM严格分开,因此对片外ROM的操作时序中分为两种情况:即不执行MOVX指令的时序,如图2.14(a)所示,以及执行MOVX指令的时序,如图2.14(b)所示。
(1)应用系统中无片外RAM
在不执行MOVX指令时,P0口作为地址/数据复用的双向总线,用于输入指令,或用于输出程序存储器的低8位地址PCL。P2口专门用于输出程序存储器的高8位地址PCH。P2口具有输出锁存功能,而P0口除输出地址外,还要输入指令,故要用ALE来锁存P0口地址PCL。在每个机器周期中允许地址锁存器两次有效,在ALE下降沿时,锁存出现在P0口上的低8位地址PCL。同时也是每个机器周期中两次有效,用于选通外部程序存储器,使指令读入片内。(www.xing528.com)
系统无片外RAM时,ALE有效信号以1/6振荡器频率的恒定速率出现在引脚上,它可以被用来作为外部时钟或定时脉冲。
(2)应用系统中接有片外RAM
在执行访问片外RAM的MOVX指令时,程序存储器的操作时序有所变化,其主要原因在于执行MOVX指令时,16位地址应转而指向数据存储器。操作时序如图2.14(b)所示。在指令输入以前,P2口、P0口输出的地址PCH、PCL指向程序存储器;在指令输出并判定是MOVX指令后,在该机器周期S5状态中ALE锁存的P0口的地址不是程序存储器的低8位,而是数据存储器的地址。若执行的是MOVX A,@DPTR或MOVX@DPTR,A指令,则此地址就是DPL(数据指针的低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。若执行的是MOVX A,@Ri或MOMX@Ri,A指令,则Ri的内容为低8位地址,而P2口提供了下条指令的高8位地址。在同一机器周期中将不再出现有效取指信号,下一个机器周期中ALE的有效锁存信号也不复出现。而当RD/有效时,P0口将读/写数据存储器中的数据。
由图2.14(b)可看出:①将ALE用作定时脉冲输出时,执行一次MOVX指令会丢失一个脉冲;②只有执行MOVX指令时的第2个机器周期期间,地址总线由数据存储器使用。
图2.14 8051访问片外ROM操作时序图
4)访问片外RAM的操作时序
这里包括从RAM中读和写两种操作时序,但基本过程是相同的。这时所用的控制信号有ALE和(读)或(写)。P0口和P2口仍然要用,在取指阶段用来传送ROM地址和指令,而在执行阶段用来传送片外RAM地址和读/写的数据。
(1)读片外RAM操作时序
8051单片机若外扩一片RAM,应将它的引脚与RAM芯片连接,引脚与芯片引脚连接。ALE信号的作用与8031外扩EPROM作用相同,即锁存低8位地址以读片外RAM数据。
读片外RAM周期时序如图2.15(a)所示。
在第一个机器周期的S1状态,ALE信号由低变高①,开始了读RAM周期。在S2状态,CPU把低8位地址送到P0口总线上,把高8位地址送上P2口(在执行MOVX A,@DPTR指令阶段时才送高8位;若是MOVX A,@Ri则不送至高8位)。
ALE的下降沿②用来把低8位地址信息锁存在外部锁存器74LS373内③。而高8位地址信息一直锁存在P2口锁存器中。
图2.15 8051访问片外RAM操作时序
在S3状态,P0口总线变成高阻悬浮状态④。在S4状态,RD信号变为有效⑤(是由执行MOVX A,@DPTR后产生RD信号有效),RD信号使得被寻址的片外RAM略过片刻后把数据送上P0口总线⑥,当RD回到高电平后⑦,P0总线变为悬浮状态。至此读片外RAM周期结束。
(2)写片外RAM操作时序
向片外RAM写(存)数据,是8051执行MOVX @DPTR,A指令后产生的动作。这条指令执行后,在8051的引脚上产生信号有效电平,此信号使RAM 端被选通。
写片外RAM的时序如图2.15(b)所示。开始的过程与读过程类同。但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0总线上送完低8位地址后,在S3状态,就将数据送到P0总线③,此间,P0总线上不出现高阻悬浮状态。
在S4状态,写控制信号有效,选通片外RAM,稍过片刻,P0上的数据就写到RAM内了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。