DSP5509的时钟发生器(翻译总结自TI官方文档)

时间:2023-11-24 15:46:08

一、C5509时钟发生器的两个功能

1.将从CLKIN引脚输入的时钟信号变换为适当频率的CPU时钟,提供给CPU、外设和其他模块使用;

2.将CPU时钟通过可编程分频器输出到CLKOUT引脚。

时钟发生器内部有数字锁相环PLL(phase lock ring)和时钟模式寄存器(CLKMD)。

二、时钟发生器的工作模式

1.旁路模式Bypass Mode

  时钟模式寄存器CLKMD中的PLL ENABLE位为0,此时锁相环(PLL)被禁用,输出时钟信号频率为输入时钟信号频率的一分频、二分频或者四分频。分频值由BYPASS DIV确定:

BYPASS DIV

分频值

00

1

01

2

1X

4

旁路模式下LOCK位为0。

2.锁定模式Lock Mode

  时钟模式寄存器CLKMD中的PLL ENABLE位为1,此时锁相环(PLL)进入锁相程序,当PLL产生所需输出频率,并且输出时钟信号的相位被锁定在输入信号相位之后,时钟发生器进入锁定模式(Lock Mode)。在那之前,时钟发生器一直处于旁路模式(Bypass Mode)。

  如果时钟发生器处于锁定模式,并且PLL需要重新进行相位锁定时 (IOB = 1 in CLKMD),时钟发生器会进入旁路模式直到相位被再次锁定为止。

  输出时钟频率的计算:

DSP5509的时钟发生器(翻译总结自TI官方文档)

  PLL MULT:2~31

  PLL DIV:0~3

  最大时钟频率:31*input frequency

  最小时钟频率:1/2*input frequency

  此外锁定模式中遇到的相关寄存器位还包括:

  IAI(initialize after idle):时钟发生器退出空闲模式时锁相环是否需要重启锁相程序。0:不重启;1:重启。

  BREAKLN:指示锁相状态是否中断。0:已中断;1:已修复或向CLKMD写入了新值。

  IOB(initialize on break):相位失锁时是否需要重新锁相。0:不需要;1:需要。

  LOCK:锁定模式下该值为1。

3.空闲模式Idle(Low-Power) Mode

  为了节省电量,可以通过加载Idle Configuration使时钟发生器进入空闲模式。空闲模式下,输出时钟停止,时钟保持在高电平。

  如果进入空闲模式之前,时钟发生器为旁路模式,则在退出空闲模式之后,时钟发生器仍为旁路模式;如果进入空闲模式之前,时钟发生器为锁定模式,则在退出空闲模式之后,时钟发生器先进入旁路模式,进行重新锁相,再进入锁定模式。重新锁相的方式与IAI位有关。IAI=0:不重启锁相程序,使用之前的锁相设置进行锁相;IAI=1:重启锁相程序,适用于空闲模式下输入时钟改变或者可能改变的情况。

三、CLKOUT引脚和相关的分频器

  时钟产生器产生的CPU时钟除了供CPU,外设和其他模块使用之外,还可以通过分频器传送给CLKOUT引脚。CLKOUT的频率值由系统寄存器SYSR中的CLKDIV位决定。

DSP5509的时钟发生器(翻译总结自TI官方文档)

四、DSP复位过程中时钟发生器的情况

  复位时(during reset):(此时复位信号保持为低电平)

  1.时钟发生器处于旁路模式;

  2.输出时钟频率由输入引脚CLKMD的电平决定。CLKMD为低电平时,输出时钟频率等于输入时钟频率;CLKMD为高电平时,输出时钟频率等于输入时钟频率的1/2。

  复位后(after reset):(复位信号的上升沿)

  时钟模式寄存器CLKMD的预设值由输入引脚CLKMD的电平决定。CLKMD为低电平时,时钟模式寄存器CLKMD的值为2002H;CLKMD为高电平时,时钟模式寄存器CLKMD的值为2006H。根据此值计算得知:复位之后时钟发生器也处于旁路模式,输出时钟频率也由输入引脚CLKMD的电平决定。

五、时钟模式寄存器CLKMD

DSP5509的时钟发生器(翻译总结自TI官方文档)

六、使用方法和实例

  利用库函数配置时钟发生器的方法:

  1.在头文件中包含csl_pll.h文件;

  2.声明PLL配置结构体:

  PLL_Config Config_PLL={

  1,  //IAI

  1,  //IOB

  6,  //PLL MULT

  0   //PLL DIV

  };

  3.运行配置函数:

  PLL_config(&Config_PLL);

  也可以通过函数设置PLL频率:PLL_setFreq(6,1);