本文简要介绍了I2C总线的规范,给出了用FPGA实现I2C总线控制器的各种功能模块的详细设计方法,并从移植的角度分析了数据缓存的编码方法。码,并模拟和验证I2C总线控制器。I2C总线是荷兰飞利浦飞利浦开发的一种实用且可靠的两路两路同步串行总线。仅需要两条总线进行数据传输。管市场上有特殊的I2C总线接口芯片,但地址选择范围很小,性能指标是固定的,功能独特,使用起来不方便。FPGA可编程器件用于轻松实现I2C总线通信接口,具有高速和易于调试的特点。时,大大减少了系统的开发时间。文设计的I2C总线控制器的传输速度支持100 kbit / s,400 kbit / s和3.4 Mbit / s,完全符合I2C总线的规范[1],并且可以可以作为IP内核轻松集成到SOC系统中。从之间的数据传输称为帧。由一个启动信号,几个数据字节,一个响应位和一个停止信号组成。动信号:在时钟保持高电平期间,当数据线从高电平变为低电平时,I2C总线启动。止信号:在时钟保持高电平期间,数据线从低电平变为高电平,并将停止从I2C总线进行数据传输。据传输的基本单位是二进制数据传输。I2C总线声明在SCL周期中传输一位数据,并且SDA上的数据必须在SCL处于高电平期间保持稳定,而SDA中的数据只能在低电平期间发生变化。送到SDA线的每个字节由8位组成,并且在任何时候传输的字节数均不受限制,但是每个字节后必须带有一个确认位(ACK)。发送数据时,首先发送最高位(MSB),如果接收方不能接收下一个字节,例如在处理内部中断时,可以将SCL保持低电平以迫使发生器等待,直到准备好接收为止。一个字节释放SCL线时,它将恢复传输。I2C总线上传输数据时,在传输每个字节数据之后必须有一个响应信号,该响应信号所对应的时钟由主控制器产生。
放该时钟位上的数据线以使其变为高电平。Ping状态,以便接收器在此位上发送响应信号。应信号出现在第9个时钟位。

收器传送低电平作为响应信号(A),并传送高电平作为无响应信号(nA)。启动信号之后发送一个7位从地址,第8位是方向位(R / nW),“ 0”表示发送,“ 1”表示读取数据。据传输始终以主机生成的停止信号结束。是,如果主机也要在总线上进行通信,则它可以生成启动信号并寻址另一个从机而无需生成停止信号。这种传输方法中,可以有读写的组合,如图1所示。主机接收模式下,在第一个响应位中,主发送器成为主接收器,而主发送器成为主接收器。属接收器成为从属发送器。是,确认位始终由从机生成,停止信号始终由主机生成。传输方向改变时,重复发送起始信号和地址,并且方向位(R / nW)反转。I2C主设备必须向I2C提供时钟信号,该时钟信号才能产生启动信号和停止信号。据传输有两种类型:主要发送和主要接收。能图如图2所示。

主要由六个部分组成,即APB从接口单元,地址分配和内部寄存器组单元,除法单元。
率,数据缓冲单元,控制单元和I2C串并行转换单元。口单元通过主机设备(例如处理器)通过APB总线完成对I2C总线控制器内部的各种寄存器的访问。APB从属接口单元符合APB总线上的从属接口,并且CLK信号是APB总线的同步时钟。部寄存器通过多路复用器连接到APB总线。
路复用器使用地址总线进行选择,当PSEL为高电平时在时钟周期的上升沿写入,而在PSEL和PENABLE为高电平时同时读取。写同步符合AMBA规范[2]。址分配单元的三条地址线分别选择从接口单元APB的PADRR [2],PADRR [1]和PADRR [0]。部寄存器集由地址分配单元生成,包括命令寄存器,借方寄存器,状态寄存器以及发送和接收FIFO寄存器。单元确定I2C传输的比特率。以根据I2C从总线接口的速度和主控制器的频率来调整流寄存器。I2C总线传输时钟在传输过程中生成,传输完成后时钟变为高电平。据缓冲器单元包括发送FIFO单元和接收FIFO单元。

送FIFO和接收FIFO的大小定义为256 * 8位,并且两个FIFO都有一个空和满标志,可以通过软件查询。于不同FPGA设备的硬件资源不同,如果根据设备使用内部RAM生成FIFO,则会降低I2C主机控制器,Verilog HDL语言和第三方综合工具提供的方法的可移植性。化后可以用来实现数据缓存单元[3]。制单元实现整个设计的控制功能。
单元根据控制寄存器的指令开始或结束通过I2C总线进行的通信,并控制发送FIFO和FIFO的FIFO。据状态寄存器的状态进行接收(FIFO发送和FIFO满标志接收,响应或无响应)。自I2C串行/并行/并行转换器单元的数据传输控制I2C总线的读写操作模式,并提供有关I2C主控制器状态的信息。口单元负责将并行数据转换为串行数据,并将串行数据转换为8位并行数据。
了确保可靠的数据传输,其写入数据的每一位都以时钟I2C SCL(由分频单元确定)CLK的低电平N写入数据,并且读取数据的每一位。I2C SCL N CLK时钟的高电平读取数据。拟I2C总线接口的AT24C256从设备的操作模式,并在I2C总线控制器上执行RTL和模拟测试。发送模式(字节写入模式)中的数据传输如图4所示。始信号之后有4个字节,其设备地址和方向位专用1个字节,而内存页地址专用2个字节。输的数据占用一个字节,每个响应信号都是微弱的响应。数据线上传输4个字节时,出现终止信号。开始信号和结束信号之间传送了4个字节。图4所示,从AT24C256器件接收的Data_in数据为0x54、0x33、0xf8、0xb3。
IPcore经过培训,可以移植并重用基于FPGA设计的I2C总线控制器,从而避免了重复开发的成本,降低了产品开发的成本并提高了设计效率。本文中,I2C总线主设计已应用于该产品,恒温阀芯这对于推广和参考具有重要意义。
本文转载自
恒温阀芯 https://www.wisdom-thermostats.com
