打印

此种情况如何做时序约束

[复制链接]
4343|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如图1,使用了TI的视频解码芯片,数据和时钟的关系见图2。这里有几个问题想请教大家:
1、由于输入的视频流有多种格式,因此解码后送给FPGA的时钟也有变化,可能为74.25M、也可能为148.5M,还有可能是别的时钟。请问这种情况下,在FPGA内部对clk如何做周期约束呢?
2、这种情况下如何对输入的data做offset约束呢?

针对上边两个问题,我的做法是这样的,不知道对不对,请大家指教:
1、进行clk周期约束的时候,我是按照最快的那个可能时钟约束的,即是按照148.5M的频率约束的,我约束的是150M。
2、在150M周期约束的前提下,按照图2进行的offset约束。tvp7002设置的数据在时钟上升沿输出,于是数据即是在clk上升沿T/2-(0~1.5ns)之前准备好,考虑PCB走线,按1ns算,我写的offset约束是 TIMEGRP "iTVP7002_DATA" OFFSET = IN 2.5ns BEFORE "iTVP7002_PCLK"。
3、在调试的时候,发现有部分FPGA存在问题。初步分析认为是时序约束的问题,在offset in约束中增加了valid约束 TIMEGRP "iTVP7002_DATA" OFFSET = IN 2.5ns VALID 2ns BEFORE "iTVP7002_PCLK"之后,出问题的FPGA也没有问题了。后来又做了如下实验:
(1)、考虑可能PCB走线延迟估算稍大,改为OFFSET = IN 2ns ,有问题的FPGA仍存在问题;
(2)、增加valid约束,OFFSET = IN 2ns  VALID 1.5ns 或者OFFSET = IN 2.5ns VALID 2ns ,有问题的FPGA不再出现问题。到现在也解释不了为什么会这样。

以上都是我的个人理解和做法,感觉对时序约束理解的还是不透彻,请大家指教啊!

7002.jpg (80.46 KB )

7002.jpg

相关帖子

沙发
Backkom80| | 2012-9-25 09:40 | 只看该作者
dataclk是单端还是差分?我猜可能是单端的,clk pol这个是不是用来控制出何种时序的,0:上升沿将数送出,1:下降沿将数送出?

使用特权

评论回复
板凳
magic323|  楼主 | 2012-9-25 09:46 | 只看该作者
2# Backkom80
嗯,是单端的。CLK POL的作用正如你所说。

使用特权

评论回复
地板
dan_xb| | 2012-9-25 13:41 | 只看该作者
记得说FPGA的时候先说型号。。。。。。。

这个是IODELAY和IOB里面的FF要解决的问题,这个是一个经典的源同步时钟设计

通过调整随路时钟和数据之间的关系,来采到正确的信号

而调整的方法,是由FPGA结构决定的,所以,你要先说你用是什么FPGA,看了一堆问题的描述,也不知道你用的是什么。

时序约束不是万能的,不能指望时序约束有那么大的范围,尤其是接口上,需要DCM,IODELAY及FF等等的调节

使用特权

评论回复
5
magic323|  楼主 | 2012-9-25 13:50 | 只看该作者
4# dan_xb
好的,首先谢谢您的指点!
我使用的是xilinx Spartan3AN系列芯片 XC3S400AN。
硬件上clk和data走的是等长线,这种情况下该如何做时序约束呢,或者是采取何种措施保证时钟在FPGA内部能正确的采样数据呢?有没有相关的资料可以参考,谢谢您!

使用特权

评论回复
6
Backkom80| | 2012-9-25 14:05 | 只看该作者
下图是接口的时序,valid是一个时钟周期 1/148.5M
delay = t3+PCB上走线的误差(数据与随路时钟的差)
offset是约束的量。

未命名.JPG (14.9 KB )

未命名.JPG

使用特权

评论回复
7
Backkom80| | 2012-9-25 14:05 | 只看该作者
当然还要考虑时钟有2%的占空比误差。

使用特权

