2017-11-14 17:09:08 dongganxiao_maidou 阅读数 1191
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    3997 人正在学习 去看看 朱有鹏

最近一直在想怎么测单片机的总线时钟,于是想出了一个方法,也不知是否正确,权且估算一下吧。

先说明一下时钟周期,机器周期,总线周期的区别吧:

时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。

机器周期:    在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。    8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个 状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 (例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒)

指令周期:    执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。       对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。    通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

 

总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或 I/O接口)进行一次访问所需时间称为一个总线周期。

总结:时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。时钟周期:CPU的晶振的工作频率的倒数。

 

一个nop所占的时间为一个机器指令的时间,8051中为1us。

 

单片机型号为飞思卡尔MC9s12xep100,在main函数里放置时钟初始化函数,同时初始化一个引脚,并设置为输出,然后主函数放置该引脚电平的翻转函数。大致如下;

逻辑分析仪版:

void main()
{
  MCUInit();
  DDRP_DDRP4=1;//PTP4设置为输出
  while(1)
  {
    PTP_PTP4=0;
    PTP_PTP4=1; 
    PTP_PTP4=0;
  }
}

在16MHZ总线情况下,该引脚从0-->1-->0的时间,也就是高电平的保持时间为480ns

当加入nop后,如下图所示,在同等情况下,高电平时间为540ns,也就是说一个nop占了60ns。

void main()
{
  MCUInit();
  DDRP_DDRP4=1;//PTP4设置为输出
  while(1)
  {
    PTP_PTP4=0;
    PTP_PTP4=1; 
    asm("nop");
    PTP_PTP4=0;
  }
}

这个60ns就和(1/总线频率)=62.5ns很相似了,如果放置10个nop会怎样呢?大约耗时1.105us,减掉480ns,还有625ns,那么一个nop占62.5ns。如果继续增加呢,100个nop会怎样呢?大约耗时6.725us,减掉480ns,还有6245ns,平均下来一个nop占62.45ns。事实上,在采集波形时也会有6.73us(正好一个nop62.5ns)的情况,但出现的频率没有6.725us的多,所以写了6.725us。

uint16_t ADS[16];
void main()
{
  MCUInit();
  DDRP_DDRP4=1;//PTP4设置为输出
  while(1)
  {
    PTP_PTP4=0;
    PTP_PTP4=1; 
    ADS[0]=1;
    ADS[1]=2;
    ADS[2]=3;
    ADS[3]=4;
    ADS[4]=5;
    ADS[5]=6;
    ADS[6]=7;
    ADS[7]=8;
    ADS[8]=9;
    ADS[9]=0;
    ADS[10]=10;
    ADS[11]=11;
    ADS[12]=12;
    ADS[13]=13;
    ADS[14]=14;
    ADS[15]=15;
    PTP_PTP4=0;
  }
}

总共有16句话,unsigned int类型,测得的时间为4.54us,减掉480ns,再进行平均,一条语句占用253.75ns,再除以62.5 ≈4.

如果将类型改为unsigned char类型,测得的时间为2.98us,减掉480ns,再进行平均,一条语句占用156.25ns,再除以62.5 ≈2.5.

下面是同等情况下的数据,仅供参考

类型 时间 与62.5ns倍数关系
总线频率 16MHZ(62.5ns)  
引脚从0-->1-->0时间 480ns  
char 156.25ns 2.5
unsigned char 156.25ns 2.5
int 253.75ns 4
unsigned int 253.75ns 4
float 519.375ns 8.31
double 519.375ns 8.31

除了变量类型有影响外,发现被赋值的值如果是0~255,与0~65535也是不同的,后者花费的时间比前者要长一些。

示波器版:

void main()
{
  MCUInit();
  DDRP_DDRP4=1;//PTP4设置为输出
  while(1)
  {
    PTP_PTP4=~PTP_PTP4; 
  }
}

然后用示波器测量该引脚翻转电平所用的时间,以下是部分数据:(示波器精度有限)

 

总线频率—>耗时    ≈ (1/总线频率)*10

16MHZ  —>620ns ≈ 625ns

20MHZ  —>500ns ≈ 500ns

32MHZ  —>312ns ≈ 312ns

40MHZ  —>252ns ≈ 250ns

48MHZ  —>208ns ≈ 208ns

60MHZ  —>168ns ≈ 166ns
 

通过上面的数据,发现耗时与 (1/总线频率)*10基本相等,至于为何乘10,不知何因。权且当做粗略估算吧。

 

 

