您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 基于fpga的i2c总线接口设计
基于FPGA的i2c总线设计张德摘要:以i2c总线协议为根据,重点介绍在FPGA上实现i2c总线接口的结构设计和VerilogHDL代码设计,并给出了一些仿真的结果。关键字:FPGA;I2C总线;VerilogHDL1引言I2C总线是飞利浦公司开发的一种用于芯片之间通讯的串行传输总线,它由船型时钟SCL和数据线SDA完成全双工数据传送,由于它具有连线少,允许多主机控制,有总线仲裁和同步等特点。因此,广泛的用于各个领域中的数据传输。在I2C具体应用过程中,当前端处理器提供了T2C接口总线的时候,SCL,SDA两根信号线直接与硬件外设相应的端口链接即可。工作原理I2C总线上一次完整的数据传输如图1所示,其完整的数据操作包括发送起始位S、发送寻址字节(SLA、R/w)、应答、发送数据、应答......直到终止P。图1I2C总线数据传递时序起始信号S:在SCL为高电平时,数据线SDA出现由高电平向低电平变化的时候启动I2C总线;数据位传输:在I2C总线启动后或者应答信号后的第1~8个时钟脉冲对应于一个字节的8位数据传送。脉冲高电平期间数据串行传送,低电平期间为数据准备,允许总线上数据电平变换。应答信号A:I2C总线上第9个时钟对应于应答位,相应数据线上低电平时为“应答”信号A,高电平时为“非应答”信号A;终止信号P:时钟SCL为高电平时,数据线出现由低到高的电平变化时将停止I2C总线的数据传输。首先主节点器件发送一个起始信号,接着发送7位从节点地址和1位读/写位,与传输抵制一致的从节点器件发出应答信号。然后开始传送数据,没传送一个字节数据后接受数据方都要返回一个应答信号。数据传送完毕,主节点器件发出终止信号结束整个过程。I2C模块设计与实现模块结构设计图2I2C模块结构上图为I2C总线接口框图,主要包括以下几个单位。数据锁存器:存储I2C总线接口要发送或者已经接收的数据;分频器:由于FPGA外部时钟频率很高,因此需要分频来降低供给总线使用的时钟信号。地址译码器:对地址总线信号进行地址译码,产生相应的读/写奥做地址;写移位寄存器:将地址信息或者数据信息经过并/串转换后,在时序控制逻辑的控制下发送大SDA线上;读移位寄存器:将SDA线上接收的数据经过串/并转换后存入双向数据锁存器,再由主机来读取;VerilogHDL代码设计由I2C总线传输协议可知,I2C在传输过程中存在着几个固定的状态,因此我们采用同步状态机来设计I2C总线接口。整个状态机共有5个状态:空闲(Idle)、停止(Stop)、读(Read)和写(Write)。Idle:I2C总线处于空闲状态;Start:当Startbit=1时,发送启动信号;Write:向从器件发送写控制字和地址信号,若WRbit=1,则逐个写入数据并接收应答位,直到所有数据写完Stopbit=1时,转入Stop状态启动停止信号;若WRbit=0则转入Read状态;图3I2C总线状态转换图Read:重新启动I2C总线,发送读控制字。当WRbit=0时,则向从器件逐个读出数据并发送非应答位‘直到所有数据读完Stopbit=1时,转入Stop状态启动停止信号;Stop:发送停止信号;仿真验证
本文标题:基于fpga的i2c总线接口设计
链接地址:https://www.777doc.com/doc-2569597 .html