IIC通信协议的通信协议的Verilog实现实现
刚刚花了几天时间把 IIC 总算搞懂了一些,查了很多资料,也纠结过于很多细节,不过只要耐着性子,一点点的
去理解,去尝试,终会得到你想要的结果,人生不也是吗,嘿嘿~,不闲扯了,下面就写写我的理解以及方法,
算是一个总结~
IIC 即 Inter-Integrated Circuit (集成电路总线),这种总线类型是由飞利浦半导体公司在八十年代初设计出来的一种简单、双
向、二线制、同步串行总线,主要是用来连接整体电路(ICS) ,IIC是一种多向控制总线,也就是说多个芯片可以连接到同一总
线结构下,同时每个芯片都可以作为实时数据传输的控制源。这种方式简化了信号传输总线接口。(来源于百度百科)
采用EEPROM来验证 IIC 时序,我用的是AT24C02(原理图如下),IIC 时序有单字节写、单字节读,和页写、页读,这次先
写单字节写和读,页写和读下次再写。
AT24C02 原理图
AT24C02 封装图
首先看一下各引脚定义:
1,A0、A1、A2为AT24C02 的片选信号,由于 IIC 总线可以挂载多个IIC 接口器件,所以每个器件都应该有自己的“身份标识”
,通过对 A0,A1,A2输入不同的高低电平,就可以设置该 EEPROM 的片选信号。
2,WP 为读写使能信号,当 WP 悬空或者接地,EEPROM 可读写,当 WP 接电源,EEPROM 只能读不能写。
3, SCL 为 IIC 接口的时钟线。
4, SDA 为 IIC 接口的数据线。
所以由原理图可以知道,IIC 协议有两条线,一条时钟线SCL,一条双向的数据线SDA,
下面来看一下 IIC 协议的时序图:
写时序:
由时序图可以看出,如果我们要向 EEPROM 写入一个字节,那么必须经过以下步骤:
1. 发送启动信号
2. 发送器件地址 8'b1010_0000
3. 接收并检测 EEPROM 发来的应答信号 ACK
4. 发送字地址
5. 接收并检测 EEPROM 发来的应答信号 ACK
6.发送 8bit 有效数据
7. 接收并检测 EEPROM 发来的应答信号 ACK
8. 发送停止信号
读时序:
由时序图可以看出,如果我们要从 EEPROM 读出一个字节,那么必须经过以下步骤:
1. 发送启动信号
2. 发送器件地址 8'b1010_0000
3. 接收并检测 EEPROM 发来的应答信号 ACK
4. 发送字地址
5. 接收并检测 EEPROM 发来的应答信号 ACK
6. 发送启动信号
评论1