FPGA的I2C程序

明天就放假了。在首页看到的一句话,记下来加以自勉!
代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你。

准备工作

  1. 看三段状态机:crazybingo的书第七章讲的很好
    (1)一段式状态机:将整个状态机的进程写在一个模块中,此模块中即描述状态的转移,又描述状态的输入和输出。
    适用场合:这个状态中只涉及时序逻辑电路,没有竞争风险,适合寄存器少的CPLD的实现。适合逻辑简单的应用场合,不适用于状态转换很多的场合。两段式状态机和三段式状态机适合于逻辑复杂的应用场合。
    (2)两段式状态机:使用一个时序逻辑来描述状态的转移,同时使用另一个组合逻辑判断状态的转移条件,并且描述逻辑输出。
    两段式状态机的输出因为其组合逻辑,比较容易产生毛刺,存在冒险竞争。所以有时组合逻辑电路也可以用时序逻辑来替换,这样就会减少毛刺。但是这个时序逻辑会使输出延迟一个时钟周期输出,所以,如果这个延时不影响效果,就可以采用两个时序逻辑的形式。
    (3)三段式状态机:即用三个逻辑实现功能,第一个进程中用时序逻辑描述次态寄存器迁移到现态寄存器;第二个进程用组合逻辑,判断现态寄存器的状态,并描写状态转移,即次态寄存器的值(注意状态转移要写完整(用case语句));第三个进程中用时序逻辑实现,通过判断次态寄存器的值来描述输出。
    特点:
    1)第二个进程采用组合逻辑,通过判断现态寄存器来描述次态寄存器,通过画时序图可看出次态寄存器于提前变化,有点像时代的先锋、探索者。
    2)第一个进程和第三个进程都采用时序逻辑,并且都是通过判断次态寄存器的值进行时序输出,这样就形成了输出和现态寄存器同时进行变化,这个特点很适合对时序要求很严格的电路。其实这两个进程可以合并为一个进程,这样就非常容易理解“同时变化”的意思了。
    状态机是时序电路的万能钥匙,所有的时序电路都能通过状态机实现。状态机是FPGA逻辑电路设计的精髓。

  2. I2C的时序图
    需要读懂器件的I2C时序,然后开始划分状态机,还得有寄存器的地址和配置值的表。

  3. 参考代码
    crazybingo书的第14章,OV7725摄像头用到的I2C协议,正好符合我的应用,只有一点的差别。所以只要读懂这个代码就可以实现我的要求了。

代码实现

和crazy的差不多(待续)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA i2c主机是指在FPGA芯片上实现的I2C主机模块。根据引用中的介绍,可以有多种实现方式,其中一种是通过对硬件的I2C电路进行编程控制实现,另一种是使用模拟GPIO的时序方法实现。在FPGA中,常常使用后者的方式来实现I2C主机。这种方式可以通过模拟时序来模拟I2C通讯协议的工作过程。 引用提到,编写FPGAI2C主从机模块的时候,可以参考EEPROM的手册。尽管引用中的示例是一个回环测试项目,并没有实现读写EEPROM的程序,但它提供了一个方便的基础框架,可以在以后的开发中直接使用。 引用中提到,FPGAI2C主机模块可以采用三段式状态机的方式进行编写。这种方法可以更容易理解和维护,并且可以根据自己的理解进行状态机的划分。当然,这并不是唯一的实现方式,可以根据具体需求和理解来选择合适的方法。 综上所述,FPGA i2c主机是指在FPGA芯片上实现的I2C主机模块,可以通过模拟GPIO的时序方法实现,并可以参考EEPROM的手册进行开发,常常使用三段式状态机的方式进行编写。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [I2C总线通讯协议中主机模块的FPGA实现](https://blog.csdn.net/shen_you/article/details/78628839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【FPGA】十一、I2C通信回环](https://blog.csdn.net/weixin_62912626/article/details/128518338)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值