基于CPLD的I2C总线接口设计

发布者:JoyfulSpirit5最新更新时间:2016-05-09 来源: eefocus关键字:CPLD  I2C总线  接口设计 手机看文章 扫描二维码
随时随地手机看文章
  I2C总线是两线式串行总线,用于连接微控制器及其外围设备。该总线具有如下特点:1)只要求两条总线线路,一条串行数据线(SDA),一条串行时钟线(SDL);2)每个连接到总线的器件都可以通过唯一的地址寻址,总线中主机可以作为主机发送器或主机接收器;3)它是一个真正的多主机总线,如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏;4)双向数据传输位速率在标准模式下可达100 kbit/s快速模式下可达400kbit/s高速模式下可达3.4 Mbit/s;5)片上的滤波器可以滤去总线数据线上的毛刺以保证数据完整;6)连接到相同总线的IC数量只受到总线的最大电容400 pF限制。I2C总线最主要的优点是其简单性和有效性。由于I2C总线为两线式总线,它占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。它支持多主控制(multimastering),总线中任何能够进行发送和接收的设备都可以成为主机。任何主机都能够控制总线信号的传输和时钟频率。在任何时间点上只能有一个器件作为主机,其他器件作为从机。正是由于I2C总线具有上述诸多优点,具备I2C接口的器件在仪器设计中已被广泛采用,比较常见的如:日历芯片、存储芯片、模数转换器以及数模转换器等。

  不幸的是大多数CPU都擅长操作并口,而并不具备直接操作I2C总线接口的能力。在系统设计时,为了与具有I2C总线接口的芯片连接,经常采用的方法是:利用CPU的2条通用输入输出(GPIO)线作为I2C总线使用,用软件模拟的方法,产生I2C总线需要的控制时序。该方法虽然可以达到同I2C器件连接的目的,却不可避免地带来软件编制复杂、占用CPU处理时间多的弊端。为了在不增加编程难度、不大量占用CPU处理时间的前提下使不具备I2C总线的CPU也能够充分享受I2C总线的优点,本文设计了一种基于CPLD的8位并行接口转I2C总线接口的控制模块,通过该模块,具有并口的CPU可以通过对并口的读写完成对I2C总线的控制。

  1 I2C总线的基本时序

  I2C总线是由数据线SDA和时钟线SCL构成,靠它们在连接于I2C总线的各个设备之间传送信息。I2C总线在传送数据过程中共有4种类型的信号,分别是:开始信号、结束信号、应答信号和数据传输信号。

  开始信号:主机控制SDA信号线在SCL线的高电平期间发生由高电平到低电平的跳变,通知从机开始数据传输。

  结束信号:主机控制SDA信号线在SCL线的高电平期间发生由低电平到高电平的跳变,通知从机本次数据传输结束。

  应答信号:接收数据的芯片(主机或者从机)在完整接收到8位数据后,向发送数据的芯片发出低电平信号,通知发送的数据已被接收。发送数据的芯片应根据应答信号的电平高低判断数据是否被接收芯片接收。

  数据传输信号:发送数据的芯片在SCL脉冲控制下在SDA上串行输出数据信号,SDA只能在SCL为低电平期间改变状态,在SCL为高电平期间应保持稳定。

  I2C总线上的数据传输主要有4种模式,分别是:字节写、页面写、当前地址读、随机地址读和顺序读。

  字节写:对给定的芯片的确定地址单元写入一个字节的数据。

  页面写:对给定的芯片的确定地址单元所在页面连续写入全部的数据。

  当前地址读:读出当前地址单元中的一个字节数据。

  随机地址读:从给定的芯片的确定地址单元中读出一个字节数据。

  顺序读:从给定的地址后连续读出n个字节的数据。

  I2C总线各种信号及数据传输模式示意图如图1所示。

  利用CPLD设计一种模块,如果能够将CPU发出的并行数据按上述I2C总线数据传输模式自动转换成串行数据输出,同时将接收到的I2C总线串行数据自动转换成并行数据供CPU读取,则不具备I2C总线接口的CPU也能通过对并口的操作轻松实现与I2C总线连接并同其他具备I2C总线接口的芯片交换数据。为此本文设计了一种基于CPLD的工作于I2C总线主机模式的并口转I2C总线模块。利用该模块CPU可以很容易地实现与I2C总线的接口。

  2 I2C总线接口模块的CPLD实现

  上面简要介绍了I2C总线的信号以及I2C总线的数据传输模式,如果要使接口模块正常工作,CPU必须首先要通知模块执行什么操作,而后再把需要的数据依次送入模块中,考虑到I2C总线的速率可以在0~3.4 Mbit/s之间,为了适应不同外设的需要,模块还应在CPU的控制下自由调整数据传送速率。因此,CPU应能够向模块发送数据传送速率控制数据、I2C总线工作模式控制数据、信息交换数据,同时还能从模块

  中读取工作状态数据、模块接收数据。据此设计出基于CPLD的I2C总线接口模块如图2所示。

  该设计由7个单元组成,它们分别是:用于调整I2C总线数据传输速率的Clock单元;用于实现同CPU并行接口的PcPort单元:用于产生I2C总线工作时序的I2CStep单元;用于产生数据传输时序的BitTiming单元;用于产生I2C总线使能信号的En12C单元:用于产生I2C总线接口模块工作状态指示的Status单元:以及用于产生I2C接口时钟信号SDL和数据串行输入输出信号SDA的I2CPORT单元。

  2.1 Clock单元

  整个接口模块以CPU的系统时钟作为主时钟信号,模块传输数据的速率受该时钟频率的控制,时钟频率高则模块传输数据的速率也高,反之亦然。考虑到各种具有I2C总线接口的芯片的工作速率差别较大(从几十kB/s到几MB/s),该接口模块的工作速率必须能够灵活调整,以适应不同外设芯片的接口需要。

  Clock单元实际上就是一个分频器,它在输出频率控制码CKSEL[7..0]的控制下产生对PCCLK分频后合适的时钟信号供I2C接口使用。

  2.2 I2CStep单元

  通过对图1中I2C总线各种工作模式的分析,可知不同的工作模式都是按特定的工作流程串行输入、输出数据的,例如字节写模式的工作流程为:发送开始信号、串行输出被叫芯片的片选地址、发送写信号、等待被叫芯片响应、串行输出被叫芯片存储单元的地址、等待被叫芯片响应、串行输出写入的数据、等待被叫芯片响应、发送结束信号结束本次操作。

  为了使接口模块正确工作,模块在接收到来自CPU的工作模式控制信号I2CMD[2..0]后,根据工作模式的不同产生接口模块工作流程。当前流程结束后由Status单元产生IncStep信号,控制工作流程指向下一阶段。该模块的功能类似一个计数器,它在I2CMD[2..0]和I2CStep的共同作用下,产生长度不等的工作流程信号Step[6..0]。

  2.3 BitTiming单元

  在I2C总线工作流程的不同阶段,I2C接口模块需要按一定的时序完成不同的工作,通过对总线数据传输模式的分析可知,在一个数据传输模式的所有工作流程中,输入、输出8位数据的工作流程用时最长,需要25个工作时序周期,为了满足所有工作流程的需要,工作时序Bit-Timing单元被设计成最长可产生31个时钟周期的工作时序。

  该单元在IncStep=‘1’时复位工作时序;在EnTiming信号有效后的每个SysCLK的上升沿使工作时序信号EnTiming加1,用于控制I2CPORT单元按给定的时序串行输入、输出数据信息。

  2.4 Status单元

  在I2C总线工作过程中,CPU需要随时了解I2C接口模块的发送数据寄存器是否为空、接收数据寄存器是否准备数据好、从机响应信号是否正确、当前工作流程是否完成等工作状态,只有在发送数据寄存器为空时,CPU才可以向接口模块写入待传输数据;只有在接收数据寄存器数据准备好后,CPU才可以从接口模块读入正确的接收数据;从机响应信号不正确时,CPU应立即发出结束信号结束本次操作;当前工作流程未完成前不能进行下一流程。这些状态信号全部由Status单元产生。

  在该单元中,共有4种输出信号,它们分别是:用于指示发送数据寄存器是否为空的TxSTS状态,该状态在CPU写入数据后置‘1’,数据被发送后清‘0’;用于指示接收数据准备好状态的RxSTS信号,该信号在模块接收到完整的数据后置‘1’,数据被CPU读走后清‘0’;用于指示模块工作状态的ACKSTS信号,该信号在模块工作正常(接收到从机响应信号)时自动置‘1’,工作不正常时自动清‘0’;用于使工作流程指向下一阶段的IncStep信号,该信号在当前工作流程完成后由模块自动产生,用于使模块的工作流程指向下一阶段。

  2.5 EnI2C单元

  在I2C总线接口模块中,BitTiming单元何时开始产生工作时序,需要时序信号控制,I2CPORT单元何时向I2C总线输出信息、何时从I2C总线上读入信息也需要时序信号控制。这些控制时序的产生由EnI2C单元完成。

  EnI2C单元在I2CMD[2..0]、Step[6..0]、TxSTS、RxSTS等信号的控制下,从预先存储于单元内部的一组I2C工作时序信息中读出当前的时序信息输出,控制BitTiming和I2CPORT单元工作。

  模块中,预先存储的I2C工作时序信息实现如下:

 



  2.6 12CPORT单元

  本单元是整个设计的核心,用于完成数据的I2C总线输出以及I2C总线输入数据的读入。同时产生接口模块的各种工作状态。

  该单元的工作过程为:在SysCLK的下降沿分别读入工作使能信号和工作时序信号,如果此时EnIdle=‘1’则强制I2C总线进入空闲模式;如果EnStart=‘1’,则使I2C总线输出开始信号;如果EnWrite=‘1’,则使I2C总线输出8位数据信号;如果EnInACK=‘1’,则从I2C总线读入从机响应信号;如果EnRead=‘1’,则从I2C总线读入8位数据;如果EnOutACK=‘1’。则使I2C总线输出主机响应信号;如果EnStop=‘1’,则使I2C总线输出结束信号;在整个工作过程中,模块会自动根据工作情况,设置各种状态控制信号。

  图3是用QuartusII9.0对该单元仿真的时序图。

  2.7 PcPort单元的实现

  该单元是模块与CPU的接口,CPU通过该单元向接口模块写入工作模式控制信息、需要发送的数据以及I2C工作速度控制信息;同时通过该单元读入从机响应信息、从机输出数据、发送接收寄存器状态等信息。

  3 应用实例

  该模块工作于主模式,主要应用于没有I2C专用接口的CPU通过并口方便地与具有I2C接口的外设连接并交换信息。

  图4给出了CPU通过该模块与X24C04E2PROM接口的例子。

  在图中,PC104 CPU通过数据总线、地址总线、读、写信号线与I2C接口模块相连,I2C接口模块则通过SDL、SDA与X24C04相连,PC104CPU输出的并行数据,经过I2C接口模块转换后变成符合I2C总线模式要求的串行数据输出到X24C04,X24C04输出的串行数据经过I2C接口模块转换后,变成并行数据供PC104CPU读取。使用该模块后CPU操作I2C总线就像操作并口一样方便。该电路的控制软件流程如图5所示。

  通过上述应用实例可以看出,本文设计的接口模块只能工作于主机模式,并且在整个系统中只能有一个主机工作。在从机因处理其他工作而暂不能响应主机时,模块没有设计等待功能,只能发送总线结束信号结束当前操作,待从机空闲时再重新开始通信。

  4 结论

  本设计的创新点在于:通过CPLD实现并口到I2C总线接口的转换,可以使不具备I2C总线接口的CPU通过并口方便地控制I2C总线设备,使用该模块可以简化控制软件的编程,加快系统设计的实现,在I2C总线操作过程中,转换模块自动发出开始信号、结束信号,不需要CPU干预。

  本文设计的I2C接口模块只能工作于主模式,只能应用于主机系统;在模块的设计中,没有考虑多主机的情况,对多主机的总线竞争没有设计仲裁功能;模块的页面读写数据数不能超过32个字节,在32个字节之内,CPU可以通过主动设置工作模式为“110”而终止当前操作,达到连续读写小于32个字节数据的目的,超过32个字节的连续数据读写操作将使模块工作错误。

