ARM芯片的时钟系统详解(S5PV210芯片)

1、时钟介绍

时钟是同步工作系统的同步节拍,时钟的快慢就是我们常说的工作频率,以赫兹(HZ)为单位。时钟系统指导器件的运行,我们分析器件的工作特性时,常常会看器件的时序图,时序图中的时钟周期就是时钟系统来决定的。

2、时钟来源

2.1、 三种时钟配置

1、外部直接输入时钟信号,SoC有个引脚用来输入外部时钟信号,用的很少。
2、外部晶振+内部时钟发生器产生时钟,大部分低频单片机都是这么工作的。
3、外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频得到各种频率的时钟。

2.2、S5PV210的时钟来源

S5PV210的时钟来源属于第三种,也可以说复杂的Soc都是第三种,因为复杂Soc的内部器件是很多的,具体原因如下:
1、使用外部晶振的原因:Soc自身是不带晶振的,所以肯定需要外部提供。
2、使用低频晶振的原因:外部的晶振提供的都是低频的信号,像S5PV210芯片就是接的24MHZ的晶振。不接高频晶振是因为高频晶振价格高,而且高频信号的传导辐射比较难控制。就算接高频晶振也不能解决问题,Soc的主频高达1GHZ,就算是高频晶振也达不到这个频率。
3、采用内部时钟发生器:晶振产生的信号不一定满足Soc的需求,所以需要时钟发生器来进行处理才能给后级使用;
4、采用内部PLL:PLL是锁相环,作用就是倍频器,将低频信号变成高频信号。因为外接晶振是低频的,但是Soc需要高频信号,所以要倍频;
5、采用分频器:经过倍频器后时钟信号变成高频信号,但是Soc外接多个外设,每个外设需要的时钟频率是不同的,有的外设需要低频信号,比如串口。所以要用分频器将高频信号,分频成低频信号。

3、时钟和系统性能的关系

参考博客《时钟系统和系统功耗的关系》

4、时钟和外设编程的关联

外设工作都需要一定频率的时钟信号,但是绝大部分外设自身是没有信号产生的电路的,需要主控芯片提供时钟信号。因此我们程序员可以为每个外设指定时钟来源、时钟分频系统、从而设置这个外设的工作时钟。

5、S5PV210的时钟系统简介

5.1、时钟域

在这里插入图片描述

S5PV210芯片的时钟体系比较复杂,主要原因是有太多的外设,并且不同的外设工作要求的时钟频率越相差很大,从几十Hz1GHZ。所以将时钟分成不同的时钟域,每个时钟域的时钟频率都不同,分别对应不同时钟频率需求的外设器件。S5PV210芯片分为三个时钟域:MSYS、DSYS、PSYS。各个时钟域之间是彼此独立的,然后通过BRG(异步总线桥:asynchronous bus bridges)连接起来。

在这里插入图片描述

5.1.2、MSYS域

1、MSYS域包含CPU(Cortex-A8内核)、DRAM控制器(DMC0和DMC1)、IRAM&IROM等,都是一些高速的设备。
2、包含的时钟信号:
ARMCLK: 给cpu内核工作的时钟,也就是所谓的主频。
HCLK_MSYS: MSYS域的高频时钟,给DMC0和DMC1使用
PCLK_MSYS: MSYS域的低频时钟
HCLK_IMEM:给iROM和iRAM(合称iMEM)使用

5.1.3、DSYS域

1、都是和视频显示、编解码等有关的模块;
2、包含的时钟信号:
HCLK_DSYS:DSYS域的高频时钟
PCLK_DSYS:DSYS域的低频时钟

5.1.4、PSYS域

1、和内部的各种外设时钟有关,譬如串口、SD接口、I2C、AC97、USB等。
2、包含的时钟信号:
HCLK_PSYS:PSYS域的高频时钟
PCLK_PSYS:PSYS域的低频时钟
SCLK_ONENAND:ONENAND芯片用的

5.2、推荐时钟系统设置值

