Edit online

功能描述

12 Jun 2024
Read time: 7 minute(s)

PLL

模拟电路 PLL 用于产生时钟供给整个芯片。

下表列出了各个 PLL 的用途及特性。
注: 为保证 PLL 性能要求,PLL_VCO = 24 MHz ÷ (P + 1) × (N + 1) 频率建议在 720 MHz~1584 MHz 之间。
1. CMU PLL 用途及特性
名称 用途 典型频率 展频
PLL_INT0 CPU 396 MHz 不支持
PLL_INT1 AXI/ AHB/ APB/DE/GE/VE/UART/PWM/I2S/AUDIO 588 MHz 不支持
PLL_FRA0 XSPI/ SPI/ SDMC 384 MHz 展频
PLL_FRA2 LCD - 展频

PLL 内部结构如下图所示, PLL 频率计算公式为:PLL_OUT = 24MHz*(N+1+F/0x1FFFF)/(P+1)/(M+1)。其中,F 为 FRA_IN 小数分频系数,当不使用小数分频时,F=0,频率计算公式简化为:PLL_OUT = 24 MHz * (N+1)/(P+1)/(M+1)



1. CMU PLL 内部框图

PLL 配置流程

为保证 PLL 正常开启,需要遵循以下的配置流程:
  • PLL 输出配置旁路为 24 MHz, PLL_FRAn_GEN.PLL_OUT_MUX = 0,选择为 24M 时钟
  • PLL 电路关闭, PLL_FRAn_GEN.PLL_EN = 0
  • PLL 频率系数配置, PLL_FRAn_GEN.FACTOR_P,PLL_FRAn_GEN.FACTOR_N,PLL_FRAn_GEN.FACTOR_M,PLL_FRAn_GEN.FACTOR_M_EN
  • PLL 展频/小数分频配置, PLL_FRAn_CFG PLL_FRAn_SDM
  • PLL 电路打开, PLL_FRAn_GEN.PLL_EN = 1,延迟 200 us
  • PLL 输出使能, PLL_FRAn_GEN.PLL_OUT_EN = 1
  • PLL 输出配置切换为高频时钟, PLL_FRAn_GEN.PLL_OUT_MUX = 1

展频配置

展频相关参数如下:
  • 展频幅度:寄存器为 PLL_FRAn_SDM.SDM_BOT,对应幅度为 24 MHz / (P+1)*(0x1FFFF-SDM_BOT)/0x1FFFF
  • 展频频率:寄存器为 PLL_FRAn_SDM.SDM_FREQ,建议设置为 3 (33KHz)
  • 展频模式:寄存器为 PLL_FRAn_SDM.SDM_MODE,建议设置为 2 (三角波)
展频配置公式如下:
  • 根据展频幅度需求,求得 SDM_BOT = 0x1FFFF-SDM_AMP*0x1FFFF*(P+1) / 24MHz
  • 根据展频频率需求,求得 STEP_NUM = 24MHz / (P+1) / (SDM_FREQ / 2) = 24000000/(P+1)/(33000/2)
  • 根据展频幅度和展频步数,求得 SDM_STEP = (0x1FFFF-SDM_BOT)/STEP_NUM
注:
  • PLL_FRAn_SDM.SDM_STEP 设置值需要和展频幅度和展频频率匹配,以产生正常的展频波形
  • 当 P=0 时,最大展频幅度为 24MHz,如果 N=32,则 PLL 频率为 792MHz,展频深度为 24/792 ≈ 3.0%
  • 当 P=1 时,最大展频幅度为 12MHz,如果 N=65,则 PLL 频率为 792MHz,展频深度为 12/792 ≈ 1.5%

模块时钟

模块名称 总线时钟 模块时钟源 模块时钟极限频率 备注
E907 CORE - PLL_INT0 396 MHz -
E907 CLIC - PLL_INT0÷2 200 MHz -
E907 CLINT - PLL_INT0÷2 200 MHz -
E907 DM - CLK_24M 24 MHz -
AXI AXI PLL_INT1 200 MHz -
AHB AHB PLL_INT1 200 MHz -
APB0 APB0 PLL_INT1 100 MHz -
APB1 APB1 - 24 MHz -
BROM AXI - - -
SRAM AXI - - -
AHB Matrix AHB - - -
DMA AHB - - -
DCE AHB - - -
XSPI AHB PLL_FRA0 400 MHz -
SPI0 AHB PLL_FRA0 100 MHz -
SPI1 AHB PLL_FRA0 100 MHz -
SDMC0 AHB PLL_FRA0 200 MHz -
SDMC1 AHB PLL_FRA0 200 MHz -
SYSCFG APB0 CLK_24M 24 MHz -
CMU APB0 - - -
SPI_ENC APB0 HCLK - -
AXICFG APB0 - - -
MTOP APB0 - - -
AUDIO APB0 PLL_INT1 26 MHz -
GPIO APB0 - - -
UART0 APB0 PLL_INT1 60 MHz -
UART1 APB0 PLL_INT1 60 MHz -
UART2 APB0 PLL_INT1 60 MHz -
UART3 APB0 PLL_INT1 60 MHz -
LCD APB0 PLL_FRA2 200 MHz DISP_PIXCLK: 100 MHz
DE APB0 PLL_INT1 100 MHz DISP_PIXCLK: 100 MHz
GE APB0 PLL_INT1 150 MHz -
VE APB0 PLL_INT1 200 MHz -
WDOG APB1 CLK_32K 32 KHz -
WRI APB1 CLK_24M 24 MHz -
SID APB1 CLK_24M 24 MHz -
GTC APB1 - - -
I2C0 APB1 - - -
I2C1 APB1 - - -
CAN0 APB1 - - -
CAN1 APB1 - - -
PWM APB1 CLK_24M 24 MHz -
ADCIM APB1 CLK_24M 24 MHz -
GPAI APB1 - - -
RTP APB1 - - -
THS APB1 - - -
CIR APB1 - - -

UART 在 PLL_INT1=588 MHz 下波特率精度

设定波特率 实际波特率 波特率偏差 CMU 除频 Over sampling Clock source UART 除频
300 300 0% 11 16 53454545 11136
600 600 0% 11 16 53454545 5568
1200 1200 0% 11 16 53454545 2784
2400 2400 0% 11 16 53454545 1392
4800 4800 0% 11 16 53454545 696
9600 9600 0% 11 16 53454545 348
14400 14400 0% 11 16 53454545 232
19200 19200 0% 11 16 53454545 174
38400 38401 0% 11 16 53454545 87
57600 57601 0% 11 16 53454545 58
115200 115203 0% 11 16 53454545 29
230400 229687 -0.31% 10 16 58800000 16
380400 382812 0.63% 12 16 49000000 8
460800 459375 -0.31% 10 16 58800000 8
921600 918750 -0.31% 10 16 58800000 4
1000000 1020833 2.08% 12 16 49000000 3
1152000 1148437 -0.31% 16 16 36750000 2
1500000 1531250 2.08% 12 16 49000000 2
1750000 1750000 0% 7 16 84000000 3
2000000 2041666 2.08% 9 16 65333333 2
2450000 2450000 0% 15 16 39200000 1
2500000 2450000 -2% 15 16 39200000 1
3000000 3062500 2.08% 12 16 49000000 1

AUDIO 在 PLL_INT1 = 588 MHz 下精度

设定频率 CMU 除频 实际频率 频率偏差
24.5760 MHz 16 24.5000 MHz 0.3%
22.5792 MHz 17 22.6153 MHz 0.1%

模块开关控制和时序

模块一般有三个控制位:

  • MOD_RSTN(模块复位控制):同时复位模块和模块总线。
  • MOD_BUS_EN(模块总线时钟开关):控制模块的所有总线时钟,包括 AXI/AHB/APB,如果模块使用到多个总线,由于只有一个控制位,该控制位同时控制多个总线时钟。
  • MOD_CLK_EN(模块时钟开关): 控制除了总线时钟以外的模块时钟,如果模块用到多个时钟,由于只有一个控制位,该控制位同时控制多个模块时钟。

模块开启和关闭具有一定的时序要求,其中 SP_USBD 时序要求较为特殊,其他模块统一开关时序,具体描述如下。

USB_DEV

打开时序:
  • 打开控制器时钟
  • 打开模拟 PHY 时钟
  • 延迟 100 微秒
  • 放开模拟 PHY 复位
  • 放开控制器复位
关闭时序:
  • 使能控制器复位
  • 使能模拟 PHY 复位
  • 关闭模拟 PHY 时钟
  • 关闭控制器时钟

其他模块

打开时序:
  • 打开模块时钟
  • 打开总线时钟
  • 放开复位控制
关闭时序:
  • 使能复位控制
  • 关闭总线时钟
  • 关闭模块时钟
  • 关闭控制器时钟