(珠海格力电器股份有限公司 广东珠海 519070)
摘要:记忆电路设计过程中发现电路上电波形异常问题,本文通过对IIC通讯的概述、竞争冒险现象的简介以及记忆电路上电时序的详细分析,为电路设计提供可借鉴的改善建议,提早进行设计规避。
关键词:IIC通讯;竞争冒险;记忆电路
引言
IIC总线是一种高效、实用,可靠的双向二线制串行数据传输结构总线,与并行扩展总线相比,具有电路结构简单,引线较少等优点,目前广泛应用于记忆芯片与主控之间的通讯。本文通过对记忆电路上电时刻出现的异常电平以及其出现竞争冒险现象的条件进行详细的分析总结,进一步增强IIC通讯在记忆电路上的可靠应用。
一、IIC总线简述
1.1 IIC总线特征
1)两线――串行数据SDA和串行时钟SCL线在连接到总线的器件间传递信息;
2)SDA线上的数据必须在时钟SCL线高电平周期保持稳定,SDA线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变;
3)每个连接到总线的器件都有一个唯一的地址识别,都可以作为一个发送器或接收器;
4)器件在执行数据传输时可以被看作是主机或从机,主机是初始化总线的数据传输并产生允许传输的时钟信号的器件,此时任何被寻址的器件都被认为是从机。
1.2 数据传输方向
数据传输大体分为主机读和主机写两个方向,具体执行过程如下:
1)主机发送信息到从机(主机写)
2)从机发送信息到主机(主机读)
a.主机寻址从机 a.主机寻址从机
b.主机发送数据到从机 b.从机发送信息到主机
c.主机终止传输 c.主机终止传输
1.3 数据传输格式
主机与从机之间在IIC总线上进行一次数据传送,按IIC总线协议约定,传送的信息由启动信号、寻址字节、数据字节、应答信号以及停止位信号组成。启动信号表示数据传送的开始,接下来是寻址字节,包含7位地址码和1位读/写控制位,再接下来是要传送的数据字节和应答信号,数据传输完后,主控器要发出一个停止信号给被控器。具体时序图见下图1。
a.起始和停止条件
起始条件:在SCL线是高电平时SDA线从高电平向低电平切换;
停止条件:当SCL是高电平时SDA线由低电平向高电平切换;
起始条件和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后总线被认为处于空闲状态。
b.响应
数据传输必须带响应,相关的响应时钟脉冲由主机产生,在响应的时钟脉冲期间,发送器释放SDA线(高);在响应的时钟脉冲期间,接收器必须将SDA线拉低使它在这个时钟脉冲的高电平期间保持稳定的低电平,当然必须考虑建立和保持时间,否则可能在同一时序出现竞争冒险现象。
二、竞争冒险现象
2.1 竞争冒险现象
指同一时刻有一个以上信号同时向相反的逻辑电平跳变时,输出有可能产生尖峰脉冲的现象。
2.2 竞争冒险现象产生的原因
信号在器件内部通过连线和逻辑单元电路时,都有一定的延时。延时的大小与连线的长短和逻辑单元电路的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的称之为“毛刺”的尖峰信号。如果一个组合逻辑电路中有“毛刺”出现,就说明该电路存在“冒险”。
2.3 消除竞争冒险现象的方法
竞争冒险现象出现在信号发生电平转换的时刻,也就是说在输出信号的建立和保持时间内会发生竞争冒险,出现毛刺信号。所以可以考虑在建立和保持时间内适当增加或取消延时,避免在同一时序出现竞争冒险现象。
三、记忆电路上电过程分析
以上简单对IIC总线及其出现的竞争冒险现象做了简单介绍,在这一部分主要针对记忆芯片和主控之间在上电后的整个通讯过程展开分析,找出可能出现竞争冒险现象的隐患点,并以实际整改案例为依托,为设计提供可借鉴的开发思路。
3.1 主控寻址阶段(写操作)
由以上分析可知,根据数据传输的方向,第一次上电后,主控作为I2C 总线的主机,记忆芯片(EE)作为从机,其传输数据的过程如下:
第一步:主控进行一次空写操作,寻址记忆芯片(前8个时钟脉冲期间)
主控发送(10100000)到记忆芯片:高4位1010代表记忆芯片AT24C16的地址,2~4位代表记忆芯片存储器的地址,最低位0代表写操作,见下图2。
第二步:记忆芯片返回响应位ACK(第9个时钟脉冲期间)
根据协议要求,数据传输需带响应:记忆芯片在接收到主控的指令后拉低SDA线作为响应,返回应答信号ACK,见下图3。
第三步:主控进行写操作,寻址记忆芯片存储器(前8个时钟脉冲期间)
主控发送(10101011)到记忆芯片:高4位1010代表记忆芯片AT24C16的地址,2~4位代表记忆芯片存储器的地址,最低位1代表读操作。
第四步:记忆芯片返回响应位ACK(第9个时钟脉冲期间)
根据协议要求,数据传输需带响应:记忆芯片在接收到主控的指令后拉低SDA线作为响应,返回应答信号ACK。
Note:这一步的执行中存在竞争冒险隐患点,具体分析如下:
此时,主控发送的数据最后一个bit为1,则它在接下来进行输入、输出口转换时继续保持高电平(下图B点);
同时,记忆芯片在接收到数据后要拉低SDA线作为响应(下图C点为低电平),而主控还未完成转换(下图B点还在高电平期间);
故由于电阻的分压作用导致下图B点在上电期间有一个不到5V的异常高电平信号出现。此现象出现在第9个时钟脉冲开始时。
3.2 主控读取EE数据阶段(读操作)
第五步:主控完成转换后开始接收记忆芯片传输的数据(相邻两帧数据之间)
Note:这一步的执行中存在竞争冒险隐患点,具体分析如下:
此时,若传输的第一个数据为1,则SDA继续保持高电平,若传输的第一个数据为0,且主控没有设置延时,则SDA又被下拉为低电平,造成毛刺。此现象出现在第9个时钟脉冲结束时。
第六步:记忆芯片向主控传输数据
记忆芯片向主控输送一字节数据,输送完成后释放SDA线并进行输出、输入口转换;主控接收到数据后在时钟低电平时进行输入、输出口转换,并下拉SDA线作为ACK响应。
Note:这一步的执行中存在竞争冒险隐患点,具体分析如下:
此时,由于记忆芯片的输入、输出口转换速度高于主控,若记忆芯片(EE)向主控输送的最后一个bit为0,则记忆芯片率先完成转换并释放SDA线(SDA上拉为高电平),紧接着主控完成转换又把SDA下拉为低电平,形成毛刺。此现象出现在第9个时钟脉冲开始时。
四、案例验证
4.1 关于上述第四步(记忆芯片返回响应位ACK)阶段出现竞争冒险的案例验证
a.问题描述
在记忆电路上电时有异常电平出现,见下图5;不符合设计标准,见下图6。
b.整改方案1:
若是使用普通I/O口作为软件式I²C通讯连接记忆芯片,可通过软件设置将该I/O口更改为开漏口(开漏口无输出能力,可避免SDA波形出现平台现象),见下图7。
c.整改方案2:
I²C协议规定:SCL为低时,SDA可改变数据;而SCL在高电平时,无法改变SDA数据。
故可优化程序:当主控发送完最后一位bit以后,取消延时函数,在SCL拉低后紧接着将SDA口更改为输入口,将异常电平持续时间降至最低。
整改后波形见下图8:
4.2 关于上述3.2(主控读取EE数据)阶段出现竞争冒险的案例验证
4.2.1 关于上述第五步(相邻两帧数据传输之间)的案例验证:
a.问题描述:记忆电路在上电时SDA波形出现多个高电平达不到+5V的毛刺,脉宽约为520ns,见下图9,图10。
b.整改方案:
记忆芯片发送完ACK后释放SDA线(SDA上拉为高电平),此时主控没有设置延时,且传输的第一个数据为0,则SDA又被下拉为低电平,造成毛刺。故可优化程序,在上一帧数据传输结束与下一帧数据开始传输之间,增加延时函数,消除竞争冒险现象。
整改后波形见图11:
4.2.2 关于上述第六步(记忆芯片向主控传输数据)的整改方案:
主控增加延时函数,让记忆芯片释放SDA线后保持一定时间的高电平再发送ACK响应位。
五、总结
通过以上对记忆电路上电时序的详细分析,发现竞争冒险现象均存在于第9个时钟脉冲期间,分别为第9个时钟脉冲开始时和结束时,均为响应位没有设置合适的建立和保持时间所致。具体发生时刻及条件总结如下:
1、第9个时钟脉冲开始时发生竞争冒险现象的条件:
1)主控向记忆芯片写数据且主控写的最后一个bit为1;
2)主控从记忆芯片读取数据且读到的最后一个bit为0。
2、第9个时钟脉冲结束时发生竞争冒险现象的条件:
主控向记忆芯片写数据完成后没有设置延时立刻开始传输下一帧数据,且传输的第一个数据为0。
IIC通讯作为大量成熟应用的一种通信方式,其产生的竞争冒险现象应引起设计者的高度重视,深刻剖析其对电路产生的潜在影响,增强电路应用的可靠性;另外,在进行响应位传输时,必须考虑设置合适的建立和保持时间,避免在同一时序出现竞争冒险现象。
参考文献:
[1]符超,郭慧玲,刘洋.邱海军关于IIC通讯在记忆电路中的竞争冒险问题分析改进[J].日用电器,2018(8).
论文作者:金德武
论文发表刊物:《电力设备》2018年第30期
论文发表时间:2019/3/27
标签:记忆论文; 芯片论文; 竞争论文; 时钟论文; 数据论文; 脉冲论文; 现象论文; 《电力设备》2018年第30期论文;