I2C串行总线协议的VHDL实现
& nbsp;与并行总线相比,串行总线具有结构简单,引脚少,成本低的优点。常见的串行总线包括USB,IEEE1394,I2C等。
其中,I2C总线具有使用简单的特性,并广泛用于单片机,串行E2PROM和LCD等设备中。 I2C(Inter IC BUS)是飞利浦开发的用于芯片之间连接的总线。
I2C总线使用两条信号线进行数据传输,一条是串行数据线(SDA),另一条是串行时钟线(SCL)。 I2C总线允许多个兼容的设备(例如存储器,A / D转换器,D / A转换器,LCD驱动器等)共享总线。
I2C总线上理论上允许的最大设备数量基于总线上所有设备的总电容(包括布线本身的电容和连接端的引出电容)不超过400pF。总线上的所有设备都依赖于SDA线发送的地址。
信号寻址不需要芯片选择线。总线只能在任何时候由一个主设备控制,并且每个从设备在总线空闲时都开始数据传输。
I2C总线数据传输的标准模式速率为100kbps,快速模式速率为400kbps,高速模式速率为3.4Mbps。使用VHDL和CPLD设计数字系统具有传统方法无与伦比的优势,并且已成为大规模集成电路设计的最有效手段。
为简单起见,本文采用VHDL设计标准模式I2C总线控制电路。 1 I2C总线上的数据传输II2C总线包括两个连接,时钟线SCL和数据线SDA,并且SCL由主机生成。
I2C总线的数据传输过程如图1所示。传输过程是:主机首先生成起始位,然后传输第一个字节。
在8位数据中,数据的最高有效位MSB首先被发送,最低有效位LSB是读写指示位。 1表示主机读取,0表示主机写入,高7位地址使主机可以寻址128个从机。
& Nbsp;从机在接收到第一个字节数据后发送响应位,而主机在接收到第一个字节数据后发送响应数据。发送数据后,生成结束位,数据传输结束。
在数据传输期间,仅当时钟SCL为低电平时才允许SDA切换,而当SCL为高电平时SDA必须保持稳定。此时,SDA的级别是总线传输的值。
当SCL为高电平时,SDA线从高电平切换到低电平以指示起始位,而SDA线从低电平切换到高电平以指示停止位。起始位和停止位由主机生成。
生成起始位后,总线处于繁忙状态,出现停止位,并且在一定时间后总线进入空闲状态。发送器发送一个字节后,接收器必须生成一个响应位。
响应位的驱动时钟由主机生成,接收器将SDA线拉低以生成响应位。如果主机是接收器,则在接收到最后一个字节时,响应位为1以通知从机终止传输,否则响应位为0。
当从机无法响应从机地址时(例如,它正在执行一些实时功能,无法接收或发送),或者它响应从设备地址,但在传输一段时间后不能接收更多数据字节,从设备可以将响应位设为1来通知主机终止当前传输,因此主机产生一个停止位以终止传输,或产生一个重复的起始位以开始新的传输。在SDA线上传输的数据必须为8位,并且每次传输可以发送的字节数不受限制。
如果从机需要完成某些其他功能(例如执行内部中断服务程序)以接收或发送下一个数据字节,则从机可以将SCL保持为低电平,从而迫使主机进入等待状态。当从机准备好接收或发送下一个数据字节时,SCL被释放并且数据传输继续。
SDA和SCL都是双向线路,使用时通过上拉电阻连接到电源。当总线空闲时,两条线都为高电平,并且连接到总线的设备的输出级必须为漏极开路或集电极开路,以便总线能够执行“线与”功能。
主机发送第一个字节后,可能在三种情况下数据传输方向发生变化。 (1)传输方向保持不变,例如主机写入从机; (2)传输方向发生变化,例如主机从从机读取数据; (3)传输方向变化倍数。
其中,I2C总线具有使用简单的特性,并广泛用于单片机,串行E2PROM和LCD等设备中。 I2C(Inter IC BUS)是飞利浦开发的用于芯片之间连接的总线。
I2C总线使用两条信号线进行数据传输,一条是串行数据线(SDA),另一条是串行时钟线(SCL)。 I2C总线允许多个兼容的设备(例如存储器,A / D转换器,D / A转换器,LCD驱动器等)共享总线。
I2C总线上理论上允许的最大设备数量基于总线上所有设备的总电容(包括布线本身的电容和连接端的引出电容)不超过400pF。总线上的所有设备都依赖于SDA线发送的地址。
信号寻址不需要芯片选择线。总线只能在任何时候由一个主设备控制,并且每个从设备在总线空闲时都开始数据传输。
I2C总线数据传输的标准模式速率为100kbps,快速模式速率为400kbps,高速模式速率为3.4Mbps。使用VHDL和CPLD设计数字系统具有传统方法无与伦比的优势,并且已成为大规模集成电路设计的最有效手段。
为简单起见,本文采用VHDL设计标准模式I2C总线控制电路。 1 I2C总线上的数据传输II2C总线包括两个连接,时钟线SCL和数据线SDA,并且SCL由主机生成。
I2C总线的数据传输过程如图1所示。传输过程是:主机首先生成起始位,然后传输第一个字节。
在8位数据中,数据的最高有效位MSB首先被发送,最低有效位LSB是读写指示位。 1表示主机读取,0表示主机写入,高7位地址使主机可以寻址128个从机。
& Nbsp;从机在接收到第一个字节数据后发送响应位,而主机在接收到第一个字节数据后发送响应数据。发送数据后,生成结束位,数据传输结束。
在数据传输期间,仅当时钟SCL为低电平时才允许SDA切换,而当SCL为高电平时SDA必须保持稳定。此时,SDA的级别是总线传输的值。
当SCL为高电平时,SDA线从高电平切换到低电平以指示起始位,而SDA线从低电平切换到高电平以指示停止位。起始位和停止位由主机生成。
生成起始位后,总线处于繁忙状态,出现停止位,并且在一定时间后总线进入空闲状态。发送器发送一个字节后,接收器必须生成一个响应位。
响应位的驱动时钟由主机生成,接收器将SDA线拉低以生成响应位。如果主机是接收器,则在接收到最后一个字节时,响应位为1以通知从机终止传输,否则响应位为0。
当从机无法响应从机地址时(例如,它正在执行一些实时功能,无法接收或发送),或者它响应从设备地址,但在传输一段时间后不能接收更多数据字节,从设备可以将响应位设为1来通知主机终止当前传输,因此主机产生一个停止位以终止传输,或产生一个重复的起始位以开始新的传输。在SDA线上传输的数据必须为8位,并且每次传输可以发送的字节数不受限制。
如果从机需要完成某些其他功能(例如执行内部中断服务程序)以接收或发送下一个数据字节,则从机可以将SCL保持为低电平,从而迫使主机进入等待状态。当从机准备好接收或发送下一个数据字节时,SCL被释放并且数据传输继续。
SDA和SCL都是双向线路,使用时通过上拉电阻连接到电源。当总线空闲时,两条线都为高电平,并且连接到总线的设备的输出级必须为漏极开路或集电极开路,以便总线能够执行“线与”功能。
主机发送第一个字节后,可能在三种情况下数据传输方向发生变化。 (1)传输方向保持不变,例如主机写入从机; (2)传输方向发生变化,例如主机从从机读取数据; (3)传输方向变化倍数。
- 电话:0797-4282799
- 邮箱:sales@tonevee.com
- 联系人:李先生 13510435585
- QQ:
- 地址:江西省赣州市定南县良富工业区电子产业区5栋