评论回复
8
magic323|  楼主 | 2012-9-25 14:24 | 只看该作者
7# Backkom80
谢谢!
就是说多个可能的时钟的话,我按最高的时钟进行约束时对的了?
我先按您说的试下啊!

使用特权

评论回复
9
dan_xb| | 2012-9-25 16:41 | 只看该作者
这个最好就是随路时钟过DCM移相以后去采数据

使用特权

评论回复
10
magic323|  楼主 | 2012-9-25 17:18 | 只看该作者
9# dan_xb
您好!谢谢您的回复,请问DCM的相移多少是怎么判断呢,是根据前端芯片的Tco和PCB的走线延迟来推断吗?
说到这里,您看看我的这个小系统,该怎么优化。
下图是系统大致框图,FPGA前端有4个视频格式转换芯片,FPGA采集4个芯片的输入,根据DSP的模式选择将对应的视频流传送给DSP。
我现在的做法是分别对4个前端芯片做offset in约束,时钟分别是各自时钟。对输出时钟的处理是使用MUX通过模式选择输出,如图2。我知道这种做**带来很大的延迟,而且是门控时钟的做法,也尝试过使用MUXBUFG的方式,但是没有成功。不知道有没有更好的方法啊?谢谢!

QQ截图20120925171824.png (19.31 KB )

图1

图1

QQ截图20120925171833.png (2.42 KB )

图2

图2

使用特权

评论回复
11
magic323|  楼主 | 2012-9-25 17:20 | 只看该作者
使用的是spartan3AN芯片XC3S400AN,内部有4个DCM,其中一个DCM用于内部全局时钟了。

使用特权

评论回复
12
GoldSunMonkey| | 2012-9-25 23:29 | 只看该作者
1. 是对的
2. 想法是对的。

使用特权

评论回复
13
GoldSunMonkey| | 2012-9-25 23:36 | 只看该作者
3. 不知道你的时钟是怎么连的,是不是和数据是等长?

使用特权

评论回复
14
gaochy1126| | 2012-9-26 07:55 | 只看该作者
使用锁存器,试一试,数据就可以实现固定了

使用特权

评论回复
15
lzmm| | 2012-9-26 08:25 | 只看该作者
使用en允许使能信号

使用特权

评论回复
16
magic323|  楼主 | 2012-9-26 12:45 | 只看该作者
13# GoldSunMonkey
时钟是和数据等长的。

使用特权

评论回复
17
GoldSunMonkey| | 2012-9-26 13:44 | 只看该作者
13# GoldSunMonkey  
时钟是和数据等长的。
magic323 发表于 2012-9-26 12:45

等长其实PCB就没有延时了

使用特权

评论回复
18
dan_xb| | 2012-9-26 14:35 | 只看该作者
9# dan_xb  
您好!谢谢您的回复,请问DCM的相移多少是怎么判断呢,是根据前端芯片的Tco和PCB的走线延迟来推断吗?
说到这里,您看看我的这个小系统,该怎么优化。
下图是系统大致框图,FPGA前端有4个视频格式转换 ...
magic323 发表于 2012-9-25 17:18
有一个要注意的是,我们一般都是切换数据,即使要切换时钟,也要考虑到各种问题
这种情况下,要分开来考虑
输入的那边,显然使用DCM是不现实的,可以使用IODELAY
S3的IODELAY在温度变化的情况下,延时值会发生一定程度的改变,但是因为你的频率低,所以还好。
数据收进来以后,经过FIFO,FIFO的另一端使用你切换以后的时钟,并且在时序约束里面去掉这两个时钟之间的联系
之所以用切换后的时钟,为的是时钟同源

差不多就是这样

使用特权

评论回复
19
jakfens| | 2012-9-26 15:53 | 只看该作者
mark

使用特权

评论回复
20
GoldSunMonkey| | 2012-9-26 15:56 | 只看该作者
:lol

使用特权

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

本版积分规则

3

主题

22

帖子

0

粉丝