----------------------------------------------------------------单片机9s08dz60------------------------------------------------------------------------------

顺便记录下对dz60的测试

 

总线频率—>翻转电平耗时    ≈ (1/总线频率)*10   asm("nop")耗时

16MHZ  —>680ns               ≈ 625ns                 370ns

8MHZ  —>1.36us               ≈ 1.25us                 740ns

4MHZ  —>2.76us               ≈ 2.50us                 1.5us

其中asm("nop")耗时的计算方法如下:

 

void main()
{
  MCUInit();
  DDRP_DDRP4=1;//PTP4设置为输出
  while(1)
  {
    PTP_PTP4=1; 
    asm("nop");
    PTP_PTP4=0; 
  }
}

下面附dz60时钟初始化函数(晶振8MHZ,总线8MHZ)

 

 

void MCUInit(void)
{ 
        SOPT1 = 0x20;						//取消看门狗,使能停止模式
	SOPT2 = 0X00;						//写入一次SOPT2
	/* 初始化时钟,使用PEE模式,晶振为8Mhz,总线频率为8mhz(datasheet P151) */  
	/*----------------------------FEI -> FBE----------------------------------*/
	MCGC2 = 0x36;						//总线分频为1.P133.
	while (!MCGSC_OSCINIT);				//EREFS位选择的晶体是否完成初始化.P134.
	MCGC1 = 0xB8;						//选择使用外部晶振.P131.
	while (MCGSC_IREFST);       		//等待外部参考成为参考时钟的当前源
	while(MCGSC_CLKST != 2);			//等待外部参考 时钟成为 MCGOUT
	
	/*----------------------------FBE -> BLPE---------------------------------*/ 
	MCGC2 = 0x3E;						//设置LP位为1(此时已经进入BLPE模式)
	MCGC1 = 0x98;//0x98->RDIV=8;0x90->RDIV=4;		//更改RDIV
	MCGC3 = 0x44;//0x44->VDIV=16;0x48->VDIV=32		//选择PLL,VDIV为4
	while(!MCGSC_PLLST);				//PLLS时钟的当前源是否PLL

	/*----------------------------BLPE -> PBE---------------------------------*/ 
	MCGC2 = 0x36;						//设置LP位为0(此时已经进入BLPE模式)	
	while (!MCGSC_LOCK);				//等待PLL获得锁定

	/*----------------------------PBE -> PEE----------------------------------*/
	MCGC1 = 0x18;						//选择PLL为系统时钟
	while(MCGSC_CLKST != 3);			//等待时钟稳定
}

MCGOUT=(8MHZ/8)*16/1=16MHZ,总线时钟为8MHZ

 

 



 

 

 

 

 

 

 

2012-11-29 14:04:59 black0591 阅读数 3509
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    3997 人正在学习 去看看 朱有鹏
时钟周期:

     时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位

       在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟 周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算 机,时钟频率越高,计算机的工作速度就越快。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。

    8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。


机器周期:

    在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。

    8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个 状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 具体计算为:时钟周期 X cycles。如果单片机是12周期的话,那么机器周期就是T×12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。

    例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;52系列单片机一个机器周期等于12个时钟周期。设晶振频率为12MHz时,52单片机是12T的单片机,即频率要12分频。12M经过分频变为1M,由T=1/f,即一个机器周期变为1us    


指令周期:

    执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。通常,包含一个机器周期的指令成为单周期指令,比如CLR,MOV等等。包含两个机器周期的指令称为双周期指令。另外还有4周期指令,比如乘法和除法指令。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。


总线周期:

    由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或 I/O接口)进行一次访问所需时间称为一个总线周期。


总结一下,时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。

 

指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。
机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。
时钟周期:CPU的晶振的工作频率的倒数。

例子1:

    22.1184MHZ的晶振,它的晶振周期、时钟周期和机器周期分别是多少?
    以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器周期包含12个时钟周期,一个机器周期就是 0.5425μs。一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,是双 周期指令.

