IIC总线SDA信号线的三态开漏模式的原理和实现

您所在的位置:网站首页 三态门典型应用 IIC总线SDA信号线的三态开漏模式的原理和实现

IIC总线SDA信号线的三态开漏模式的原理和实现

2023-08-10 14:22| 来源: 网络整理| 查看: 265

高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样。

高阻态的意义:当门电路的输出上拉管导通而下拉管截止时,输出为高电平;反之就是低电平;如上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制 。

 

典型应用:

          在总线连接的结构上。总线上挂有多个设备,设备于总线以高阻的形式连接。这样在设备不占用总线时自动释放总线,以方便其他设备获得总线的使用权。如果你的设备端口要挂在一个总线上,必须通过三态缓冲器。因为在一个总线上同时只能有一个端口作输出,这时其他端口必须在高阻态,同时可以输入这个输出端口的数据。所以你还需要有总线控制管理, 访问到哪个端口,那个端口的三态缓冲器才可以转入输出状态,这是典型的三态门应用。

 

                                           assign SDA = (sda_en)? sda_out:1'bz;

 当sda_en为高时SDA作为输出口,输出sda_out的数据,当sda_en为低时三态门是处于高阻态,这时三态门是作为输入口使用,其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制 ,这时输入的数据为SDA的数据(即外部器件的数据)。

 

 

提问:为什么iic中SDA线要用到三态开漏模式去控制?

答:因为SDA数据传输线是一个发送和接收数据共用的信号线。(即FPGA的一个IO口既需要输出数据,又需要接收数据inout类型),那么则需要三态开漏模式去控制实现什么时候作为输出,什么时候作为输入;而且输出的时候不受输入的影响,输入的时候不受输出影响

假设第一秒,IIC_SDA_OUT_DATA输出数据到SDA信号线上,此时SDA外部器件也要读取IIC_SDA_OUT_DATA输出的数据;那么则需要IIC_SDA_OE接通(即IIC_SDA_OE = 1'b1),同时还要避免外部器件通过SDA数据线读取到IIC_SDA_IN_DATA的电平                       状态(即万一IIC_SDA_OUT_DATA输出数据位1时,而恰巧IIC_SDA_IN_DATA的电平状态为0,则SDA信号线的电平就会置一,产生错误信号)。

假设第二秒,IIC_SDA_IN_DATA从SDA数据线读取数,此时只需要将IIC_SDA_OE断开即可避免  IIC_SDA_OUT_DATA 对读取数据的影响。

避免的方法:将SDA数据线接上一个上拉电阻,然后利用下面的代码实现

//在IIC_SDA_OUT_DATA输出数据到SDA数据线上时,又需要避免IIC_SDA_IN_DATA电平对数据产生影响的解决方案 assign SDA = IIC_SDA_OE ? IIC_SDA_OUT_DATA : 1'bZ ; //写过程这种写法欠佳 assign SDA = IIC_SDA_OE ? (IIC_SDA_OUT_DATA ? 1'bZ : 1'b0) : 1'bz;//写过程这种更好

由上面第二行代码可知,当FPGA向SDA数据线上写数据时,IIC_SDA_OE = 1'b1 ; 则 SDA = IIC_SDA_OUT_DATA ?  1'bz : 1'b0 ;

                                       当FPGA向SDA数据线上写数据1时,SDA = 1'bz(SDA的IO口为高阻态,从而避免IIC_SDA_IN_DATA的影响),又因为外接上拉电阻,所以外部器件得到的信号还是为1; 

                                       当FPGA向SDA数据线上写数据0时,SDA = 1'b0(SDA的IO口为低电平),同时也会将外接上拉电阻电平拉低,所以外部器件得到的信号还是为0.

                                       当FPGA不向SDA数据线上写数据时,即IIC_SDA_OE = 1'b0;则 SDA = 1'bz ,此时三态门作为输入使用,IIC_SDA_IN_DATA的数据受SDA上的数据影响,即等于外部器件所输出的数据。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3