首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
37 篇文章
1
Linux音频驱动-ASOC(ALSA System on Chip)
2
LPDDR5: A New Clocking Scheme 提高性能
3
FPGA 控制 RGMII 接口 PHY芯片基础
4
DDR3篇第三讲、DDR3读写测试项目分析
5
PHY(Physical Layer,PHY)通俗理
6
MIPI联盟已完成车载的Long-Reach SerDes PHY工业标准 A-PHY v1.0
7
【三】Bluetooth 技术||链路层七种状态与空口报文设计(Core_v5.2)
8
【RL-TCPnet网络教程】第5章 PHY芯片和STM32的MAC基础知识
9
FPGA和USB3.0通信-USB3.0 PHY介绍
10
USB技术浅析
11
优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V
12
优秀的 Verilog/FPGA开源项目介绍(十六)- 数字频率合成器DDS
13
想学习高速ADC/DAC/SDR项目这个项目你不得不理解
14
优秀的 Verilog/FPGA开源项目介绍(九)- DP(增改版)
15
优秀的 Verilog/FPGA开源项目介绍(十三)- I2C
16
高速串行通信常用的编码方式-8b/10b编码/解码
17
SoC设计之PPA
18
SoC设计之功耗--开篇
19
开源SOC的设计与实践
20
SoC设计之功耗 – RTL/netlist功耗计算
21
转置型FIR设计
22
SSD目标检测系统系统结构网络训练
23
P2P接口Booth乘法器设计描述原理代码实现
24
流水线式p2p接口的分析与实现
25
流水线乘加树需求设计规划代码实现
26
分时复用的移位相加乘法器
27
Verilog实现全并行比较算法
28
全并行流水线移位相加乘法器
29
ROM乘法器基本算法单个ROM乘法器分时复用ROM乘法器
30
Flash中XIP模式
31
cordic的FPGA实现(五)、除法实现
32
cordic的FPGA实现(三)、乘法器实现
33
cordic的FPGA实现(三)、sin、cos函数运算与源码分析
34
FPGA卡拉ok系统--Biquad filter
35
音频总线I2S协议
36
脉冲压缩处理
37
虚拟地址(VA,virtual address)到物理地址(PA, ,physical address)的转换
清单首页SoC文章详情

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

优秀的 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不乏味

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

下一篇
举报
领券