Values for the high-performance operation:
• freq(ARMCLK) = 1000 MHz
• freq(HCLK_MSYS) = 200 MHz
• freq(HCLK_IMEM) = 100 MHz
• freq(PCLK_MSYS) = 100 MHz
• freq(HCLK_DSYS) = 166 MHz
• freq(PCLK_DSYS) = 83 MHz
• freq(HCLK_PSYS) = 133 MHz
• freq(PCLK_PSYS) = 66 MHz
• freq(SCLK_ONENAND) = 133 MHz, 166 MHz

5.3、时钟体系框图详解

5.3.1、时钟体系框图

在这里插入图片描述

5.3.2、PLL器件

1、PLL是锁相环,功能上是倍频器,把低频的时钟信号变成高频时钟信号;
2、PLL有锁存周期,因为PLL是物理器件,不是理想器件,把低频信号输入PLL到PLL输出高频信号,这中间是需要时间的。

5.3.3、MUX器件

1、MUX是多路选择器件,有多个输入和一个输出,在逻辑上相当于或门,实现多选一的功能;
2、控制MUX器件的寄存器有一个状态位,当MUX器件切换输入源时,是需要一定时间的,当切换成功时硬件会将状态位置位,我们需要去读取状态位来判断是否切换完成。

DIV器件

1、DIV是分频器,将高频信号分频成低频信号,Fout=Fin / 分频系数;
2、DIV也有状态位,当修改分频系数时,需要读取状态位来判断修改是否已经生效。

6、时钟设置的关键性寄存器

6.1、xPLL_LOCK寄存器

在这里插入图片描述

该寄存器的功能是设定PLL的锁存周期,每个PLL都有一个对应的xPLL_LOCK寄存器。

6.2、xPLL_CON/xPLL_CON0/xPLL_CON1寄存器在这里插入图片描述在这里插入图片描述

1、这些都是PLL的控制寄存器,每个PLL的控制寄存器个数有差异,具体查阅收据手册。其中比较重要的配置:PLL的使能、倍频系数的设置、锁存状态。
2、PLL的倍频参数是PDIV、MDIV、SDIV,最终输出信号FOUT = MDIV X FIN / (PDIV X 2^SDIV-1)。
3、在设置每个PLL的倍频参数时也不是随意设置的,数据手册对不同的频率都有建议值,其实就是让你照着抄,别自己瞎搞。芯片是物理器件,有自己的物理特性,倍频参数并不是只满足上面的计算公式就行。

6.3、CLK_SRCn寄存器

在这里插入图片描述

CLK_SRCn寄存器是时钟源控制寄存器,控制时钟信号的来源。对应到时钟框图里,就是控制MUX器件的。

6.4、CLK_SRC_MASKn寄存器

CLK_SRC_MASKn寄存器是MUX的使能控制寄存器,可以禁止/使能MUX器件。

6.5、CLK_DIVn寄存器

在这里插入图片描述

CLK_DIVn寄存器是控制DIV分频器的,控制各个DIV分频器的分频系数。

6.6、CLK_GATE_x寄存器

在这里插入图片描述>各个时钟信号的使能控制信号,当需要某个器件停止工作时,可以操作此寄存器将器件使用的时钟信号给禁止掉。

6.7、CLK_DIV_STATn寄存器

在这里插入图片描述

表示每个DIV分频器的状态,用来查询当前DIV是否可以输出稳定的时钟信号。

6.8、CLK_MUX_STATx寄存器

在这里插入图片描述

表示每个MUX器件的状态,用来查询当前MUX器件的的输入源是哪一个,或者查询当前MUX的参数修改后是否已经稳定。

版权声明:本文为CSDN博主「正在起飞的蜗牛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42031299/article/details/118230864

生成海报
点赞 0

正在起飞的蜗牛

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

ARM芯片的时钟系统详解(S5PV210芯片)

1、时钟介绍 时钟是同步工作系统的同步节拍,时钟的快慢就是我们常说的工作频率,以赫兹(HZ)为单位。时钟系统指导器件的运行,我们分析器件的工作特性时,常常会看器件的时序图,时

【STM32Cube笔记】2-STM32Cube安装教程

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

STM32之DAC音频播放

目的:基于片内Flash的提示音播放程序。 1)实验数据准备:用Adobe audition或goldwave等音频编辑软件录制“您好欢迎光临!”的几秒钟的声音(8khz采样