UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 61861

Zynq-7000 SoC, I2C - Zynq PS I2C 控制器中缺少毛刺滤波器实现方案

描述

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。

毛刺滤除过程:

  1. 检测 SDA 或 SCL 信号上的转变。

    用户需要为 SDA 和 SCL 实现独立的毛刺滤波电路。


  2. 当检测到时钟边沿时,加载计数器,计数值应为需要去除抖动的时钟周期的数量(应可去除SDA 和 SCL 信号的 50ns 抖动)。
    将计数器递减。
     
  3. 当计数器递减到 0 时,在输出线路断言之前的总线状态。
    如果信号值又发生变化,复位计数器,且不改变信号值。
    这样能消除任何毛刺。
     
  4. 在计数器递减到 0 时,如果信号没有变化,那么在输出信号上分配新的 SCL 和 SDA 值。


注意: 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 SoC 器件:芯片修订差异 N/A N/A
AR# 61861
日期 05/28/2018
状态 Active
Type 设计咨询
器件
的页面