FPGA课程设计物联网.docx
- 文档编号:3807663
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:45
- 大小:294.42KB
FPGA课程设计物联网.docx
《FPGA课程设计物联网.docx》由会员分享,可在线阅读,更多相关《FPGA课程设计物联网.docx(45页珍藏版)》请在冰点文库上搜索。
FPGA课程设计物联网
CPLD/FPGA课程设计
项目名称基于FPGA的IIC接口设计与实现
专业班级物联网112班
学生学号2011133056
学生姓名王海超
指导教师苗凤娟
2014年6月15日
摘要
IIC(InterIntegratedCircuits)总线接口是Philips公司开发的用于芯片之间连接的串行总线。
现场可编程门阵列(FPGA)设计灵活、速度快,在数字专用集成电路的设计中得到了广泛的应用。
IIC串行总线接口电路设计的主要任务是根据IIC时序协议用VerilogHDL语言对IIC总线接口电路的描述,其目的是通过在FPGA上来实现IIC接口电路来领会复杂数字电路的设计思路和理念。
在对IIC总线的研究现状与发展进行了深入的调研的基础上,本课设着重阐述了在FPGA上实现随机读/写的IIC接口电路的设计方案。
首先,本课设简单介绍了硬件描述语言(VerilogHDL)与现场可编程门阵列(FPGA)。
其次,本课设详细说明了IIC串行总线内部结构和数据传输格式及其时序协议。
基于此,本课设重点阐述了接口电路的设计方案以及在FPGA开发板上与外围IIC接口器件E2PROM实现数据传输的仿真与测试。
经过多次实验验证,IIC总线接口电路已通过行为级仿真和综合及布局布线后门级时序仿真,满足系统要求。
因此,本课设选择了时序接口模块加以研究。
关键词:
Verilog_HDL;FPGA;I2C串行总线;随机读/写;E2PROM;时序接口;
Abstract
IIC(InterIntegratedCircuits)BusisdevelopedbyPhilipsfortheconnectionbetweenthechipserialbus.InthedigitalASICdesign,Field-programmablegatearray(FPGA)designhasbeenwidelyusedbecauseofitsflexibilityandhighspeed.ThemaintaskofIICserialbusinterfacecircuitdesignisbasedontheIICtimingagreementwithVerilogHDLlanguagedescriptionoftheIICbusinterfacecircuit,whichaimstoachieveIICinterfacecircuituptocomprehendcomplexdigitalcircuitdesignideasandconceptsthroughtheFPGA.
Basedonthein-depthresearchoftheIICbusstatusanddevelopment,thedesignschemeoftherandomread/writeIICinterfacecircuitonFPGAwasunderlinedinthepaper.First,hardwaredescriptionlanguage(VerilogHDL)andfield-programmablegatearray(FPGA)wereintroducedslightlyinthepaper.Second,theinternalstructureanddatatransmissionformatofIICserialbusanditstimingprotocolwereillustratedinthepaperindetail.Basedonthis,theinterfacecircuitdesigninFPGAdevelopmentboardwasemphasizedinthepaper.Aswellas,thesimulationandtestofdatatransmissionwithperipheraldevicesEEPROMwithIICinterfacewerestressed.Afterseveralexperiments,IICbusinterfacecircuithaspassedthebehaviorallevelsimulationandsynthesisandlayout-leveltimingsimulationbackdoortomeetsystemrequirements.Finally,theresearchresultsweresummarized.
Therefore,thislessonsetselectionsequenceinterfacemoduletostudythem.
Thekeyword:
Verilog_HDL;FPGA;IICserialbus;Randomread/write;EEPROM;
Thesequentialinterface
第1章本课设的研究意义
1.1概述
IIC总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。
例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。
可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
1.2IIC接口设计的研究现状
单片机应用系统正向小型化、高可靠性、低功耗等方向发展。
在一些功能较多的电路系统中,经常需扩展多个外围接口器件。
如果采用传统的并行传输方式,传输时间是缩短了,但也增加了系统资源的消耗和系统的复杂度,关键是功耗的增大和成本的增加。
现在,许多公司采用了Philips公司开发的I2C总线,使单片机系统电路结构的复杂度大大减小,并且增加了硬件的灵活性,缩短了产品开发周期,降低了成本。
自从I2C总线成为国际通用的总线标准后,I2C总线因为具有扩展方便、协议完善、支持芯片多和连线少等优点,已经被很多集成电路厂商集成到微控制器集成电路中。
I2C总线的应用涉及通信、控制、家电、消费电子等众多领域,在很多器件上都配备有I2C总线接口,而且功能日益强大。
1.2.1IIC接口设计的应用
1.接收和发送数据
2C模块接收和发送数据,并将数据从串行转换成并行,或并行转换成串行。
2.接口时序模拟
1.2.2I2C接口设计的困难
I2C(芯片间)总线接口连接微控制器和串行I2C总线。
它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。
支持标准和快速两种模式,同时与SMBus2.0兼容。
1.3本文研究的意义
随着电子科技的迅速发展,需要相互通信及与外界通信的IC电路变得越来越复杂。
为了简化电路设计,Philips公司开发了一种双向二线的串行I2C总线(IntelIntegratedCircuitBus)。
该总线具有通讯效率高、传输线少等特点。
因为其简单的接口、控制简便,使用I2C总线的电子电路设计工程师日益增多。
I2C总线只提供两根线进行通信,所有具有I2C接口的器件都可以挂在这两根线上直接通信。
目前,IC制造商提供的I2C总线应用芯片的功能越来越强大。
I2C总线由主器件控制,增加额外的I2C控制器需要额外的印制板面积,增加了成本。
因此,在一些特殊应用条件下,使用一种利用应用广泛的现场可编程门阵列(FPGA)实现与I2C总线器件无缝连接的方法,将是更为经济的解决方案。
根据I2C总线的通讯协议,在Altera公司的EP2C35F672C6型号的FPGA上实现与具有I2C接口的外围芯片进行通信,具有易调试、灵活配置、高速传输等优点,这样大大地缩减了电路系统的开发时间。
因此,课题暂时先以IIC时序接口模块为切入点进而进行下一步研究。
1.4发展趋势
I2C总线以其结构简单、通信功能可制定、高抗干扰性、传输速度快等特点获得了广泛的应用。
I2C总线控制器是MPU与I2C器件之间的桥梁,它负责接收处理器的数据、地址以及控制信号,而且反馈I2C器件的状态和数据给处理器,实现处理器与I2C器件之间的通信。
Philips公司除了生产具有I2C总线接口的单片机外,还推出了许多具备I2C总线的外部接口芯片,如AT24CXX系列的EEPROM、128字节的SRAM芯片PCF8571、日历时钟芯片PCF8563、4位LED驱动芯片SAA1064、160段LCD驱动芯片PCF8576等多种类多系列接口芯片。
随着可编程器件的飞速发展,用FPGA器件实现I2C总线控制器接口的设计可以带来很多方面的便利。
第2章VerilogHDL和FPGA的简介
2.1硬件描述语----VerilogHDL
2.1.1VerilogHDL简介
VerilogHDL是一种描述硬件的语言,可以用文本编程的形式来描述硬件的内部结构和行为。
它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。
VerilogHDL由GatewayDesignAutomation公司开发的。
现在,VerilogHDL和VHDL一样也是世界上最流行的两种硬件描述语言之一,已经成为为IEEE标准。
2.1.2VerilogHDL的发展
VerilogHDL语言原来是由GatewayDesignAutomation公司于1983年为其模拟器产品开发的硬件建模语言,它还只是一种专用语言[2]。
随着他们的模拟、仿真器产品被电子业界广泛使用,VerilogHDL作为一种便于使用而且实用的语言开始被越来越多的电路设计者所接受[2]。
VerilogHDL语言在一次增加语言普及性的活动中被推向公众领域。
1992年,OpenVerilogInternational决定推广VerilogOVI标准成为IEEE标准,这一推广最终获得了成功。
于1995年,Verilog语言成为IEEE标准,称为IEEEStd1364-1995[2]。
2.1.3VerilogHDL用途
VerilogHDL是目前应用最为广泛的硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模[14]。
被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间[14]。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模[14]。
VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等[14]。
2.2现场可编程门阵列--FPGA
现场可编程门阵列(FieldProgrammableGateArray:
FPGA),它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点[5]。
2.2.1FPGA的概要
目前以硬件描述语言(Verilog或VHDL)描述的逻辑电路,可以利用逻辑综合和布线工具软件,快速地烧录至FPGA上进行测试,这一过程是现代集成电路设计验证的技术主流[5]。
这些可编程逻辑元件可以被用来实现一些基本的逻辑门数字电路(比如与门、或门、异或门、非门)或者更复杂一些的组合逻辑功能,比如译码器等[19]。
大多数的FPGA里面包含记忆元件,例如触发器(Flip-flop)或者其他更加完整的记忆块,从而构成时序逻辑电路[19]。
电路系统设计人员可以根据需要,通过编程下载的方式,把FPGA内部的逻辑块连接起来,这样就完成了在FPGA芯片里构建你所要的电路。
FPGA内部的逻辑块和连接可以随着设计者的需要而改变,所以FPGA能够成为数字电路设计人员在半定制电路中的第一选择。
一般来说,FPGA比专用集成电路(ASIC)的速度要慢一点,无法完成更复杂的设计,并且能耗也大。
但是,FPGA具有可以快速成品,而且其内部逻辑可以被设计者反复修改的优点。
此外,用FPGA调试的成本较低。
2.2.2FPGA的基本组成
●静态随机存取存储器(SRAM):
基于静态内存Staticmemory技术,系统内可编程化和再程序化(Re-programmable),须要外部启动元件(Externalbootdevices)CMOS。
●Antifuse:
可烧录一次。
通常为CMOS。
●PROM(一次性可编程EPROM):
可编程化只读存储器技术,可烧录一次。
使用塑料封装,无窗,不能清除内容。
●EPROM:
可清除可编程化只读存储器技术,有窗,经紫外线照射可清除内容。
●EEPROM:
可电气清除可编程化只读存储器技术,可用电气信号清除内容。
●闪存:
一种特殊的EEPROM。
●熔丝:
可烧录一次。
通常为双极性的。
2.2.3FPGA的基本特点
∙采用FPGA设计ASIC电路,用户无需投片生产,就能得到组合的芯片。
∙做半定制电路的样品。
∙内部有大量的触发器和I/O引脚。
∙电路设计周期短、开发成本低、风险小。
∙采用高速、功耗低的CHMOS工艺,兼容CMOS、TTL电平。
∙能提高系统集成度和可靠性。
FPGA内部RAM中的程序控制其工作过程。
工作时,只需对片内的RAM进行编程,就可以实现不同的功能。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,完成配置后,FPGA进入工作状态[3]。
掉电后,FPGA恢复成空白片,内部逻辑关系消失[3]。
因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可[3]。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能[3]。
因此,FPGA的使用非常灵活。
第3章项目设计的技术及原理
3.1IIC接口设计
I2C总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。
总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。
I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。
一个主控能够控制信号的传输和时钟频率。
3.1.21I2C串行总线接口电路的性能指标
本文设计要求实现一个严格遵循I2C协议的接口电路,传输速率最高为1MHz,向下兼容低速的I2C接口的设备,输入的数据是8位的,输入地址是15位的(高7位是器件地址,低8位是器件内地址),另外器件地址为7位,可以对128个有I2C接口的器件进行寻址,能与I2C接口的E2PROM进行数据传输,并支持对从设进行随机读、写。
3.1.3I2C串行总线接口电路的设计方案
3.1.3.1I2C串行总线接口电路的框图设计
图4.1I2C接口电路的框图设计
在电路设计中,电路的整体外部框图的设计对整个电路设计起到了决定性作用。
拥有一个完整的、清晰的电路外廓对之后电路的各个部分的设计就有了清晰的把握。
本次I2C接口电路需要一边要与MPU进行通信,另一边要与带有I2C接口的设备进行数据传输,这样就构成了一个简单的电路系统。
电路框图设计如图4.1。
3.1.3.2IIC串行总线接口电路的内部模块设计
I2C串行接口电路的外部框图只是给出一个电路系统的轮廓图,接口电路的内部结构如何还要根据内部框图的设计。
内部框图的设计将会决定接口电路的具体实现。
I2C串行接口电路的程序设计是遵循了“自顶向下”的设计理念。
利用层次化,结构化的设计方法,使电路设计变得层次清晰,结构简单。
这个电路设计被分为7个子模块,分别是:
I2C接口顶层模块、输入时钟分频模块、串行时钟产生模块、输入数据寄存器模块、地址寄存器模块、控制寄存器模块和时序主状态控制模块。
其中时序主状态控制模块是接口电路中核心部分,它控制着电路有序的运作。
每个模块实现各自的功能,把每个模块按照逻辑相连就组成了一个电路整体。
I2C串行接口内部模块设计如图4.2。
图4.2I2C接口电路的内部模块设计
3.1.3.3I2C串行总线接口电路各模块的程序设计方法
I2C串行接口电路的程序设计利用层次化,模块化的设计方法,使电路设计变得层次清晰,结构简单。
这个电路设计被分为7个子模块,下面详细说一下各模块的设计方法。
I2C接口顶层模块主要是用来对下一层子模块的实例调用,要求子模块每个功能都能正确地实现,并且子模块之间的输入/输出也要满足时序要求。
它是整个设计流程中最高层次的一个模块。
输入数据锁存器、地址锁存器、控制锁存器模块都属于输入锁存模块。
它们的作用就是用来协调设备与CPU之间的通信。
由于CPU工作速度快,数据信号、地址信号、控制信号只能保持一段时间有效。
接口电路的输入锁存器就能很好地解决这个问题,当控制信号出现时,其就把数据信号和地址信号锁入相应的锁存器。
这块程序是采用组合逻辑来编写的。
输入时钟分频模块用来协调接口输入的时钟与I2C总线传输时序之间的不匹配的,加个分频就能很好地解决这个问题。
输入时钟为50MHz,经过分频后输出的时钟频率是2MHz。
这块程序是采用时序计数来分频的。
图4.3状态转移图
串行时钟产生模块就是使I2C总线的串行数据线SDA在串行时钟线SCL的配合下把数据按照传输协议一位一位地传出去[7]。
这块程序也是采用时序来分频的,在CLK的下降沿SCL翻转,前提是要在SCL时钟产生信号有效。
时序主状态控制模块是时序电路,也是整个电路的核心电路。
它直接控制着并行数据的装载、状态位标志和时序发送/接收的控制。
整个电路在它的控制下有条不紊地进行数据通信。
这块程序采用同步有限状态机(FSM)的设计方法。
程序实际上就是一个主控状态机,在主状态不同的状态下都控制着不同的任务和控制信号,在不同的输入信号与当前状态的情况下构成复杂的有限状态机[1]。
这个有限状态机的驱动时钟是频率为2MHz的CLK。
由于读写操作的状态中有几个状态是一致的,用到了嵌套状态机。
状态转移如下图4.3。
为了避免代码重复,程序由一个发送的大任务和接收的大任务组成,状态编码采用独热码。
3.2总线的简介
3.2.1IIC总线特点
IIC总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。
总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。
IIC总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。
一个主控能够控制信号的传输和时钟频率。
当然,在任何时间点上只能有一个主控。
[1]
3.2.2IIC总线工作原理
3.2.2.1总线的构成及信号类型
图1具有多主机的IIC总线的系统结构
IIC总线的系统结构如图1所示。
IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。
各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,IIC总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。
CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。
这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
[2]
IIC总线在传送数据过程中共有三种类型信号,它们分别是:
开始信号、结束信号和应答信号。
开始信号:
SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:
SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:
接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。
若未收到应答信号,由判断为受控单元出现故障。
目前有很多半导体集成电路上都集成了IIC接口。
带有IIC接口的单片机有:
CYGNAL的C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。
很多外围器件如存储器、监控芯片等也提供IIC接口。
3.2.2.2总线基本操作
IIC规程运用主/从双向通讯。
器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。
主器件和从器件都可以工作于接收和发送状态。
总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。
SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
参见图2。
图2串行总线上的数据传送顺序
3.2.3控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。
如图3所示。
图3控制字节配置
3.2.4写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。
关于页面写的地址、应答和数据传送的时序参见图4。
图4页面写
3.2.5读操作
读操作有三种基本操作:
当前地址读、随机读和顺序读。
图5给出的是顺序读的时序图。
应当注意的是:
最后一个读操作的第9个时钟周期不是“不关心”。
为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。
图5顺序读
IIC总线系统由两根总线即SCL(串行时钟)线和SDA(串行数据)线构成。
这种总线可以设计成很多种通讯配置,但本文只讨论主从系统的应用。
主器件控制总线通讯,开始/结束传送、发送信息并产生IIC系统时钟.
在写操作过程中,从器件一旦被主控器件寻址,就执行特定的相应功能。
在读操作过程中,主控器件从从器件那里获得数据。
在整个主从传送过程中,所有的事件都通过主控器件的SCL时钟线达到同步。
连到总线上的器件的接口形式必须是漏极开路或集电极开路输出状态。
通过上拉电阻,使得两根总线在空闲的状态下都为高电平状态。
因此IIC总线上具有线与功能,即总线上的所有器件都达到高电子状态时,IIC总线才能达到高电平状态,从而使总线上的高速器件和慢速器件工作同步。
3.2.67位的地址格式介绍
数据的传输遵循图7所示的格式在起始条件S后,发送了一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位R/W,0表示发送写,1表示请求数据读。
数据传输一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FPGA 课程设计 联网