CLOCK GEN模块支持多种可替换的时钟产生方案来支持应用需求,本章主要介绍E300的时钟产生的基本结构,时钟的寄存器配置介绍在第五章(AON)和第七章(PRCI)

  1. 时钟产生基本架构
    下图给出E300的时钟产生方案。
    RISC-V E300 SOC架构介绍——4.时钟产生-编程知识网

      大部分芯片内部的数字时钟来自于由PLL或者可调振荡器产生的高频时钟:hfclkPLL由片上振荡器或者外部的晶振驱动tlclk(TileLink bus clock) 频率固定,并且和处理器核时钟coreclk相同,每个外设都可以由tlclk产生局部时钟AON模块包括RTC时钟电路,并且可以由三种低频时钟源驱动:晶振32.768KHz、片上RC振荡器、或者是由hfclk分频的时钟测试模式可以选择JTAG测试时钟(TCK)驱动所有的时钟树来支持scan
    
  2. 配置寄存器:

hfrosccfg HFROSC 高频环形振荡器
hfxosccfg HFXOSC 高频晶振
pllcfg HFPLL 高频PLL
plloutdiv
procmoncfg
lfroscfg LFRCOSC 低频RC振荡器
LFXOSC 低频晶振
  1. 内部可调可编程的72MHz振荡器(HFROSC)
    外部可调高频环形振荡器(HFROSC)用于产生复位后的默认系统core时钟,并且允许在没有外部高频晶振或者PLL时工作

    由寄存器hfrosccfg控制,地址映射在PRCI中
    RISC-V E300 SOC架构介绍——4.时钟产生-编程知识网

名称 位宽 描述
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 该状态标志振荡器可以操作并且准备好作为时钟源
  1. 外部16MHz 晶振(HFXOSC)
    外部高频的16MHz晶振可以作为精确的时钟源,晶振的电容负载 < 12pF, ESR < 80Ω;
    当被用作驱动PLL时,晶振的输出频率一定先二分频,作为PLL的输入,提供 8 MHz的参考时钟给VCO;
    HFXOSC输入pad可以用作提供外部时钟源,并且输出不能连接;
    HFXOSC的输入可以直接用来产生hfclk,如果系统没有PLL;
    由寄存器hfxosccfg控制,地址映射在PRCI中

RISC-V E300 SOC架构介绍——4.时钟产生-编程知识网

名称 位宽 描述
hfxoscen 1 1.该状态寄存器开启晶振,复位后被设置;也可以关闭晶振减小功耗
2.状态寄存器必须开启,当HFXOSC输入pad用作外部时钟源
hfxoscrdy 1 该状态标志晶振输出准备好可以使用
  1. 内部高频PLL(HFPLL)
    PLL:通过倍频参考时钟(如HFROSC, HFXOSC),产生高频时钟;
    PLL的输入时钟频率在6-48MHz,PLL倍频后的频率在48-384MHz;
    由寄存器pllcfg控制,地址映射在PRCI中
    RISC-V E300 SOC架构介绍——4.时钟产生-编程知识网

PLL的输出频率由三组寄存器配置,pllr[2:0], pllf[5:0], pllq[1:0]
RISC-V E300 SOC架构介绍——4.时钟产生-编程知识网

名称 位宽 描述
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
RISC-V E300 SOC架构介绍——4.时钟产生-编程知识网

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)

  1. PLL 输出分频器
    由寄存器plloutdiv控制PLL的分频
名称 位宽 描述
plloutdivby1 1 1.置1时,PLL的输出时钟将不会分频
plloutdiv 6 1.plloutdivby1清零时,由plloutdiv设置时钟分频2*(N+1),在2-128之间,并且输出分频器扩展PLL的输出频率0.375-384MHz
  1. 内部低频振荡器(LFRCOSC)
    RC振荡器提供40-80KHz的输入频率
    ²内部的低频振荡器可以代替外部晶振来为AON
    ²提供可编程的预分配器,允许对低频输出进行校准,提高定时精度

  2. 外部32.768KHz的低频晶振(LFXOSC)
    32.768kHz外部晶振提供精确的RTC
    晶振可以关闭来节省功耗,但是需要1s来稳定