侵权投诉

《基于FPGA的IIC设计》

2020-11-20 16:21 次阅读

《基于FPGA的IIC设计》

设计背景:

IIC简单来说,就是一种串行通信协议,IIC的通信协议和通信接口在很多工程中有广泛的应用,如数据采集领域的串行AD,图像处理领域的摄像头配置,工业控制领域的X射线管配置等等。除此之外,由于IIC协议占用的IO资源特别少,连接方便,所以工程中也常选用IIC接口做为不同芯片间的通信协议。

设计原理:

IIC电路原理图如下:

24LC64各引脚定义:

1、A0,A1,A2为24LC64的片选信号,由于IIC总线可以挂载多个IIC接口器件,所以每个器件都应该有自己的“身份标识”,通过对A0,A1,A2输入不同的高低电平,就可以设置该EEPROM的片选信号。

2、WP为读写使能信号,当WP悬空或者接地,EEPROM可读可写,当WP接电源,EEPROM只能读不能写。

3、SCL为IIC接口的时钟线。

4、SDA为IIC接口的数据线。

IIC接口的读写时序:

IIC接口读写时序分为随机读写(单字节读写)和页面读写(多字节读写),先分析随机读写(ByteWrite/Read)时序。ByteWrite时序如下:

时序解读:如果我们要向EEPROM写入一个字节,那么必须经过以下步骤:

1.发送启动信号

2.发送控制字

3.接收并检测EEPROM发来的应答信号ACK

4.发送高字节地址位

5.接收并检测EEPROM发来的应答信号ACK

6.发送低字节地址位

7.接收并检测EEPROM发来的应答信号ACK

8.发送8bit有效数据

9.接收并检测EEPROM发来的应答信号ACK

10.发送停止信号

ByteRead时序如下:

时序解读:如果我们要从EEPROM读出一个字节,那么必须经过以下步骤:

1.发送启动信号

2.发送控制字1010_A2A1A0_0

3.接收并检测EEPROM发来的应答信号ACK

4.发送高字节地址位

5.接收并检测EEPROM发来的应答信号ACK

6.发送低字节地址位

7.接收并检测EEPROM发来的应答信号ACK

8.发送启动信号

9.发送控制字1010_A2A1A0_1

10.接收并检测EEPROM发来的应答信号ACK

11.读取一个字节数据

12.发送NOACK信号

13.发送停止信号

接下来则需要分析各步骤具体意义:

1.启动信号

在SCL保持高电平期间,如果SDA出现由高到低的跳变沿,代表启动信号

2.控制字

我们的控制字为1010_0000,其中1010为EEPROM的型号标识,为一组固定的序列,紧接着A2,A1,A0就是我们的片选信号,最后一位为读写控制位,低电平代表写,高电平代表读,我们这里首先需要对EEPROM写入地址位,所以我们最后一位为0。

3.高/低位地址

由于24LC64有64Kbit的存储空间,所以我们需要13位的地址位宽才能寻址所有的存储空间,由于IIC协议规定只能以字节形式写入,所以必须将13位的地址扩展为16位的地址,分为高八位和低八位,多出来的前三位填充任意数据即可,对我们的寻址地址没有影响。

3.停止信号

4.应答信号ACK

应答信号是由数据接收方发出的,当SCL为高电平期间,如果监测到SDA为低电平,说明有应答信号。

5.非应答信号NOACK

非应答信号也是由数据接收方发出的,当SCL为高电平期间,如果SDA为高电平,说明有非应答信号。

说明:由于IIC总线协议启动和停止信号都是在SCL高电平期间发生跳变,这就决定了我们其他数据的改变只能发生在SCL低电平期间,在SCL为高电平期间,数据必须保持稳定。即在SCL低电平改变数据,在SCL高电平采集数据。相比于单字节读写,页面读写只是增加了几个状态,具体时序如下,这里和后面的设计代码不做详细论述。

PageWrite时序如下:

PageRead时序如下:

设计架构图:

本设计用两个按键控制EEPROM读写,当写按键按下时,向EEPROM某一固定地址写入一个字节数据,当读按键按下时,将该地址数据读出,并显示到数码管,LED灯是一个标志信号,LED亮说明数据写入完毕。设计架构如下:

设计代码:

iic_wr模块代码:负责进行IIC数据的读写

seg7_lut模块代码,负责数码管显示

IIC顶层模块代码:

tb顶层测试模块代码:

仿真图:

随机读写,仿真写时序:

随机读写,仿真读时序:

