带有源代码基于FPGA的模拟I2C接口设计与实现文档格式.docx
- 文档编号:15788432
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:31
- 大小:1,023.33KB
带有源代码基于FPGA的模拟I2C接口设计与实现文档格式.docx
《带有源代码基于FPGA的模拟I2C接口设计与实现文档格式.docx》由会员分享,可在线阅读,更多相关《带有源代码基于FPGA的模拟I2C接口设计与实现文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
2012年12月30日
基于FPGA的模拟IIC接口设计与实现
摘要:
本文简述了IIC总线的特点;
介绍了基于FPGA的模拟IIC总线接口模块的设计思想;
设计并编写了基于VerilogHDL语言来实现部分IIC总线接口功能的程序代码,同时给出了基于目标板的硬件实物测试图。
关键词:
IIC总线接口FPGAVerilogHDLEP2C20Q240C8
在进行FPGA的开发时,利用EDA工具设计芯片实现系统的功能已经成为支撑电子设计的通用平台,并逐步向支持系统级的设计方向发展。
模块化的设计思想在软件设计过程中越来越被重视。
IIC总线是Philips公司推出的双向两线串行通讯标准,具有接口线少、通讯效率高等特点。
目前针对IIC总线的相关开发的资料都是利用VHDL语言或AHDL语言实现的。
本文设计的IIC总线模块是利用VerilogHDL语言来实现的。
1IIC总线特点及工作原理概述
IIC(Inter-IntegratedCircuit,内置集成电路总线)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。
IIC总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。
例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。
可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
1.1IIC总线特点
IIC总线最主要的优点是其简单性和有效性。
由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。
总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。
IIC总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。
一个主控能够控制信号的传输和时钟频率。
当然,在任何时间点上只能有一个主控。
[1]
1.2IIC总线工作原理
1.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接口。
1.2.2总线基本操作
IIC规程运用主/从双向通讯。
器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。
主器件和从器件都可以工作于接收和发送状态。
总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL)控制总线的传输方向,并产生起始和停止条件。
SDA线上的数据状态仅在SCL为低电平的期间才能改变,SCL为高电平的期间,SDA状态的改变被用来表示起始和停止条件。
参见图2。
图2串行总线上的数据传送顺序
1.3控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,EEPROM一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。
如图3所示。
图3控制字节配置
1.4写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。
关于页面写的地址、应答和数据传送的时序参见图4。
图4页面写
1.5读操作
读操作有三种基本操作:
当前地址读、随机读和顺序读。
图5给出的是顺序读的时序图。
应当注意的是:
最后一个读操作的第9个时钟周期不是“不关心”。
为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。
图5顺序读
IIC总线系统由两根总线即SCL(串行时钟)线和SDA(串行数据)线构成。
这种总线可以设计成很多种通讯配置,但本文只讨论主从系统的应用。
主器件控制总线通讯,开始/结束传送、发送信息并产生IIC系统时钟.
在写操作过程中,从器件一旦被主控器件寻址,就执行特定的相应功能。
在读操作过程中,主控器件从从器件那里获得数据。
在整个主从传送过程中,所有的事件都通过主控器件的SCL时钟线达到同步。
连到总线上的器件的接口形式必须是漏极开路或集电极开路输出状态。
通过上拉电阻,使得两根总线在空闲的状态下都为高电平状态。
因此IIC总线上具有线与功能,即总线上的所有器件都达到高电子状态时,IIC总线才能达到高电平状态,从而使总线上的高速器件和慢速器件工作同步。
1.67位的地址格式介绍
数据的传输遵循图7所示的格式在起始条件S后,发送了一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位R/W,0表示发送写,1表示请求数据读。
数据传输一般由主机产生的停止(P)终止。
但是,如果主机仍希望在总线上通讯。
它可以产生重复起始条件(Sr)和寻址另一个从机。
而不是首先产生一个停止条件,在这种传输中可能有不同的读写格式结合。
图6完整的数据传输
在IIC协议中,从器件地址是一个唯一的7位地址。
接下来是一个读写方向标志位,读状态是高电平、写状态是低电子。
然后是CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。
图7主机-发送器用7位地址寻址从机接收器(传输的方向不变)
图8在第一个字节后主机立即读从机
2IIC模块的硬、软件设计
IIC模块总体硬件设计流程:
先在QuartusII9.0里建立VerilogHDL文件后,然后由VerilogHDL文件生成原理图子模块文件,再将生成的原理图子模块进行简单的导线连接后,就建立了本次系统所需的整体原理图,然后进行编译、调试生成.sof文件后,通过JTAG口将文件下载到目标板里,进行在系统测试,实物测试图见附录部分。
2.1IIC模块硬件设计
2.1.1按键消抖模块设计(KeyFilter_Check)
在总体硬件设计中,按键消抖模块建立的VerilogHDL文件名为KeyFilter_Check,1.按键消抖:
分为硬件和软件;
软件消抖延时时间一般为10ms,按键触发的时间一般为几百毫秒(采样时钟一般为几个毫秒)。
此模块的VerilogHDL文件使用的是非阻塞赋值语句。
图9按键消抖模块
2.1.2分频模块设计(Division_1_500HZ)
在总体硬件设计中,分频模块建立的VerilogHDL文件名为Division_1_500HZ,其实现的功能是将输入的初始时钟clk进行分频,通过分频获取串行总线器件所需要的时钟信号(即达到输出1HZ,50HZ,500HZ频率的目的)。
偶分频具体过程为:
计数到n/2-1的时候时钟进行翻转,然后计数复位
2.1.3IIC总线接口模块设计(IIC_Interface_Bus)
在总体硬件设计中,IIC总线接口模块建立的VerilogHDL文件名为IIC_Interface_Bus,然后将文件名为IIC_Interface_Bus的VerilogHDL文件生成名为IIC_Interface_Bus的原理图文件。
图10IIC总线接口模块
输入信号有50MHz的时钟clk,复位信号rst_n,低电平有效的同步信号Syn_Sign,控制字节写操作的按键的响应信号Byte_Write,Byte_Read,控制页写操作的按键的响应信号Page_Write,控制页读操作按键的响应信号Page_Read;
按键1按下执行写字节入操作,按键2按下执行读操作,按键3按下执行连写操作,按键4按下执行连读操作。
AT24C08的时钟端口scl;
AT24C08的数据端口sda;
后面显示接收到数据的标志ackflagIIC;
数码管所显示的数据输出端口outdata。
2.1.4显示模块设计(Led_Seg_Display)
在总体硬件设计中,显示模块建立的VerilogHDL文件名为Led_Seg_Display,然后将文件名为Led_Seg_Display的VerilogHDL文件生成名为Led_Seg_Display的原理图文件。
50MHz的时钟输入端口clk;
复位端口reset_n;
端口ackflag;
8位数据输入端口datain;
数码管段码输出seg_data;
数码管位选输出端口seg_com。
图11显示模块
2.1.5硬件模块总体设计思想及总体电路原理图
介绍下硬件模块总体设计思想:
本IIC模块实现的主要功能是完成并行数据与串行数据的转换,在转换过程中串行数据的输入与输出必须满足IIC总线规范。
图12为IIC总线接口框图,主要包括以下几个单元。
分频器:
由FPGA的锁相环输出的稳定时钟信号,由于频率很高所以必须经过分频模块输出满足IIC总线要求的数据传输速率。
IIC总线接口控制时序逻辑块:
IIC总线数据传输的所有时序控制逻辑都由它产生,是这个IIC模块的核心。
数据锁存器:
根据读写使能信号(r/w)存储IIC己接收的或待发送的数据。
移位寄存器:
在时序控制逻辑模块的控制下根据读写使能信号(r/w)对数据进行正确地处理。
就本次IIC模块设计而言,其硬件电路图如图13。
图12为IIC总线接口框图
图13硬件模块总体电路图
2.2IIC模块的verilogHDL代码设计
本IIC模块的软件设计是基于QuartusII9.0建立Division_1_500HZ,IIC_Interface_Bus,KeyFilter_Check,Led_Seg_Display等VerilogHDL文件。
由于I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 带有 源代码 基于 FPGA 模拟 I2C 接口 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)