一起游 手游攻略 手游评测 基于FPGA的I2C控制模块设计

基于FPGA的I2C控制模块设计

时间: 来源:互联网 浏览:0

I2C_WRITE_WDATA.v 模块实现I2C 写入时序。 I2C_Controller(I2C控制器)实例化I2C_WRITE_WDATA.v模块,并为I2C数据线SDA添加三态缓冲电路。 I2C_HDMI_Config.v是顶层模块,实例化I2C_Controller模块,划分系统时钟,并控制寄存器的配置。

056ba96a-e06c-11f0-8c8f-92fbcf53809c.png

1 I2C写操作的Verilog实现

I2C_WRITE_WDATA.v是I2C写数据模块,用于通过I2C总线向从设备ADV7513写入数据。

05c58b1a-e06c-11f0-8c8f-92fbcf53809c.png

模块接口定义如下:

061e1a0a-e06c-11f0-8c8f-92fbcf53809c.png

该模块实现了一个状态机,其功能是将多个字节的数据写入从设备。它根据I2C 协议生成启动条件、发送从机地址(包括读/写位)、发送数据字节并生成停止条件。同时,它也会检测从设备的响应信号,并在传输完成后给出结束信号。具体流程如下:

06761aa2-e06c-11f0-8c8f-92fbcf53809c.png

为了更好的理解这个状态机的控制逻辑,将I2C传输某个寄存器的过程波形绘制如下:

06d086f4-e06c-11f0-8c8f-92fbcf53809c.png

2 I2C三态门电路的Verilog实现

I2C_WRITE_WDATA.v 模块在I2C_Controller.v 中实例化:

072573ee-e06c-11f0-8c8f-92fbcf53809c.png

该模块在I2C_WRITE_WDATA.v模块的SDAI和SDAO之间添加了一个三态门电路:

077e0f54-e06c-11f0-8c8f-92fbcf53809c.png

在I2C_WRITE_WDATA模块中,SDAO是输出信号,用于控制数据线的输出状态。当需要输出高电平时,将SDAO置1,使I2C_SDAT为高阻,并通过上拉电阻拉高;当需要输出低电平时,将SDAO设置为0,将I2C_SDAT拉低。同时,I2C_WRITE_WDATA模块还接收SDAI(即I2C_SDAT)作为输入,用于读取总线上的实际状态(例如检测ACK信号)。

3 I2C配置寄存器的Verilog设计

这是一个HDMI寄存器配置模块,使用查找表(LUT)来存储配置数据,然后通过I2C控制器(实现I2C协议)将配置一一写入到HDMI发送寄存器中。

时钟分度

一般FPGA开发板板载系统时钟为50MHz,但I2C时钟不能太高。根据手册,最大不能超过400KHz,所以设计代码时需要进行分频。

07d42948-e06c-11f0-8c8f-92fbcf53809c.png

Verilog代码将50MHz时钟划分为20KHz时钟:

082efeb8-e06c-11f0-8c8f-92fbcf53809c.png

配置寄存器

寄存器配置的值通过查找表(LUT)存储。代码中主要配置了31个寄存器。其他没有配置的则表示使用默认配置。关于ADV7513的寄存器查找,请参考2 ADV7513寄存器配置章节。

0885e85e-e06c-11f0-8c8f-92fbcf53809c.png

寄存器数据的配置由三态状态机控制:

08e11fc6-e06c-11f0-8c8f-92fbcf53809c.png

状态机完整代码如下:

09382618-e06c-11f0-8c8f-92fbcf53809c.png

该状态机保证了HDMI配置数据的可靠传输,具有完善的错误处理和重试机制,是HDMI初始化过程中的核心控制逻辑。

I2C设备地址

ADV7513的PD引脚连接2K电阻接地:

0994b0e0-e06c-11f0-8c8f-92fbcf53809c.png

参考ADV7513_Hardware_User's_Guide_R0.pdf文档,我们可以看到其I2C读写地址为0x72/0x73:

09e8ba6e-e06c-11f0-8c8f-92fbcf53809c.png

HDMI_TX_INT信号

HDMI_TX_INT信号低电平有效。详细说明请参考ADV7513_Hardware_User's_Guide_R0.pdf第17页:

0a436310-e06c-11f0-8c8f-92fbcf53809c.png

在DE10-Nano开发板电路中,

默认情况下,该引脚被拉高至3.3V。当中断事件发生时,软件控制该信号的电平变化。

0a99cac0-e06c-11f0-8c8f-92fbcf53809c.png

I2C_HDMI_Config.v文件中设置,如果HDMI_TX_INT信号为低电平,则寄存器将被重新配置:

0af91b2e-e06c-11f0-8c8f-92fbcf53809c.png

标题:基于FPGA的I2C控制模块设计
链接:https://yqqlyw.com/news/sypc/62338.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
绯红之境兑换码最新2021 礼包兑换码大全

绯红之境兑换码最新2021 礼包兑换码大全[多图],绯红之境兑换码怎么领取?绯红之境兑换码有哪些?绯红之境在今日

2025-12-26
三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法

三国群英传7霸王再临攻略 霸王再临攻略技巧开启方法[多图],三国群英传7霸王再临怎么玩?三国群英传7霸王再临

2025-12-26
妄想山海怎么加好友 加好友方法大全

妄想山海怎么加好友 加好友方法大全[多图],妄想山海添加好友功能在哪里?妄想山海添加好友的方法是什么?好友添

2025-12-26
江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略

江南百景图又见桃花村钓鱼位置在哪?又见桃花村钓鱼攻略[多图],江南百景图又见桃花村钓鱼怎么钓?又见桃花村钓

2025-12-26