I2C verilog (非常详细的i2c学习心得).pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I2C verilog (非常详细的i2c学习心得).pdf

I2C 学习心得     我最近刚做完 I2C通信协议的编写与调试,下面介绍一下我从一开始理解夏老师的程序, 修改程序,直到下板调试整个的学习过程,希望对大家学习 I2C 有一定的帮助。  一、 分析源代码  学习 I2C,首先我们要知道 I2C 是一种串行总线协议。目前几种常用的串行总线有UART、 SPI 和 I2C,先来简单了解一下这三种串行总线。                  图 1. UART、SPI、I2C 总线对比  如图 1 所示,UART 的总线数只有两条,分别是TX (发送)和RX (接收),没有时钟信 号,所以 UART 需要固定的波特率,也就是两位数据的间隔要相等。而 SPI 的四条总线分别 为 SCLK (时钟)、MISO (主器件数据输入,从器件数据输出)、MOSI (主器件数据输出, 从器件数据输入)、SS (从器件使能信号),SPI 总线由主机提供时钟,为同步通信,并且 SPI 总线有两条总线进行数据传输,可以同时进行收发数据,为双工模式。SPI 有 3 线、4 线 两种模式,3 线模式一般代表没有 SS 信号,具体情况还要视器件手册而定。I2C 有两条总线 SCL (时钟)和SDA (数据),I2C 用的线更少,因为 I2C 需要有双向 IO 的支持,而且使用上 拉电阻,抗干扰能力没有其他两种强,一般用于同一板卡上芯片之间的通信,较少用于远距 离通信。  具体到 FPGA 设计这一环节,我们需要搞清这三种总线上的信号是怎么走的,UART 很简 单,使用发送数据线 TXD 和接收数据线 RXD 来传送数据,接收和发送可以单独进行也可以 同时进行。它传送数据的格式有严格的规定,每个数据以相同的位串形式传送,每个串行数 据由起始位,数据位,奇偶校验位和停止位组成。从起始位到停止位为一个字符的完整通信 格式。SPI 情况就相对多一些,根据时钟极性(CPOL)和时钟相位(CPHA)两个参数的不同有四 种基本情况,传送数据的格式与 UART 差不多。而 I2C 总线的协议要比 UART 和 SPI 复杂,能 掌握 I2C,也就能掌握 UART 和 SPI 。言归正传,回到我们的 I2C 设计实例。  第一步首先了解,这个 I2C 实例的功能。  这个实例实现了通过 I2C 总线对 EEPROM 写入数据,再将写入 EEPROM 中的数据读取出 来的一个过程。实例的重点在于对 I2C 总线协议时序的掌握,即用 I2C 总线要求的格式将数 据写入到 EEPROM 中,再读取出来。  什么是 EEPROM?EEPROM (Electrically Erasable Programmable Read‐Only Memory),电可 擦可编程只读存储器,一种掉电后数据不丢失的存储芯片。EEPROM 可以在电脑上或专用设 备上擦除已有信息,重新编程。所以,EEPROM 是可以写入数据也可以读取数据的,并且 EEPROM 掉电数据并不会丢失,在后面将程序烧写到开发板的过程中可以验证这一点。  第二步,简单地了解一下这个实例的各个模块。  在这个 I2C 实例中,为了实现两个器件的通信,我们需要一个主机和一个从机,如下图 2 所示,它们之间采用 I2C 协议进行串行通信,设计实例中的 signal 模块和 EEPROM_WR 模 块模拟主机,EEPROM 模块模拟从机。当写入数据时,EEPROM_WR 模块从 signal 模块中调 取数据,然后通过 I2C 的两条总线 SDA (数据总线)和SCL (时钟总线)向EEPROM 器件写 入数据。当读出数据时,EEPROM_WR 仍然通过 SDA 和 SCL 总线读出 EEPROM 中的数据,然 后输入给 signal 模块,比较读出的数据与当时写入的数据是否相同。验证读写的正确性。  在至芯科技 EP2C8‐2010 开发板上,是有 EEPROM 器件的,而 signal 模块我们可以通 过创建一个 RAM 的 IP 核来实现其功能,所以图 2 中唯有 EEPROM_WR 模块是要写入 FPGA DATA[7:0] DATA[7:0] RESET

文档评论(0)

shaoyifen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档