FPGA基础知识7(从芯片手册获取参数FPGA时序约束--“CMOS Sensor接口时序约束”)

需求说明:FPGA基本知识

内容       :如何确定时序约束数值

来自       :时间的诗

来源:http://www.61ic.com/Technology/embed/201304/48186.html

FPGA工程的功能框图如图所示。上电初始,FPGA需要通过IIC接口协议对摄像头模块进行寄存器初始化配置。这个初始化的基本参数,如初始化地址和数据存储在一个预先配置好的FPGA内嵌ROM中。在初始化配置完成后,摄像头就能够持续输出RGB标准的视频数据流,FPGA通过对其相应的时钟、行频和场频进行检测,从而一帧一帧的实时采集图像数据。

采集到的视频数据先通过一个FIFO,将原本25MHz频率下同步的数据流转换到100MHz频率下。接着讲这个数据再送入写SDRAM缓存的FIFO中,最终这个FIFO每满160个数据就会将其写入SDRAM的相应地址中。在另一侧,使用另一个异步FIFO将SDRAM缓存的图像数据送个LCD驱动模块。LCD驱动模块不断的读出新的现实图像,并且驱动3.5寸液晶屏工作。

由于这个工程是移植过来的,SDRAM的时序约束已经添加好并且很好的收敛了。但是,新增加的CMOS sensor的接口也需要做相应的时序约束。下面我们就来探讨下它的时序该如何做约束。

先看看CMOS Sensor的datasheet中提供的时序波形和相应的建立、保持时间要求。波形如图所示。

波形中出现的时间参数定义如下表所示。

我们可以简单分析下这个datasheet中提供的时序波形和参数提供了一些什么样的有用信息。我们重点关注PCLK和D[7:0]的关系,HREF其实也可以归类到D[7:0]中一起分析,他们的时序关系基本是一致的(如果存在偏差,也可以忽略不计)。这个波形实际上表达的是从Sensor的芯片封装管脚上输出的PCLK和D[7:0]的关系。而在理想状况下,经过PCB走线将这组信号连接到其他的芯片上(如CPU或FPGA),若尽可能保持走线长度,在其他芯片的管脚上,PCLK和D[7:0]的关系基本还是不变的。那么,对于采集端来说,用PCLK的上升沿去锁存D[7:0]就变得理所当然了。而对于FPGA而言,从它的管脚到寄存器传输路径上总归是有延时存在的,那么PCLK和D[7:0]之间肯定不会是理想的对齐关系。而我们现在关心的是,相对于理想的对齐关系,PCLK和D[7:0]之间可以存在多大的相位偏差(最终可能会以一个延时时间范围来表示)。在时序图中,Tsu和Th虽然是PCLK和D[7:0]在Sensor内部必须保证的建立时间和保持时间关系,但它同样是Sensor的输出管脚上,必须得到保证的基本时序关系。因此,我们可以认为:理想相位关系情况下,PCLK上升沿之前的Tsu时间(即15ns)到上升沿后的Th时间(即8ns)内,D[7:0]是稳定不变的。同样的,理想情况下,PCLK的上升沿处于D[7:0]两次数据变化的中央。换句话说,在D[7:0]保持当前状态的情况下,PCLK上升沿实际上在理想位置的Tsu时间和Th时间内都是允许的。请大家记住这一点,下面我们需要利用这个信息对在FPGA内部的PCLK和D[7:0]信号进行时序约束。

OK,明确了PCLK和D[7:0]之间应该保持的关系后,我们再来看看他们从CMOS Sensor的管脚输出后,到最终在FPGA内部的寄存器进行采样锁存,这整个路径上的各种“艰难险阻”(延时)。

在这个路径分析中,我们不去考虑CMOS Sensor内部的时序关系,我们只关心它的输出管脚上的信号。先看时钟PCLK的路径延时,在PCB上的走线延时为Tcpcb,在FPGA内部,从进入FPGA的管脚到寄存器的时钟输入端口的延时为Tcl。再看数据D[7:0]的延时,在PCB上的走线延时为Tdpcb,在FPGA内部的管脚到寄存器输入端口延时为Tp2r。而FPGA的寄存器同样有建立时间Tsu和保持时间Th要求,也必须在整个路径的传输时序中予以考虑。

另外,从前面的分析,我们得到了PCLK和D[7:0]之间应该满足的关系。那么,为了保证PCLK和D[7:0]稳定考虑的得到传输,我们可以得到这样一个基本的关系必须满足:

对于建立时间,有:

