搜索
您的当前位置:首页正文

I2C总线工作原理

来源:二三娱乐
I2C总线工作原理

I2C总线工作原理 ............................................................................................................. 1 1 I2C总线特点 ................................................................................................................. 1 2 I2C总线协议 ................................................................................................................. 2

2.1 起始和停止条件 .................................................................................................. 2 2.2 数据传输格式 ..................................................................................................... 3 2.3 应答ACK信号的传送 ........................................................................................... 3 2.4 仲裁和时钟同步 .................................................................................................. 4 2.5 7位的地址格式 ................................................................................................... 4 3 串/并、并/串转换.......................................................................................................... 5

3.1并串转换原理 ...................................................................................................... 5 3.2串并转换原理 ..................................................................................................... 5 4 HE寄存器总线工作原理 ................................................................................................ 5 5 E2PROM原理 ................................................................................................................ 6 6 Verilog 硬件设计语言 .................................................................................................... 7 7 集成电路设计流程 ........................................................................................................ 8

1 I2C总线特点

I2C双向串行总线将主机或者从机的并行数据转换为串行数据,并通过SDA线传输。SCL则是串行时钟线,I2C总线通过SDA和SCL两条串行总线实现设备器件间的通信。与其它串行总线相比,I2C总线具有一下几方面的特点:

(1).只有两条总线线路:一条串行数据线(SDA);一条串行时钟线(SCL)。 (2).每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机、从机关系软件设定的地址;主机可以作为主机发送器或者主机接收器。

(3).它是一个真正的多主机系统,如果两个或者更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。

(4).串行的8位双向数据传输位速率在标准模式下可以达到100kbit/s,快速模式下可以达到400kbit/s,高速模式下可以达到3.4Mbit/s。

(5).IC总线支持任何IC生产过程(NMOS、CMOS、双极性)。并且通过SDA、SCL两条串行线与连接到总线上的器件间传递信息。每个器件都有一个唯一的是地址识别,而且都可以作为一个接收器或者发送器(由器件的功能决定)。I2C总线的相关术语定义如下表所示:

I2C总线术语的定义

表1

2

术语 描述 发送器 接收器 主机 从机 多主机 仲裁 同步 发送数据到总线的器件 从总线接收数据的器件 初始化发送产生时钟信号和终止发送的器件 被主机寻址的器件 同时有多于一个主机尝试控制总线但不破坏报文 是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使报文不被破坏的过程 两个或多个器件同步时钟信号的过程 SDA 和SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时,这两条线路都是高电平。连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。F/S模式I2C总线器件SDA和SCL总线线路的特性如下表所示:

F/S 模式IC 总线器件SDA 和SCL 总线线路特性

表2 2

参数 SCL时钟频率 符号 标准模式 0 4.0 100 -- 快速模式 0 0.6 400 -- 单位 kHz μs 最小值 最大值 最小值 最大值 fscl 起始条件的保持时间。在这tHD:STA 个周期后,产生第一个时钟脉冲。 SCL时钟的低电平周期 SCL时钟的高电平周期 停止条件的建立时间

tLOW tHIGH tSD:STO 4.7 4.0 4.0 -- -- -- 1.3 0.6 0.6 -- -- -- μs μs μs 2 I2C总线协议

2.1 起始和停止条件

在I2C总线中,唯一出现的是被定义为起始(S)和停止(P)条件。在SCL线为高电平期间,SDA线由高电平向低电平切换表示起始条件,而由低到高切换则表示停止条件(如图2所示)。

图1起始条件和结束条件

2.2 数据传输格式

SDA线上的数据必须在时钟的高电平周期期间保持稳定。数据线的高或者低电平状态只有在SCL线的时钟信号是低电平时才能改变。

SDA线上的每一个字节长度都应该是8位。每次传送的被发送的字节数没有限制。启动条件后的第一个字节应有地址域。当I2C总线在主模式下操作时,该地址域能被主设备发送。每一个字节都应紧跟着一个应答位(ACK)。连续数据和地址的MSB位总是最先被发送。

