tiny6410裸机实验第3章--------------系统时钟(原理图分析)
2014-02-23 23:47
239 查看
【说明】
我们的ARM11最高可以跑500到600MHZ,但是其实并不是一启动开发板就这个速度的,相反,我们如果启动开发板后没有进行时钟设置,CPU是不会跑这么快的。这一节,我们就来简单分析6410的时钟体系,下一节写代码区设置时钟,使得CPU跑到500MHZ以上!
【原理图分析】
我们先来一张全局图,有个大概的了解,然后分块分析
1】全局图
2】时钟源的选择(全局图的左上角)
1)OM[0] = 0 ,这个是硬件设置的,我的板子TINY6410晶振频率是12M
2)FOUT的计算手册中提供了公式,上边是参考手册的,而FIN显然就是外部晶振12M啦,MDIV,PDIV,SDIV是设置寄存器来控制的,等下会说
3)CLK_SRC[0] 如果是0就让FINAPLL通过, 如果是1就让FOUT 通过,显然我们想让FOUT(不然我们设置它干什么)
3】主时钟分频(在上边那张图的右边)
1)第一个多路选择器我们选择0,也就是不要分频,直接输出,这个用MISC_CON[19] 位控制
2)DIVIDER 可以继续分频,根据ARMCLK的公式就可以得最终输出给CPU的时钟了
4】MPLL
这个和上边一样的,,就不需要多解释了。
5】DOUTMPLL(中间部分)
1)DOUTAPL的设置中,MPLL_RATIO 是要设置后面的寄存器的
2)MISC_CON[19] 控制SYNC667
6】HCLK与PCLK
这2个最终的输出频率是给外设用的
1)同样的,HCLKX2_RATIO ,HCLK_RATIO, PCLK_RATIO都要设置寄存器,公式手册上都有,不过还是看着图比较直观
【相关寄存器】
1】PLL_LOCKTIME
1)我们设置好寄存器之后,PLL不是瞬间就到达我们期望的532MHZ,而在他上升的过程中,我们要让CPU停止工作一段时间,等到PLL稳定后才继续工作,下图很好的解释了这个过程
2】OTHERS寄存器
1)专门挑这几位是因为,当CPU始终和内存时钟不一致的时候,需要设置为异步模式
2)设置异步模式首先要清第6,7位,然后循环查看8到11位知道这3位为0,这样就成功设置为异步模式了
3】CLK_DIV
1)这三个寄存器就是设置上边原理图中标注的各种RATIO, 具体的大家查查手册吧。
4】APLL_CON, MPLL_CON
1)里面的那几位是不是很眼熟啊!没错,就是前面公式里边的,现在好了,公式也知道了,原理也知道了,很好理解了,不过还有一个寄存器需要介绍
5】CLK_SRC
1)我们先设置分频系数,设置APLL和MPLL的输出频率,最后再来设置时钟源,切换到FOUT
我们的ARM11最高可以跑500到600MHZ,但是其实并不是一启动开发板就这个速度的,相反,我们如果启动开发板后没有进行时钟设置,CPU是不会跑这么快的。这一节,我们就来简单分析6410的时钟体系,下一节写代码区设置时钟,使得CPU跑到500MHZ以上!
【原理图分析】
我们先来一张全局图,有个大概的了解,然后分块分析
1】全局图
2】时钟源的选择(全局图的左上角)
1)OM[0] = 0 ,这个是硬件设置的,我的板子TINY6410晶振频率是12M
2)FOUT的计算手册中提供了公式,上边是参考手册的,而FIN显然就是外部晶振12M啦,MDIV,PDIV,SDIV是设置寄存器来控制的,等下会说
3)CLK_SRC[0] 如果是0就让FINAPLL通过, 如果是1就让FOUT 通过,显然我们想让FOUT(不然我们设置它干什么)
3】主时钟分频(在上边那张图的右边)
1)第一个多路选择器我们选择0,也就是不要分频,直接输出,这个用MISC_CON[19] 位控制
2)DIVIDER 可以继续分频,根据ARMCLK的公式就可以得最终输出给CPU的时钟了
4】MPLL
这个和上边一样的,,就不需要多解释了。
5】DOUTMPLL(中间部分)
1)DOUTAPL的设置中,MPLL_RATIO 是要设置后面的寄存器的
2)MISC_CON[19] 控制SYNC667
6】HCLK与PCLK
这2个最终的输出频率是给外设用的
1)同样的,HCLKX2_RATIO ,HCLK_RATIO, PCLK_RATIO都要设置寄存器,公式手册上都有,不过还是看着图比较直观
【相关寄存器】
1】PLL_LOCKTIME
1)我们设置好寄存器之后,PLL不是瞬间就到达我们期望的532MHZ,而在他上升的过程中,我们要让CPU停止工作一段时间,等到PLL稳定后才继续工作,下图很好的解释了这个过程
2】OTHERS寄存器
1)专门挑这几位是因为,当CPU始终和内存时钟不一致的时候,需要设置为异步模式
2)设置异步模式首先要清第6,7位,然后循环查看8到11位知道这3位为0,这样就成功设置为异步模式了
3】CLK_DIV
1)这三个寄存器就是设置上边原理图中标注的各种RATIO, 具体的大家查查手册吧。
4】APLL_CON, MPLL_CON
1)里面的那几位是不是很眼熟啊!没错,就是前面公式里边的,现在好了,公式也知道了,原理也知道了,很好理解了,不过还有一个寄存器需要介绍
5】CLK_SRC
1)我们先设置分频系数,设置APLL和MPLL的输出频率,最后再来设置时钟源,切换到FOUT
相关文章推荐
- tiny6410裸机实验第3章--------------系统时钟(代码分析)
- 实验报告4_DPCM压缩系统的实现和分析
- STM32的时钟系统分析
- 操作系统大型实验进展(6)-----Linux 内核文件系统与设备操作流程分析
- Linux内核分析实验4——系统调用
- STM32系统时钟树分析
- 1.S5PV210定时器系统概述和时钟结构框图分析
- FreeRTOS高级篇10---系统节拍时钟分析
- tiny6410裸机程序之二、系统时钟
- STM32的时钟系统分析
- Linux内核分析:实验五--使用GDB跟踪系统调用执行过程
- 数据压缩原理 实验四 DPCM压缩系统的实现和分析
- 实验手册——搜狗搜索日志分析系统
- tiny6410裸机实验第4章--------------UART(原理分析)
- 系统时钟与URAT(串口)实验
- 数据压缩 实验四 DPCM压缩系统的实现和分析
- STM32的时钟系统分析
- 【黑金视频连载】FPGA NIOSII视频教程(11)--系统时钟实验
- 源码android6.0 系统应用时钟--详细的闹钟分析
- 数据压缩 实验四 DPCM压缩系统的实现和分析