基于fpga的i2c接口程序实现课程设计.doc

上传人:壹****1 文档编号:546137019 上传时间:2022-09-29 格式:DOC 页数:40 大小:1.42MB
返回 下载 相关 举报
基于fpga的i2c接口程序实现课程设计.doc_第1页
第1页 / 共40页
基于fpga的i2c接口程序实现课程设计.doc_第2页
第2页 / 共40页
基于fpga的i2c接口程序实现课程设计.doc_第3页
第3页 / 共40页
基于fpga的i2c接口程序实现课程设计.doc_第4页
第4页 / 共40页
基于fpga的i2c接口程序实现课程设计.doc_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《基于fpga的i2c接口程序实现课程设计.doc》由会员分享,可在线阅读,更多相关《基于fpga的i2c接口程序实现课程设计.doc(40页珍藏版)》请在金锄头文库上搜索。

1、郑州轻工业学院可编程数字系统设计 题 目 基于FPGA的I2C接口程序实现学生姓名 吕 彦 梅 专业班级 电子信息工程10-2班 学 号 541001030221 院 (系) 电气信息工程学院 指导教师 完成时间 给予FPGA的I2C接口程序实现 摘 要串行扩展接口的发展是新一代单片机技术的显著特点,其中I2C 总线功耗低,结构简单,使用灵活,被广泛应用于视频、音像等各类设备中。本课题首先研究了IIC 总线的规范,简要介绍了Quartus 设计平台,以及FPGA 的设计流程。在此基础上,重点介绍了IIC 接口的总体设计方案,详细描述时序状态机的工作原理和Verilog HDL 语言的实现,以及

2、在Quartus 平台上的时序仿真。本系统采用了自顶向下的设计方法,利用了Verilog HDL 语言的结构描述风格,把整个设计分成6 个模块,时钟分频模块,寄存器组模块,数据接收模块,数据发送模块,输出缓冲模块,时序控制模块,顶层模块也采用语言描述。在Quartus平台上,实现系统的功能和仿真。关键词 现场可编程逻辑门阵列 IIC总线 状态机 时序仿真1.绪论 1.1 IIC总线的优点 作为一种串行总线,IIC总线虽没有并行总线的数据吞吐能力,但它具有如下优点:1、仅由两根信号线组成,节省了芯片I/O、节省PCB面积、节省成本等。 2、总线上可同时挂接多个器件,器件之间是靠不同的编址来区分的

3、,而不需要附加的I/O线或地址译码部件。 3、总线可裁减性好。在原有总线连接的基础上可以随时新增或者删除器件。 4、总线电气兼容性好。IIC总线规定器件之间以开漏I/O互联,这样,只要选取适当的上拉电阻就能轻易实现3V/5V逻辑电平的兼容,而不需要额外的转换。 5、支持多种通信方式。一主多从是最常见的通信方式。此外还支持双主机通信、多主机通信以及广播模式等等。 6、兼顾高低速通信。IIC总线标准传输速率为100kbit/s,在快速模式下为400 kbps,高速模式下为3.4Mbit/s。IIC总线的通信速率也可以低至几kbps以下,用以支持低速器件或者用来延长通信距离。 IIC总线带来的这些好

4、处,得到了广大工程师的青睐。在通信,音/视频,智能仪表、工控领域都得到了应用。 1.2 课题的主要工作作为一款经典的串行通讯总线,IIC总线接口IP核已被越来越广泛的集成到SoC中。本文通过用Verilog HDL语言在FPGA上实现一个IIC总线接口,它可作为IP核集成到SOC中。研究内容主要包括以下方面:1、深入研究IIC协议规范。 2、用Verilog HDL硬件描述语言设计基于FPGA的IIC总线接口,做到数据传输能够有序、有效地进行。 3、用Quartus软件对每一个模块进行编译生成单个电路模块。4、在Quartus平台上,对设计进行分析、综合、功能和时序仿真。 2 IIC总线协议研

