FPGA中的时序分析(一)
谈及此部分,多多少少有一定的难度,笔者写下这篇文章,差不多是在学习FPGA一年之后的成果,尽管当时也是看过类似的文章,但是都没有引起笔者注意,笔者现在再对此知识进行梳理,也发现了有很多不少的收获。笔者根据网上现有的资源,作进一步的总结,希望能够有所帮助。
一个不错的网站,类似于一个手册,随时可以去查询如何去定义各个时序约束指令怎么用。http://quartushelp.altera.com/current/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5.htm
静态时序分析(STA,static timing analysis),对于STA的理解,可以想象在FPGA的内部好比一块PCB,FPGA的逻辑阵列好比PCB板上的一些分立元器件,PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通,PCB上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过内部逻辑门传输也有一定的延时,PCB信号走线也有延时,FPGA信号走线也有延时,这就带来了一系列的问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理之后从FPGA的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输延时的不一致,不仅会影响FPGA本身会给FPGA之外的电路或者系统带来诸多的问题。
所以针对上面的一系列问题,设计者需要提出一些特定的时序要求,针对现有的电路给出时序约束,
分析时序,本质上是节点对节点之间的时序分析,如果没有节点,时序也就无从谈起。在FPGA中,我们可以把节点当作是寄存器与寄存器之间的时序分析,寄存器与寄存器之间可能还有一些组合逻辑充斥着。所以时序路径通常有四大类:
(1)寄存器到寄存器类型,即reg2reg;
(2)输入引脚到寄存器类型,即pin2reg;
(3)寄存器到输出引脚类型,即reg2pin;
(4)输入引脚到输出引脚类型,即pin2pin;
针对上述四种基本时序路径,最关心的就是数据信号和时钟锁存沿之间的建立时间和保持时间的关系。
对于四种延时路径可以用图1所示,对于signal in,是外部IC到FPGA的输入信号引脚,一般情况下芯片手册都会给出各引脚关于时序方面的说明,如Tco、TSU、Th、等信息,这个是在分析时序时会用到。Reg1到reg2之间的时序路径是相当于在FPGA内部的寄存器到寄存器之间的延时路径,signal out是相当于FPGA的输出信号到外部IC之间的引脚信息。

图1 时序路径分析
这里只分析FPGA内部的时序路径,外部IC的时序路径需要结合具体的IC数据手册,然后结合FPGA输入引脚部分的大概延时进行推测一个值,之后具体再分析。
所以从寄存器1到寄存器2之间的延迟时间的分析。

图16.2 寄存器到寄存器延时
上图是考虑各种延迟之后的从输入数据到输出数据的时间延迟。
所以我们引入第一个概念:数据抵达时间(官方视频上面的概念),也就是实际到达时间,
, 而启动沿时间往往是按0处理,只考虑后三者。
引入第二个概念:数据要求时间

图16.3 数据要求时间分析
由于有寄存器建立时间的参与,所以会使得数据锁存时间由下面的公式决定,但是在应用时Tsu按照负值代入公式,这样计算的才正确,可能是官方的bug,所以按照负值计算即可。

建立余量
为了说明怎么计算得到建立余量,特举例如下所示。




对于公式上面的锁存沿时间,其实就是启动沿和锁存沿之间的差值,也就是建立时间关系,建立时间关系是理想状态下,启动沿与锁存沿之间的距离,如下图2所示,这个建立时间关系 = 时钟周期,所以在计算的时候,可以先计算出建立时间关系值,然后也就确定了锁存沿时间。

图2 建立时间和时钟周期的关系
保持余量

还是用我们的经典的图来说明保持余量,那么数据从寄存器1到寄存器2要经过的时间为



其中数据周期时间,是以时钟周期为计算值。
根据上图,用一些数字来计算,如下图