在仿真时,需要将检测应答的状态跳过,直接向下一状态跳转,观察读写时序,当读写按键按下时,都会产生对应的动作。

责任编辑:lq

原文标题:FPGA入门课程《基于 FPGA 的 IIC设计》

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

FPGA配置引脚说明及加载时序

  一、FPGA配置引脚说明   1、CFGBVS   如果VCCO0连接至2.5V或3.3V,CFGBVS连接至VCCO0。  ...
发表于 01-15 16:43 101次 阅读
FPGA配置引脚说明及加载时序

【年度精选】2020年度TOP10榜单——FPGA技术社区问答

本榜单汇总了FPGA技术社区2020年回复最多的10个问答,每个问答都有推荐理由,你是否也遇到过类似的问题啊,一起来看看吧! ...
发表于 01-15 16:36 73次 阅读
【年度精选】2020年度TOP10榜单——FPGA技术社区问答

FPGA Nios嵌入式处理器的软件开发

Nios 嵌入式处理器是一个优化了的CPU 软核,用于可编程逻辑器件上的SOPC 设计。Nios 处....
发表于 01-15 15:58 16次 阅读
FPGA Nios嵌入式处理器的软件开发

FPGA Nios嵌入式处理器的软件开发

Nios 嵌入式处理器是一个优化了的CPU 软核,用于可编程逻辑器件上的SOPC 设计。Nios 处....
发表于 01-15 15:58 21次 阅读
FPGA Nios嵌入式处理器的软件开发

FPGA Nios嵌入式处理器的硬件开发

本章将介绍Nios 处理器的硬件开发环境和硬件开发的整个流程。一个简单Nios 开发系统包括Nios....
发表于 01-15 15:57 15次 阅读
FPGA Nios嵌入式处理器的硬件开发

QUARTUS II的使用教程学习教程免费下载

选择菜单File\ New Project Wizard,弹出新建项目向导对话框(如图2.2)。对话....
发表于 01-15 15:57 14次 阅读
QUARTUS II的使用教程学习教程免费下载

玩转FPGA的PDF电子书免费下载

一直以来都想写点什么,关于FPGA 设计,因为有点不太服气。为什么同样是设计,有些人可以好像玩一样的....
发表于 01-15 15:57 12次 阅读
玩转FPGA的PDF电子书免费下载

玩转FPGA的PDF电子书免费下载

一直以来都想写点什么,关于FPGA 设计,因为有点不太服气。为什么同样是设计,有些人可以好像玩一样的....
发表于 01-15 15:57 20次 阅读
玩转FPGA的PDF电子书免费下载

大型设计中FPGA的多时钟设计策略详细说明

利用 FPGA 实现大型设计时,可能需要FPGA 具有以多个时钟运行的多重数据通路,这种多时钟FPG....
发表于 01-15 15:57 19次 阅读
大型设计中FPGA的多时钟设计策略详细说明

使用FPGA实现可编程数字滤波器系统的论文说明

本系统基于开关电容滤波器原理,以单片机和FPGA为控制核心制作程控滤波器。系统前级放大器由固定增益放....
发表于 01-15 15:27 77次 阅读
使用FPGA实现可编程数字滤波器系统的论文说明

FPGA教学实验平台实验指导之嵌入式系统设计

Nios II 是一个用户可配置的通用RISC 嵌入式处理器。 Altera 推出的NiosII 系....
发表于 01-15 15:27 11次 阅读
FPGA教学实验平台实验指导之嵌入式系统设计

FPGA教学实验平台实验指导之嵌入式系统设计

Nios II 是一个用户可配置的通用RISC 嵌入式处理器。 Altera 推出的NiosII 系....
发表于 01-15 15:27 10次 阅读
FPGA教学实验平台实验指导之嵌入式系统设计

FPGA教学实验平台实验指导之逻辑设计

QuatusII5.0 是Altera 公司的最新产品。MaxplusII 是一套非常成功的PLD ....
发表于 01-15 15:27 14次 阅读
FPGA教学实验平台实验指导之逻辑设计

如何使用FPGA实现异步FIFO硬件

在电子设计中,由于现场可编程门阵y~J(FPGA)的高逻辑密度和高可靠性以及用户可编程性,受到了广大....
发表于 01-15 15:27 15次 阅读
如何使用FPGA实现异步FIFO硬件

复杂数字电路与系统的VerilogHDL设计技术的PDF电子书免费下载

