嵌入式时钟系统结构

发布 2022-10-21 07:26:28 阅读 1974

【摘要】

时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作。外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、a/d转换、定时器计数等等。因此时钟对于计算机系统是至关重要的,通畅时钟系统出现问题也是致命的,比如振荡器不起振、振荡不稳、停振等。

由于从事波分软件开发的工作,对于硬件知识并不是很了解,而时钟系统在嵌入式设计占有很重要的作用。因此,通过arm中常用的lpc2000系列的时钟系统结构为例,来对嵌入式时钟系统中常见概念和器件进行学习总结。

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

如下图1所示,arm的时钟系统包括4部分,分为晶体振荡器、唤醒定时器、锁相环(pll)和vpb分频器。其中晶体振荡器为系统提供基本的时钟信号(频率为fosc)。当复位或者处理器从掉电模式唤醒时,“唤醒定时器”要对输入的时钟信号做计数延时,使芯片内部的部件有时间进行初始化。

然后fosc被pll提高到一个符合用户需要的频率fcclk,fcclk用于cpu内核。因为cpu内核通常比外设部件的工作速度要快,用户可以通过设置vpb分频器,把fcclk信号降低到一个合适的值fpclk,该信号用于外设部件。以下是对各个部件和常见概念的介绍。

晶体振荡器可以使用外部时钟源,也可以使用外接晶体和片内振荡电路产生时钟,其中使用外部时钟源时,称为“从属模式”,使用外部晶体时,称为“振荡模式”,其中在采用振荡模式时,需要根据微控制器内部的振荡电路支持的频率来选择晶体,例如:arm的振荡电路仅支持1~30mhz的外部晶体。其中arm的时钟fosc的选择可以按照以下图2流程进行处理,唤醒定时器的用途是:

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

唤醒定时器完全由硬件自动控制,不需要用户干预,在系统正常工作后将不再起任何作用。

arm内部具有pll电路,振荡器产生的时钟频率fosc通过pll升频,可以获得更高的系统时钟fcclk。pll的输出时钟信号fcclk是由电流控制振荡器(cco)分频的到的,cco的振荡频率由“相位频率检测”部件控制,该部件会比较fosc信号和cco输出的反馈信号的相位和频率,并根据误差输出不同的电流值,该电流值再控制cco的振荡频率。这样的环路可以保证“相位频率检测”部件的两路输入信号非常接近。

pll的内部结构图可以简化为图5所示,但是通常cco的受控范围是有限的,超出这个范围则无法输出预期的时钟信号。

图中的2p分频器部件是为了保证cco工作在正常范围内而设计的,该分频器可以设置为或者16分频,该分频器另外的一个作用是保证pll输出的波形为50%的占空比(一个信号周期中高地电平的宽度相等)。cco进行过分频后就获取了系统所需的系统时钟,其频率应当限制在芯片厂家规定的范围内,而不要尝试在嵌入式系统中使处理器处于超频工作状态。需要注意的是cco的输出控制在需要频率的过程并不是一蹴而就的,而是一个反复的反馈控制过程,可以简单的用图6来表示,这个稳定的过程就是“pll锁定的过程”,锁定之前的频率是不稳定的,不能用于处理器,因此图5中存在pll连接开关的原因,锁定前,开关向下方,系统使用fosc作为时钟信号,锁定后,开关向上,使用pll的输出作为时钟信号。

另外需要注意的是,pll在芯片复位和进入掉电模式时会被关闭并从时钟系统切换出去,芯片从掉电模式被唤醒后,pll并不会自动使能和连接,只能通过软件使能。程序必须在配置并激活pll后等待其锁定,然后再连接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可参照如下进行编码:

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

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

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

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

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

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

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

嵌入式系统结构试卷

一 单项选择题 每小题2分,共30分得分 分。1 如果boot loader 内核 启动参数以及其他的系统映像四部分在固态存储设备上分别独立存放,则其存储结构的分配顺序应当是 d a.文件系统 内核 启动参数 bootloader b.启动参数 bootloader 内核 文件系统。c.bootlo...

嵌入式系统结构试卷

一 选择题 每小题2分,共30分得分 分。1 如下哪一个命令可以帮助你知道shell命令的用法 a a.manb.pwdc.helpd.more 2 linux分区类型默认的是 b a.vfatb.ext2 ext3 c.swapd.dos 3 在大多数linux发行版本中,以下哪个属于块设备 b ...

嵌入式ARM嵌入式系统设计

摘要 本系统设计了基于arm系统的嵌入式硬件平台,其中主要介绍了系统母版的具体电路实现,其硬件电路已经通过了信号完整性分析。中国 网 关键词 arm 嵌入式系统 中图分类号 tp368.1 文献标识码 a 文章编号 1007 9416 2012 12 0104 01 1 序言 本系统是设计一款基于a...