在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6084|回复: 10

[求助] i2c设计的时序约束问题

[复制链接]
发表于 2012-6-8 12:00:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
i2c 协议规定, 在SCL为高期间,SDA的下降沿认为是start信号,
所以设计检测start 的code用:
always (negedge SDA or negedge SCL) (假定这里只有SCL=0做start的reset)
  if (!SCL)  start <= 0;
  else start        <= 1;
另外内部的一个ff,需要用这个start信号做reset(假定这里只有start做reset信号)
always (negedge SCL or posedge start)
  if (start)   ff1  <= 0;
  else ff1  <= a; ...

现在的问题是,ff1的reset信号start是在scl的下降沿被清0的,而ff1本身也是在scl的
下降沿改变的,所有对ff1来说,需要保证他的reset 信号start的removal时间没有问题
。那么pt里面应该如何约束,以及如何检查removal没有问题呢?
这里应该如何约束。
1.是否需要分别针对SDA SCL各创建一个时钟,假定SCL的频率在5m, 在SCL=1期间,SD
A 从1->0 后起码50ns后,SCL才会从1->0.  如果需要创建的话,应该怎么写。
如果需要分别创建时钟,应该怎么约束这两时钟间的关系? 假定以SDA做clock的时钟域
,总共就2个register: 1个是这里说的start,另外一个就是和start很类似的stop信号
(在scl为高期间,SDA的上升沿认为是stop信号,且SDA起码上升50ns后,SCL才会从1->
0),
是否需要设置 false_path?
先谢谢大家了。
发表于 2012-6-9 14:54:13 | 显示全部楼层
用一个相对高速的时钟来完成,这两个信号都不要作为时钟处理
发表于 2012-6-10 17:53:04 | 显示全部楼层
谢谢大家的讨论!
 楼主| 发表于 2012-6-13 12:04:53 | 显示全部楼层
如果可以的话,当然是用高速时钟检测最好了。但是受项目限制,不得不采用现在做法。 只能先手工检查了
发表于 2012-6-14 19:36:33 | 显示全部楼层
I2C协议比较简单啊,学习学习。
发表于 2012-6-15 23:57:40 | 显示全部楼层
大家很厉害。向大家学艺
发表于 2015-6-2 17:05:23 | 显示全部楼层
学习学习
发表于 2015-7-11 23:11:55 | 显示全部楼层
项目受限也要去想象其他方法,尽量别直接这么搞,
被别人的这么做的坑过。。。
发表于 2015-7-11 23:24:52 | 显示全部楼层
thank you
发表于 2017-12-22 09:58:41 | 显示全部楼层
不知你的问题解决了没有?
这个问题是否 应该首先 考虑 SCL 和SDA都是从PORT端过来的 信号,然后要清楚,SCL和SDA 到达你这个start和stop的DFF 时间,因为在这里SDA是在做时钟信号来用,所以要对SDA做出一个相对于SCL的约束,我是这么理解的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-26 15:43 , Processed in 0.029277 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表