LATTICE FPGA IO 约束设置 初探

来源:互联网 发布:广告机软件 编辑:程序博客网 时间:2024/05/16 15:07

最近在边学边开发一个LATTICE FPGA 项目,需要使用时序约束。
发现 关于LATTICE FPGA IO接口的时序约束资料太少了,弄了好久才弄出点眉目这里先抛砖引玉希望能有高手给指点指点。首先请大家先看一下Altera FPGA 的时序约束分析 http://blog.csdn.net/zmq5411/article/details/7881591
我们会发现由Altera的无论INPUT的MAX DELAY还是MIN DELAY,OUTPUT的MAX与MIN DELAY 其实一部分是设定的FPGA外部器件(包括FPGA走线) 的值一部分是设定FPGA内部的值,这里就是Altera与LATTICE的IO约束设置不同的地方了。LATTICE的设定值则是针对FPGA 的设定。这是弄了好久才发现的原来是同一个思路一个设定外部值(Altera),一个设定内部值(Lattice)。这里就不说明Altera的设定了参看上边引用的网址。下面说一下LATTICE 当然在这之间你是要看明白Altera那个的谁让LATTICE的资料少呢!那篇是神文呀!严重推荐。
好了言归正传:
首先设定INPUT_SEUP

INPUT _SETP 的TIME 值设定实际上就是FPGA的IO输入端的Tsu_f
Tsu_f=Tclk-Tpcb(max)-Tco_d(max)-(Tclk_d-Tclk_f);
在不考虑时钟偏斜的基础上(Tclk_d-Tclk_f)=0;
Tsu_f=Tclk-Tpcb(max)-Tco_d(max)
Tclk 时钟频率 Tco_d外设的输出最大延时;发现没(Tpcb(max)+Tco_d(max))这个就是Altera的输入最大延时(不考虑偏斜的)
HOLD TIME 就是Th_f;
Th_f<=TCo_d(min)+Tpcb(min);这个和Altera是一样的。TCo_d(min) 就是外部器件的To_h_d(输出HOLD值)
下面是关于这个的时序分析:

可以看到在时序分析中,可以看出Time就是SetUp值:Tsu_f就是Data Required 4ns;时间宽容=Req(必须时间)-Arrival(到达时间),可以这样理解 Required 是给FPGA 数据传送的最大时间限制 而Arrival时间是数据输入到FPGA要是用该数据的各个模块中寄存器的时间 必须保证有这个时间数据才能传送到。所以时间宽容就=给定的必须完成数据稳定输入的时间req-到达使用该数据路径消耗的时间。

Th_f就更没什么说的了理解的方式一样 slack=req-arri。
再来说说CLOCK_TO_OUT

这里的TIME 其实就是FPGA的Tco(max)的最大允许值。MinTime 其实就是FPGA输出的Th_of(输出HOLD值)
Tco(Max)=Tclk-Tco_d(max)-Tpcb(max);不考虑偏斜的;
Tco_d(max)+Tpcb(max) 眼熟不 这有是Alera的设定值。
Th_of+Tpcb>=Tco(min)_d
Th_of>=Tco(min)_d-Tpcb;
下面是关于这个的时序分析:

首先我们看到输入的Time其实就是Tco_f 也是一种逆向的setup呵呵。
slack(时间宽松)=req(必须时间Tco_f最大值Time)-arrival。这样理解数据需要通过的各个模块路径要arrival时间才能输出
而规定的最晚输出时间是req ,因此slack(时间宽松)=req(必须时间Tco_f最大值Time)-arrival。
再看保持时间Th_of

我们看到关于Min Time 其实就是Th_of 就req. Slack=arri-req.
可以这样理解,系统设计要求的FPGA保持时间最小值(Th_of>=Tco(min)_d-Tpcb)是req,而数据从产生到路径输出时间是arri 时间宽容自然就是arri-req 。
以上是关于LATTICE FPGA IO 约束的简单的分析,往高手指正。QQ:1369807979.

原创粉丝点击