本文章探讨一下FPGA的时序input delay约束,本文章内容,来源于明德扬时序约束专题课视频。
《FPGA时序约束分享01_约束四大步骤》概括性地介绍 了时序约束的四个步骤,对时序约束进行了分类,并得到了一个分类表。
《FPGA时序约束分享02_时钟约束》详细介绍了关于时钟的约束,根据时钟来源可以分成输入时钟约束、PLL等衍生时钟约束和自己分频的时钟约束等三种类型。这三种类型的约束方法均有所不同,读者需要掌握区分方法。
本文,笔者将详细介绍输入延时(input delay)的概念、场景分类、约束参数获取方法以及约束方法。
大家好,欢迎大家收看明德扬推出的至简设计法系列视频教程。本节课我们继续时序约束的第三个步骤,output delay 的一个设置。我是本人视频主讲潘老师。来讲这个视频这个步骤之前呢,我们来看一下我们的提供的步骤。这个图片啊,我们第三大步骤就是output delay 的。那我们这个步骤呢要看的时候要看三种情况啊,一种是系统同步的情况,一种是源同步的情况。而源同步呢我们又分SDR和DDR这两种啊,所以归纳起来我们有三种情况。这三种情况呢就会有不同的设置。我们这次需要参考的资料呢,仍然是我们这个PDF文档啊,我们提供给大家一个PDF文档。好,我们看一下啊标题啊,我们这次课程我们呢会讲这几个步骤啊,第一个输出原始的概念。第二个就是我们用两种的测量方法去得到我们的时序参数,然后去来进行进行约束。之后呢,我们看第三种呢就是我们的不同情况啊,第一个是系统同步,第二个是源同步。而源同步呢我们就分成SDR和DDR这两种啊。
第1节:输出延时概念
目标:让FPGA调整时序,使时序满足下游器件要求。max用于考虑建立时间:跟着正数,表示数据在时钟采样沿之前就到达。公式:最大板级延时+TSUmin用于考虑保持时间:后面负数,表示数据在时钟采样沿之后还保持了一段时间 。公式:最小板级延时-TH假如板级延时为0,则max就是下游器件的“TSU”;min则是下游器件的“-Th”。
好,我们看第一个输出延时的概念。首先我们设置输出延时,为什么要输出延时呢?我们目标是让了为了让fpga调整它自己的输出的时序,使我们输出的时序满足下游器件的一个要求。这样子呢我们下游器件呢就能够正确的采集我们的时序了啊,所以目标是这样子。大家记住目标是为了下游器件正确的采集,因此要保证自己输出的是正确的啊,所以我们要自己去调整。那么我们同样的就是告诉fpga,我们下游器件的要求是什么啊,我们告诉我们fpga下游期间要求是什么啊,我们就根据知道这个要求,我来自己调整这个时序的。这就是我们这个输出延时这个目标。啊,记住fpga是输出啊,到这个下线是输入。好,我们的这个呃输出延时同样有两个参数,一个是max,一个是min的,一个是最大,一个是最小的延时,最大的延时。干嘛用呢?你可以用于这样考虑,是用于考虑建立时间用的啊,他们一般是跟着正数啊,正数表示数据在时钟采样沿之前就到达了啊,我们公式呢这个值怎么来的,这种最大板延时加上这个TSU啊,TSU就是建立时间。谁的建立时间呢,是下游器件的建立时间啊,也就是说我的板的延时加上你下游期间他要求的鉴定时间就是我这个max 啊。而这min呢是什么?最小是用于考虑保持时间,谁的保持时间是下游期间保持时间啊,后面跟着负数表示数据在使用采样沿之后还保持了一段时间啊,是这样意思,而我们的公式是怎么样呢?是最小的板级延时啊,就是延时减去TH啊,这个就保持时间。这个参数从哪里来呢?从下游器件这个要求里来啊,比如说我的板子延时在电路板子上延时减去你的这个要求,保持时间就是我的一个啊最min的一个最小延时就注意一般这个值是比较小,而这比较大一减去就成了负数了啊。例如啊例如我们板子延时是零啊,板子假如说一个很理想的情况下,就是我现在一直没一点延迟都没有,反正延迟为零,这也是很常见的一种情况啊,反正也是为零。而就是下游期间的这个TSU啊,这个就是下游期间的建立时间要求。而这个面呢则是下游器件的。保持时间这个负号啊,负点击TH这也是。就是这个时候呢,这个最小的是一个负数啊是个负数。这就是我们的输入延时概念。在这个里面要记住的是公式啊,最大板的延时加上你的鉴定时间要求,就是我的max 啊,最小板的延时减去TH就是你保持时间,,就是我的最小时间要求。
第2节:约束语句
第3节:输出延时的目的
第4节:参数获取的两种方法
好,第二个我们看一下两种测量方法。对于。我们的output delay 呢也有两种的一个测量方式。
4.1 下游器件的参数(推荐)
第一种呢是根据下游器件的参数啊,也就是说我们呃从下游器件它一定有数据手册。它的数据手册一定会告诉你这个建立时间和保持时间的要求。我们从在建立时间保时间里面得到它参数之后呢,就可以进行设置了啊,就约束了。
4.2 示波器测量
第二种方法是用吸波器测量我们下游器件的一个输入端口啊,去看到得到它的时序信息。得到什么时序信息呢?是得到它的一个啊,比如说它延时这种信息啊,但这种呢我们一般呢不常用。我们推荐的是利用这一种方法,这要求我们呢这个硬件呢就做的规范啊,这个很好一些啊,不要说延时来抖来抖去啊这种情况。所以一般我们之前讲了也讲下游器件这种参数的一个方式。
第5节:各应用场景下的约束方法
好,我们看一下啊,我们分不同情况来讨论一下这种情呃怎么约束的问题啊。
5.1 系统同步
好,第三,我们就根据不同情况呢,我们要进行配置的第一种呢叫系统同步。系统同步呢上节课已经讲过,就是fpga和下游器件呢都是共用一个时钟的啊一个时钟。我们可以认为这个时钟的延时是等于零的啊等于零的。好,而他fpga把这数据送出来啊,它是有一定的延时啊,送上给这个下游器件。那下游器件这里面它有自己的一个建立时间保持性要求。我们从数据手册手册里面会得到它这样的参数不到它建时间是2万秒,它的这个TH就是1纳秒的,它的鉴定时间保持性要求。而这里呢就是可能我这个延时啊符合我的一个抖动的情况啊。延时这里我们通过一个呃测量啊,或者说计算方式可以得到。比如说它的方式是哎不是它抖动最大是0.5,有时候是0.3,最小是0.3。ok那你这样得到之后呢,下一步呢我们就知道它进行配置了。比如说它最大延时什么呀,就是我的最大的板级延时,加上我的建立时间要求就是2加上0.5,就是我的最大的一个延时。啊,而最小的是什么呢?这是我最小的0.3,这也是减去我的保持时间要求啊,就是这个1纳秒,那是0.3减去一,那就负的0.7,这个是这个要求啊。我们在这PDF130页呢也有讲述这个过程的概念啊,请大家可以看一下啊,我们看到这约束方式。第一个是生成时钟呢啊这个肯定是要有的,每个端口进来都有个时钟。然后呢,我们会告诉他这个时钟啊,这个时钟它的最大延时是多少呢?是2.5啊,它的对象是这个DOUT,就是这个DOUT。而它最小延时的是-0.7。好,这是系统同步的情况。系统同步就是时钟呢是共用一个的是fpga跟下游器件共用一个的。
5.2 源同步SDR
好,接下来我们看一下源同步,就是说它的fpga送数据的同时,也送时钟给下一个模块啊,时钟和数据一起送的。其中我们要跟SDR和DDR。SDR是指边沿上升沿去采样,SDR是指上升点和下降点都去采样。
因此我们先看一下SDR是吧?SDR就是上沿进行采样的方式。啊,同样的方式呢,我们同样呢也能得到它的一个结果。它跟是跟系统同步是一样的啊,它它的方法也是一样的,它也是通过查数据手册得到我的鉴定时间,它保持的要求也能知道我的这个延时的抖动是多少啊。比如说我们测量之后得到抖动是多少,得到最大抖动和最小抖动之后呢,我就能配置啊。这公式也讲了啊,最大的是指我的延时最大加上我的建立时间要求啊,而最小是指我的延迟最小减去我的这个呃保持时间要求,就是我的最小
5.3源同步-DDR(查手册方法)
然后DDR呢,DDR是指上升沿下降沿都是同步,都是都采样的。因此呢它是这样子采样啊,这边和这边都会采样哈,都会采样。我们可以通过一个方式是吧?例如说我们去查这个手册啊,我们通过同样可以查手册得到他这个要求。比如说他会要求你这个建立时间多少,保持时间多少,而这边的建立时间多少,保时间多少。例如说我们这里有个例子啊,比如说他的商业鉴定时间要求是0.7。比如说这个是0.7,这个是0.3,这个是0.6和这是0.4啊。因此呢我们就要对它进行配置约束啊,outlay啊我们可以看到时钟生生成啊生成一个时钟。好了,我们看一下它最大的一个延时就是啊零点7。对于它来讲最大是0.7,最小是什么呢?啊,0减去0.3。我们这时候把那个板子验收啊,就考虑为零了啊。0减去0.3。而在这个时刻呢,我们是最大的是0.6,最小是零减去0.4,那就是。负的0.4啊,注意的是我们这个for下降沿的时候,要加上这个clock for啊加I杠ADD delay。好,加上这句话啊,这个是我们那个正确的方式。其中这个啊这个比如说这个可能是不一定要的啊,这个中间这个不一样。我们这最主要在讲的是这个后面这个四个部分,前面部分还是跟我们的时钟的方式是一样的。比如说我们在前面时钟进来,还有这个我们就要这个后面。假如说我们配置output delay 哈,再加上后面这四句话的啊。这是我们DDR的一个方式。
好了,有的同学说我们的input delay 有个什么叫边缘呢?也叫叫中心对齐的。为什么我们这里就没有了啊,因为大家知道我们input delay 那个是靠测量的方式去得到的啊,而我们这个呢是查数据手册的方式,查数据手册。那么他的边缘这个点的时候,他就不不可能会抖动的啊不可能会抖动的。他一定会建立。你在下降沿的时候呢,你在之前会稳定,稳定多久,之后会稳定多久,因此他一定是这么稳这样一个情况的啊,他会把这个实际参数要求给你啊,所以我们没有什么边缘对齐和中心对齐的一个情况。啊,我们从查数据手册就会查到这几个参数,然后进行配置就可以了啊。还有一点就是对于我们的板级延时的一般情况下呢,如果我们硬件做的好的板,这件事是不需要考虑的。也就是说我们的output delay 一般呢就是设置它的鉴定时间啊,就是从手册里面得到它鉴定时间和保质时间这两个参数。然后根据它公式直接就是配置就可以了啊,所以它output delay 的方式相对比较简单。
第6节:总结与建议
好,我们总结一下,我们还是按照根据根据我们的经验,就是按照前面的顺序去索引,找到对应的情况,按要求进行约束啊。比如说我现在这个端口是属于上面三种情况中的哪一种,如果是哪一种,你就按照那一种进行配置啊进行约束就可以了。
啊,第二个就是我们还是跟前面input delay 的时候强调过的input delay 、output delay就是告诉工具我现在的实际情况。比如说我告诉我fpga下游期间的情况是要求是什么啊,直接把这个结果告诉fpga就行了。你不用管fpga他怎么移啊,他要移多少,你都不用管,你就告诉他现实的情况啊。然后fpga他自动会计算,最后决定我要偏移多少时序。然后后面有个相似的,就是假如说我们有一个叫offset in /out这种东西啊,就是告诉你之前你偏移多少哈,偏移多少啊,从而满足时序这个这样子的,我们就要自己去计算这个这一步呢就是不需要计算了。啊,这就是我们的output delay 一个配置方式啊,相对比较简单。好,本次视频讲这里,谢谢。
以上就是明德扬时序约束连载课程中的相关知识,想要获取时序约束相关资料的同学可以(加W:MDYfpga003 )陈老师