基于I2C总线接口的数据采集系统设计.docVIP

基于I2C总线接口的数据采集系统设计.doc

  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总线接口协议设计及FPGA的实现 摘 要:简单介绍了I2C总线规范和提出一种基于FAGA的I2C总线接口协议的设计方法,并给出了仿真结 果。 关键词:I2C总线;FPGA;Verilog HDL 0 引言 I2C总线是Philps公司开发的一种用于芯片间通讯的串 行传输总线,它由串行时钟线SCL和串行数据线SDA完成全 双工数据传送。由于它具有连线少、允许多主机控制、具有总 线仲裁和同步等特点,被广泛应用到各个领域,并已经成为一 种世界性的工业标准。本文结合现行的研究项目,利用ver- ilog HDL语言在FPGA上设计实现I2C总线接口功能。 1 I2C总线的基本原理 I2C总线数据传输时,在时钟高电平期间数据线上必须 保持有稳定的逻辑电平状态,高电平为数据1,低电平为数 据0。只有在时钟线为低电平时,才允许数据线的电平状态 变化。 起始信号:在时钟线保持高电平期间,数据线出现由高 电平向低电平变化时启动I2C总线,为I2C总线的起始信 号。 终止信号:在时钟线保持高电平期间数据线上出现由低 到高的电平变化时将停止I2C总线的数据传送,为I2C总线 的终止信号。 应答信号:I2C总线数据传送时,每传送一个字节数据 后都必须有应答信号。应答信号在第九个时钟位上出现,接 收器输出低电平为应答信号(A),输出高电平则为非应答信 号(-A)。图1为一次完整的数据传输。 按照设计要求需要有8位双向数据线(data-bus),1位 时钟线(clk),2位控制线(drive和r/-w)、一位握手线(mcf)、 一位串行时钟线(scl)及一位串行数据线(sda)共计14位输 入输出引线。EDA模块的主要功能是完成并行数据与串行 数据的转换,在转换过程中串行数据的输入与输出必须满足 I2C总线规范。 分频器:由FPGA的锁相环输出的稳定时钟信号,由于 频率很高所以必须经过分频模块输出满足I2C总线要求的 数据传输速率。 I2C总线接口控制时序逻辑块:I2C总线数据传输的所 有时序控制逻辑都由它产生,是这个I2C模块的核心。 数据锁存器:根据读写使能信号(r/-w)存储I2C己接收 的或待发送的数据。 移位寄存器:在时序控制逻辑模块的控制下根据读写使 能信号(r/-w)对数据进行正确地处理。 3 verilog HDL代码设计 由于I2C总线传输协议可知,I2C在传输过程中存在着 几个固定的状态,因此我们采用同步状态机来设计I2C模 块。主状态机共有5个状态:空闲(Idle),开始(Start),发送 数据(Tx),接收数据(Rx),停止(Stop)。 Idle:I2C总线处在空闲状态。Start:当drive信号为高 电平时开始运作I2C模块,且根据(r/-w)判断进入下一状态。 Tx:当(r/-w)为“0”时传输数据。Rx:当(r/-w)为“1”时接收数 据。Stop:当数据传输完毕,跳入Stop状态。状态转移图如 图3所示。 4 仿真验证 对I2C总线串口设计的系统调试主要是看串行时钟线 (scl)及串行数据线(sda)的输出是否满足I2C总线规范。为 此我们将I2C模块实例化了两个模块master和slave,并设 计了顶层模块调用master和slave,使用了modelsim6.0进行 了仿真。从图4和图5明显可知,当master的drive线置高 电平且r/-w线为低电平时,I2C模块运作,产生起始信号 Start,且在sda线发送8位数据,且在scl线发送9个时钟脉 冲信号,等待mcf,若slave响应,则mcf为高电平,继续发 5 结论 从以上对master和slave接口的读写时序的模拟仿真结 果可以看出,整个时序满足I2C总线协议的时序要求,并且 所编写的I2C接口模块的Verilog HDL代码是可综合的。本 人已成功下载至altera公司EP2S90F1020C5器件上且模拟 了I2C总线接口功能,基本实现项目要求。 下一字节数据,直到产生终止信号Stop,sda线和scl线置高 电平,发送数据终止,等待下一个起始信号Start。同样的, 当slave的drive线置高电平时,I2C模块运作,r/-w线为’1’ 时接收数据功能启动。当mcf为’1’时,slave响应master,且 在这时刻才能保证接收数据的准确性,当出现终止信号Stop 时数据接收终止,等待下一个起始信号Start。图4和图5准 确反映了master发送3字节数据和slave准确接收3字节数 据的功能。 参考文献 [1] 何立民.I2C总线应用系统设计[M].北京航空航天大 学出版社,2004. [2] 夏宇闻.Verilog数字系统设计教程[M].北京航空航天 大学出版社,2005. [3] 吴继华,王诚.Altera FPGA/CP

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档