2025年SOC时钟配置

SOC时钟配置SOC 时钟配置 1 锁相环工作原理 Soc 的时钟产生单元 CGU 通过外部输入时钟和内部相位锁相环 PLL 和分频选择逻辑产生用于片内的不同频率的时钟 片内时钟频率的改变通过配置 AHB 总线全局控制模块单元内部锁相环寄存器实现 CGU 单元内部包含三个锁相环 分别产生系统主时钟 DDR 物理层时钟

大家好,我是讯享网,很高兴认识大家。

SOC时钟配置

1 锁相环工作原理

Soc的时钟产生单元(CGU)通过外部输入时钟和内部相位锁相环(PLL)和分频选择逻辑产生用于片内的不同频率的时钟。片内时钟频率的改变通过配置AHB总线全局控制模块单元内部锁相环寄存器实现。

CGU单元内部包含三个锁相环,分别产生系统主时钟、DDR物理层时钟、以太网物理层时钟,其配置寄存器位于AHB总线全局控制模块。CGU模块还产生1553模块时钟与UART时钟。

锁相环采用65nm工艺库中的PLLSM65LLFRAC锁相环,其最高输出频率为1.6GHz,包含小数配置模式和整数配置模式,该时钟管理单元内部的锁相环采用整数配置模式,用户可配置引脚如表1所列。

表1 普通锁相环可配置引脚

引脚名称

方向

位宽

说明

REFDIV(分频器)

I

6

锁相环分频系数

FBDIV(倍频器)

I

12

锁相环倍频系数

锁相环时钟用FOUTVCO表示,晶振输入时钟用CLKIN表示,倍频器系数用FBDIV表示,分频器系数用REFDIV表示,主时钟用MAINPLL表示,DDR3时钟用DDRPLL表示,以太网时钟用ENETPLL表示。锁相环配置公式如下:

锁相环时钟:FOUTVCO = CLKIN * FBDIV / REFDIV;

主时钟:MAINPLL = CLKIN * FBDIV / (2*REFDIV);

DDR3时钟:DDRPLL = CLKIN * FBDIV / (2*REFDIV);


讯享网

以太网时钟:ENETPLL = CLKIN * FBDIV / (6*REFDIV);

需要注意的地方:输出时钟的范围为400MHz ≤ FOUTVCO ≤ 1600MHz;对于配置信号REFDIV、FBDIV的要求:1 ≤ REFDIV ≤ 63;16 ≤ FBDIV ≤ 1600;通过检查锁相环状态寄存器获知锁相环是否锁定,此时再对锁相环进行配置操作。

2 配置流程

主锁相环的配置:

主锁相环产生系统主时钟,对于主时钟锁相环的原理分析知道其满足:

MAINPLL = CLKIN * FBDIV / (2*REFDIV)。

配置步骤:

  1. 读取全局控制模块主锁相环寄存器,查看锁相环状态寄存器LOCK位信息(0x40c00008寄存器的第21),直到读出该位为0x1
  2. 对主锁相环寄存器的BYPASS位写0x1操作(0x40c00008寄存器的第20),对主锁相环寄存器的LOCK位写0x1操作(0x40c00008寄存器的第21);
  3. 配置主锁相环寄存器的主时钟倍频系数(FBDIV)和主时钟分频系数(REFDIV),MAINPLL = CLKIN * FBDIV / (2*REFDIV),配置主频为400MHz,则FBDIV = 0xA0,REFDIV = 0x5(FBDIV为寄存器的19-8位,REFDIV为寄存器的5-0位);
  4. 等待主锁相环寄存器频率锁存完成,通过循环读取LOCK可知,如果LOCK位读出为0,表示频率锁存完成;
  5. 向主锁相环寄存器的BYPASS位写入0,表示时钟为锁相环模式,非旁路模式。

DDR锁相环配置:

DDR锁相环产生系统DDR3时钟,对于DDR锁相环的原理分析知道其满足:

DDRPLL = CLKIN * FBDIV / (2*REFDIV)。

配置步骤:

  1. 读取全局控制模块DDR锁相环寄存器,查看锁相环状态寄存器LOCK位信息(0x40c0000c寄存器的第21),直到读出该位为0x1
  2. 对DDR锁相环寄存器的BYPASS位写0x1操作(0x40c0000c寄存器的第20),对主锁相环寄存器的LOCK位写0x1操作(0x40c0000c寄存器的第21);
  3. 配置DDR锁相环寄存器的DDR时钟倍频系数(FBDIV)和DDR时钟分频系数(REFDIV),DDRPLL = CLKIN * FBDIV / (2*REFDIV),配置主频为533MHz,则FBDIV = 0x215,REFDIV = 0x32(FBDIV为寄存器的19-8位,REFDIV为寄存器的5-0位);
  4. 等待DDR锁相环寄存器频率锁存完成,通过循环读取LOCK可知,如果LOCK位读出为0,表示频率锁存完成;
  5. 向DDR锁相环寄存器的BYPASS位写入0,表示时钟为锁相环模式,非旁路模式。

3 数据结构封装

根据时钟模块寄存器地址在内存分配图中的分布,将其地址定义为整型宏定义,将寄存器定义为各位各个功能位域的结构联合体。这样子将整型地址转换成寄存器的结构联合体指针,就能够通过寄存器位域去编写底层驱动了,图1表示宏定义寄存器的定义和类型转换,图2表示寄存器结构联合体定义。

soc时钟1

 

图1

soc时钟2

 

图2

 

 

小讯
上一篇 2025-01-17 13:22
下一篇 2025-02-14 08:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/64781.html