可编程时钟发生器是数据采集系统中,根据不同的数据采集对象,产生不同的采样频率的芯片;或者系统处于不同的运动情况时,能够动态改变采样频率,即数据采集系统应当具有改变采样频率的能力。可编程时钟发生器改进了传统的数据采集系统,能够应用于其它采样频率的场合,具有广泛的适应性,提供了在线改变采样频率的方法。
可编程时钟发生器的3PL架构包括超高分辨率的预分频器,倍频器和输出分频器,VCO范围可达1GHz.可从单一输入频率得到几乎任何时钟调节比率的组合.两个内部PLL的功能包括可选扩展频谱调制器和用于扩展频率和比率的完整的可编程功能.该功能可限度地减少时钟信号引起的EMI.并使系统设计满足严格的规范要求.此外.每一个PLL还支持可编程环路滤波器,以优化客户应用中的抖动性能设置.
兼容端口可用作内部EPROM的编程(可代替JTAG)有助于使用者在采购,制造或部署过程中保存和恢复器件配置.先进的I/0能力支持通用输入逻辑和多种输出类型.此外.系列器件还提供具有无脉此冲干扰的双基准输入切换功能,同时支持晶体和驱动基准源。
引脚号 引脚名称 功能描述
1 XTALOUT 参考晶振反馈信号
2 SCLK 串行时钟输入线,用于器件编程
3 GND 地线
4 DATA 串行数据输入线,用于器件编程
5 CLKOUT 可编程的时钟输出。当管脚7被配置为输出使能管脚或置位控制寄存器中的位1,可使CLKOUT输出三态。
6 VDD 电源,+5V
7 MUXREF/OE 多路复用参考频率或三态输出控制,由控制寄存器中的位3决定。上电时,管脚7实现输出使能OE的功能,其的高电平使能时钟输出。
8 XTALIN 参考晶振输入或外部参考输入信号fREF
可编程时钟发生器包含两个寄存器:控制寄存器和编程寄存器。
这两个寄存器使用协议字011110来区分是控制寄存器数据还是编程寄存器数据。所有要发送的其它数据(除协议字外)在连续3个1之后,不论原来其后的数值是1还是0必须插入一个0,来区分是协议字还是数据。所有要编程的串行字从位开始串行地移入,当SCLK从低到高跳变时,将数据移入到可编程寄存器中。一旦协议字检出后,前面已移入的8位数据就传递到控制寄存器中,然后控制命令立刻被执行。
1. 控制寄存器
当要写入的数据写入到控制寄存器时,必须包含协议字011110,用来识别所写入的数据为控制寄存器数据。
控制寄存器数据的写入从控制字的低位(位0)开始,一直到控制字的高位(位7),然后是6位的协议字写入到寄存器中,故控制寄存器的设置其需14位数据。
在上电后,控制寄存器装入缺省值00000100,即MUXREF控制位设置为1,强制CLKOUT输出为参考频率fREF,编程寄存器禁止装入,芯片管脚7是输出使能管脚。
2. 编程寄存器
按照所需要的输出频率,将22位的编程字装入到编程寄存器,用以实现输出频率的更改。由于协议字为011110,在传送编程数据时,凡连续出现3个1,在其后便添一个“虚”0,以避免混淆;在接收端凡连续收到3个1,就将其后的零丢掉,故装入的数据要完成“位填充”功能。由于这个原因,实际的编程字的长度可以为22到27位。
(1)装入控制寄存器控制字,允许编程寄存器装入数据,使能MUXREF功能,使输出频率稳定在参考频率上,且这个过程保证无跳变。控制字如下:
控制字 011110 0000X101 --- LSB
协议字 要写入的控制寄存器控制字
管脚7的用法由用户定义,用X表示。
注意:所有的数据都从低位移入,首先移入的是控制字的位,协议字紧跟着控制寄存器的控制字之后输入到寄存器中。
(2)装入编程寄存器编程字,使用“位填充”,最多可得27位的编程字。
(3)装入控制寄存器控制字,使能MUXREF功能,禁止编程寄存器数据的装放。该过程将编程字装入到编程寄存器中,保持输出在参考频率上,同时进行新频率的建立。控制字如下:
控制字 011110 0000X100
(4)等待至少10ms,使压控振荡器VCO的频率稳定在新的频率值上。
(5)装入控制寄存器控制字,使能芯片输出新频率,该过程保证无跳变。控制字如下:
控制字 011110 0000X000
总之,为了使芯片通过编程输出一个新频率,该芯片需要三个控制字加上一个编程字共同来实现。
在我们所设计的通用数据采集系统中,系统可以在线改变采样频率,具有动态改变采样频率的能力。该通用数据采集系统选用可编程时钟发生器芯片,提供大范围的采样频率(391kHz~100MHz)。可编程时钟发生器的编程连接仅需要两条线,即SCLK(2)、DATA(4)。
在该系统中,参考晶振频率为14.31818MHz。可编程逻辑器件CPLD作为上位机与可编程时钟发生器的接口,实现可编程时钟发生器串行时钟和编程数据的串行输入控制功能。CPLD的主时钟由上位机提供,经分频后产生所需的串行时钟SCLK,控制移位寄存器,串行移出所需的编程数据。为了帮助实现计算,上位机提供系统工作的驱动程序,根据用户的参考输入频率和所希望的输出频率,产生适当的编程寄存器编程字。
当用户输入所希望的输出频率时,驱动程序自动计算所需的编程字,同时考虑到“位填充”的要求,产生实际的编程字。然后在上位机的控制下,经上位机写入到可编程逻辑器件CPLD对应的寄存器中,作为触发信号,启动频率调整状态机。
按照频率调整过程,该状态机的状态0为空闲状态;状态1为在串行时钟SCLK的控制下,将控制字01111000000101由低位开始串行移入可编程芯片中;状态2为在串行时钟的控制下,将寄存器中存放的编程字串行移入到可编程芯片中,此时要增加超过22位编程数据的位计数器,以便正确地将编程字移入;状态3为在串行时钟的控制下,将控制字01111000000100由低位开始串行移入可编程芯片中;状态4为在串行时钟的控制下,延时等待10ms,进入下一状态;状态5为在串行时钟的控制下,将控制字0111100000000由低位开始串行移入可编程芯片中,使芯片输出所希望的新频率,同时进入状态0,等待下一次的频率调整。
串行时钟并不是一直输出,只有在对可编程时钟发生器进行编程调整输出频率时,才有串行时钟输出。即串行时钟在非编程状态时输出为零,在编程状态时才输出可编程时钟。若产生39.5MHz的输出频率,考虑位填充的实际编程字为589370H,其相应的可编程时钟与串行数据输出的波形如图4所示。
在该数据采集系统中,采用可编程时钟发生器芯片可编程时钟发生器,动态调整采样频率,使得系统具有通用性。系统硬件设计简单,通过串行数据编程,可在线改变采样频率。而在频率调整过程中,无频率跳变,输出时钟频率维持在固定的参考时钟频率上,特别适用于对采样频率调整要求高的场合。