写第一个数 SCL SDA S WR_ACK WR_ACK P 写第二个数 图2数据传输格式

2.3 应答ACK信号的传送

为了完全完成一字节的传送,接收器应发送一个ACK位给发送器。ACK脉冲应出现在SCL线的第9个时钟脉冲上,一字节数据传送需要8个时钟,传送ACK位需要主设备产生一个时钟脉冲。

当接收到ACK时钟脉冲时,发送器应通过使SDA线变成高电平来释放SDA线。接收器也需在ACK时钟脉冲期间使SDA线变为低电平,因此SDA在第9个SCL脉冲的高电平期间应保持低电平。当然,必须考虑建立和保持时间。

当主机不能响应从机地址时(例如它正在执行一些实时函数不能接受或者发送),从机必须使数据线保持高电平。主机然后产生一个停止条件终止传输或者产生重复其实条件开始新的传输。

如果从机接收器响应了从机地址但是在传输了一段时间后不能接受更多的数据字节,主机必须再一次终止传输。这个情况用从主机在第一个字节后没有响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。

如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机发送器通知数据结束。从机发送器必须释放数据线,允许主机产生一个停止或者重复起始条件。

2.4 仲裁和时钟同步

仲裁发生在SDA线上,有效阻止了两个主设备在总线上的争夺。如果SDA为高电平的一个主设备检测到另一个主设备的SDA为低电平,那么它将不能启动数据传送,因为总线的当前电平与它自己的不相符,仲裁程序将持续到SDA线变为高电平[10]。

然而,若两个主设备在SDA线上同时为低电平,则每一个主设备应评估总线控制权是否分配给自己。为了确认,每个主设备应测试地址位。即使每个主设备都产生从地址,也应测试SDA线上的地址位,因为一般SDA线上低电平的保持程度强于高电平的保持程度。例如,一个主设备产生一个低电平作为第一个地址位,而另一个主设备继续保持高电平。这种情况下,两个主设备都将在总线上检测到低电平,因为低电平强于高电平,即使第一个主设备尽力在总线上保持高电平。当这种情况发生时,产生低电平(作为地址的第一位)的主设备将得到总线控制权,产生高电平(作为地址的第一位)的主设备应放弃总线控制权。如果两个主设备都产生低电平作为地址的第一位,那么就需要通过地址的第2位进行仲裁。

时钟同步通过线与连接I2C 接口到SCL 线来执行。这就是说:SCL 线的高到低切换会使器件开始数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL 线保持这种状态直到到达时钟的高电平见。但是如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态。因此,SCL 线被有最长低电平周期的器件保持低电平。此时,低电平周期短的器件会进入高电平的等待状态。当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变成高电平。之后器件时钟和SCL线的状态没有差别。而且所有器件会开始数它们的高电平周期。首先完成高电平周期的器件会再次将SCL线拉低。

这样,产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定,而高电平周期由高电平时钟周期最短的器件决定。

2.5 7位的地址格式

I2C总线在起始条件之后将发送一个从机地址。这个地址共有7位,紧接着

的第8位使数据方向位,‘1’表示读数据,‘0’表示主机要写信息到被选中的从机。数据传输一般有主机产生的停止位终止,但是,如果主机希望在总线上通讯,它可以产生一个重复起始条件和寻址另一个从机,而不是首先产生一个停止条件。在这种情况下,可能有不同的读/写格式结合。

3 串/并、并/串转换 3.1并串转换原理

IC通信时,发送器首先把并行数据转换为串行数据,并通过串行数据线SDA传给接受器。而接受器则把从SDA上接收到的有效数据转换为并行数据。

并行数据转换成串行数据主要通过移位寄存器来实现。具体实现过程如图3所示:

87654321876543212

8 76 4 253 并行数据 串行数据18图3 发送数据时的并串转换过程 3.2串并转换原理

在接收数据时,来自发送器的串行数据被送入移位寄存器,移位保存满8位后并行送到接收器内部。图5所示为数据的串并转换过程。