Launch edge + Tdpcb + Tp2r + Tsu < latch edge + Tcpcb + Tcl

对于保持时间,有:

Launch edge + Tdpcb + Tr2p < latch edge + Tcpcb + Tcl – Th

关于launch edge和latch edge,对于我们当前的设计,如下图所示。

在对这个FPGA的input接口的时序进行分析和约束之前,我们先来看看Altera官方是如何分析此类管脚的时序。

具体问题具体分析,我们当前的工程,状况和理想模型略有区别。实际上在上面这个模型的源寄存器端的很多信息都不用详细分析,因为我们获得的波形是来自于Sensor芯片的管脚。同理,我们可以得到input delay的计算公式如下。

Input max delay = (0 – Tcpcb_min) + Tco_max + Tdpcb_max

Input min delay = (0 – Tcpcb_max) + Tco_min + Tdpcb_min

在这两个公式中,参数Tco是前面我们还未曾提到的,下面我们就要分析下如何得到这个参数。Tco指的是理想情况下数据在源寄存器被源时钟锁存后,经过多长时间输入到管脚上。前面我们已经得到了PCLK和D[7:0]之间的关系,其实从已知的关系中,我们不难推断出Tco_max和Tco_min,如图所示。若PCLK的时钟周期为Tpclk,则:

Tco_max = Tpclk – Tsu

Tco_min = Th

在我们采样的CMOS Sensor图像中,PCLK频率为12.5MHz,即80ns。因此,我们可以计算到:

Tco_max = 80ns – 15ns = 65ns

Tco_min = 8ns

我们再看看PCB的走线情况,算算余下和PCB走线有关的延时。

如图所示,这是PCLK和D[7:0]在SF-CY3核心板上的走线。

如图所示,这是PCLK和D[7:0]在SF-SENSOR子板上的走线,在这个板子上的走线由匹配电阻分两个部分。

根据前面的走线长度,我们可以换算一下相应的走线延时,如下表所示。因此,我们可以得到,Tcpcb_max = 0.35ns,Tcpcb_min = 0.35ns,Tdpcb_max = 0.36ns,Tdpcb_min = 0.31ns。


信号名


SF-CY3走线长度


SF-SENSOR走线长度1


SF-SENSOR走线长度2


总长度(mm)


延时(ns)


PCLK


18


27.7


6


51.7


0.346023622


VD0


16.8


24.9


9.1


50.8


0.34


VD1


19.5


26.8


6


52.3


0.35003937


VD2


16.2


25


9.1


50.3


0.336653543


VD3


18.9


27.8


6


52.7


0.352716535


VD4


15.9


24.8


9.1


49.8


0.333307087


VD5


18.7


28.5


6


53.2


0.356062992


VD6


15.3


24.8


9.1


49.2


0.329291339


VD7


18.7


27.8


6


52.5


0.351377953


HREF


14.6


23.8


9.1


47.5


0.317913386

将上面得到的具体数值都代入公式,得到:

Input max delay = (0 – 0.35ns) + 65ns + 0.36ns = 65.01ns

Input min delay = (0 – 0.35ns) + 8ns + 0.31ns = 7.96ns

加上一些余量,我们可以去input max delay = 66ns,input min delay = 7ns。

下面我们来添加时序约束,打开TimeQuest,点击菜单栏的ContraintsàCreat Clock,做如下设置。

点击ContraintsàSet Maximum Delay,对vdb[0] vdb[1] vdb[2] vdb[3] vdb[4] vdb[5] vdb[6] vdb[7] vhref的set_max_delay做如下设置。

点击ContraintsàSet Minimum Delay,对vdb[0] vdb[1] vdb[2] vdb[3] vdb[4] vdb[5] vdb[6] vdb[7] vhref的set_min_delay做如下设置。

约束完成后,参照前面章节Update Timing Netlist并且Write SDC File…,接着就可以重新编译整个工程,再来看看这个时序分析的报告。在报告中,数据的建立时间有9-13ns的余量,而保持时间也都有7-11ns的余量,可谓余量充足。

另外,我们也可以专门找一条路径出来,看看它的具体时序路径的分析。vd[0]这条数据线的建立时间报告中,66ns的input max delay出现在了Data Arrival Path中。

而在vd[0]的保持时间报告中,7ns的input min delay则出现在了Data Arrival Path中。

时间: 2024-10-03 21:53:33

FPGA基础知识7(从芯片手册获取参数FPGA时序约束--“CMOS Sensor接口时序约束”)的相关文章

