基于FPGA的IIC程序设计

        IIC通信协议在实际的工程项目中应用很多,作为一名FPGA工程师是必须要掌握IIC,下面就开始学习吧,let's go!

       第一,E2PROM简介

      作为初学者会购买一块FPGA开发板进行学习,开发板上一般都有E2PROM这个器件设备,该设备就是通过IIC协议进行通信的。

        EEPROM (E2PROM,Electrically Erasable Progammable Read Only Memory)即电可擦除可编程只读存储器,是一种常用的非易失性存储器。

      我自己手里的开发板搭载的E2PROM型号AT24C64的,芯片管脚如下图所示。

第二,IIC通信协议简介

IIC (I2C,Inter-Integrated Circuit)即集成电路总线,是一种两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信。

I2C总线由数据线SDA时钟线SCL构成通信线路,既可用于发送数据,也可接收数据。

I2C的通信速度:

标准模式:100Kbit/s   

快速模式:400kbit/s  

高速模式:3.4Mbit/s

I2C的通信方式:

IIC是半双工通信方式。

I2C的写时序图

从上图可以知道,完成一条写操作,包含 START、DEVICE_ADDRESS(设备地址写)、FIRST_word_ADDRESS(通常叫做寄存器高地址)、 SECOND_WORS_ADDRESS(通常叫做寄存器低地址)、DATA、STOP组成。

                                                         I2C的写时序图

 从上图可以知道,完成一条读操作,包含 START、DEVICE_ADDRESS(设备地址写)、FIRST_word_ADDRESS(通常叫做寄存器高地址)、 SECOND_WORS_ADDRESS(通常叫做寄存器低地址)、START、DEVICE_ADDRESS(设备地址读)、RD_DATA、STOP组成。

从读写时序图中,我们可以发现一个规律,每次发送8bit数据中间都会跟着发送1bit的ACK或者NoACK,我们可以总结一个结论就是IIC是按照9bit为一个整体进行发送。 

START和STOP的实现如下图所示。

 START:当SCL信号为高电电平时,SDA数据线由高拉低,代表START;

 STOP:当SCL信号为高电平时,SDA数据线由低拉高,代表STOP。

明白IIC的重要知识后,下面就开始设计程序,该程序可以通过串口下发指令实时的对E2PROM进行读写操作,并在串口助手上可以显示结果。

IIC_IP的程序采用三段式状态机方式实现,状态转移图如下所示。

  • 1. i2c_ip程序接口

名称

方向

位宽

说明

clk

I

1

工作时钟25M

reset

I

1

复位信号(active high)

scl

O

1

I2c的时钟信号

sda

IO

1

I2c的数据信号

i2c_cmd_done

O

1

I2c传输完成信号

i2c_addr

I

16

I2c寄存器地址

i2c_wr_data

I

8

I2c写数据

i2x_rd_valid_en

O

1

I2c读取数据的有效信号

i2c_bit_ctrl

I

1

I2c选择16bit or 8bit 控制信号

i2c_rw_ctrl

I

1

I2c读写控制信号(1:read  0:write)

i2c_cmd_en

O

1

I2c命令使能信号

 I2C的写时序仿真结果

 I2C的读时序仿真结果

获取源码请关注微信公众号:《FPGA学习笔记册》!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战斗的青春岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值