电路从SDA和SCL线路中滤除毛刺的解决方法及过程

问题描述:
i2c 控制器规范 v2.1 规定了滤除快速工作模式下 sda 和 scl 线路上最大间距为 50ns 的毛刺。
zynq-7000 ap 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 的时序关系保持不变。

iPhone Xs Max手机屏幕到底有多好?史上最佳?
Symwave推出USB 3.0 RAID存储控制器
BaySand以EfinixTMQuantumTM可编程加速器技术扩展其《Programmable-In-ASIC》计划
室内COB显示屏有什么特点,其优势分析
雷士照明未来锁定照明行业大趋势--LED照明
电路从SDA和SCL线路中滤除毛刺的解决方法及过程
电子狗和手机地图导航功能的区别详细概述和数据分析
PixHS技术的8百万像素图像传感器AR0833(Aptina)
LVDS接口有哪些分类
智能台灯语音方案:NRK3303语音识别芯片,更好的用户体验
泰克/TEKTRONIX电流探头供电放大器TCPA400的使用步骤详解
小米6深度评测:速度与颜值近乎完美结合!3000元内无短板的小米6旗舰手机
法国人凌晨三点排队买国产手机?雷军:我们在欧洲一定大胜
指尖上的超构透镜光谱仪和微纳光纤锥光谱仪
基于CPLD和ARM控制器实现PWM时序产生电路的应用设计
光电控制电路的仿真分析
我国光通信技术首次实现1.06Pbit/s超大容量的光传输
7月12日快讯:LED洗牌/中国半导体工艺获突破
中国机器人独角兽公司助力机器人领域的发展
中国制造特斯拉Model Y电动汽车正式开售