5、究 2.1 IIC总线概述 2.1.1 IIC总线简介 IIC总线支持任何IC生产过程,包括CMOS、NMOS、双极性,用两根信号线进行数据传输串行数据线(SDA)和串行时钟线(SCL)。它允许若干兼容器件(如存储器、A/D和D/A转换器,以及LED、LCD驱动器等)共享总线。图2.1是IIC总线结构。 图2.1 典型的IIC总线结构 每个器件都有唯一的地址,而且都可以作为一个发送器或接收器,由器件的功能确定,。IIC总线上所有器件依靠SDA发送的地址信号寻址,不需要片选线。任何时刻总线只能由一个主器件控制,各从器件在总线空闲时启动数据传送,由IIC总线仲裁来决定哪个主器件控制总线。表2-1给

6、出了IIC总线常用的术语定义。 表2-1 IIC总线术语定义 术语描述发送器发送数据到总线的器件接收器从总线接收数据的器件主机初始化发送产生时钟信号和终止发送的器件从机被主机寻址的器件多主机同时有多于一个主机尝试控制总线但不破坏报文仲裁多主机同时尝试控制总线但只允许其中一个主机控制总线并使报文不被破坏的过程同步两个或多个器件同步时钟信号的过程2.1.2 IIC总线的电气特性与结构 在系统中,IIC总线的典型接法如图2.2所示,注意连接时需要共地。SDA和SCL都是双向线路,为了使总线上所有电路的输出能实现“线与”功能,各个IIC总线的接口电路的输出端必须是漏极开路或集电极开路结构,输出端必须接

7、上拉电阻,上拉电阻一般取值310K。 图2.2 IIC总线的器件连接 开漏结构的好处是:1、当总线空闲时,这两条信号线都保持高电平,因各设备都是开漏输出,上拉电阻,使SDA和SCL线都保持高电平,不会消耗电流。任一设备输出的低电平都使相应的总线信号线变低,即总线上的所有器件都达到高电子状态时,IIC总线才能达到高电平,从而使总线上的高速器件和慢速器件工作同步。 2、电气兼容性好。上拉电阻接5V电源就能与5V逻辑器件接口,上拉电阻接3V电源又能与3V逻辑器件接口。 3、因为是开漏结构,所以不同器件的SDA与SDA之间、SCL与SCL之可以直接相连,不需要额外的转换电路。 2.2 IIC总线的位传

8、输 由于IIC总线的器件有不同种类的工艺,逻辑“0”或“1”的电平不是固定的。在IIC总线每传输一位数据就有一个时钟脉冲相对应,其逻辑“0”或“1”的信号电平取决于该节点的正端电源Vdd的电压。 2.2.1 数据的有效性 IIC总线数据传输时,在时钟线高电平期间数据线上必须保持稳定的逻辑电平状态,高电平为数据1,低电平为数据0。只有在时钟线为低电平时,才允许数据线上的电平状态变化。如图2.3所示。 图2.3 IIC总线上的数据有效性 2.2.2 总线数据传输的起始和终止 IIC总线数据传输定义了两种时序状态,分别为起始信号和终止信号,如图2.4所示。 启始信号(START),当时钟线SCL保持

9、高电平期间,SDA由高电平向低电平切换,表示开始传送数据,终止信号(STOP),当时钟线SCL保持高电平期间,SDA由低电平向高电平切换,表示停止传送数据。 图2.4 IIC总线上的起始和终止信号 起始信号与终止信号都是由主控制器产生,当IIC总线出现起始信号时,总线进入“忙”状态,当IIC总线上出现结束信号时,总线进入“空闲”状态。挂接在IIC总线上的主从设备通过检测起始信号和结束信号判断总线的“忙”、“空闲”状态。由于IIC总线协议不定义优先级概念,因此任何新进程的开始必须等待当前进程的结束。使用硬件接口可以很容易地检测起始和结束信号,没有这种接口的微机必须以每时钟周期至少两次对SDA取样