876543218765432165432178串行数据1并行数据图4 接收数据时的串并转换过程

4 HE寄存器总线工作原理

HE Register Bus是凌阳公司HE(Home Entertainment)部门所定义的寄存器总线,用于Master对Slave进行控制,如下图所示:

R_RGST_SELR_RGST_WER_RGST_RER_RGST_ADRR_RGST_BUSMASTERSLAVE

图5 HE BUS控制示意图

HE寄存器总线接口信号描述如下表所示:

Register Bus寄存器描述

表2.3 控制信号名称 R_RGST_SEL R_RGST_RE R_RGST_WE R_RGST_ADR R_RGST_BUS SL_RGST_BUS SL_RGST_ACK 位宽 1 1 1 5 32 32 1 属性 MASTER MASTER MASTER MASTER MASTER SLAVE SLAVE 功能描述 从机选择信号 读使能信号 写使能信号 地址选择信号 主机数据总线 从机输出总线 从机响应信号 Register Bus协议描述 1、 R_RGST_WE或者R_RGST_RE和R_RGST_SEL必须同时有效;

2、 当R_RGST_WE或者R_RGST_RE、R_RGST_BUS和R_RGST_ADR有效的时候,

R_RGST_BUS也必须有效;

3、 当MASTER发送控制信号后,SLAVE接收到信号并执行相关的操作,必须

给MASTER回确认信号,即SL_RGST_ACK;

4、 当SL_RGST_SEL有效的时候,R_RGST_RE或者R_RGST_WE只能对某个部

分执行相关的操作。

5 E2PROM原理

美国微芯科技公司(Microchip Technology Inc.)生产的电可擦除只读存储器系列24CXX,24LCXX,24AAXX和24FCXX,容量范围为128位到512K位。该系列器件支持2线串行接口,以8位存储器块进行组合。低电压设计允许工作电压最低可低至1.7V,待机电流和工作电流分别为1uA和1mA。 容量1k位以及超过

1k位的器件具有页写入能力。功能性地址线允许连接到同一条总线上的器件数目最多可以达到8个。本设计将实现FPGA和AT24C01 EEPROM之间通过I2C控制器的通信,以验证设计的IP功能是否正确。

每一个24XX器件都支持双向、2线数据传输协议。如果器件被定义为发送器,则该器件发送数据到总线;如果器件被定义为接收器,则该器件接受来自总线的数据。总线由主器件控制,24XX作为从器件。主器件提供串行时钟(SCL),控制总线访问和产生起始和停止条件。主器件和从器件皆可作为发送器和接收器,但必须由主器件决定采取何种工作模式。

在本设计中,I2C总线控制器为主器件,该EEPROM器件为从器件。遵循相同的IC总线协议。

2

6 Verilog 硬件设计语言

Verilog HDL 是硬件描述语言的一种,用于数字电子系统设计。设计者可以用它进行各种级别的逻辑设计,用它可以进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最为广泛的一种硬件描述语言。

Verilog HDL 是1983年,有GDA(GateWay Design Automation)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司(Cadence Design System)的第一个合伙人。在1984-1985年间,Moorby设计出了一个名为Verilog-XL的仿真器;1986年,他对Verilog HDL的发展又做出了一个巨大贡献——提出了用于快速门级仿真的XL算法。

随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog语言,于是成立了OVI(Open Verilog International)组织,并负责促进Verilog语言的发展。基于HDL语言的优越性,IEEE与1995年制订了Verilog HDL的IEEE标准,即Verilog HDL1364-1995;2001年又发布了Verilog HDL1364-2001标准。

采用电路原理图输入法进行设计,具有设计周期长、需要专门的设计工具、

