微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 问i2c 设计中的时序约束问题

问i2c 设计中的时序约束问题

时间:10-02 整理:3721RD 点击:
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期间,SDA 从1->0 后起码50ns后,SCL才会从1->0.  如果需要创建的话,应该怎么写。
如果需要分别创建时钟,应该怎么约束这两时钟间的关系? 假定以SDA做clock的时钟域,总共就2个register: 1个是这里说的start,另外一个就是和start很类似的stop信号(在scl为高期间,SDA的上升沿认为是stop信号,且SDA起码上升50ns后,SCL才会从1->0),
是否需要设置 false_path?
先谢谢大家了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top