关键字:CPLD  I2C总线  接口设计 引用地址:基于CPLD的I2C总线接口设计

上一篇:基于LIN总线的汽车分级制网络结构
下一篇:基于PXI总线的水声目标回波模拟模块的设计

推荐阅读最新更新时间:2024-05-03 00:22

单片机+CPLD结构体系在电子设计中的应用
    摘要: 介绍在数字电路设计中,单纯以单片机为主体结构的优缺点;结合CPLD的特点,提出单片机+CPLD体系结构在实际应用中的优势,并给出应用实例。     关键词: 单片机 CPLD VHDL 自20世纪80年代单片机引入我国以来,学习和应用单片机的热潮始终不减,特别是MCS51系列。这是由单片机的特点决定的。实际上,从应用通用数字集成电路系统,到广泛应用单片机,是我国电子设计在智能化应用水平上质的飞跃。据统计分析,单片机的销量到目前为止依然逐年递增,而且在很长一段的时间内,单片机依然会是电子设计的主角(虽然这一地址已经受到了CPLD的挑战)。 1 纯单片机系统优缺点 ①大量的外围芯片和接口电路
[应用]
DSP控制的电力线通信模拟前端接口设计
引言   随着电子技术和网络技术的发展,运用电力线作为载体进行信号传输受到人们越来越多的重视,得到了越来越广泛的应用。电力线是当今最普通、覆盖面最广的一种物理媒介,由其构成的电力网是一个近乎天然的物理网络。如何利用电力网的资源潜力,在不影响传输电能的前提下,将电力输送网和通信网合二为一,使之成为继电信、电话、无线通信、卫星通信之后的又一通信网,是多年来国内外科技人员技术攻关的一个热点。电力线载波通信就是在这种背景下产生的,它以电力网作为信道,实现数据传递和信息交换。电力线作为载波信号的传输媒介,是唯一不需要线路投资的有线通信方式。   作为通信技术的一个新兴应用领域,电力载波通信技术以其诱人的前景及潜在的巨大市场而为世界
[嵌入式]
基于MCS-51单片机的IEEE-488接口设计
1 概 述 智能仪器程控接口电路的设计,首先是根据仪器的功能确定该仪器的接口功能。文中所涉及的仪器是以MCS-51系列单片机作为内部控制器的高速数据采集装置,由于A/D转换器既要向计算机输送采集结果,又要接受计算机对其工作条件的控制,因此,在程控接口电路设计时,设置了六种接口功能:源挂钩功能(选用SH1功能子集)、受者挂钩功能(选用AH1功能子集)、讲功能(选用T5功能子集)、听功能(选用L4功能子集)、远地/本地功能(选用RL功能子集)和器件触发功能(选用DT1功能子集)。 2 接 口 功 能 (IF) 设 计 如图1所示是该仪器的原理框图,其中接口功能电路由时序转换与信号控制电路、MC68488和四片M
[应用]
基于ASP.NET的B2C在线支付接口设计
随着社会经济的不断发展,人们的生活节奏不断加快,这使通过网络平台来实现支付交易成为一种需求。通过电子支付平台系统,既可以节约人工实际支付交易所耗费巨大的时间成本,又能保证交易的公平性、安全性和隐蔽性,给人们的生活带来极大的便利。然而一般商户如何使自己的电子商务系统与电子支付平台实现正确对接则是一项非常重要的技术,基于此设计了基于ASP.NET的B2C在线支付接口。 1在线支付的现状 在线支付是指卖方与买方通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务。 在线支付,也称实时电子支付。这是电子商务必备的一个环节,缺少了在线支付就没有完全实现电子商务。在线支付就是由商家预先选择好在线支付平台服务商(如预置了包
[工业控制]
基于ASP.NET的B2C在线支付<font color='red'>接口设计</font>
DS2450转换器与51单片机接口设计
在普通方式下其串行通信速率为16.3kbps,而超速工作模式时的速率可达 142kbps,片内16位循环冗余校验码生成器可用于检测通信的正确性。DS2450是DALLAS公司生产的单总线四通道逐次逼近式A/D转换器芯片,它的输入电压范围、转换精度位数和报警门限电压均可编程;每个通道均可用各自的存储器来存储电压范围设置、转换结果和门限电压等参数。DS2450采用8脚SOIC小体积封装。它既可用单5V电源供电,也可采用寄生电源方式供电,芯片正常工作时的功耗仅2.5mW,空闲时的功耗为25μW。多个DS2450或其它功能的具有MicroLAN接口的单总线芯片可以并联,CPU只需一根端口线就能与诸多单总线芯片通信,而且占用微处理器的端
[单片机]
DS2450转换器与51单片机<font color='red'>接口设计</font>
基于DSP与CPLD的输电线路局部气象监测装置系统设计
1概述 输电线路的状态直接决定着整个电网的安全稳定运行,输电线路微气象参数的实时监测能够为电网正常调度、以及自然灾害预测和控制提供必要的现场信息。输电线路是电力系统的关键元件之一。为了安全、稳定地运行,调度系统往往会收集输电线路的电气参数和运行工况参数(如输电线的型号、排列方式,以及其上的潮流分布信息等),并进行适当的控制。在电力系统的研究成果中,更多的是关注潮流优化、系统故障和系统稳定性问题,而在气象条件对输电线路的影响方面的研究相对不足。 我国是输电线路自然灾害严重的国家之一,雨雪冰冻天气造成的线路覆冰问题一直没有得到很好的解决,而线路覆冰对电网的破坏很大。要预测和控制这些自然灾害,只有输电线路的电气运行参数是不够的。例如,要
[嵌入式]
基于DSP与<font color='red'>CPLD</font>的输电线路局部气象监测装置系统设计
I2C总线数字电位器原理及与单片机的接口设计
1 引言 ; ; ; 随着I2C总线应用的日益广泛,兼容I2C总线的接口芯片及存储器的品种也越来越多,其中数字电位器以其调节方便、使用寿命长、受物理环境的影响小、性能稳定等特点,已被广大电子工程技术人员所认识;尤其是在音频产品、控制领域等的应用越来越受到人们的重视。I2C总线数字电位器是美国Xicor公司推出的X9 系列数字电位器中较有代表性的一种。它是把几个E2POT非易失性数字电位器集成在一起的单片CMOS微电路,具有二线串行I2C总线接口,易于软件控制,可直接读出、写入滑动端位置,可级联使用等先进特性。本文以X9241为例说明。 2 结构原理 ; ; ; X9241内部包括一个I2C接口和四个数字电位器。每
[单片机]
<font color='red'>I2C总线</font>数字电位器原理及与单片机的<font color='red'>接口设计</font>
应用CPLD实现交通控制系统芯片设计
    摘要: 介绍可编程逻辑器件的结构和开发软件MAX+PLUSII主要特点,以交通控制系统电路芯片设计为例,叙述自顶向下的设计方法。     关键词: FLEX10K 可编程逻辑器件 自顶向下 集成电路的发展经历了从小规模、中规模、大规模和超大规模集成的过程,但随着科学技术的发展,许多特定功能的专用集成电路(ASIC)应用日益广泛,用户迫切希望根据自身设计要求自行构造逻辑功能的数字电路。复杂可编程逻辑器件CPLD(Complex Programmable Logic Devices)顺应了这一新的需要。它能将大量逻辑功能集成于1个芯片中,其规模可达几十万或上百门以上。用CPLD开发的数字系统个有容量
[传感技术]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved