[0x100] 概述
[0x101] 时钟频率类型概述
- 频率时钟类型 : FCLK、HCLK、PCLK、BCLK、MCLK;
- 可编程分频器 : PDIV, MDIV, SDIV;
- FCLK: 用于ARM CPU 核心;
- HCLK: 用于高性能、高带宽、低延迟的片内总线 AXI bus peripherals
- PCLK: 用于外设总线 APB bus peripherals
- BCLK: 用于处理器系统总线 CPU system bus
- MCLK:用于SDRAM memory
[0x102] 电源管理功能概述
- Reset Generation : 管理块多种类型的重置信号,比如 硬重置、软重置、GPIO 重置等;
- Power Up Sequence : 控制设备的启动顺序,使处理器与系统在 电源供应后更加稳定与效率;
- Power Down modes :减少电源消耗,不同的等级 Normal 、IDLE、STOP、SLEEP;
[0x200] 时钟管理接口描述
- PLL0: 40MHz ~ 2.5 GHz 非抖动 [CPU core]
- PLL1: 40MHz ~ 2.5 GHz 非抖动 [CPU core]
- PLL2: 35MHz ~ 2.2 GHz 抖动
- PLL3: 35MHz ~ 2.2 GHz 抖动
[0x210] PLL (Phase Locked Loop) 锁相环
[0x211] 基于P/M/S值生成 Fout
- Fin 和 Fout 分别是输出频率与输入频率;
- 参照时钟 :如果 Pre Divider Fin = 24MHz ,输出值 = Pre Divider Fin / p ,;
- 反馈时钟 :由 Voltage Controlled Oscillator 生成 Fvco,通过 Main DIVIDER分频 ,输出值 = Fvco/m ;
- 在 Phase Frequency Detector 比较上面两个数值而改变Fvco ,直至 反馈时钟 = 参照时钟 ;
- 将最终的 Fvco 经过 Post Scaler 分频 ,Fout = Fvco / s;
- PLL x = ( m x Fin)/(p x 2s) (x = 0,1,2,3, m = MDIV= [64,1023], p = PDIV= [1,63], s = SDIV= 0, 1, 2, 3);
- 常见的 PLL稳定的数值如下:
[0x212] 设置P/M/S/K 数值
- PMSK 都是 十进制数值:p = P[5:0] , m = M[8:0], s = S[2:0], k = K[15:0]
- 当 P/M/S 数值是 无符号整数时,K[15:0] 是一个二进制补码整数;
- 当 RESETB为逻辑 1 时,不能设置 P[5:0] =0 , M[8:0] =0;
- FFOUT = ((m + k/65536) FFIN)/(p x 2s)
- 分频比率 规模表 如下:
[0x213] 设置 SSCG_EN, SEL_PF, MFR,MRR 数值
- 当 SSCG_EN =1[逻辑高] 时,启用拓频模式;
- sel_pf = SEL_PF[1:0], mfr = MFR[7:0], mrr = MRR[5:0]
- mrr x mfr = [512:0]
- MF = FFIN/ p/ mfr/ 25 Hz
- MR = mfr x mrr/ m / 26 x 100 %
- Modulation mode 决定于 sel_pf 的设置:
- 00: Down spread
- 01: Up spread
- 1x: Center spread
[0x214] PLL 节能模式 (Power down)
- 定义: 如果PLL非用于系统时钟时,支持进入节能模式,此模式PLL使用最小电源消耗的;
- PLL0 一般是不能进入节能模式的;
- 操作:PLL 进入节能模式,需要向(CLKMODEREG0.PLLPWDN1)中 写入 ‘1’;
[0x215] 更改 PLL 分频值
- 更改PLL 输出频率之前,应该检查内存控制器的运行状态(start/stop);
- 当设置重置(PLLSETREG0, PLLSETREG1)到需求的数值时,应该将(PWRMODE.CHGPLL)写入‘1’,来更新PLL;
- 更新锁定时钟 :当改变 PLL 分频值且没有稳定时,电源管理和时钟控制器将阻塞时钟供应到内部控制器的所需时间;
- 锁定时间超后,block 状态 = STOP MODE 时,内部控制器将获取新的时钟频率;
[0x220] 时钟频率汇总
- 这五种时钟的最小频率不受PLL 限制;
- F(BCLK) = 2 x F(PCLK) : BCLK 频率必须是 PCLK 频率的2倍;
[0x221] 主CPU 时钟
- FCLKCPU0 是 s5p6818 主CPU的时钟频率,推荐 PLL0 做、初始频率;
- FCLKCPU0 和 HCLKCPU0 是不能相同的,注意不要超过 HCLKCPU0 设置频率上限;
- CLKMODEREG0 : 选择 不同的PLL 提供时钟频率初始值;
- CPU 核时钟 = FCLKCPU0 = CLKMODEREG0 / CLKDIV_FCLKCPU0;
- AXI总线时钟 = HCLKCPU0 = CLKMODEREG0 / CLKDIV_FCLKCPU0 / CLKDIV_HCLKCPU0;
- 推荐 CPU 时钟频率:
[0x222] 系统总线时钟(核时钟)
- PCLK : 用于 CPU 基于I/O 的方式,访问 SOC 上被激活的块时钟频率;
- BCLK : 用于 系统总线时钟,通常 BCLK = 2 x PCLK ,所以 CLKDIV_PCLK = 2;
- 最大频率 数值
[0x223] 内存总线 (MCU) 时钟
- MDCLK : MCLK : MBCLK : MPCLK = 4 : 4 : 2 : 1;
- 内存时钟推荐数值
[0x224] 图形进程单元 (GPU) 时钟
- GPU核心时钟,GR3DPCLK 是保留寄存器;
- 推荐GPU频率数值
[0x225] 多函数解码 (MFC) 时钟
- MPEGBCLK:多函数解码 (MFC) 时钟;
- MPEGPCLK :MFC 模块外设时钟;
[0x300] 电源管理
[0x301] 电源启动顺序
- nBATF :标识电源错误或者未准备就绪,如果为 LOW(低电平),则为错误;
- 电源启动时 nBATF =Low ,等待 nBATF = High ,POR(电源启动重置状态);
- 等待 600 us后,PLL0 和 PLL1 稳定状态 Stable PLL0 & PLL1 ;
- 进入 Normal 模式;
- CPU 请求进入停止模式 (STOP),等待唤醒(WAKE UP);
- 等待 60ms后,晶振稳定状态 Stable X-tal ;
- 等待 600 us后,PLL0 和 PLL1 稳定状态 Stable PLL0 & PLL1;
- 唤醒完毕,进入 Normal 模式;
[0x302] 待机模式(IDLE Mode)
- 待机唤醒源 :GPIOInterrupt, Alive GPIO Interrupt, External Interrupt and RTC Interrupt
- 进入待机模式前需要设置唤醒源,否则不能恢复正常模式;
- 启用待机模式:寄存器 PWRMODE.IDLE = 1;
- 待机模式特性:不提供CPU时钟,电源和PLL操作正常提供;
- 发生唤醒源中断后,立即进入正常模式;
[0x303] 停止模式(STOP Mode)
- 待机唤醒源 :RTC Interrupt, AliveGPIO Interrupt;
- 进入停止模式前需要将内存从 DRAM 模式转换到 Self Refresh模式,防止内存数据丢失;
- 启用停止模式:寄存器 PWRMODE.STOP = 1;
- 停止模式特性:只提供电源管理 和 RTC 时钟,不提供其他块的时钟,包括 ARM 核心、PLL、XTI等;
- 发生唤醒源中断后,立即进入IDLE模式,经过70ms后PLL0 和 PLL1 稳定状态时,将进入正常模式;
[0x304] 睡眠模式恢复(SLEEP Mode)
- 设置中断源为GPIO 清除终端抑制位(GPIOINTPEND REG);
- 如GPIO作为中断源,设置触发条件(GPIOWAKEUPRISEENB 或者 GPIOWAKEUPFALLENB REG);
- 如GPIO作为中断源,关闭重置使能 (GPIORSTENB REG);
- 如GPIO作为中断源,启用唤醒事件 (GPIOWAKEUPENB REG);
- 设置中断源为RTC,清除终端抑制位 (INTPEND REG);
- 如RTC作为中断源,设置触发条件 (RTCWKENB REG);
- 如RTC作为中断源,启用唤醒事件 (RTCWAKEUPENB REG);
- 启用接受中断 (INTENB REG);
- 启用节能模式 (PWRMODE);
- 等待唤醒事件发生后,从STOP/IDLE 模式唤醒,进入正常模式并清除之前的中断抑制;
[0x305] 重置生成(Reset Generation)
- 电源管理主要的时钟: RTC时钟(32.768KHz),且最先开始振幅;
- Power On Reset :除了 NGRESETOUT开始振辐,需要 tRESETOUT = 200ms,其他都可以设置为 0ms;
- Sleep Mode Wakeup :除了 NGRESETOUT开始振辐,需要 tRESETOUT = 200ms,其他都可以设置为 0ms;
- Power off sequence :不需要等待任何时间,可以直接停止;
- Software Reset :软重置不需要时间稳定时钟,先将 (SWRSTENB) 置位,后置位 (PWRMODE.SWRST);
- GPIO Reset :置位(GPIORSTENB),定义Active GPIO重置源特性;
- Watchdog Reset :主要用于操作错误与未知状态的重启恢复;
[0x400] AXI 总线
[0x401] 可编程的Qos特征(ProgQoS)
- Qos 只关注未处理事项的数量,如果超过了事先指定的阈值(MI),将只允许来自指定来源的处理事项;
- 未处理事项阈值存储于 (QoS tidemark Register);
- 限制处理事项标识存储于 (QoS access control Register);
- 如果未处理事项的数值大于或者等于(QoS tidemark Register),只处理 (QoS access control Register)从端口标识的事项;
- 如果未处理事项的数值,小于 (QoS tidemark Register)数值,对于AXI 计算是没有影响的;
- 建议分配低MI号。这种方法与循环优先级方案很好地对齐,因为需要QoS支持的MI通常是那些可以被认为是高级从属的;
[0x402] 仲裁规则
- 对于 可编程的RR 规则、固定的RR规则,可以分别配置不同的MI值;
- AW和AR 通道 是分开仲裁于APB可编程端口,并配置标识,MI值是允许在不同SI中累计这两种读写任务;
- 一个仲裁决定不会在当前循环生效,arbitration mechanism registers的仲裁 指挥应用于子循环;
- 如果没有SI有效,则仲裁器采用默认仲裁,默认仲裁,仲裁必须在有活动SI时发生;
[0x403] RR规则分配
- 基于 插槽数 、分配的SI、事务数量等分配循环方式;
- 每个连接的SI必须至少有一个插槽,最多可以有32个插槽。
- 通过为SI分配多个时隙,您可以平均分配对从时隙的访问权限。
- 如果适当地订购了插槽,这也可以减少保证授权之前的最长时间。
- 可以从APB编程接口询问与时隙相关联的SI,并且如果选择可编程RR方案则可以改变SI。
- 每当仲裁被授予活动SI时,时隙被旋转,使得当前处于最高优先级位置的时隙变为最低,并且所有其他时隙移动到更高优先级但保持其相对顺序。
- 如果SI是最高优先级的活动SI,但不是最高优先级接口,则它继续赢得仲裁,直到它成为最高优先级接口;
- 由于仲裁值已注册,当前周期中进行的仲裁决策将在下一个周期中生效;