基于FPGA的IIC程序设计

news2024/11/25 3:31:51

        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的读时序仿真结果

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1161562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能PDU电源管理器在高密度IDC机房部署中的重要性

智能电源管理是一种利用信息技术手段,优化电力的分配和使用,随着数据中心进行虚拟化部署和为提高计算效率而整合设备,平均机架功率密度在持续增长,几年前,一个普通机柜需要3-4千瓦电力,如今已变成低密度环境…

自定义微信公众号源码系统 带完整搭建教程

在我们现在的互联网时代,越来越多的人开始尝试通过微信公众号来传播自己的信息、提供服务或者进行营销。但是,市面上的微信公众号平台往往功能有限,不能满足部分用户的需求。这时,自定义微信公众号源码系统就成为了解决问题的最佳…

2023年熔化焊接与热切割证考试题库及熔化焊接与热切割试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2023年熔化焊接与热切割证考试题库及熔化焊接与热切割试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试…

2023杭州.云栖大会:计算,为了无法计算的价值

目录 前言 第一次参加云栖大会的印象 第二次至今参加云栖大会的感受 2023云栖大会介绍 这些年,我的工作、生活、关注的技术领域等发生的变化 对未来云栖大会的期待与建议 🎈个人主页:库库的里昂 🎐C/C领域新星创作者 &#…

git push超过100MB大文件失败(remote: fatal: pack exceeds maximum allowed size)

push代码的时候,有时会出现如下问题 remote: fatal: pack exceeds maximum allowed size error: failed to push some refs to ‘git.n.xiaomi.com:fuzheng1/nl2sql.git’ 解决方案: 将本地 http.postBuffer 数值调整到GitHub服务对应的单次上传大小配置…

我被美女包围了Cocos源码?

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 近期,国产真人恋爱影视游戏**《完蛋!我被美女包围了》连续多日荣登Steam国区畅销榜首**。这款游戏力压了一众热门免费游戏&#x…

硬件加速器及其深度神经网络模型的性能指标理解

前言: 现如今,深度神经网络模型和硬件加速器,如GPU、TPU等的关系可谓是“不分彼此”,随着模型参数的增加,硬件加速器成为了训练、推理深度神经网络不可或缺的一个工具,而近年来硬件加速器的发展也得益于加速…

人工智能基础_机器学习014_BGD批量梯度下降公式更新_进一步推导_SGD随机梯度下降和MBGD小批量梯度下降公式进一步推导---人工智能工作笔记0054

然后我们先来看BGD批量梯度下降,可以看到这里,其实这个公式来源于 梯度下降的公式对吧,其实就是对原始梯度下降公式求偏导以后的梯度下降公式,然后 使用所有样本进行梯度下降得来的,可以看到* 1/n 其实就是求了一个平均数对吧.所有样本的平均数. 然后我们看,我们这里* 1/n那么…

不一样的编程方式 —— 协程(设计原理与汇编实现)

主要通过以下9个方面来了解协程的原理: 目录 1、为什么使用协程 1.3、协程的适用场景 2、协程的原语操作 3、协程的切换 3.1、汇编实现 4.协程的运行流程 5.协程的结构体定义(我们其实可以参照线程或者进程的状态来设计) 5.1、多状态集合设计 6.协程的调度…

阿里云2023年双11大促活动优惠券领取与使用及特惠云服务器产品购买规则汇总

2023年阿里云双11大促活动正在火热进行中,今年的双11活动还是延续了去年金秋云创季的活动名称,对于大部分用户来说,最为关心的是活动优惠券与云服务器的优惠政策,在我们领取双11优惠券和购买双11活动云服务器的时候,应…

ubuntu无网络连接,没有网络标识,快速解决方法

在这里插入代码片当我们装虚拟机的时候,需要用到网络时发现没有网络连接,且右上角没有网络标识符,这时只需要简单的输入一下三个命令即可 sudo nmcli networking offsudo nmcli networking onsudo service network-manager restart然后重启客…

泛微e-office系统存在SQL注入漏洞

泛微e-office系统存在SQL注入漏洞 一、泛微简介二、漏洞描述三、影响版本四、fofa查询语句五、漏洞复现 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使…

年度评选开启,边缘力量驱动科技未来!

随着人工智能技术的快速发展,边缘计算作为一种新兴技术,正逐渐成为实现智能制造、智慧城市、自动驾驶等领域的关键技术之一。边缘计算能够在靠近数据源的地方进行数据处理和分析,从而提高数据的实时性和可靠性,同时降低网络带宽和…

【Linux】vim 使用

目录 一,vim 与 vi 1,vim 的基本概念 二,vim 的基本操作 三,vim 正常模式命令集 1,插入模式 2,从插入模式或者底行模式切换为命令模式 3,移动光标 4,删除文字 5&#xff0…

Mitsuba 3多视角渲染简明教程

Mitsuba 3 是一款面向研究的渲染系统,用于正向和反向光传输模拟。 它由一小组核心库和各种插件组成,这些插件实现从材质和光源到完整渲染算法的功能。 Mitsuba 3 努力保持与其前身 Mitsuba 0.6 和 Mitsuba 2 的场景兼容性。然而,在大多数其他…

CSS实现元素显示与隐藏的方式整理

目录 前言 一、display属性 二、visibility属性 三、opacity属性 四、height和width属性 前言 在CSS中,有多种方法可以用来控制元素的显示和隐藏。这些方法主要包括:display, visibility, opacity 和 width/height。理解这些属性的区别、使用场景以…

阿里云2核2G经济型e实例ecs.e-c1m1.large性能测评

阿里云服务器ECS经济型e实例2核2G配置规格ecs.e-c1m1.large,CPU采用Intel Xeon Platinum架构处理器,e系列云服务器是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器。目前云服…

施耐德电气远程 Pro-face Win 版远程 HMI 客户端

施耐德电气远程桌面 Pro-face Remote HMI Client for Win 是 Pro-face Remote HMI 应用程序的 Windows 桌面应用程序。它可以从一台 PC 远程查看多个 HMI RT 屏幕。 Pro-face Win 版远程 HMI 客户端 - 功能 特征 多显示器模式 一台 PC 屏幕上最多可显示 6 个屏幕。 支持全屏模…

GaussDB SQL基础语法示例-数组表达式

目录 一、前言 二、条件表达式的概念及GaussDB中的常见的数组表达式 三、GaussDB中常用的数组表达式(语法 示例) 1、expression IN (value [, ...]) 2、expression NOT IN (value [, ...]) 3、expression operator ANY/ SOME (array expression) …

c语言基础:L1-070 吃火锅

以上图片来自微信朋友圈:这种天气你有什么破事打电话给我基本没用。但是如果你说“吃火锅”,那就厉害了,我们的故事就开始了。 本题要求你实现一个程序,自动检查你朋友给你发来的信息里有没有 chi1 huo3 guo1。 输入格式&#x…