I2C验证中需要注意的问题
- 1.NACK出现的时刻
- 2.Restart和Start区别
- 3.保持时间(Thd)
1.NACK出现的时刻
通常,在Master访问到错误的Device ID时,Slave会返回Nack,表示访问失败。此外,在Master对Slave读访问时,在Slave返回最后一笔数据时,Master会响应Nack,表示接下来,Master将要发起Stop bit。
2.Restart和Start区别
Master在一次操作结束的最后,需要发起Stop Bit,以表示本次访问结束。然后,在下次访问开始时,仍然需要先发出Start bit,表示新一次访问的开始。
但是,如果Master在收到Ack后,没有发出Stop bit,而是又一次在SCL高电平时将SDA拉低,那么这就就是Restart bit,表示重新发起访问。刚开始接触I2C,容易被SCL、SDA的变化搞懵,所以弄懂Restart很重要。
3.保持时间(Thd)
无论是标准速度(Standard speed)、快速(Fast speed)、快速plus(Fast speed plus),总会发现Thd可以是0,你可能感到奇怪。但是,看过I2C时序图,也就不会这么想了。I2C的Thd指的是时钟下降沿和数据变化沿的间隔,所以Thd支持最小配置为0。这里需要注意的是,如果将Thd配置为0,在DUT打开虑毛刺功能,且外部有毛刺输入时,因为虑波会导致实际进入到逻辑里的SCL信号的下降沿滞后于SDA的变化沿,如果此时SDA信号恰好是发生了变化,DUT可能错误检测到一个Start bit 或者Stop bit,所以无论是设计还是验证,这一点需要注意。