前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优秀的 Verilog/FPGA开源项目介绍(十三)- I2C

优秀的 Verilog/FPGA开源项目介绍(十三)- I2C

作者头像
碎碎思
发布2021-12-31 11:24:21
8930
发布2021-12-31 11:24:21
举报
文章被收录于专栏:OpenFPGA
优秀的 Verilog/FPGA开源项目介绍(十三)- I2C

0 I2C介绍

权威官网

❝https://www.i2c-bus.org/

I2C 总线规范是由飞利浦半导体编写的。这家公司后来成为 NXP Semiconductors,现在它是 I2C 总线规范的维护相关者。

不幸的是,最近的 I²C 总线规范,NXP 文档版本 6.0,2014 年 4 月 4 日不再在 NXP 站点上公开。

History of the I2C Bus

❝https://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/general-introduction/history-of-the-i2c-bus.html

1 fpga4fun上的I2C

❝https://www.fpga4fun.com/I2C_2.html

详细的设计过程:

完善的仿真程序:

2 alexforencich的verilog-i2c

❝https://github.com/alexforencich/verilog-i2c

alex的项目无需多说,他的网络和PCIe都是完成度等方面首屈一指。

我们先看下这个项目包含哪些文件:

代码语言:javascript
复制
axis_fifo.v             : AXI stream FIFO
i2c_init.v              : Template I2C bus init state machine module
i2c_master.v            : I2C master module
i2c_master_axil.v       : I2C master module (32-bit AXI lite slave)
i2c_master_wbs_8.v      : I2C master module (8-bit Wishbone slave)
i2c_master_wbs_16.v     : I2C master module (16-bit Wishbone slave)
i2c_slave.v             : I2C slave module
i2c_slave_axil_master.v : I2C slave module (parametrizable AXI lite master)
i2c_slave_wbm.v         : I2C slave module (parametrizable Wishbone master)

i2c_init module

通过 I2C 进行外设初始化的模板模块。当一个或多个外围设备(即 PLL chips, jitter attenuators, clock muxes,PLL 芯片、抖动衰减器、时钟多路复用器等)需要在上电时初始化而不使用通用处理器时使用。

i2c_master module

带有 AXI 接口的 I2C 主模块。

i2c_master_axil module

具有 32 位 AXI lite 从接口的 I2C 主模块。

i2c_master_wbs_8 module

带有 8 位 Wishbone 从接口的 I2C 主模块。

i2c_master_wbs_16 module

带有 16 位 Wishbone 从接口的 I2C 主模块。

i2c_slave module

带有 AXI 接口的 I2C 从模块。

i2c_slave_axil_master module

带有参数化 AXI lite 接口的 I2C 从模块。

i2c_slave_wbm module

带有可参数化 Wishbone 主接口的 I2C 从模块。

3 opencores i2c

❝https://opencores.org/projects/i2c

❝https://opencores.org/projects/i2c_master_slave_core

❝https://opencores.org/projects/i2cslave

❝https://github.com/trondd/oc-i2c

特征

  • Both Master and slave operation
  • Both Interrupt and non interrupt data-transfers
  • Start/Stop/Repeated Start generation
  • Fully supports arbitration process
  • Software programmable acknowledge bit
  • Software programmable time out feature
  • programmable address register
  • Programmable SCL frequency
  • Soft reset of I2C Master/Salve
  • Programmable maximum SCL low period
  • synthesis core

综合结果

各种目标的按钮合成结果。

A54SX16ATQ100-std:352Modules@58MHz

FLEX : EPF10K50ETC144-3: 294LCELLs@82MHz

ACEX : EPF20K30ETC144-3: 257ATOMs@74MHz

Spartan-II:2S15CS144-5:229LUTs@82MHz

Virtex-E:XCV50ECS144-8:230LUTs@118MHz

4 freecores i2c

❝https://github.com/freecores/i2c

❝https://github.com/freecores/i2cslave

虽然没有详细的 文档,但是整个项目还是很完整的,I2C整个逻辑也不复杂即使没有文档,使用这个项目也不是难事。

5 hhping i2c_code

❝https://github.com/hhping/i2c_code

这套I2C代码已经经过板上验证。在九州探测器版验证过通过。

6 BNUGYX Verilog_i2c_eeprom

❝https://github.com/BNUGYX/Verilog_i2c_eeprom

❝https://github.com/mcgodfrey/i2c-eeprom

I2C通信实现eeprom读写

先写入固定字符,再读出此字符,显示在数码管上

7 splinedrive i2c_sdd1306_framebuffer

❝https://github.com/splinedrive/i2c_sdd1306_framebuffer

这是一个基于 fpga 的 i2c ssd1306 oled 设计!它包含一个 i2c 主控、帧缓冲区、字体渲染单元、rx 单元......

只需将 115200 波特的数据通过串口发送到 fpga,这些字符就会显示在 oled 上!

8 tmatsuya i2c_edid

❝https://github.com/tmatsuya/i2c_edid

用于 EDID(扩展显示识别数据)IP CORE 的 I2C ROM

说明

  • 该项目是使用 I2C DDC 协议将显示模式传输到视频源的目标设备。
  • 适用于 HDMI 相机捕获设备或视频切换器开发人员

特点

  • 支持 I2C 从机协议和 EDID(扩展显示识别数据)ROM
  • 8 位寻址(最大 256 字节)

目录结构

/boards/ 顶层设计文件、约束文件和 Makefiles /cores/ 核心库 /software/ 软件和数据文件

总结

I2C相关的开源项目很多很多,很多大佬独立写个I2C总线应该是很容易,头两个项目是使用最常见的项目,无需过多介绍。后面几个项目针对EDID、EEPROM特殊场景的项目,经过上面一些项目的介绍,相信大家对于FPGA实现I2C应该更有信心吧。

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

优秀的 Verilog/FPGA开源项目介绍(十)- H.264和H.265

优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)

介绍一些新手入门FPGA的优秀网站(新增2)

优秀的 Verilog/FPGA开源项目介绍(八)- HDMI

优秀的 Verilog/FPGA开源项目介绍(七)- CAN通信

优秀的 Verilog/FPGA开源项目介绍(六)- MIPI

优秀的 Verilog/FPGA开源项目介绍(五)- USB通信

优秀的 Verilog/FPGA开源项目介绍(四)- Ethernet

优秀的 Verilog/FPGA开源项目介绍(三)- 大厂的项目

串行总线技术(二)-串行总线中的先进设计理念及SerDes/PMA介绍

串行总线技术(一)-串行总线结构(以PCIe为例)

优秀的 Verilog/FPGA开源项目介绍(十二)- 玩FPGA不乏味

使用云台相机进行实时对象跟踪(肤色追踪)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0 I2C介绍
    • 权威官网
      • History of the I2C Bus
      • 1 fpga4fun上的I2C
      • 2 alexforencich的verilog-i2c
        • i2c_init module
          • i2c_master module
            • i2c_master_axil module
              • i2c_master_wbs_8 module
                • i2c_master_wbs_16 module
                  • i2c_slave module
                    • i2c_slave_axil_master module
                      • i2c_slave_wbm module
                      • 3 opencores i2c
                        • 特征
                          • 综合结果
                          • 4 freecores i2c
                          • 5 hhping i2c_code
                          • 6 BNUGYX Verilog_i2c_eeprom
                          • 7 splinedrive i2c_sdd1306_framebuffer
                          • 8 tmatsuya i2c_edid
                            • 用于 EDID(扩展显示识别数据)IP CORE 的 I2C ROM
                              • 说明
                                • 特点
                                  • 目录结构
                                  • 总结
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档