需手工布线等缺点。而采用Verilog输入法时,由于Verilog HDL的标准化,可以很容易地把完成的设计移植到不同厂家的芯片中去,并在不同规模应用时可以比较容易地作修改。采用Verilog HDL完成的设计,在仿真验证的时候,仿真测试矢量可以用同一种描述语言来完成。此外,用Verilog HDL综合器生成的数字逻辑是一种标准的电子设计呼唤格式(EDIF)文件,独立于所采用的实现工艺。有关工艺参数的描述可以通过Verilog HDL提供的属性包含进去,然后利用不同厂家的布局布线工具,在不同工艺的芯片上进行实现。采用Verilog HDL的最大优

点是它与工艺的无关性,这使得工程师在功能设计、逻辑验证阶段,可以不必过多考虑门级工艺的实现细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。这实际是利用了计算机和EDA工具,把逻辑验证与具体的工艺库匹配、布局布线及延时计算分成不同的阶段实现。

使用Verilog HDL进行数字设计时,采用自顶向下(Top-Down)的设计方法。自顶向下的设计是从系统级开始,把系统划分为若干基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的基本元件来实现为止。模块设计流程可以分为两个部分:(1).设计开发:编写设计文件综合布局布线投片生成。(2).设计验证。

Verilog模型可以是实际电路不同级别的抽象,这些抽象级别包括:(1)系统级(System Level)、(2)算法级(Algorithm Level)、(3)RTL级(Register Transfer Level)、(4)门级(Gate Level)、(5)开关级(Switch Level)。(1)~(3)都属于行为级描述,只有RTL级才与逻辑电路有明确的对应关系。(1)~(4)是数字系统工程师必须掌握的。

一个复杂电路系统的完整Verilog HDL模型由若干个模块组成,每个模块的内容都是位于module和endmodule两个语句之间,并可实现特定的功能。模块可以嵌套使用,因此,大型设计可以划分为若干层子模块来实现。每个模块都必须进行端口定义、类型说明和功能描述。如果每个模块都是可以综合的,并且用一个可综合的顶层模块通过引用实例将所有模块连接起来,组成了一个逻辑系统,那么就可以利用综合工具把整个系统的功能描述全部转换为最基本的逻辑单元描述。

Verilog HDL 的程序格式比较自由,一行可以写多个语句,一个语句也可以分多行显示。除了endmodule语句之外,其他每个语句和数据定义都必须用分号结束。可以用/*……*/和//……对程序的任何部分进行注解,一个好的,有使用价值的程序都应当加上必要的解释,以增加程序的可读性和可维护性。

7 集成电路设计流程

在用Verilog HDL进行硬件设计的过程中,开发人员通常是将设计分层三个层次进行设计,如图6所示。

第一层次是行为描述。就是用数学模型对整个系统进行的描述。一般来说,对系统进行行为描述的目的是为了在系统设计的初始阶段,通过对系统行为的仿真来发现设计中存在的问题。在行为描述阶段并不真正考虑实际的算法和操作用什么方法来实现,注意力主要集中在系统的结构和工作过程能否达到设计要求方面。在进行完行为描述之后,通常要把它转换为RTL级的描述,因为现有的EDA

工具只能接受RTL级描述的HDL文件进行自动逻辑综合。

第二层次是RTL方式描述,又称为寄存器传输描述。用行为方式描述系统结构的程序抽象程度很高,很难直接映射到具体逻辑元件的实现。要想得到硬件的具体实现,必须将行为方式的Verilog HDL程序改为RTL方式的程序。在编写完RTL方式的程序之后,就可以利用仿真工具对程序进行仿真了。如果仿真通过,就可以利用逻辑综合工具进行综合了。

第三层次是逻辑综合。在这一阶段主要是利用逻辑综合工具,将RTL级的程序转换成用基本逻辑元件表示的文件(门级网表),并且综合结果也可以以原理图的方式输出。得到网表之后,还需要进行门级仿真和定时检查。如果一切正常,则设计工作到此结束。

图6 集成电路设计流程

门级网表输出门级仿真、定时检查逻辑综合、优化RTL级仿真RTL级描述行为级仿真行为级描述总体方案

因篇幅问题不能全部显示,请点此查看更多更全内容

Top