随着电子设计技术的飞速发展,专用集成电路(ASIC)和用户现场可编程门阵列(FPGA)的复杂度越来越....
发表于 01-15 15:27 15次 阅读
复杂数字电路与系统的VerilogHDL设计技术的PDF电子书免费下载

一个FPGA设计教程

创建一个设计,使开发板上的LED以由输入按钮控制的速度闪烁此设计易于创建,并为您提供设计工作的视觉反....
发表于 01-15 14:38 14次 阅读
一个FPGA设计教程

Synplify和QuartusⅡ逻辑锁设计流程

为了最大限度地利用Quartus?II设计软件LogicLockTM的增量设计功能,可以将新设计划分....
发表于 01-15 14:38 12次 阅读
Synplify和QuartusⅡ逻辑锁设计流程

如何使用Cyclone器件中的PLL

Cyclone FPGA 具有锁相环(PLL)和全局时钟网络,提供完整的时钟管理方案。Cyclone....
发表于 01-15 14:38 11次 阅读
如何使用Cyclone器件中的PLL

赛灵思FPGA助力安全自动驾驶“三重视觉”:激光雷达

与毫米波雷达的区别在于,激光雷达生成的3D点云数据(空间的一组数据点)有数千个点。因此,其精度和准确....
的头像 MEMS 发表于 01-15 14:06 398次 阅读
赛灵思FPGA助力安全自动驾驶“三重视觉”:激光雷达

Xilinx基本自定义OpenRISC系统硬件教程

在检索源代码之后,会出现更复杂的部分:调整源代码。请记住,我们要构建一个“基本自定义OpenRISC....
发表于 01-15 13:51 14次 阅读
Xilinx基本自定义OpenRISC系统硬件教程

如何使用FPGA实现可编程数字滤波器系统

本系统基于开关电容滤波器原理,以单片机和FPGA为控制核心制作程控滤波器。系统前级放大器由固定增益放....
发表于 01-15 13:51 17次 阅读
如何使用FPGA实现可编程数字滤波器系统

基于EP1C3T144C6芯片和VHDL语言实现语音电子密码锁的设计

随着电子技术的发展,具有防盗报警、语音提示等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是....
发表于 01-15 10:21 90次 阅读
基于EP1C3T144C6芯片和VHDL语言实现语音电子密码锁的设计

FPGA中的时钟相关概念

一、时钟相关概念 理想的时钟模型是一个占空比为50%且周期固定的方波。Tclk为一个时钟周期,T1为....
的头像 FPGA之家 发表于 01-15 09:37 77次 阅读
FPGA中的时钟相关概念

【年度精选】2020年度TOP10榜单——FPGA技术论坛经验

本榜单汇总了2020年阅读量最多的经验帖,都是深受各位嵌入式开发好者喜欢的开发经验,相信你也能从中找到适合自己的知识,快来阅...
发表于 01-14 18:09 152次 阅读
【年度精选】2020年度TOP10榜单——FPGA技术论坛经验

如何使用单片机和FPGA实现任意频率发生器的设计

本文提出了一种基于直接数字频率合成(DDS)技术的任意波形发生器。在单片机和FPGA的控制下,将存储....
发表于 01-14 16:55 26次 阅读
如何使用单片机和FPGA实现任意频率发生器的设计

于宗光:力争引领集成电路产业高速发展

集成电路作为聚集创新资源与要素的投资密集型朝阳产业,是当前全球创新最活跃、投资最密集、带动性最强、渗....
的头像 我快闭嘴 发表于 01-14 16:27 224次 阅读
于宗光:力争引领集成电路产业高速发展

FPGA系统时序的基础理论详细说明

对于系统设计工程师来说,时序问题在设计中是至关重要的,尤其是随着时钟频率的提高,留给数据传输的有效读....
发表于 01-14 16:26 24次 阅读
FPGA系统时序的基础理论详细说明

Xilinx的时序设计与约束资料详细说明

本文档的主要内容详细介绍的是Xilinx的时序设计与约束资料详细说明。
发表于 01-14 16:26 26次 阅读
Xilinx的时序设计与约束资料详细说明

VHDL实用技术教程实例课件免费下载

本书比较系统地介绍了 VHDL 的基本语言现象和实用技术 全书以实用和可操作为基点 简洁而又不失完整....
发表于 01-14 16:26 15次 阅读
VHDL实用技术教程实例课件免费下载

VHDL实用技术教程实例课件免费下载

本书比较系统地介绍了 VHDL 的基本语言现象和实用技术 全书以实用和可操作为基点 简洁而又不失完整....
发表于 01-14 16:26 33次 阅读
VHDL实用技术教程实例课件免费下载

