I2C 控制器规范 v2.1 规定了滤除快速工作模式下 SDA 和 SCL 线路上最大间距为 50ns 的毛刺。
Zynq-7000 SoCs PS7 中的 I2C 控制器没有实现这些毛刺的滤波电路。
SDA 或 SCL 线路上的毛刺会导致信号线路的瞬间错误触发。
SDA 上的毛刺会导致错误 START 条件或错误 STOP 条件的识别,从而破坏总线协议。
SCL 上的毛刺会导致错误的数据传输,也会破坏总线协议。
两种情况下,数据传输都会受到破坏,并且总线可以挂起。
为了避免这种情况,用户需要实现一个电路从 SDA 和 SCL 线路中滤除毛刺。
影响:
主要影响。
在将信号送到控制器之前,用户需要在外部利用电路滤除 SCL 和 SDA 上的毛刺。
解决方法::
用户可在 Zynq 的可编程逻辑部分或外部可编程器件(例如 CPLD)中采取如下解决办法。
毛刺滤波器电路由 SDA 和 SCL 信号的亚稳态触发器和去除抖动器逻辑组成。
逻辑电路在更快的时钟域上工作,能够采样在 SDA 和 SCL 信号上出现的毛刺。
SDA 和 SCL 信号穿过一个三级同步器以消除亚稳态。
逻辑电路需要更快速的时钟来滤除毛刺,且时钟频率至少应为 40 MHz。
不过,由于亚稳态触发器的存在,使用该更快频率的时钟源无需大量滤除毛刺。
推荐的时钟频率为 100 MHz。
毛刺滤除过程:
用户需要为 SDA 和 SCL 实现独立的毛刺滤波电路。
注意: SCL 和 SDA 信号都需要去除 50ns 的抖动,以便让 SCL 和 SDA 的时序关系保持不变。
用户可参考附加的代码片段实例。
受影响的配置:
所有采用 I2C 控制器作为主机的 Zynq 器件。
受影响的器件修订版本:
全部,无计划修复。
请参考(Xilinx 答复 47916) - Zynq-7000 SoC 芯片修订版差异。
分辨率:
这是第三方勘误表,不会得到修复。
文件名 | 文件大小 | File Type |
---|---|---|
filter.vhd | 7 KB | VHD |
debounce.vhd | 7 KB | VHD |
Answer Number | 问答标题 | 问题版本 | 已解决问题的版本 |
---|---|---|---|
47916 | Zynq-7000 AP SoC 器件:芯片修订差异 | N/A | N/A |
AR# 61861 | |
---|---|
日期 | 05/28/2018 |
状态 | Active |
Type | 设计咨询 |
器件 |