嵌入式时钟系统结构

更新时间:2023-06-06 21:55:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

嵌入式时钟系统结构

【摘要】

时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作.外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。因此时钟对于计算机系统是至关重要的,通畅时钟系统出现问题也是致命的,比如振荡器不起振、振荡不稳、停振等。由于从事波分软件开发的工作,对于硬件知识并不是很了解,而时钟系统在嵌入式设计占有很重要的作用。因此,通过ARM中常用的LPC2000系列的时钟系统结构为例,来对嵌入式时钟系统中常见概念和器件进行学习总结。

本文主要描述典型的嵌入式系统设计中的时钟系统结构以及时钟系统常用的器件功能和原理介绍,以及如何通过PLL的结构来推导PLL各项参数的值,为日后软件开发的同事来了解时钟的结构和功能提供借鉴和帮助。

1概述

如下图1所示,ARM的时钟系统包括4部分,分为晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。其中晶体振荡器为系统提供基本的时钟信号(频率为Fosc)。当复位或者处理器从掉电模式唤醒时,“唤醒定时器”要对输入的时钟信号做计数延时,使芯片内部的部件有时间进行初始化。然后Fosc被PLL提高到一个符合用户需要的频率Fcclk,Fcclk用于CPU内核。因为CPU内核通常比外设部件的工作速度要快,用户可以通过设置VPB分频器,把Fcclk信号降低到一个合适的值Fpclk,该信号用于外设部件。以下是对各个部件和常见概念的介绍。

图1__ARM 系统的时钟发生系统

2晶体振荡器

晶体振荡器可以使用外部时钟源,也可以使用外接晶体和片内振荡电路产生时钟,其中使用外部时钟源时,称为“从属模式”,使用外部晶体时,称为“振荡模式”,其中在采用振

荡模式时,需要根据微控制器内部的振荡电路支持的频率来选择晶体,例如:ARM的振荡电路仅支持1~30MHz的外部晶体。其中ARM的时钟Fosc的选择可以按照以下图2流程进行处理,

图2_Fosc的选择

3唤醒定时器

唤醒定时器的用途是:确保振荡器和芯片所需的电路在处理器开始执行指令之前有足够的时间能够让其开始正确工作,它是通过监测晶振状态来判断是否能开始可靠的执行代码,工作原理如下图3所示,

图3_唤醒定时器工作原理

当给芯片加电或者因为某个事件退出掉电模式后,振荡器开始工作,但需要一段时间来产生足够振幅的信号驱动时钟逻辑。时间的长短取决于许多因素,包括Vdd的上升速率,晶振的类型及其电气特性,任何其他外部电路和振荡器在现有环境下自身的特性,振荡的波形大致如下图4所示,当检测到有效时钟,并且外部复位信号撤销后,唤醒定时器开始时钟计数,此时可以使Flash等外围器件完成初始化,当初始化完成后,处理器开始执行指令,但是当使用外部时钟源时,振荡器的启动延时可能就很短甚至没有,唤醒定时器的设计就避免了芯片的某些部件因为系统复位太快而来不及准备好的现象。它在处理器从掉电模式中唤醒或者发生了任何复位时激活。唤醒定时器完全由硬件自动控制,不需要用户干预,在系统

正常工作后将不再起任何作用。

图4_上电后时钟波形及其唤醒定时器的作用

4锁相环PLL

ARM内部具有PLL电路,振荡器产生的时钟频率Fosc通过PLL升频,可以获得

更高的系统时钟Fcclk。PLL的输出时钟信号Fcclk是由电流控制振荡器(CCO)分频的到的,CCO的振荡频率由“相位频率检测”部件控制,该部件会比较Fosc信号和CCO输出的反馈信号的相位和频率,并根据误差输出不同的电流值,该电流值再控制CCO的振荡频率。这样的环路可以保证“相位频率检测”部件的两路输入信号非常接近。PLL的内部结构图可以简化为图5所示,但是通常CCO的受控范围是有限的,超出这个范围则无法输出预期的时钟信号。

图5_PLL功能原理结构简化图

图中的2P分频器部件是为了保证CCO工作在正常范围内而设计的,该分频器可以设置为2、4、8或者16分频,该分频器另外的一个作用是保证PLL输出的波形为50%的占空比(一个信号周期中高地电平的宽度相等)。CCO进行过分频后就获取了系统所需的系统时

钟,其频率应当限制在芯片厂家规定的范围内,而不要尝试在嵌入式系统中使处理器处于超频工作状态。需要注意的是CCO的输出控制在需要频率的过程并不是一蹴而就的,而是一个反复的反馈控制过程,可以简单的用图6来表示,这个稳定的过程就是“PLL锁定的过程”,锁定之前的频率是不稳定的,不能用于处理器,因此图5中存在PLL连接开关的原因,锁定前,开关向下方,系统使用Fosc作为时钟信号,锁定后,开关向上,使用PLL的输出作为时钟信号。另外需要注意的是,PLL在芯片复位和进入掉电模式时会被关闭并从时钟系统切换出去,芯片从掉电模式被唤醒后,PLL并不会自动使能和连接,只能通过软件使能。程序必须在配置并激活PLL后等待其锁定,然后再连接PLL。

图6_PLL锁定过程示意图

下面对PLL的频率配置计算过程介绍,在此之前先把等式中用来的符合做一个定义,其中Fosc表示晶体振荡器的输出频率,即PLL的输入功率,Fcco表示PLL电流控制振荡器的输出频率,Fcclk表示PLL最终的输出频率,即处理器的时钟频率,M表示PLL配置寄存器中倍增器值,P表示分频器值。CCO输出的频率Fcco首先经过2P分频部件后得到

Fcco/2P的频率,该信号经过

M分频部件,得到Fcco/2PM的频率,而在PLL锁定后,该信

号频率应当与Fosc是相等的,所以可以依此推导出如下等式,

由以上等式可以得出PLL的输出频率为:

CCO 输出频率为:

其中PLL输入和设定必须满足各自约束的条件。

在实际使用PLL时,要对其进行相应的配置,可以按照以下步骤进行:

1) 选择处理器的时钟频率Fcclk,这可以根据实际处理器的整体要求,UART波特率的支

持等因素来决定。

2) 选择振荡器频率Fosc,Fcclk一定是Fosc的整数倍

3) 计算M值配置PLL。

4) 选择P值配置PLL。

实际工程应用中,配置代码的流程图7可参照如下进行编码:

图7_PLL配置处理流程图

5VPB分频器

VPB总线是芯片中一个重要的内部总线,绝大部分的外设都挂接在VPB总线上,然而大部分的外设工作速度相对与CPU内核来说都是比较慢的,所以在时钟系统中设置了VPB分频器,它决定处理器时钟CCLK与外设器件所使用的时钟PCLK之间的关系,它的用途主要如下:

1) 将处理器时钟分频,以便让外设在合适的速度下工作。

2) 降低系统功耗,系统工作频率越大,功耗越大。

6推广建议

通过本文的例子可以了解典型的嵌入式时钟系统的结构和常见器件的概念和理解;此外希望对开发人员进行培训,在日后的嵌入式开发设计和故障维护中可以参照此文进行对时钟系统进行分析,一方面提高软件开发人员的知识面,另一方面也加强定位解决故障时的能力提升,希望大家提供反馈意见,提高单板的健壮性。

参考资料

1.【嵌入式系统介绍】上海交大PPT

2.【ARM 嵌入式系统基础教程】 周立功 2010

3.【嵌入式系统编程与设计】王继进

本文来源:https://www.bwwdw.com/article/bij1.html

Top