10、以检测这种变化。 2.2.3 总线信号的时序 为了保证IIC总线数据的可靠传送,对总线上的信号时序做了严格的规定,下面各图中对主要信号时序做了定义。 图2.5 主机向从机发送一个字节的时序 图2.5所表示的是主机向从机发送一个字节的时序,主机向传送一个7位的地址,第8位是读/写位。在第9个时钟时,从机发出一个响应信号,接着传输8位的数据,相应地从机继续发送一个响应位,然后主机在时钟线保持高电平期间,拉高数据线,数据传输停止。 图2.6 主机向从机接收1个字节数据的时序 图2.6所表示的主机向从机接收一个字节的时序,前面8个时钟周期与发送时序相同,不同的是在传输8位数据后,由主机发送响应信号,然

11、后启动停止信号。2.3 IIC总线上的数据传输 2.3.1总线的数据传输格式 图2.10所示的是一个完整的数据传输格式。按照规定,在起始条件(S)之后,发送一个7位的从机地址。紧跟着的第8位是数据方向位(R/W),数据方向表明主控器和被控器的数据传输方向。0表示主控器发送数据(写),1表示请求接收数据(读)。数据传输一般由主机产生停止位(P)终止。在这种传输中,也可以有不同的读/写格式相结合。下面介绍3种传输格式, 1、主控制器写操作 主机-发送器向从机发送n个数据字节,方向不变。 注 1-7是地址位,8位是读写位,第9位是响应位 图2.10 完整的数据传输 2、主控制器读操作 在第一个字节后

12、,主控制器立即读从控制器。在第一次响应后,主控制器,发送器变成了主控制器,接收器,从控制器,接收器变成了从控制器,发送器。第一次响应仍由从控制器产生。之前发送了一个不响应信号(/A)的主机产生停止条件。 3、主控制器的读写操作 在数据传输过程中需要改变传输方向操作,这时起始条件和从控制器地址都会被重复,但R/W位取反,它的方向由寻址字节的方向位决定。如果主控制器接收器发送一个重复起始条件,它之前应该发送一个不响应的信号/A,每个字节后都跟着一个响应位,在序列中用A或/A模块表示。寻址字节只表明器件地址及传送方向,器件内部的n个数据地址可以在I2C总线数据操作格式中用第一个数据字节指定。I2C总

13、线被控制器在接收到起始信号后都必须复位他们的总线逻辑,以便对将要开始的被控制器地址的传送进行预处理。 2.4重复起始条件 主机与从机进行通信时,有时需要切换数据的收发方向。例如,访问某一具有I2C总线接口的EEPROM存储器时,主机先向存储器输入存储单元的地址信息,发送数据,然后再读取其中的存储内容,接收数据,。在切换数据的传输方向时,可以不必先产生停止条件再开始下次传输,而是直接再一次产生开始条件。I2C总线在已经处于忙的状态下,再一次直接产生起始条件的情况被称为重复起始条件。重复起始条件常常简记为Sr。正常的起始条件和重复起始条件在物理波形上并没有什么不同,区别仅仅是在逻辑方面。在进行多字

14、节数据传输过程中,只要数据的收发方向发生了切换,就要用到重复起始条件。 数据传输的结束信号由主IIC发出。刚刚结束一个进程的用户有立即启动一个新进程的优先权,该用户可以不发出结束信号而直接发出一个新的启动信号和另一个从IIC地址,从而不给其他用户申请总线的机会,以保持自己继续使用总线的权利。 3 设计环境和设计方法 3.1 设计环境 本文中IIC总线接口的设计是利用Altera公司的设计软件Quartus II,用Verilog HDL语言编程实现的。仿真部分采用Quartus II+Modelsim。 Quartus II软件是Altera提供的完整的多平台设计环境,可以轻易地满足特定地设计需求,是SOPC设计的综合性环境。 硬件描述语言(HDL)是一种形式化方法来描述数字电路和设计数字逻辑系统的语言,它是硬件设计人员与EDA工具之间沟通的桥梁,其主要目的是用来编写设计文件,建立电子系统行为级的模拟类型。3.2用Verilog HDL设计可综合的状态机 基于状态机的设计要点: (1)一个完备的状态机应该具有初始状态和默认状态。当芯片加电或者复位后,状态机能够自动将所有的判断条件复位,并进入初始状态,起始状态是指电路复位后所处的状态,选择

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号