打印

Xilinx与Altera FPGA比较系列之三 时序分析(1)

[复制链接]
2780|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
爱在2012|  楼主 | 2011-2-11 12:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

FPGA时序分析实用指南

1.
基本时序分析
a)
时钟周期
时钟周期分析是最简单的一个, 也是最容易理解的一个分析, 硬件对应的基本道理是寄存器输出延迟 + 逻辑操作延时 + 连线延迟 + 建立时间 必须小于时钟周期, 上面的式子即定义了最短的时钟周期, 也即信号的最高工作频率. 在一些实际情况下, 上面的式子会有一些变化, 比如考虑时钟的抖动, 不同信号状态下传输的延迟不一样, . 一般情况下, 分析最坏情况即可. 一般情况下, 时钟周期都是作为全局约束添加的. FPGA工作当中, 只需要加一个简单的时钟周期约束即可. 在实际项目当中, 可能会遇到有多个相关时钟, Quartus II, 可以设置时钟之间的相对关系, 然后只需要设置基本的时钟约束即可. 可以在 Assignments à Settings à Timing Analysis Settings à Classical timing analyzer à Individual clock中设置. Quartus比较熟悉的也可以通过.qsf文件设置, 具体语法可以参考原有的设置, 一般情况下, 只要稍作修改就可以了. 直接编辑.qsf文件的好处是对于添加多个类似的约束比较快. ISE, 可以使用 User constraints à create timing constraints, 通过图形界面设置, 也可以直接编辑.ucf文件实现. 同样, 具体语法可以参考现成的文件.
b)
输入setup
输入数据的setup要求是初学者经常搞糊涂的一个约束. 其实QuartusISE里边对输入setup的定义都非常清晰, 也即, 从外部来看, 只要满足时钟和数据一定的关系, FPGA内部可以保证不会出现亚稳态现象(即采在数据的沿上). 下面这幅图给出了Tsu的定义.



Quartus, 这个参数是Tsu, 其准确定义如下: The length of time for which data that feeds a register via its data or enable input(s) must be present at an input pin before the clock signal that clocks the register is asserted at the clock pin. 具体计算公式如下: tSU = <pin to register delay> + <micro setup delay> - <clock to destination register delay>. 确切的说, 这个定义应该是从外部看到的FPGA的时序要求. 比如Tsu 0.5ns, 那么只要数据在0.5ns之前建立, 数据送入FPGA应该不会出现问题. Tsu可以是全局约束, 也可以是局部约束. 全局约束可以通过Assignments à Settings à Timing Analysis Settings à Classical timing analyzer中的Tsu来设置, 局部约束可以通过Assignment Editor来添加.

ISE, 叫做Offset In Before或者Pad to setup, 准确定义如下: The minimum time for input signals to be stable before they can be sampled correctly on the next active clock edge. 具体计算公式为: Slack = Requirement - (Data Path - Clock Path + uncertainty)
举个例子来说, 如果时序报告给出数值为4.468ns, 那么这意味着数据必须在时钟沿之前4.468ns建立, 换而言之, 只要外部送入数据在4.468ns之前建立, FPGA内部采用不会出问题. 具体的计算方法如同Altera. Offset in Before可以是全局约束, 也可以局部约束, Constraint Editor可以设置.

在实际使用过程中, 通常大部分情况下, 数据和时钟都是每个周期有效. 因此, 数据到底在哪个时钟周期被寄存器捕获其实并不重要, 关键是所有的相关数据(比如一个总线的数据[7:0])必须保证在一个时钟周期内采样. 因此, 如何避开会造成亚稳态以及如何使得相关的数据的Tsu尽量保持一致, 是解决数据输入FPGA的时序问题的关键. 比如, 假定输入FPGA的数据在时钟沿的1ns处发生变化, 那么Tsu应当避开这个1ns附近这个区域. 只要按照上述原则操作, 时序裕量都会是够的. 在一些特殊情况下, 比如有使能信号传递, 或者是数据的时钟周期必须严格对其, 或者是时钟抖动特别大, 则需要更加仔细的考虑时序约束.
c)
Tco
TcoClock to output的延时. 道理如同Tsu, 只不过是换个角度看问题, 即作为驱动源来看待的问题. 也是从外部观察的. 下面这幅图给出了Tco的定义



Quartus, 这个参数是Tco, 其准确定义如下: The maximum time required to obtain a valid output at an output pin that is fed by a register after a clock signal transition on an input pin that clocks the register. 意思是相对于输入时钟管脚而言, 从寄存器输出的数据(到达pin)最长多长时间可以稳定. 具体的计算公式如下:
tCO = <clock to source register delay> + <micro clock to output delay> + <register to pin delay>. Tco可以是局部约束, 也可以是全局约束. 具体设置方法和Tsu类似.

ISE, 这个参数是Offset out after或者称为Clock to Pad, 其准确定义如下: The clock-to-output, or OFFSET OUT, delay of the FPGA is the total delay encountered from the time a clock edge arrives at the input pin of the device to the time data becomes valid at the output pin of the device. 具体计算公式为Slack = Requirement – (Clock Arrival + Clock Path + Data Path + Clock Uncertainty). Offset Out After可以为全局约束或者是局部约束, constraint editor工具或者直接编辑UCF文件均可设置. 下面的一个报告给出了一个示例:
OFFSET = OUT 4 ns AFTER COMP "ClkIn";
Largest slack: 0.667 ns; Smallest slack: 0.667 ns; Relative Skew: 0.0 ns;
+-----------------------------------------------+-------------+-------------+
|PAD                                            |    Slack    |Relative Skew|
+-----------------------------------------------+-------------+-------------+
|DataOut<0>                                     |        0.667|        0.0 |
+-----------------------------------------------+-------------+-------------+ 即要求的Tco4ns, 实际的Tco3.333ns, 寄存器输出的最大延迟不超过3.33ns.

        在实际应用中, 还需考虑其他的一些因素, 比如时钟布线的策略, 比如星形结构, Daisy Chain结构等等. 不同的策略分析的方法有所差别
评分
参与人数 1威望 +2 收起 理由
SuperX-man + 2

相关帖子

沙发
coco11| | 2011-2-11 16:04 | 只看该作者
这个我终于不用找翻译了。唉。

使用特权

评论回复
板凳
bairan168| | 2011-2-12 18:41 | 只看该作者
楼上什么意思?这么好的资料要找翻译?

使用特权

评论回复
地板
SuperX-man| | 2011-2-14 11:27 | 只看该作者
不错的分析

使用特权

评论回复
5
小云001| | 2011-2-14 14:49 | 只看该作者
比较的很详细,条清缕析

使用特权

评论回复
6
老大的幸福| | 2011-3-23 22:15 | 只看该作者
不错的**

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

411

帖子

1

粉丝