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

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)为单位。时钟系统指导器件的运行,我们分析器件的工作特性时,常常会看器件的时序图,时

Cortex-A7中断系统

一、中断向量表 中断向量表存放的是中断向量,中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量,因此中断向量表是一系列中断服务程序入口地址组成的表。当某个中断被触发以后就会自动跳转到中断向量表中对应的中断

STM32F4最小系统硬件设计

对于硬件工程师来讲,想要入门STM32相关的开发,我想除了深入阅读一下STM32的数据手册外,最实用且有效的方法就是自己实际做一个STM32的最小系统板了。本文将以一个小的STM32F427VG的电路最