intel 4790k的主频是4.0ghz,高通801的单核频率可达2.5ghz,a8处理器在1.2ghz,msp430可以工作在几十mhz……这里的频率的意思都是类似的,这些处理器的频率都是厂商给定的。但是对于fpga的工作频率而言却往往需要我们自己决定,在产品的设计初始就需要考虑fpga工作在哪个频率,譬如250mhz。这个取值并不是瞎确定的,譬如如果定在1ghz,那显然是不可能的,有一本叫《xxxxx fpga data sheet dc and switch characteristics》的手册给出了fpga各个模块的直流供电特性和最高工作频率。这里给出的是理论工作上限制,virtex-5各个模块工作频率最高大概在400-500mhz之间。当然还要考虑fpga的输入clk了,即使有dcm等模块分频倍频,一般也不会选择一个很奇怪的分频比。
一旦工作频率确定下来之后,问题就来了。你所建立的工程是否能在这一要求的工作频率下正常工作?只需要在ucf文件内添加时钟的周期约束,place & route之后就可以得到结果了。约束满足了,很好;没有满足,可以改,如何修改将在achieving timing closure中介绍。
谈到这里,有一个问题呼之欲出:除了器件本身的限制,还有什么会影响工作频率?下文将介绍相关概念。
1. clock skew
考虑同步时序电路中的触发器,在时钟沿到达的时候,数据必须是稳定(非亚稳态)且有效的(符合设计需求)。同步时序电路中,对于两个相连的触发器(譬如下图,figure6-26),我们自然希望这两个触发器的时钟相位完全一致,但这往往是不现实的。不同的延时将破坏这一关系,延时差称为clock skew,即时钟歪斜。
clock skew = clock path delay to the destination synchronous element - clock path delay to te source synchronous element.
时钟的不同路径延时将破坏其原本完美的相位关系。但并不是说clock skew的取值为0是最好的 。clock skew是如何影响时钟周期(频率)将在第三节介绍。
注意,clock skew中只提到了path delay,但是实际上对于destination synchronous element 和source synchronous element而言,时钟的相位可能是不一样的。这一点表现出了时钟的相位和clock skew是独立的两个概念。在前文的offset中,相位的表现为clock arrival time。
上图是一个clock skew的例子,可以看到两个触发器的时钟不是同相的,但是计算clock skew的时候没有必要考虑。以dcm的输出作为参考,源同步元素的路径延时为0.852+0.860+0.639 = 2.351,目的同步元素的路径时延为0.860 + 0.860 + 0.639 = 2.359。故clock skew = 0.008 。
2. clock uncertainty
clock uncertainty 的概念比较好理解,就是时钟的不确定性。时钟不确定性是时钟本身的不完美导致的。譬如对于100mhz时钟,上升沿本应该在0ns,10ns,20ns;实际上却在0ns,10.01ns,19.99ns,这个差距就是时钟的不确定性。时钟不确定性受到了多个因素的影响,其中一个因素是clock jitter,关于clock jitter,period约束中有一个input jitter的关键字告诉综合工具输入时钟的jitter。譬如
不同情况下,clock uncertainty 的计算方式是不一样的,譬如dcm时钟下
clock uncertainty = [√(input_jitter? + system_jitter?) + dcm_discrete_jitter]/2 + dcm_phase_error
system jitter定义了整个系统的jitter,受到了电源噪声、板级噪声和系统任何外部jitter的影响。对于clock uncertainty和clock jitter来说,好像并没有什么太值得注意的地方。
3. period 分析
clock domains
对于同步时序电路来说,不可避免的有时钟的存在,比较简单的就是所有的触发器都采用了一个时钟。那么可以认为整个设计中的路径都处于这个时钟的覆盖下,如下图,这两个触发器之间的路径是受到这一个时钟的时钟周期约束的。这种情况称为single clock domain。
但是对于大多数设计来说,情况并不是这样的,譬如dcm可以分出不同相位的时钟。如下图,此时两个触发器的时钟不是一样的,而这两个触发器之间的数据路径连接了这两个时钟。什么是时钟域?域即是区域,时钟的区域,在我看来就是时钟覆盖的范围。下图中触发器之间的路径,一端属于clk20,一端属于clk20_90g,横跨了两个时钟域。注意这两个时钟是一个dcm产生的,时钟相关,因此xst能够对其进行分析。本节内容不谈跨时钟域的问题。
举例
以上图(figure6-6)为例,计算slack。requirement取决于两个触发器时钟的相对相位关系。注意到第一个触发器在下降沿采样,第二个触发器相移为90,时钟周期为20ns。结合前文的setup和offset提及的相关概念。这是很好理解的。和offset约束不同的是,offset主要是受到外部信号的相对关系影响,period则基本取决于设计。通过分析可知,限制最小时钟周期的影响因素在于data path。data path包括了布线延时和逻辑延时。了解到这一点,对之后代码编写是由帮助的。譬如,不能有太复杂的逻辑。(这是因为fpga的lut结构输入有限,以4输入为例,逻辑复杂需要lut级联,那么自然会影响到逻辑延时)
slack (setup path): 13.292ns (requirement - (data path - clock path skew + uncertainty))
source: intc_2 (ff)
destination: xorb_2 (ff)
requirement: 15.000ns
data path delay: 2.594ns (levels of logic = 1)
clock path skew: -0.086ns
source clock: clk0 falling at 10.000ns
destination clock: clk90 rising at 25.000ns
clock uncertainty: 0.200ns
周期约束分析
结合三节内容来看,注意式子slack = requirement - (data path - clock path skew + uncertainty)) 。requirement是由时钟周期确定的,要判断时钟的周期约束是否得到满足,计算data path - clock path skew + uncertainty是否大于requirement 即可。data path是数据路径延时,另两个参数已经在1,2节介绍。
为什么流水线ADC是超高速转换应用的绝佳选择
上上签电子签约迎来7周年,网络效应催生超千万客户网络
基于STM32设计的物联网环境监测系统(华为云IOT)
5G时代:选择Hisan激光大屏,选择先进生产力工具
CMOS传感器有何优势?
Clock Skew , Clock uncertainly 和 Period
KUKA机器人镇流电阻温度传感器导线断线说明
欧洲电气化正在从汽车向叉车、工程机械等领域延伸
浅析消防应急照明系统在化工厂中的应用
运算放大器的各种参数介绍
热电阻测温电路框图和原理图
航智2022年终总结暨2023年目标大会圆满举行
开局2024:碳酸锂库存重回7万吨“背后” 节后反弹,希望几何?
汽车芯片厂商向先进工艺迈进,国内厂商机会来临
当iphone7遇上水钻,当保时捷遇到华为mate9各自走向不同人生
昱辉阳光宣布将出售加拿大一系列运营项目 拟将工作重心转向其他有利可图的市场
foc电机控制需要几个pwm foc控制算法介绍
AFE8092 AGC功能中的帧同步特性详解
PS2键盘接口设计之二(实现了从键盘输入并显示在LCD液晶屏上)
华大单片机HC32F030的产品特点介绍