可编程时钟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 打开相应通道的时钟开关。
至此,便大功告成了。这里的配置同时提醒我们,在设计当中,若要获得一个稳定时钟的输出,延时操作是必需的。
- 可编程时钟4个时钟的独立可调设计
- 可调闹钟的时钟
- 可调时钟
- 可调数字时钟程序
- 矩阵键盘可调时钟
- 定时器可调时钟
- LCD液晶显示可调时钟
- 可调闹钟lcd时钟
- 51单片机可调时钟
- 基于可编程时钟控制器Intel 8254的PWM&PFM信号发生装置的设计与实现
- 单片机实验代码——可调时间的时钟程序
- 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载21:Spartan-6的时钟资源
- 《Xilinx可编程逻辑器件设计与开发(基础篇)》连载21:Spartan-6的时钟资源
- 数码可调时钟(加闹钟)
- 3、时钟数码管显示--可调时
- 时钟设计
- 一个时钟类的设计
- 计时器与时钟的设计
- Oracle 11g sys,system 密码忘记设置解决办法
- 创建静态库以及引用库文件
- 黑马程序员_温习 多线程 (个人笔记)
- nginx配置信息的解析流程
- 日本과의 關係 (朝鮮歷史 韓長庚)
- 可编程时钟4个时钟的独立可调设计
- gdb一般用法(更新中)
- Ubuntu安装配置Mysql
- Unity3D事件顺序与功能
- ThinkPHP去除url中的index.php
- 设计模式(二)
- java Map集合 entrySet方法 Map接口中的内部接口类型
- ArrayList和LinkedList区别
- 我遇到过的所有问题(随时跟进)