27个FPGA实例源代码合集

本文档的主要内容详细介绍的是27个FPGA实例源代码合集包括了:频率计程序设计与仿真,LED控制VH....
发表于 01-14 16:26 26次 阅读
27个FPGA实例源代码合集

时序分析的静态分析基础教程

本文档的主要内容详细介绍的是时序分析的静态分析基础教程。
发表于 01-14 16:04 15次 阅读
时序分析的静态分析基础教程

时序分析的Timequest教程

本文档的主要内容详细介绍的是时序分析的Timequest教程免费下载。
发表于 01-14 16:04 16次 阅读
时序分析的Timequest教程

时序分析的Timequest教程

本文档的主要内容详细介绍的是时序分析的Timequest教程免费下载。
发表于 01-14 16:04 15次 阅读
时序分析的Timequest教程

时序分析的优化策略详细说明

本文档的主要内容详细介绍的是FPGA的时序分析的优化策略详细说明。
发表于 01-14 16:03 15次 阅读
时序分析的优化策略详细说明

时序分析的优化策略详细说明

本文档的主要内容详细介绍的是FPGA的时序分析的优化策略详细说明。
发表于 01-14 16:03 17次 阅读
时序分析的优化策略详细说明

华邦HyperRAM™ 助力高云半导体最新GoAI 2.0边缘计算解决方案

华邦的HyperRAM™产品采用微型KGD尺寸,具有低脚位、低功耗和高数据带宽等特性,可实现空间与能....
发表于 01-14 14:11 98次 阅读
华邦HyperRAM™ 助力高云半导体最新GoAI 2.0边缘计算解决方案

altera的ip源语在哪里可以获取?在官网找的话要怎么搜索,有知道的大神求告知一下!

1.由于每次通过ip调取不方便移植也麻烦,所以需要获取源语进行例化。有知道的大神求告知,链接代码均可,常用的ip,ram,fifo,pl...
发表于 01-14 10:15 76次 阅读
altera的ip源语在哪里可以获取?在官网找的话要怎么搜索,有知道的大神求告知一下!

【年度精选】2020年度TOP10榜单——FPGA技术资料

本榜单汇总了2020年下载量最高的10份资料,每份资料都有推荐理由,总有一款你喜欢的,快来看看吧! 1、   作者:&...
发表于 01-13 18:34 153次 阅读
【年度精选】2020年度TOP10榜单——FPGA技术资料

FPGA中IO口的时序分析详细说明

在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束利序例外约束才能实现PC....
发表于 01-13 17:13 26次 阅读
FPGA中IO口的时序分析详细说明

如何使用Xilinx的FPGA对高速PCB信号实现优化设计

本文档的主要内容详细介绍的是如何使用Xilinx的FPGA对高速PCB信号实现优化设计。
发表于 01-13 17:00 31次 阅读
如何使用Xilinx的FPGA对高速PCB信号实现优化设计

FPGA中毛刺的讨论和可靠性有关的几个概念详细说明

建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时....
发表于 01-13 17:00 25次 阅读
FPGA中毛刺的讨论和可靠性有关的几个概念详细说明

使用FPGA时序使时钟保持纯净或使杂质易于消化的详细说明

使用FPGA时序使时钟保持纯净或使杂质易于消化的详细说明。
发表于 01-13 17:00 10次 阅读
使用FPGA时序使时钟保持纯净或使杂质易于消化的详细说明

使用FPGA实现大型设计时的设计策略详细说明

利用 FPGA 实现大型设计时,可能需要FPGA 具有以多个时钟运行的多重数据通路,这种多时钟FPG....
发表于 01-13 17:00 22次 阅读
使用FPGA实现大型设计时的设计策略详细说明

Intel FPGA时序约束的基础概念详细说明

由于每次我都写了功能仿真过后,放到门级仿真,就出问题,而门级仿真通常对实际还是有一定的指导意义的,通....
发表于 01-13 16:02 32次 阅读
Intel FPGA时序约束的基础概念详细说明

FPGA时序约束中常用公式的详细推导

举个形象的比喻:就好比我要让代工厂(类比quartus ii)给我加工一批零件,要求长宽高为10x1....
发表于 01-13 16:02 26次 阅读
FPGA时序约束中常用公式的详细推导

Intel FPGA时序约束的解决方案详细说明

