[优秀毕业论文]利用VHDL语言在FPGA上实现I2C总线控制器的功能.doc
《[优秀毕业论文]利用VHDL语言在FPGA上实现I2C总线控制器的功能.doc》由会员分享,可在线阅读,更多相关《[优秀毕业论文]利用VHDL语言在FPGA上实现I2C总线控制器的功能.doc(33页珍藏版)》请在三一文库上搜索。
1、本科毕业设计(论文)摘 要随着微电子技术的发展,现场可编程逻辑门阵列FPGA(Field Programmable Gate Array)可以实现数字电路系统设计的功能。尤其现场可编程逻辑门阵列FPGA具有集成度高的优点,受到工程界高度的重视。I2C总线以接口简单,成本底,可扩展性好在数字系统中得到了广泛的应用。硬件描述语言是数字系统高层设计的核心,是实现数字系统设计新方法的关键技术之一。本课题正是利用VHDL语言在FPGA上实现I2C总线控制器的功能。首先研究了I2C总线的规范,又简要介绍了Quartus设计环境以及FPGA的设计流程。在此基础上,重点介绍了I2C控制器的总体设计方案,以及在
2、Quartus平台上的时序仿真。关键词Quartus II;I2C总线控制器;现场可编程逻辑门阵列;时序仿真AbstractWith the development of micro electric and EDA(electronic design automation)technology, FPGA(field programmable gates array) can realize the function of digital circuit system design .FPGA have the merit of filed programmability and High
3、integration rate ,therefore is highly recognized for engineering.I2C bus is widely applied in the digital system as simple interface ,expedient use ,low cost and good expansibility .VHDL is considered as a core of digital system design and a key technique of implement digital system.The design reali
4、zes the function of I2C bus interface on the FPGA .At first the thesis deeply research I2C bus specification ,then briefly introduce the Quartus II design environment and the design method ,as well as FPGA design flow .In this foundation,I2C bus controller design scheme and the timing simulation und
5、er Quartus II is particularly introduced.Key words Quartus II;I2C bus controller ;FPGA ;timing simulation目 录摘 要IAbstractII第1章 绪论51.1 课题背景51.2 I2C总线的产生及发展61.3 FPGA的现状与展望61.4 相关工作6第2章 I2C总线技术的研究82.1 I2C总线的概念82.2 I2C总线的传输92.2.1 数据的有效性92.2.2 I2C总线数据传送的开始和停止条件92.2.3 I2C总线传输过程中的应答信号102.2.4 I2C总线数据传送的重复开始条
6、件112.2.5 I2C总线的传输过程中的字节格式112.2.6 I2C总线的器件子地址112.2.7 I2C总线传输信号的时序122.3 本章小结14第3章 VHDL语言的基础知识153.1 VHDL语言的概述153.2 VHDL语言的特点153.3 VHDL语言的程序结构163.3.1 VHDL程序的库163.3.2 包集合163.3.3 实体说明173.3.4 构造体183.3.5 配置183.4 本章小结18第4章 设计工具和设计方法194.1 设计工具194.2 基于FPGA的数字电路的设计流程204.3 本章小结21第5章 I2C总线的功能设计225.1 I2C总线完成的功能225
7、.2 用VHDL语言实现写操作时的串行转并行235.3 用VHDL语言实现顺序读操作时的并行转串行235.4 I2C总线控制器的顶层设计245.5 本章小结25第6章 I2C总线的硬件时序仿真266.1 器件的选择266.2 硬件仿真276.2.1 用VHDL语言实现写字节周期286.2.1 用VHDL语言实现顺序读字节周期296.2.3 用VHDL语言实现选择性读字节周期296.3 本章小结30结 论31致 谢32参考文献33千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“Abstract”这一行后加一空行- 33 -哈尔滨工
8、业大学(威海)本科毕业设计(论文)第1章 绪论1.1 课题背景近年来,随着社会的发展,电子产品越来越多的进入人们的生活和工作中,成为了我们生活中必不可少的一部分,随着计算机的普及,以及电子设备之间相互沟通的更加频繁,为了更方便的实现器件与器件之间的通信,研发人员从消费者电子、电讯和工业电子中许多看上去不相关的设计中寻找到了他们的相似之处,例如几乎每个系统都包括:(1) 一些智能控制,通常是一个单片的微控制器。(2) 通用电路,例如LCD驱动器、远程I/O口、RAM、EEPROM或者数据转换器。(3) 面向应用的电路,譬如收音机和视频系统的数字调谐和信号处理电路。为了使这些相似之处对系统设计者和
9、器件厂商都得益,而且使硬件效率最大电路最简单,Philips开发了一个简单的双向两线总线,实现有效的IC 之间控制,这个总线就称为I2C总线。现在Philips包括超过150种CMOS和双极性兼容I2C总线的IC,可以执行前面提到的三种类型的功能。所有符合I2C总线的器件组合了一个片上接口,使器件之间直接通过I2C总线通讯,这个设计概念解决了很多在设计数字控制电路时遇到的接口问题。I2C总线具有以下优点:(1) 极低的电流消耗、抗高噪声干扰、电源电压范围宽以及较广的工作温度范围、简单性和有效性(2) I2C总线占用的空间非常小(接口直接在组件之上),减少了电路板的空间和芯片管脚的数量,降低了互
10、联成本(3) 支持主控,其中任何能够进行发送和接收的设备都可以成为总线,一个主控能够控制信号的传输和时钟频率(任何时间点只能有一个主控)1.2 I2C总线的产生及发展I2C总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。1.3 FPGA的现状与展望FPGA是英文FieldProgramm
11、able Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。FPGA经过70年的不断发展,由当初的1200门发展成为今天的百万门级。通过不断更新优化产品架构和生产工艺,实现了更高的性能、更短的开发周期、更低的单位成本和功耗。从前的“定论”是:FPGA可编程,灵活性高,一直依赖都是用作建模的平台,而不适合进行量产,但是经过多年的研发,大大缩短了FPGA开发时间,降低了验证成本。高集成度和灵活度从消费电子的发展来看,客户要求产品的更新换代的周期越来越短,并要求不段的继承更多的,层出不穷的,新的技术和应用,而且又要严格控制成本。因此,
12、FPGA在灵活性上就具备了天然的优势,且通过多年的努力,在高性能和低功耗方面也取得了显著地改进,现在的FPGA性能已经能够满足大多数应用的的需要。1.4 相关工作为了设计基于FPGA的I2C总线控制器,包括数据传输时序、传输命令、传输格式。首先要深入研究I2C总线的协议规范,在Quartus平台上,对设计进行分析、综合,功能和时序仿真,最后深入研究FPGA芯片的设计流程,并根据以上结果选择芯片,并配置到FPGA上,验证设计结果。本文的章节安排如下;1 绪论,主要介绍课题研究的背景,I2C总线和FPGA的产生现状和发展2 I2C总线技术的研究,介绍I2C总线的特点以及工作原理3 VHDL语言的基
13、础知识,简单的介绍了VHDL语言的特点和结构4 设计工具与设计方法,介绍了一种新的设计软件Quartus II,以及基于FPGA的数字电路的设计流程5 I2C总线的功能设计6 I2C总线的硬件时序仿真7 结论,对本文进行总结,在设计中遇到的问题以及从此次设计中学到的东西双击上一行的“1”“2”试试,J(本行不会被打印,请自行删除)第2章 I2C总线技术的研究2.1 I2C总线的概念I2C总线是一种比较流行的总线,它的接受和发送在同一条数据线上。I2C由串行数据(SDA)和串行时钟(SCL)两根线构成的。总线上允许连接的设备数主要决定于总线上的电容量,一般设定为400pf以下。SDA和SCL都是
14、双向总线,它们都通过上拉电阻连接到电源上。当总线处于停止(IDLE)状态,两根线都是高电平。对于I2C总线来说,总线上连接的设备,例如LCD驱动器、存储器等都是有一个唯一的地址识别,而且都可以作为一个发送器或接收器。至于是作为发送器还是接收器,主要取决于连接设备的具体功能。例如LCD驱动只是一个接收器,而存储器则既可以接受又可以发送数据。除了发送器和接收器外,设备在执行数据传输时也可以被看作是主机或从机。主机是初始化总线的数据传输,并产生允许传输的时钟信号的设备,这时任何被寻址的期间都被认为是从机。由于I2C总线使用两线的硬件接口简单,I2C总线的应用越来越广泛1。下面,将I2C总线的通用术语
15、进行介绍,如表 2-1所示;I2C总线的典型接法如图 2-1所示。表 2-1 I2C总线的通用术语术语描述发送器发送数据到总线的器件接收器从总线接收数据的期间主机初始化发送、产生时钟信号和终止发送的器件从机被主机寻址的器件多主机同时有多于一个主机尝试控制总线,但不破坏报文仲裁是一个在有多个主机同时尝试控制总线,但只允许其中一个控制总线并使报文不被破坏的过程同步两个或多个器件同步时钟信号的过程图 2-1 I2C总线信号连接示意图2.2 I2C总线的传输由于I2C总线的器件有不同种类的工艺(CMOS、NMOS、双极性),逻辑0(低)和1(高)的电平不是固定的。在I2C总线每传输一位数据就有一个时钟
16、脉冲相对应,其逻辑“0”或“1”的信号电平取决于该节点的正端电源Vdd的电压。2.2.1 数据的有效性在工作过程中,数据有效要求串行数据(SDA)线上的数据必须要在串行时钟(SCL)的高电平时钟周期期间保持稳定。而只有在串行时钟(SCL)线的时钟信号是低电平的时候串行数据(SDA)上的数据才能发生变化(如图2-2所示)2.2.2 I2C总线数据传送的开始和停止条件在I2C总线数据传送的整个过程中,需要先有开始条件引发,并由停止信号结束,这两个条件在数据线上的表示如图 2-3所示。开始条件:当串行时钟(SCL)线上的时钟信号是高电平的时候串行数据(SDA)上的数据由高电平变为低电平,产生了一个下
17、降沿,表示数据传输开始。停止信号:当串行时钟(SCL)线上的始终信号是高电平的时候串行数据(SDA)上的数据由低电平变为高电平,产生了一个上升沿,表示数据传输停止。开始和停止条件一般由主机产生。总线在开始条件后被认为处于忙的状态。在停止条件的某段时间后,总线被认为再次处于空闲状态。 图 2-2 I2C总线的数据位传输 图 2-3 开始和停止条件2.2.3 I2C总线传输过程中的应答信号数据传输必须带应答。相应的时钟脉冲又主机产生。在应答的时钟脉冲器件,发送机SDA输入端保持高电平,接收机将SDA输出端拉低,使它在这个时钟脉冲的高电平器件保持稳定的低电平。当从机不能应答从机地址时,从机必须使数据
18、线保持高电平,主机产生一个停止条件,终止传输或者产生重复起始条件开始新的传输。如果执行写操作过程中,从机应答了从机地址,但是在传输了一段时间后不能接收更多数据字节,主机必须终止传输。这个情况用从机在第一个字节后没有产生应答来表示,从机使数据线保持高电平,主机产生一个停止或重复起始条件。如果执行读操作过程中,主机必须在从机传输最后一个字节之后产生一个不应答信号,之后产生停止条件,而从机必须将数据线保持高电平,允许主机产生一个停止或重复起始条件。2.2.4 I2C总线数据传送的重复开始条件主机与从机进行通信时,有时需要切换数据的收发方向。例如,访问某一具有I2C总线接口的存储器时,主机先向存储器输
19、入存储单元的地址信息(发送数据),然后再读取其中的存储内容(接收数据)。在切换数据的传输方向时,可以不必先产生停止条件再开始下次传输,而是直接再一次产生开始条件。I2C总线在已经处于忙的状态下,再一次直接产生起始条件的情况被称为重复起始条件。正常的起始条件和重复起始条件在物理波形上并没有什么不同,区别仅仅是在逻辑方面。在进行多字节数据传输过程中,只要数据的收发方向发生了切换,就要用到重复起始条件。2.2.5 I2C总线的传输过程中的字节格式总线传输时要按照规定的数据格式,发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个应答信号。首先传输的是数据的最
20、高位(MSB)。在开始条件发出之后,SDA输入端发送一个7位的从机地址,然后第8位为数据方向位(读/写位),数据方向表明主机和从机的数据传输方向。“0”表示主机发送数据(写),“1”表示从机发送数据(读)。如果从机要完成一些其他功能后才能接受或者发送下一个完整的数据字节,可以使时钟SCL保持低电平迫使主机进入等待状态。当从机准备好接受下一个数据字节并释放时钟SCL后,数据传输继续。数据传输由主机产生停止条件结束。2.2.6 I2C总线的器件子地址带有I2C总线的器件除了有从机地址(Slave Address)外,还可能有子地址。从机地址是指该器件在I2C总线上被主机寻址的地址,而子地址是指该器
21、件内部不同部件或存储单元的编址。某些器件(只占少数)内部结构比较简单,可能没有子地址,只有必须的从机地址,子地址与从机地址一样,子地址实际上也是像普通数据那样进行传输的,传输格式仍然是与数据相统一的,区分传输的到底是地址还是数据要靠收发双方具体的逻辑约定。子地址的长度必须由整数个字节组成,可能是单字节(8位子地址),也可能是双字节(16位子地址),还可能是3字节以上,这要看具体器件的规定。2.2.7 I2C总线传输信号的时序I2C总线数据传送分为读操作和写操作(图 2-4),而读操作还分为按照当前位置进行读操作(图 2-6)以及随即性读操作(图 2-8),时序图如下图 2-4 主机向从机发送了
22、一个字节的时序图 2-5 主机向从机连续发送多个字节的时序图2-5所表示的是一个最简单的写操作的时序,主机向从机传送一个7位的地址数据,然后第8位为读/写位,在这个表示地址的字节传输结束之后,在串行时钟(SCL)的第9个时钟,由从机发送一个应答信号(此时串行数据SDA输入端在SCL为高电平期间内保持高电平,而SDA输入端输出为低电平,表示一个应答信号),接着主机继续向从机传输8位数据,之后再次由从近发送一个应答信号,这个时候如果还需要发送数据字节,可以继续发送(图 2-5),每发送8位数据后都要由从机发送一个应答信号,当数据发送完毕后,在最后一个应答信号之后的那个SCL处于高电平的时钟周期内,
23、将串行数据SDA输入端从低电平拉为高电平,表示数据传输停止。图 2-6 主机向从机接收1个字节数据的时序图 2-7 主机向从机连续接收多个字节数据的时序图 2-6所表示的是一个最简单的按照当前位置进行的读操作,前9个周期的时序与写操作的时序一致,不同的是当从机发送一个应答信号之后,由从机向主机传输8位数据,这个时候如果还需要发送数据字节,可以继续发送(图 2-7),每发送8位数据后都要由主机发送一个应答信号,当数据发送完毕后,在最后一个数据字节传送结束之后的那个SCL处于高电平的时钟周期内SDA的输入端保持高电平,而SDA输入端输出也为高电平,表示一个不应答信号(图中Nack(Not ackn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 优秀毕业论文 优秀 毕业论文 利用 VHDL 语言 FPGA 实现 I2C 总线 控制器 功能
链接地址:https://www.31doc.com/p-3903303.html