是指FPGA内部时钟在时钟分配系统中到达各个时钟末端(比如触发器的时钟端CP)的时钟相位不一致。简单的说,就是由于从时钟源到达各个时钟接收端所经过的延时不等,从而使得各个接收端收到的时钟相位不一致。造成这种延时不等通常是因为2种原因,一是走线延时(又称为传输延时),这是必然存在的;另一个是组合逻辑延时(又称为惯性延时)。
(2)时钟抖动(Jitter):
是指时钟边沿的输出位置和理想情况存在一定误差(提前或滞后产生跳变沿)。抖动又分为确定性抖动和随机抖动,确定性抖动一般比较大,而且可以追踪到特定的来源,如信号噪声,串扰等;随机抖动一般是由环境因素造成的。
(3)全局时钟网络(Global):
可以理解成一个时钟分配树,在这棵时钟树上,为了保证信号到芯片的各个角落的延时尽量相等,时钟树首先走到芯片中间,再向芯片的四周均匀分布,这样一来,虽然总体上延时是增加了,但是走在全局时钟树上的信号到达其各个目的端的延时基本可以保证相等,对于时钟来说,这样就有效控制了因为走线延时而带来的时钟偏移。同时在芯片设计的时候对该网络进行了保护,尽量防止芯片内部的信号对全局时钟网络上的信号产生影响,有效避免了串扰,这样可以保证走在全局时钟网络上的信号抖动非常小。而且,全局时钟网络具有很强的驱动能力,对于一些扇出很大的信号,比如时钟信号,全局的异步复位信号和一些控制信号,往往扇出都是成百上千的,这个时候就应当尽量把这种信号走到全局时钟网络上去,以保证其驱动能力。
3.2 利用FPGA中的PLL来设计时钟模块
Altera在其FPGA中内嵌了模拟锁相环(PLL),专门用于进行时钟管理,可以用做频率综合(如分频、倍频),也可以用来去时钟抖动、修正占空比和移相等处理。
FPGA中的PLL具有以下主要功能:
(1)实现频率综合,如分频和倍频等功能;用建立在专用模块资源上的PLL来实现分频、倍频等操作,比设计者用代码自行设计的分频、倍频模块性能要优化得多,可以显著提升分频、倍频时钟的指标(如偏移skew,抖动iitter等);
(2)可编程的环路带宽,根据需要滤除输入参考时钟的时钟抖动,显著提升输出时钟的jitter指标。大带宽的PLL锁定速度快,小带宽的PLL锁定速度慢;
(3)可编程占空比,用于修正输入时钟占空比不正确的问题,比如我们前一个设计中的读数据时钟是由PC机编程产生,占空比几乎不可能达到标准的50%,但是采用PLL来读取外部的输入时钟之后,可以产生一个与输入时钟同频但是具有标准50%占空比的新时钟,并用这个新时钟来作为FPGA内部的操作时钟;
(4)可编程相移,精确调整输出时钟与参考时钟的相位偏移,从而满足后续逻辑在建立时间和保持时间上的要求;
(5)具有时钟使能引脚,可以根据需要控制输入时钟的通断。FPGA设计中强烈建议不要使用门控时钟,而是要尽量使用时钟使能,这样可以有效地避免因为不稳定状态而产生的毛刺;
(6)可输出锁定检测信号,当锁定信号变成高电平1时,就表示此时PLL已经锁定并且具有稳定输出。
由于整个系统是高速的,因此本系统的时钟输入采用了 有源晶振,电路中其他所需用到的时钟也由FPGA 内的PLL 通过分频、倍频或是移位等来实现。本系统 的时钟模块具体包括以下几个时钟:
(1)系统输入时钟:50M时钟;
(2)AD9220采样时钟、乒乓FIFO写时钟:由50M时钟根据AD采样频率的分频因子进行分频得到,此因子是根据系统要求事先写入FPGA;