专利名称:一种基于fpga实现多路i2c总线端口扩展的方法
技术领域:
本发明涉及通信、测控的设备,特别涉及一种基于FPGA实现多路I2C总线端口扩展的方法。
背景技术:
目前,随着通信技术的发展,通信、测控设备电路的各电路板之间、器件之间的通信越来越多,因而对板级通信速度要求也越来越高。但现有技术还存在不足之处首先,因为一般通信设备的主控MCU仅有一个I2C总线端口,当该通信设备需要同时与系统间多个 I2C总线的从设备进行通信时,主控制设备要通过单一的I2C总线端口与所有从设备或从器件连接,只有一个I2C总线端口的主设备只能依次和从设备或从器件进行通信,当主设备和一个从设备或从器件进行通信时,其他从设备则处于等待状态,不仅浪费了大量的时间,同时由于I2C的通信的标准频率只有IOOKHz和400KHz (快速),因此主设备和从设备或从器件之间通信速度就会降低。其次,由于I2C总线协议规定的总线电容不能超过400pF,一个I2C总线上所能挂载的I2C器件是有限的,当系统中存在大量的I2C总线设备和器件时,一路I2C总线已不能满足设备间通信的要求。
发明内容
鉴于现在技术存在的问题,本发明提供一种基于FPGA的多路I2C总线端口扩展技术方案,由FPGA扩展出I2C端口,并使扩展的端口完全符合I2C总线通信协议。本发明是通过这样的技术方案实现的一种基于FPGA实现多路I2C总线端口扩展的方法,用于通信系统的主设备和从设备之间通信,其特征在于,将主设备的主控MCU通过高速并口连接一个FPGA,经编程构成FPGA内部电路,FPGA内部电路包括MCU接口模块和多路I2C接口模块;
所述MCU接口模块用于FPGA和主控MCU外围总线的通信,主控MCU和FPGA之间采用高速并口进行通信,每次通信传输一个Byte的数据; 主控MCU和FPGA之间的并口通信采用如下定义 ADDR_BUS[15:0]地址总线,表示FPGA中寄存器的地址; DATA_BUS[7:0]双向的数据总线; WRB 写控制信号,低电平有效; RDB :读控制信号,低电平有效; RD_IRQ :读中断信号,低电平有效;
所述多路I2C接口模块包括多路I2C接口 ;每路I2C接口用于连接外部I2C控制器和外部I2C总线;I2C接口主要由Mart/Mop及SCL发生器的状态机和主状态机组成Jtart/ Mop及SCL发生器的状态机用于产生开始,停止信号,以及SCL信号;主状态机用于执行发送和接收操作。
本发明的优点是,通信系统中的所有的从设备或者从器件的I2C通信端口和主设备电路中由FPGA扩展出来的I2C端口依次连接,既可以仅有一个设备连接到一个FPGA扩展出来的某个I2C端口,也可以有多个设备或器件分别连接到FPGA扩展的I2C端口,由 FPGA扩展出来的I2C端口完全符合I2C总线协议。在以I2C总线通信的系统中,通过在主设备中使用本发明的通信端口扩展的方法,可以极大的提高主设备和从设备或者从器件的通信速度。
图1. FPGA总体示意图; 图2. I2C接口设计示意图3. Start/Stop及SCL发生器的状态机的状态转移图; 图4. I2C接口主状态机的状态转移图。
具体实施例方式为了更清楚的理解本发明,结合附图和实施例详细描述本发明
FPGA扩展的I2C端口在FPGA端口配置时需要把相应的管脚的电平选择为I2C电平模式。MCU和FPGA之间采用高速并口进行通信,每次可以传输一个Byte的数据。传输速率取决于MCU的系统时钟。M⑶和FPGA的并口采用如下定义 ADDR_BUS[15:0]地址总线(表示FPGA中寄存器的地址) DATA_BUS[7:0]双向的数据总线
WRB 写控制信号,低电平有效 RDB 读控制信号,低电平有效 RD.IRQ 读中断信号,低电平有效
在FPGA中设置两大类寄存器来实现MCU和FPGA之间交互。A)设置FPGA和MCU之间交互的寄存器控制寄存器,状态寄存器和中断寄存器。B)在FPGA中为每个I2C的扩展端口设置4类寄存器,即控制寄存器,数据寄存器, 地址寄存器,状态寄存器。通过并口读/写这些寄存器来实现和挂接在该扩展端口上的 I2C从设备和器件的通信。RD_IRQ接在MCU的外部中断,当MCU发出一系列的读取I2C从设备或器件指令后, FPGA在完成了各扩展端口上挂接的从设备或器件数据读取后,在RD_IRQ管脚上产生一个低脉冲信号来在MCU中产生一个中断通知MCU已经完成读取数据的操作。这时MCU就可以从数据寄存器中读取需要的数据了。如图1所示,FPGA单元是该技术的核心部分,分为MCU接口模块和多路I2C接口模块两大部分
MCU接口模块用于实现FPGA和MCU外围总线的通信。如图2所示,多路I2C接口模块是FPGA的设计核心,I2C接口用于连接I2C控制器和I2C总线,由两个状态机构成1)一个是名为Mart/Mop及SCL发生器的状态机,用于产生开始,停止信号,以及SCL 信号,其状态转移图如图3所示。2 )一个是I2C接口的主状态机,用于执行发送和接收操作,其状态转移图如图4所
7J\ ο根据上述说明,结合本领域技术可实现本发明的方案。
权利要求
1. 一种基于FPGA实现多路I2C总线端口扩展的方法,用于通信系统的主设备和从设备之间通信,其特征在于,将主设备的主控MCU通过高速并口连接一个FPGA,经编程构成FPGA 内部电路,FPGA内部电路包括MCU接口模块和多路I2C接口模块;所述MCU接口模块用于FPGA和主控MCU外围总线的通信,主控MCU和FPGA之间采用高速并口进行通信,每次通信传输一个Byte的数据; 主控MCU和FPGA之间的并口通信采用如下定义 ADDR_BUS[15:0]地址总线,表示FPGA中寄存器的地址; DATA_BUS[7:0]双向的数据总线; WRB 写控制信号,低电平有效; RDB :读控制信号,低电平有效; RD_IRQ :读中断信号,低电平有效;所述多路I2C接口模块包括多路I2C接口 ;每路I2C接口用于连接外部I2C控制器和外部I2C总线;I2C接口主要由Mart/Mop及SCL发生器的状态机和主状态机组成Jtart/ Mop及SCL发生器的状态机用于产生开始,停止信号,以及SCL信号;主状态机用于执行发送和接收操作。
全文摘要
本发明涉及一种基于FPGA实现多路I2C总线端口扩展的方法,用于通信系统的主设备和从设备之间通信,将主设备的主控MCU通过高速并口连接一个FPGA,经编程构成FPGA内部电路,FPGA内部电路包括MCU接口模块和多路I2C接口模块;由FPGA扩展出来的I2C端口完全符合I2C总线协议,在以I2C总线通信的系统中,通过在主设备中使用本发明的通信端口扩展的方法,可以极大的提高主设备和从设备或者从器件的通信速度。
文档编号G06F13/38GK102243619SQ20111017125
公开日2011年11月16日 申请日期2011年6月23日 优先权日2011年6月23日
发明者张天晶, 张睿, 朱力, 杨林, 王东锋, 钱瑞杰, 陈伟峰 申请人:天津光电通信技术有限公司