可编程时钟4个时钟的独立可调设计

来源:互联网 发布:php与asp.net的区别 编辑:程序博客网 时间:2024/05/17 07:05


       Si5338是一款支持8个单端时钟、4个差分时钟或者二者组合输出模式的时钟发生芯片。它最强大的功能是4组输出动态独立可调,频率精度达百万分之一。它可产生的频率范围很广,0.16~710Mhz。芯片内部框图如图1所示:


                                                                                                                              图1 时钟内部框图

时钟的合成分为两步:如图2所示,在我的设计需求中,要求改变某一路时钟的同时,不能影响其他路的频率输出,所以我选择调整合成步骤2中的时钟分频数来达到频率动态可调,为了得到良好的频率信号,芯片手册建议让锁相环工作在2.5GHz,这样压控振荡器就可以工作在线性区了。需要注意的是:如果锁相环工作在2.5GHz,那么时钟芯片可以产生的最小频率为2.5GHz除以最大MSx     (最大时钟分频系数 2048 )= 1.220703125MHz,小于此频率的时钟将不能输出。


                                                                     图2  时钟合成的2个阶段

配置动态独立可调的时钟工作这要有17步:

1   关闭所有输出 (OEB_ALL = 1,向reg230写0x10)

2  禁用锁相环失锁警报 ()

3  写寄存器(将用时钟配置软件产生的寄存器的值按照读修改写的方法写到时钟芯片内部RAM中)

4  检测输入时钟有效否(时钟芯片不能无中生有,需要有一个时钟源)

5 配置锁相环开始锁相

6 初始化锁相环,设置软复位SOFT_RESET,复位芯片

7  等待25ms,等待复位完成

8  重启失锁警报

9 确认锁相环状态

10 将校准寄存器的值 复制到 配置寄存器中

11  设置锁相环使用校准值

12 使用MS_RESET复位,复位MS分频模块等待1ms后,关闭MS_RESET

13  使能所有通道的输出

14 如果不想更改频率,配置步骤到此为止,如果想更改频率,首先需要关闭其中某一个通道的时钟输出开关,reg230[ 3: 0] 低四位是时钟开关;0为打开,1为关闭;要保证总开关是开着的,即  reg230[4] = 0;

15 更改时钟分频计数器的值;

16 延时25ms

17 打开相应通道的时钟开关。


至此,便大功告成了。这里的配置同时提醒我们,在设计当中,若要获得一个稳定时钟的输出,延时操作是必需的。




0 0