CLOCK GEN模块支持多种可替换的时钟产生方案来支持应用需求,本章主要介绍E300的时钟产生的基本结构,时钟的寄存器配置介绍在第五章(AON)和第七章(PRCI)
-
时钟产生基本架构
下图给出E300的时钟产生方案。
大部分芯片内部的数字时钟来自于由PLL或者可调振荡器产生的高频时钟:hfclkPLL由片上振荡器或者外部的晶振驱动tlclk(TileLink bus clock) 频率固定,并且和处理器核时钟coreclk相同,每个外设都可以由tlclk产生局部时钟AON模块包括RTC时钟电路,并且可以由三种低频时钟源驱动:晶振32.768KHz、片上RC振荡器、或者是由hfclk分频的时钟测试模式可以选择JTAG测试时钟(TCK)驱动所有的时钟树来支持scan
-
配置寄存器:
hfrosccfg | HFROSC | 高频环形振荡器 |
hfxosccfg | HFXOSC | 高频晶振 |
pllcfg | HFPLL | 高频PLL |
plloutdiv | ||
procmoncfg | ||
lfroscfg | LFRCOSC | 低频RC振荡器 |
LFXOSC | 低频晶振 |
-
内部可调可编程的72MHz振荡器(HFROSC)
外部可调高频环形振荡器(HFROSC)用于产生复位后的默认系统core时钟,并且允许在没有外部高频晶振或者PLL时工作
名称 | 位宽 | 描述 |
---|---|---|
hfrosctrim | 5 | 1.软件控制,范围在0-31,主要调整延迟链的反馈级数,调整延迟进而控制频率; |
2.0表示最长延迟链和最低频;其他值表示短延迟和较高频; | ||
3.系统reset之后,寄存器值默认为16; | ||
4.系统reset之后,软件在cpu boot启动过程将校准后的值写入寄存器中,在正常工作中任何时候都可以改变值 | ||
hfroscdiv | 6 | 1.分频系数,范围在1-64。0表示不分频,1表示2分频,分频可以随时改变; |
2.系统reset之后,寄存器值默认为4,即5分频; | ||
hfroscen | 1 | 1.为节省功耗,HFROSC关闭,通过清零hfroscen寄存器; |
2.在关闭HFROSC之前,处理器必须在其他时钟源下工作,比如PLL,外部晶振等 | ||
3.可以重新设置hfroscen寄存器重新使HFROSC有效; | ||
4.HFROSC在每次复位之后都会默认有效 | ||
hfroscrdy | 1 | 该状态标志振荡器可以操作并且准备好作为时钟源 |
- 外部16MHz 晶振(HFXOSC)
外部高频的16MHz晶振可以作为精确的时钟源,晶振的电容负载 < 12pF, ESR < 80Ω;
当被用作驱动PLL时,晶振的输出频率一定先二分频,作为PLL的输入,提供 8 MHz的参考时钟给VCO;
HFXOSC输入pad可以用作提供外部时钟源,并且输出不能连接;
HFXOSC的输入可以直接用来产生hfclk,如果系统没有PLL;
由寄存器hfxosccfg控制,地址映射在PRCI中
名称 | 位宽 | 描述 |
---|---|---|
hfxoscen | 1 | 1.该状态寄存器开启晶振,复位后被设置;也可以关闭晶振减小功耗 |
2.状态寄存器必须开启,当HFXOSC输入pad用作外部时钟源 | ||
hfxoscrdy | 1 | 该状态标志晶振输出准备好可以使用 |
- 内部高频PLL(HFPLL)
PLL:通过倍频参考时钟(如HFROSC, HFXOSC),产生高频时钟;
PLL的输入时钟频率在6-48MHz,PLL倍频后的频率在48-384MHz;
由寄存器pllcfg控制,地址映射在PRCI中
PLL的输出频率由三组寄存器配置,pllr[2:0], pllf[5:0], pllq[1:0]
名称 | 位宽 | 描述 |
---|---|---|
pllr | 2 | 1.参考时钟分频2 bit 编码,00 = 1, 11 = 4. |
2.分频后的参考时钟必须在6-12 MHz | ||
pllf | 6 | 1.PLL VCO倍频6 bit 编码N,倍频为2*(N+1),000000 = 2, 111111 = 128 |
2.VCO的输出频率必须在384-768MHz | ||
3.表1给出了倍频设置 | ||
pllq | 2 | 1.PLL输出分频2bit编码,01=2, 10=4, 11=8,00模式不支持 |
2.PLL最终的输出频率在48-384MHz |
表1 有效PLL倍频,乘数设置为实际乘数M,pllf中倍频为 M/2-1
PLL其他控制配置寄存器
名称 | 位宽 | 描述 |
---|---|---|
pllbypass | 1 | 1.置1时,关闭PLL,并且pllout直接由pllrefsel寄存器配置 |
2.唤醒复位后,PLL也会通过pllbypass=1禁用 | ||
pllrefsel | 1 | 在PLL被bypass时,pllrefsel选择参考时钟 |
pllsel | 1 | 1.用作选通最后hfclk的输出,PLL输出,或者是bypass的时钟 |
2.pllsel清零后,hfroscclk会直接驱动hfclk | ||
3.唤醒复位后,pllsel后被清零 | ||
plllock | 1 | 1.PLL提供锁相信号; |
2.PLL要求100us来重新获得锁定,并且锁定信号在此初始锁定周期内不一定稳定,因此在这段时间之后才能访问 | ||
3.如果时钟源存在过多抖动,PLL可能无法实现锁定,并且锁定信号肯不会保持有效 |
pllcfg寄存器reset时:
Ø bypass并关闭PLL通过将pllbypass = 1
Ø 输入由外部HFXOSC振荡器设置pllrefsel=1
Ø PLL不驱动系统时钟通过设置pllsel=0
Ø PLL倍频设置为R=2,F=64,Q=8(pllr=01,pllf=011111,pllq=11)
- PLL 输出分频器
由寄存器plloutdiv控制PLL的分频
名称 | 位宽 | 描述 |
---|---|---|
plloutdivby1 | 1 | 1.置1时,PLL的输出时钟将不会分频 |
plloutdiv | 6 | 1.plloutdivby1清零时,由plloutdiv设置时钟分频2*(N+1),在2-128之间,并且输出分频器扩展PLL的输出频率0.375-384MHz |
-
内部低频振荡器(LFRCOSC)
RC振荡器提供40-80KHz的输入频率
²内部的低频振荡器可以代替外部晶振来为AON
²提供可编程的预分配器,允许对低频输出进行校准,提高定时精度 -
外部32.768KHz的低频晶振(LFXOSC)
32.768kHz外部晶振提供精确的RTC
晶振可以关闭来节省功耗,但是需要1s来稳定