首先,我们点进去都会叫我们选择一个模型,来建立网表,如果,我们选择slow,那么我们知道对setup....
发表于 01-13 16:02 23次 阅读
Intel FPGA时序约束的解决方案详细说明

Intel FPGA时序约束的使用和学习总结

本篇文章用于总结之前学习的time quest,并且我已经能够利用公式,计算出slack了,并能够根....
发表于 01-13 16:02 17次 阅读
Intel FPGA时序约束的使用和学习总结

基于XC2V500-6FG256C和AD9858实现复杂信号模拟的设计

在1992年5月美国电信系统会议上,JeoMitola首次提出了软件无线电概念,之后迅速引起了人们的....
发表于 01-13 08:39 120次 阅读
基于XC2V500-6FG256C和AD9858实现复杂信号模拟的设计

FPGA时序分析的重要参数有哪些

传播延时,即I/O管脚输入到非寄存器输出延时。信号从任何一个I/O脚输入,通过一个宏单元内的组合逻辑....
发表于 01-12 17:48 24次 阅读
FPGA时序分析的重要参数有哪些

FPGA的静态时序分析详细讲解分析

任何学FPGA的人都跑不掉的一个问题就是进行静态时序分析。静态时序分析的公式,老实说很晦涩,而且总能....
发表于 01-12 17:48 27次 阅读
FPGA的静态时序分析详细讲解分析

FPGA静态时序分析的理论和参数说明

静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,给出正确是时....
发表于 01-12 17:48 34次 阅读
FPGA静态时序分析的理论和参数说明

解决FPGA时序问题的八条知识点

忠告一、如果时序差的不多,在1NS以内,可以通过修改综合,布局布线选项来搞定,如果差的多,就得动代码....
发表于 01-12 17:48 34次 阅读
解决FPGA时序问题的八条知识点

FPGA时序优化最简单的方法详细说明

结构上的pipeline,简言之就是“拆“,最极端的情形是拆到源和目的Reg间只有基本的组合逻辑门,....
发表于 01-12 17:48 15次 阅读
FPGA时序优化最简单的方法详细说明

基于xilinx FPGA验证ASIC可能遇到的timing问题

本文是本人对xilinx XC7V系列FPGA用于ASIC前端验证遇到问题的总结,为自己记录并分享给....
发表于 01-12 17:31 39次 阅读
基于xilinx FPGA验证ASIC可能遇到的timing问题

AD9280采用0-2V模式,如果输入的采样电压范围为0-1V,那么对应的数字输出量是多少

AD9280 的输入量程是0-2V,实际输入电压范围是0-1V,如果输出定义为无符号数,输出的数字量范围是0-255,实际输出范围是0-12...
发表于 01-11 22:53 117次 阅读
AD9280采用0-2V模式,如果输入的采样电压范围为0-1V,那么对应的数字输出量是多少

FPGA所有IO的状态进行分析

  概述   在进行FPGA硬件设计时,引脚分配是非常重要的一个环节,特别是在硬件电路上需要与其他芯片通行的引脚。Xilin...
发表于 01-08 17:29 101次 阅读
FPGA所有IO的状态进行分析

使用SystemVerilog来简化FPGA中接口的连接方式

  FPGA工程师们应该都会吐槽Verilog的语法,相当的不友好,尤其是对于有很多接口的模块,像AXI4/AXI-Lite这种常用...
发表于 01-08 17:23 101次 阅读
使用SystemVerilog来简化FPGA中接口的连接方式

三种跨时钟域处理的方法

  跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者的必修课。如果是...
发表于 01-08 16:55 155次 阅读
三种跨时钟域处理的方法

7系列FPGA DSP48E1片的特点

  具有D寄存器的25位预加器,以增强A路径的能力   •INMODE控件支持在乘法(A*B)和加法操作(A:B)之间动态切...
发表于 01-08 16:46 0次 阅读
7系列FPGA DSP48E1片的特点

TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为±1 °C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150°C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。 特性 ±1°C远程二极管传感器 ±1°C本地温度传感器 可编程非理想因素 串联电阻取消 警报功能 系统校准的偏移寄存器 与ADT7461和ADM1032兼容的引脚和寄存器 可编程分辨率:9至12位 可编程阈值限...
发表于 09-19 16:35 233次 阅读
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器

TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75°C)和测量分辨率(0.0 625°C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm×3mm或1.6mm×1.6mm),可在计算系统中轻松集成。远程结支持-55°C至+ 150°C的温度范围。 特性 8通道远程二极管温度传感器精度:±0.75&...
发表于 09-18 16:05 154次 阅读
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器