由此得到了保持余量值。
//=======================================================================
更多详细的资料下载可以登录笔者百度网盘:
网址:http://pan.baidu.com/s/1bnwLaqF
密码:fgtb
//=======================================================================
FPGA中的时序分析(一)的更多相关文章
- FPGA中的时序分析(四)
常用约束语句说明 关于Fmax 上述是实现Fmax的计算公式,clock skew delay的计算如下图, 就是两个时钟的差值.到头来,影响Fmax的值的大小就是组合逻辑,而Fmax是针对 ...
- FPGA中的时序分析(五)
时序约束实例详解 本篇博客结合之前的内容,然后实打实的做一个约束实例,通过本实例读者应该会实用timequest去分析相关的实例.本实例以VGA实验为基础,介绍如何去做时序约束. 首先VGA这种情况属 ...
- FPGA中的时序分析(三)
验证公式正确性 前两篇博客提及了关于时序的建立余量和保持余量的计算.结合实际情况,验证公式的运算正确性.结合之前博客提及的LED实验,看一下建立余量和保持余量是否都合格. 建立余量 图1是最大时钟 ...
- FPGA中的时序分析(二)
使用Timequest 笔者对Altera较熟悉,这里以quartus ii中的timequest作为讲解. Timequest分析时序的核心,也就是在于延迟因数的计算.那么建立约束文件,去告诉tim ...
- 【转】关于FPGA中建立时间和保持时间的探讨
时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...
- 【转载】FPGA 中的latch 锁存器
以下这篇文章讲述了锁存器的一些概念和注意事项.原文标题及链接: FPGA 中的latch 锁存器 - 快乐至永远上的博客 - 与非博客 - 与网 http://www.eefocus.com/liuy ...
- 巧用FPGA中资源
随着FPGA的广泛应用,所含的资源也越来越丰富,从基本的逻辑单元.DSP资源和RAM块,甚至CPU硬核都能集成在一块芯片中.在做FPGA设计时,如果针对FPGA中资源进行HDL代码编写,对设计的资源利 ...
- FPGA中的delay与latency
delay和latency都有延迟的意义,在FPGA中二者又有具体的区别. latency出现在时序逻辑电路中,表示数据从输入到输出有效经过的时间,通常以时钟周期为单位. delay出现在组合逻辑电路 ...
- FPGA中的INOUT接口和高阻态
除了输入输出端口,FPGA中还有另一种端口叫做inout端口.如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接.但是,有时候半双工通信就能满足我们的要求,理论上 ...
随机推荐
- android AlertDialog设置点击button不退出(转)
转载于http://blog.csdn.net/csh159/article/details/8127280 使用的是java里面的反射机制: dialog = new AlertDialog.Bui ...
- 用sendcloud来发邮件
平时发验证码邮件都是用免费域名邮箱,但是有时一频繁发多了就发不了了,听说用sendcloud可以避免,还能避免阿里云邮件发QQ邮箱进垃圾箱中,去注册了下,免费账户号每个月才50封,自己玩玩可以吧.. ...
- ASP.NET MVC中的cshtml页面中的下拉框的使用
ASP.NET MVC中的cshtml页面中的下拉框的使用 用上@Html.DropDownList 先记下来..以做备忘...
- Modelsim添加Lattice库
Step 1 安装好modelsim,并将modelsim的目录添加到系统PATH中. (确认方法:在任意位置同时按下Shift+鼠标右键,在出来的菜单里选择“在此处打开命令窗口”,然后输入vsim, ...
- android 覆盖安装问题
1.android中覆盖安装不会导致data/data/package下的数据被删除 2.数据库会有数据库的一套升级机制 3.sharepreference 不会被覆盖,如果在app中有使用Key记录 ...
- LeetCode(35) Search Insert Position
题目 Given a sorted array and a target value, return the index if the target is found. If not, return ...
- nodejs文件上传报错总结
语法: fs.rename(oldPath,newPath,callback) 今天在使用formidable模块做图片上传处理的时候,fs.rename方法的报了一个这样的错:cross-devic ...
- [Windows Azure] Guidelines for Connecting to Windows Azure SQL Database
Guidelines for Connecting to Windows Azure SQL Database 6 out of 12 rated this helpful - Rate this t ...
- Ubantu 使用extundelete恢复数据
所以在维护系统的时候,要慎之又慎,但是有时难免会出现数据被误删除的情况,在这个时候改如何快速.有效地恢复数据呢?本文我们就来介绍一下Linux系统下常用的几个数据恢复工具. 一.如何使用“rm -rf ...
- 【C/C++】程序如何来,编译全过程
概述 编译的目的是把人书写的高级语言代码翻译成目标程序的语言处理程序,编译用的程序(例如gcc)称为编译系统. 一个编译系统把一个源程序翻译成目标程序的工作过程分为5个阶段:词法分析.语法分析. ...