例子2:

     1.振荡周期(时钟周期):为单片机提供时钟信号的振荡源的周期。

    2.机器周期:通常将完成一个基本操作所需的时间称为机器周期。

    3.指令周期:是指MCU执行一条指令所需要的时间。一个指令周期通常含有1~4个机器周期。
     若MCU单片机外接晶振为12MHz时具体值为:
     振荡周期(时钟周期)=1/12MHz=1/12μs=0.0833μs, 机器周期=12*1/12μs=1μs,指令周期=1~4μs
     说明:
     1.时钟周期即晶振的单位时间发出的脉冲数,12MHz=12×10的6次方,即每秒发出12000000个脉冲信号,那么发出一个脉冲的时间就是时钟周期,即1/12微秒。
     2.一个机器周期等于12个时钟周期,所以是1微秒。


2014-12-05 09:06:08 qq_17242957 阅读数 2105
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    3997 人正在学习 去看看 朱有鹏
  1. 时钟周期、指令周期、机器周期、总线周期都是什么东东?

    时钟周期: 也称为振荡周期, 定义为时钟脉冲的倒数 (时钟周期就是单片机外接晶振
    的倒数,例如 12M 的晶振,它的时钟周期就是 1/12us,是计算机中的最基本的、最小的
    时间单位。 在一个时钟周期内, CPU 仅完成一个最基本的动作。 时钟脉冲是计算机的基
    本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。
    指令周期: 执行一条指令所需要的时间, 一般由若干个机器周期组成。 指令不同, 所
    需的机器周期也不同。
    机器周期: 计算机中, 常把一条指令的执行过程划分为若干个阶段, 每一个阶段完成
    一项工作。 每一项工作称为一个基本操作, 完成一个基本操作所需要的时间称为机器周
    期。
    总线周期:微处理器是在时钟信号 CLK 控制下按节拍工作的。8086/8088 系统的时
    钟频率为 4.77MHz,每个时钟周期约为 200ns.由于存贮器和 I/O 端口是挂接在总线上的,
    CPU 对存贮器和 I/O 接口的访问,是通过总线实现的。通常把 CPU 通过总线对微处理
    器外部 (存贮器或  I/O 接口) 进行一次访问所需时间称为一个总线周期。
    一个总线周期
    一般包含 4 个时钟周期,这 4 个时钟周期分别称 4 个状态即 T1 状态、T2 状态、T3 状
    态和 T4 状态。


系统的工作频率在很大程度上决定了ARM微处理器的处理能力。ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20MHz-133MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100MHz- 233MHz,ARM10最高可以达到700MHz.不同芯片对时钟的处理不同,有的芯片只需要一个主时钟频率,有的芯片内部时钟控制器可以分别为ARM 核和USB、UART、DSP、音频等功能部件提供不同频率的时钟。
2007-06-25 09:35:00 icerain_3321 阅读数 5243
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    3997 人正在学习 去看看 朱有鹏
51单片机的时钟及复位

单片机的时钟信号用来提供单片机片内各种微操作的时间基准,复位操作则使单片机的片内电路初始化,使单片机从一种确定的初态开始运行。

时钟电路:
8031单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如下图所示。
图中,电容器Col,C02起稳定振荡频率、快速起振的作用,其电容值一般在5-30pF。晶振频率的典型值为12MH2,采用6MHz的情况也比较多。内部振荡方式所得的时钟情号比较稳定,实用电路中使用较多。
外部振荡方式是把外部已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持同步。外部振荡方式的外部电路如下图所示。

由上图可见,外部振荡信号由XTAL2引入,XTAL1接地。为了提高输入电路的驱劝能力,通常使外部信号经过一个带有上拉电阻的TTL反相门后接入XTAL2。

基本时序单位:

单片机以晶体振荡器的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。
振荡频率二分频后形成状态周期或称s周期,所以,1个状态周期包含有2个振荡周期。振荡频率foscl2分频后形成机器周期MC。所以,1个机器周期包含有6个状态周期或12个振荡周期。1个到4个机器周期确定一条指令的执行时间,这个时间就是指令周期。8031单片机指令系统中,各条指令的执行时间都在1个到4个机器周期之间。
4种时序单位中,振荡周期和机器周期是单片机内计算其它时间值(例如,波特率、定时器的定时时间等)的基本时序单位。下面是单片机外接晶振频率12MHZ时的各种时序单位的大小:
振荡周期=1/fosc=1/12MHZ=0.0833us

复位电路:

当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。常用的上电复位电路如下图A中左图所示。图中电容C1和电阻R1对电源十5V来说构成微分电路。上电后,保持RST一段高电平时间,由于单片机内的等效电阻的作用,不用图中电阻R1,也能达到上电复位的操作功能,如下图(A)中右图所示。

 

上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。常用的上电或开关复位电路如上图(B)所示。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或开关复位的操作。
根据实际操作的经验,下面给出这两种复位电路的电容、电阻参考值。
上图(A)中:Cl=10-30uF,R1=1kO
上图1.27(B)中:C:=1uF,Rl=lkO,R2=10kO

单片机复位后的状态:

单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0000H,这表明程序从0000H地址单元开始执行。单片机冷启动后,片内RAM为随机值,运行中的复位操作不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态为确定值,见下表。
值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的韧始化部分是十分必要的。
说明:表中符号*为随机状态;
A=00H,表明累加器已被清零;

特殊功能寄存器
初始状态
特殊功能寄存器
初始状态
A
00H
TMOD
00H
B
00H
TCON
00H
PSW
00H
TH0
00H
SP
07H
TL0
00H
DPL
00H
TH1
00H
DPH
00H
TL1
00H
P0~P3
FFH
SBUF
不定
IP
***00000B
SCON
00H
IE
0**00000B
PCON
0*******B

PSW=00H,表明选寄存器0组为工作寄存器组;
SP=07H,表明堆栈指针指向片内RAM 07H字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08H单元中;
Po-P3=FFH,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出;
IP=×××00000B,表明各个中断源处于低优先级;
IE=0××00000B,表明各个中断均被关断;

系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由RESET引脚来控制的,此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到RESET引脚转为低电平后,才检查EA引脚是高电平或低电平,若为高电平则执行芯片内部的程序代码,若为低电平便会执行外部程序。

51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,(在特殊寄存器介绍时再做详细说明)至于内部RAM内部的数据则不变。

金聚宝电子             
郑州火车站中州商场3楼北厅3438号  电话:0371--66987238   13333849417 
  QQ:308894904  电子信箱:
saxmcu@126.com
 
2018-11-17 12:02:34 WZJwzj123456 阅读数 325
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    3997 人正在学习 去看看 朱有鹏

时钟周期

       时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。

       在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。

       8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期

       计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。 一个S周期=2个节拍(P),所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。

       例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;

指令周期

    执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。

CPU 周期信号、节拍周期信号、节拍脉冲信号三者之间的关系是什么?

      一小块石英晶体加电后产生压电反应,在固定频率振动,产生出电压按照固定周期变化的脉冲信号。这个高频率的信号通向分频器(frequency divider),转化为比较低频的信号。

 以上图为例,分频器分出来的信号有四个频率。题目中所说 CPU周期信号、节拍周期信号、节拍脉冲信号本质上都是时钟脉冲的不同分频,主要区别在于用途上。

     通常来说,CPU 周期信号最“慢”,它决定 CPU 所处的状态。CPU 执行一条指令的周期叫做指令周期(instruction cycle),指令周期可以划分为 fetch、decode、和 execute 三个部分,所以也叫 fetch-decode-execute cycle。假设上图与 QD 频率相同的信号有三个,QD1、QD2、QD3,它们分别依次处于高电位,那么就可以用它们来控制 CPU 处于 fetch、decode、还是 execute 状态,这就是 CPU 周期信号。

     节拍周期信号是控制信号,调整电路的功能。比如,现在 CPU 处于 fetch 状态,仍旧以上图为例,假设 QC 这个比 QD “快”的信号有 QC1、QC2、QC3……QCi 个,分别对应电路的不同功能(比如,应该将从内存中取来的数字作为指令解释,还是送给寄存器存起来),谁处于高电位,CPU 就能执行谁决定的功能。

      节拍脉冲信号则是触发信号,决定电路的实际工作起点。以上图的 QB 为例,假设 QD1 决定 CPU 处于 fetch 阶段,QC1 决定 CPU 的功能是去内存取一个数字,那么 QB 的上升沿会触发整个电路切实地执行这个功能。

      可以这样类比:

      某诊所周一二三门诊,周四五看复诊病人,周六日不办公

——对应三个 CPU 周期

      诊所星期一二三 8:00 开始门诊,12:00 午休,13:00 继续门诊,17:00 关门

——对应节拍周期

      某个病人星期二 9:00 去看了病

——对应脉冲信号

    (注意上面的说法极度简化,实际的实现要复杂很多,比如振动源不一定是石英,每个 CPU 周期未必等长,CPU 也并不是在某一时刻只能处于单独一种周期状态里(详见 pipelining),乃至周期层级也未必就是三层等等。)

 

 

 

 

 

 

 

没有更多推荐了,返回首页