1. 时钟描述
- Clk0的时钟特性:周期为10ns,占空比为50%,相移为0ns;
- Clk1的时钟属性:周期为8ns,占空比为75%,相移为2ns;(也就是相移为90。)
则上图中的描述方法可以为: - clk0: period = 10, waveform = {0 5}
- clk1: period = 8, waveform = {2 8}
2. 基本时钟
一个基本时钟是指PCB上的时钟,它通过下面方式输入设计中
- 一个输入端口
- 一个吉比特收发器输出引脚
下面基本时钟,通过名字为’sysclk’的端口,将PCB上的时钟引入FPGA元器件中,并且通过输入缓冲器和一个时钟缓冲器,最终到达路径上的寄存器。
在XDC中,该时钟约束表示为
create_clock -period 10 [get_ports sysclk]
(占空比为50%时,可以不写-waveform{0 5})
3. 虚拟时钟
需要综合的模块的时钟是CLKC,但是前后模块的时钟不一定是CLKC,但是前后模块的时钟与CLKC来源于同一个时钟,比如是经过分频得来的。理论上,由同一个时钟分频得来的,在理想情况下,是可以知道他们的相位关系的。
其他的时钟CLKA,CLKB,CLKD和CLKE在我们要综合的电路中并没有对应的时钟端口,他们并不驱动要综合电路中的任何寄存器,它们主要用于为输入/输出端口延时约束,因此需要使用虚拟时钟。虚拟试种在设计里并不驱动任何的寄存器,它主要用于说明相对于是时钟的I/O端口延迟,虚拟试种的格式如下:
CLKC的约束为:
create_clock -period 20 [get_ports CLKC]
4. 门控时钟
门控时钟,指的是由组合逻辑产生的时钟,通常情况下,不建议使用门控时钟,因为门控时钟由组合逻辑产生,它本身就潜伏了组合逻辑最大的隐患——竞争和冒险,所以门控时钟很容易产生毛刺;但是,门控时钟被认为是降低芯片动态功耗的最佳方式之一,门控时钟能够动态地管理特定区域的时钟,并且同时影响该区域中的逻辑电路。
- 门控时钟低功耗原理
门控时钟也就是在使能信号的时候,把时钟打开,使能信号无效的时候,关闭时钟,时钟关闭后,它所驱动的寄存器的输出就不会改变,因此就降低了动态功耗。 - 门控时钟最开始的电路
从时序图中可以看到,门控使能信号如果在时钟的高电平的时候开启或者关闭,就会导致产生的门控时钟高电平被截断,变成毛刺。因此,让门控时钟在通过这个逻辑电路之后,仅仅在时钟低电平的时候进行翻转,高电平的时候保持。
门控时钟高电平有效的时候:低电平触发的锁存器+与门
门控时钟是低电平有效的时候:高电平触发的锁存器+或门 - 与门实现方式
- 或门实现方式
5. 时钟抖动(Jitter)和时钟偏斜(Skew)
Skew通常是时钟相位上的不确定,而Jitter是时钟频率上的不确定。
由于时钟源到达不同寄存器所经历的驱动和负载的不同,时钟边沿的位置有所差异,因此就带来了skew。
由于晶振本身稳定性,电源以及温度变化等造成时钟频率的变化,就是jitter。