[转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网络摄像头基础知识 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Times_poem/article/details/51566877 需求说明:了解IPC(IP Camera)网络摄像头行

FPGA基础知识6(FPGA时钟系统及多时钟系统处理)

需求说明:FPGA基本知识 内容       :第一部分  FPGA各个时钟说明 第二部分  FPGA时钟总结 第三部分  异步时钟同步化及门控时钟 来自       :时间的诗 第一部分  FPGA各个时钟说明 来自:http://blog.chinaunix.net/uid-7547035-id-60220.html 1.         FPGA的全局时钟是什么? FPGA的全局时钟应该是从晶振分出来的,最原始的频率.其他需要的各种频率都是在这个基础上利用PLL或者其他分频手段得到的. 2

FPGA基础知识(四)锁存器、触发器、寄存器和缓冲器的区别

一.锁存器锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化.锁存器不同于触发器,它不在锁存数据时,输出端的信号随输入信号变化,就像信号通过一个缓冲器一样:一旦锁存信号起锁存作用,则数据被锁住,输入信号不起作用.锁存器也称为透明锁存器,指的是不锁存时输出对于输入是透明的.锁存器(latch):我听过的最多的就是它是电平触发的,呵呵.锁存器是

FPGA基础知识10(锁存器、触发器、寄存器和缓冲器的区别)

需求说明:IC设计基础 内容       :锁存器.触发器.寄存器和缓冲器的区别 来自       :时间的诗 原文:http://www.cnblogs.com/wwping/articles/2261312.html 一.锁存器 锁存器(latch)---对脉冲电平敏感,在时钟脉冲的电平作用下改变状态 锁存器是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值,仅当锁存器处于使能状态时,输出才会随着数据输入发生变化. 锁存器不同于触发器,它不在锁存数据时,输出端的信号随

我的 FPGA 学习历程(01)&mdash;&mdash; FPGA 基础知识和 Quartus 的安装

高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大面积的应用与电话.DVD.通讯基站等领域.DSP 与 ARM 的区别在于,ARM 是通用 CPU,DSP 则是专用 CPU.FPGA 则与他们不同,FPGA 的名称的由来是由于 FPGA 功能的成型是在实验室等通常工作环境下进行的:区别与专有集成电路 (ASIC)在晶圆工厂的制造,所以 FPGA 被

IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

需求说明:了解IPC(IP Camera)网络摄像头行业 来自:http://info.secu.hc360.com/2013/06/031051730705-all.shtml#m4 阅读精华整理: 1.对于网络摄像机(IPCamera以下简称:IPC)而言,它用到的解决方案包括成像方案和编解码芯片方案两部分. 成像方案上,商家在CCD或CMOS这两个图像传感器流派间选择.在网络高清方面,采用CMOS的居多,盖因其技术比 较成熟,低功耗.高集成度以及性价比高:而且,CCD做高清还有响应速度慢.

FPGA基础知识0(查找表LUT和编程方式)

资料来源:http://wenku.baidu.com/link?url=QoNSMH7pejiuGqV22sKLVTr2zdHxORcr0R3RnOlNuK17164pHfnBtleayAFQn72Ge2wNUPteF8mcqoGpbEIVWbKWImZCXVVkKhd9oFsSmHC 第一部分: 查找表LUT FPGA是在PAL.GAL.EPLD.CPLD等可编程器件的基础上进一步发展的产物.它是作为ASIC领域中的一种半定制电路而出现的,即解决了定制电路的不足,又克服了原有可编程器件门电路

FPGA基础知识1

1.乘法 在FPGA中,乘法运算可以分为 1)信号与信号之间的运算,用乘法器核实现: 2)常数与信号之间的运算,利用移位及加减法实现. A x 16 = A左移4位: A x 20 = A x 16 + A x 4 = A左移4位 + A左移2位: A x 27 = A x 32 - A x 4 - A = A左移5位 - A左移2位 - A: 注意:乘法运算时,需要先对数据位进行扩充. 2.除法 在FPGA中,除法运算可以分为 1)信号与信号之间的运算,用除法器核实现: 2)常数与信号之间的运

FPGA基础知识2(Xilinx Altera FPGA中的逻辑资源 --Slices VS LE比较)

来源:http://www.union-rnd.com/xilinx-vs-altera-slices-vs-les/ 前言 经常有朋友会问我,"我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?"当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容量的产品,因为我们的产品对成本不敏感.不过,在此还是比较一下两家的产品,简单写写一些自己的想法,供大家参考,如有不对的地方,还请指正! 进入正题 要比较Xilinx和Altera的FPGA,