基于FPGA的模拟I2C接口设计与实现(共43页).doc
《基于FPGA的模拟I2C接口设计与实现(共43页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的模拟I2C接口设计与实现(共43页).doc(43页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上研究生课程设计论文题目: 基于FPGA的模拟IIC接口设计与实现 课程名称: FPGA及片上系统SOPC应用 任课教师: 宋树祥(教授) 殷严刚(讲师) 学 院: 电子工程学院 班级: 12 级电子与通信工程 学号: xxxx 姓名: xxx 2012 年 12 月 30 日专心-专注-专业目 录基于FPGA的模拟IIC接口设计与实现摘要:本文简述了IIC总线的特点;介绍了基于FPGA 的模拟IIC总线接口模块的设计思想;设计并编写了基于Verilog HDL语言来实现部分IIC总线接口功能的程序代码,同时给出了基于目标板的硬件实物测试图。 关键词:IIC 总线接口
2、FPGA Verilog HDL EP2C20Q240C8 在进行FPGA的开发时,利用EDA 工具设计芯片实现系统的功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。模块化的设计思想在软件设计过程中越来越被重视。IIC总线是Philips 公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。目前针对IIC总线的相关开发的资料都是利用VHDL语言或AHDL语言实现的。本文设计的IIC 总线模块是利用Verilog HDL 语言来实现的。 1 IIC 总线特点及工作原理概述 IIC(InterIntegrated Circuit,内置集成电路总线)总线是一种由PH
3、ILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。 11 IIC总线特点 IIC总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10 Kbps的最大传输速率支持40个组件。I
4、IC总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。112 IIC总线工作原理 121总线的构成及信号类型 图1 具有多主机的IIC总线的系统结构 IIC总线的系统结构如图1所示。IIC总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输
5、过程中,IIC总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。2IIC总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。 开始信号: SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到
6、8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 目前有很多半导体集成电路上都集成了IIC接口。带有IIC接口的单片机有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外围器件如存储器、监控芯片等也提供IIC接口。122 总线基本操作 IIC规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接
7、收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。参见图2。图2 串行总线上的数据传送顺序 13 控制字节 在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。如图3所示。 图3 控制字节配置14 写操作 写操作分为字节写和页面写
8、两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的时序参见图4。图4 页面写15 读操作 读操作有三种基本操作:当前地址读、随机读和顺序读。图5给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。图5 顺序读IIC总线系统由两根总线即SCL(串行时钟)线和 SDA(串行数据)线构成。这种总线可以设计成很多种通讯配置,但本文只讨论主从系统的应用。主器件控制总线通讯,开始结束传送、发送信息并产生IIC系统时钟在写操作
9、过程中,从器件一旦被主控器件寻址,就执行特定的相应功能。在读操作过程中,主控器件从从器件那里获得数据。在整个主从传送过程中,所有的事件都通过主控器件的SCL 时钟线达到同步。连到总线上的器件的接口形式必须是漏极开路或集电极开路输出状态。通过上拉电阻,使得两根总线在空闲的状态下都为高电平状态。因此IIC 总线上具有线与功能,即总线上的所有器件都达到高电子状态时,IIC总线才能达到高电平状态,从而使总线上的高速器件和慢速器件工作同步。 16 7位的地址格式介绍 数据的传输遵循图7所示的格式 在起始条件S 后,发送了一个从机地址,这个地址共有7 位,紧接着的第8 位是数据方向位R/ W, 0 表示发
10、送写 ,1 表示请求数据读。数据传输一般由主机产生的停止(P)终止。但是,如果主机仍希望在总线上通讯。它可以产生重复起始条件( S r)和寻址另一个从机。而不是首先产生一个停止条件,在这种传输中可能有不同的读写格式结合 。图6 完整的数据传输在IIC 协议中,从器件地址是一个唯一的7 位地址。接下来是一个读写方向标志位,读状态是高电平、写状态是低电子。然后是CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。2图7主机-发送器用7 位地址寻址从机接收器(传输的方向不变)图8在第
11、一个字节后主机立即读从机2 IIC模块的硬、软件设计 IIC模块总体硬件设计流程:先在QuartusII90里建立Verilog HDL文件后,然后由Verilog HDL文件生成原理图子模块文件,再将生成的原理图子模块进行简单的导线连接后,就建立了本次系统所需的整体原理图,然后进行编译、调试生成sof文件后,通过JTAG口将文件下载到目标板里,进行在系统测试,实物测试图见附录部分。21 IIC模块硬件设计211 按键消抖模块设计(KeyFilter_Check)在总体硬件设计中,按键消抖模块建立的Verilog HDL文件名为KeyFilter_Check,1按键消抖:分为硬件和软件;软件消
12、抖延时时间一般为10ms,按键触发的时间一般为几百毫秒(采样时钟一般为几个毫秒)。此模块的Verilog HDL文件使用的是非阻塞赋值语句。图9 按键消抖模块212 分频模块设计(Division_1_500HZ)在总体硬件设计中,分频模块建立的Verilog HDL文件名为Division_1_500HZ,其实现的功能是将输入的初始时钟clk进行分频,通过分频获取串行总线器件所需要的时钟信号(即达到输出1HZ,50HZ,500HZ频率的目的)。偶分频具体过程为:计数到n/2-1的时候时钟进行翻转,然后计数复位 213 IIC总线接口模块设计(IIC_Interface_Bus)在总体硬件设计
13、中,IIC总线接口模块建立的Verilog HDL文件名为IIC_Interface_Bus,然后将文件名为IIC_Interface_Bus的Verilog HDL文件生成名为IIC_Interface_Bus的原理图文件。图10 IIC总线接口模块输入信号有50MHz的时钟clk,复位信号rst_n,低电平有效的同步信号Syn_Sign,控制字节写操作的按键的响应信号Byte_Write, Byte_Read,控制页写操作的按键的响应信号Page_Write,控制页读操作按键的响应信号Page_Read;按键1按下执行写字节入操作,按键2按下执行读操作,按键3按下执行连写操作,按键4按下执
14、行连读操作。AT24C08的时钟端口scl; AT24C08的数据端口sda;后面显示接收到数据的标志ackflagIIC;数码管所显示的数据输出端口outdata。214 显示模块设计(Led_Seg_Display) 在总体硬件设计中,显示模块建立的Verilog HDL文件名为Led_Seg_Display,然后将文件名为Led_Seg_Display的Verilog HDL文件生成名为Led_Seg_Display的原理图文件。50MHz的时钟输入端口clk;复位端口reset_n;端口ackflag;8位数据输入端口datain;数码管段码输出seg_data;数码管位选输出端口se
15、g_com。图11 显示模块215 硬件模块总体设计思想及总体电路原理图介绍下硬件模块总体设计思想:本IIC模块实现的主要功能是完成并行数据与串行数据的转换,在转换过程中串行数据的输入与输出必须满足IIC 总线规范。图12为IIC总线接口框图,主要包括以下几个单元。分频器:由FPGA的锁相环输出的稳定时钟信号,由于频率很高所以必须经过分频模块输出满足IIC总线要求的数据传输速率。IIC总线接口控制时序逻辑块:IIC总线数据传输的所有时序控制逻辑都由它产生,是这个IIC 模块的核心。数据锁存器:根据读写使能信号(r/ w)存储IIC 己接收的或待发送的数据。移位寄存器:在时序控制逻辑模块的控制下
16、根据读写使能信号(r/w)对数据进行正确地处理。就本次IIC模块设计而言,其硬件电路图如图13。图12为IIC总线接口框图图13硬件模块总体电路图22 IIC模块的verilog HDL代码设计本IIC 模块的软件设计是基于QuartusII90建立Division_1_500HZ ,IIC_Interface_Bus ,KeyFilter_Check ,Led_Seg_Display等Verilog HDL文件。由于IIC 总线传输协议可知, IIC 在传输过程中存在着几个固定的状态,因此我们采用同步状态机来设计IIC 模块。主状态机从的大的方面共有5个状态:空闲(Idle) ,开始(Sta
17、rt) ,发送数据(Tx),接收数据(Rx),停止(Stop)。但是具体细分后的状态有17个,它们的具体功能及地址分别如下。IDLE:17b0_0000_0000_0000_0001;/ IIC总线处在空闲状态START1:17b0_0000_0000_0000_0010;/当scl信号为高电平,sdl由高电平到低电平变化时开始运作IIC 模块,且根据(r/ w)判断进入下一状态ADD1:17b0_0000_0000_0000_0100;/写入器件地址ACK1:17b0_0000_0000_0000_1000;/ 写入器件地址后的应答ADD2:17b0_0000_0000_0001_0000;
18、/写入字节地址ACK2:17b0_0000_0000_0010_0000;/ 写入字节地址后的应答START2:17b0_0000_0000_0100_0000;/读操作开始前的起始信号ADD3:17b0_0000_0000_1000_0000;/写入器件地址ACK3:17b0_0000_0001_0000_0000;/应答状态ACKR: 17b1_0000_0000_0000_0000;/fpga给应答状态DATA:17b0_0000_0010_0000_0000;/字节读写状态PAGER:17b0_0000_0100_0000_0000;/页读状态状态PAGEW:17b0_0000_100
19、0_0000_0000;/页写状态ACK4: 17b0_0001_0000_0000_0000;/应答状态HIGH: 17b0_0010_0000_0000_0000;/高电平状态STOP1:17b0_0100_0000_0000_0000;/停止位状态(当数据传输完毕,跳入STOP1状态。)STOP2:17b0_1000_0000_0000_0000;/延时同步由上面的17个状态组成的状态转移图如图14所示。IDLESTART1ADD1ACK1ADD2ACK2START21DLEADD3ACK3ACKRDATAHIGHPAGEWPAGERSTOP2STOP1ACK4图14IIC模块主状态机状
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 模拟 I2C 接口 设计 实现 43
限制150内