CN108228520B - 一种面向bmc的i2c控制器的快速传输方法 - Google Patents

一种面向bmc的i2c控制器的快速传输方法 Download PDF

Info

Publication number
CN108228520B
CN108228520B CN201810023683.0A CN201810023683A CN108228520B CN 108228520 B CN108228520 B CN 108228520B CN 201810023683 A CN201810023683 A CN 201810023683A CN 108228520 B CN108228520 B CN 108228520B
Authority
CN
China
Prior art keywords
state
bits
data
write
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810023683.0A
Other languages
English (en)
Other versions
CN108228520A (zh
Inventor
王朝辉
王霞
王振江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN201810023683.0A priority Critical patent/CN108228520B/zh
Publication of CN108228520A publication Critical patent/CN108228520A/zh
Application granted granted Critical
Publication of CN108228520B publication Critical patent/CN108228520B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Abstract

本发明提供一种面向BMC的I2C控制器的快速传输方法,属于I2C通讯领域,该方法将32位ARM分为两个16位,每个16位的低8位作为I2C的传输数据,高8位作为控制信号进行传输,在I2C控制器与ARM总线之间有读写宽度不同的两个FIFO用作命令和数据的缓存,通过增加标志位的方法增加数据带宽,同时使ARM能方便对I2C控制器各种传输模式进行配置。本发明着重于基于BMC的I2C控制器IP核设计方法,可以用于各种基于SOC的I2C控制系统、也可以用于非SOC的I2C控制器和FPGA设计,是一种可以更灵活的支持多种I2C协议传输的通讯方法,显著提高了ARM系统的整体性能。

Description

一种面向BMC的I2C控制器的快速传输方法
技术领域
本发明涉及I2C通讯领域,具体地说是一种面向BMC的I2C控制器的快速传输方法。
背景技术
在国产BMC设计过程中,BMC需要完成对外围进行电源管理、时钟选择、复位控制等功能,这就需要I2C控制器能够外挂尽量多的slave器件。如果一个I2C总线上外挂很多的slave器件,那么每个器件都必须等待总线闲置的时候才能传输,因此在ARM处于比较忙的情况下,I2C模块的传输性能会有所降低。
根据I2C总线协议,在I2C总线在传送数据过程中,一共有三种类型信号:开始信号、结束信号和应答信号。
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
I2C支持很多传输模式,例如图1为快速模式,快速模式只传输7位slave地址,用于小规模读写。图2为发出byte模式,master发出7位地址和一个或者多个byte数据。图3图4为多byte地址发出接收模式。
现有的I2C控制器中的状态器与数据分离,在进行读写操作时,必须先判断一下状态寄存器中的状态,然后才能进行读写。现有I2C控制器中,一般总线宽度为一个字节(即8位位宽)。
在采用上述方式情况下,缺点如下:
1、ARM在操作I2C控制器时,需要不断读取状态,而浪费了ARM的工作效率,进而影响I2C控制器对外设的操作控制。
2、在FPGA原型验证和芯片设计过程中,ARM外围的amba总线为32位宽或者64位等更高的位宽,如果一直读写一个字节宽度,会造成大量的ARM带宽被浪费。
发明内容
本发明的技术任务是针对现有技术的不足,提供一种面向BMC的I2C控制器的快速传输方法,通过增加标志位的方法增加数据带宽,同时使ARM能方便对I2C控制器各种传输模式进行配置,是一种可以更灵活的支持多种I2C协议传输的通讯方法。
本发明解决其技术问题所采用的技术方案是:
一种面向BMC的I2C控制器的快速传输方法,将32位ARM分为两个16位,每个16位的低8位作为I2C的传输数据,高8位作为控制信号进行传输,在I2C控制器与ARM总线之间有读写宽度不同的两个FIFO用作命令和数据的缓存:
对于写命令数据端,FIFO写宽度为(8+3)*2=22位,其中8位为有效数据,3位表示START、STOP、INVALID三个标志位,FIFO读宽度为8+3=11位;
对于ARM读数据端,FIFO写宽度为(8+1)=9位,其中8位为有效数据,1位表示无效或者FIFO为空的标志位,FIFO的读宽度为(8+1)*2=18位。
作为本发明进一步改进的,对于写命令数据端,状态机如下:
1) I2C_START状态,当收到START标志,状态机跳到I2C_SLAVE_ADDR状态;
2) I2C_SLAVE_ADDR状态,根据8位数据的最低位跳转到读状态或者写状态,如果最低位为1,则跳转到I2C_READ状态,否则跳转I2C_WRITE状态;
3) I2C_WRITE状态,如果接收到STOP标志,状态机跳到I2C_STOP状态,如果接收到START标志,立即跳到I2C_START状态,否则状态机一直处于向slaver写状态;
4) I2C_READ状态,如果接收到STOP标志,状态机跳到I2C_STOP状态,否则状态机一直处于向slaver读数据;
5) I2C_STOP状态,表示状态机处于停止状态。
作为本发明进一步改进的,如果数据长度byte数为奇数,状态机必须将最后一个byte的INVALID标志位置1,并写入一个随机数,用来凑满32位总线。否则如果默认为零或则其他任意一个数,将会无法区分是否为真实数据。
作为本发明进一步改进的,I2C支持快速模式、发出byte模式、多byte地址发出接收模式。
作为本发明进一步改进的,对于快速模式,将STOP和START标志位同时置1,即:
写方式为{3’b011,SLAVE_ADDR,1’b0},
读方式为{3’b011,SLAVE_ADDR,1’b0},
其中中括号为bit合并操作,SLAVE_ADDR为7位slaver地址。
作为本发明进一步改进的,对于发出byte模式,如果数据长度byte数为奇数,读写方式为:
{8’b000,8位数据,8’b010,SLAVE_ADDR,R/W},
{8’b000,8位数据,8’b000,8位数据},
{8’b001,8位数据,8’b000,8位数据};
如果数据长度byte数为偶数,读写方式为:
{8’b000,8位数据,8’b010,SLAVE_ADDR,R/W},
{8’b000,8位数据,8’b000,8位数据},
{8’b100,8位数据,8’b001,8位数据};
其中R/W为1时表示读,为0时表示写,高8位中低3位二进制为000表示数据,高8位中低3位二进制为001表示开始,高8位中低3位二进制为100表示该数据为凑数的无效数据。
作为本发明进一步改进的,对于多byte地址发出接收模式,在中间加入开始表示,读出(num_of_bytes+1)个有效数据的格式为:
{8’b010,SLAVE_ADDR2,8’b010,SLAVE_ADDR,1’b0},
{8’b001,num_of_bytes,8’b000,SLAVE_ADDR,1’b1}。
本发明的方法适用于各种基于SOC的I2C控制系统、或用于非SOC的I2C控制器和FPGA设计。
本发明的一种面向BMC的I2C控制器的快速传输方法,与现有技术相比所产生的有益效果是:
本发明着重于基于BMC的I2C控制器IP核设计方法,可以用于各种基于SOC的I2C控制系统、也可以用于非SOC的I2C控制器和FPGA设计。通过增加标志位的方法增加数据带宽,同时使ARM能方便对I2C控制器各种传输模式进行配置,是一种可以更灵活的支持多种I2C协议传输的通讯方法,显著提高了ARM系统的整体性能。
附图说明
附图1是本发明的快速模式图;
附图2是本发明的发出byte模式图;
附图3是本发明的多byte地址发出模式;
附图4是本发明的多byte地址接收模式;
附图5是本发明的写命令数据格式;
附图6是本发明的ARM读数据格式。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参考附图1-6,对本发明的一种面向BMC的I2C控制器的快速传输方法作以下详细说明。
如附图5、6所示,本发明的一种面向BMC的I2C控制器的快速传输方法,以ARM总线32位为例,将32位分为两个16位,每个16位的低8位作为I2C的传输数据,高8位作为控制信号进行传输,在I2C控制器与ARM总线之间有读写宽度不同的两个FIFO用作命令和数据的缓存:
对于写命令数据端,FIFO写宽度为(8+3)*2=22位,其中8位为有效数据,3位表示START、STOP、INVALID三个标志位,FIFO读宽度为8+3=11位;
状态机如下:
1) I2C_START状态,当收到START标志,状态机跳到I2C_SLAVE_ADDR状态;
2) I2C_SLAVE_ADDR状态,根据8位数据的最低位跳转到读状态或者写状态,如果最低位为1,则跳转到I2C_READ状态,否则跳转I2C_WRITE状态;
3) I2C_WRITE状态,如果接收到STOP标志,状态机跳到I2C_STOP状态,如果接收到START标志,立即跳到I2C_START状态,否则状态机一直处于向slaver写状态;
4) I2C_READ状态,如果接收到STOP标志,状态机跳到I2C_STOP状态,否则状态机一直处于向slaver读数据;
5) I2C_STOP状态,表示状态机处于停止状态。
对于ARM读数据端,FIFO写宽度为(8+1)=9位,其中8位为有效数据,1位表示无效或者FIFO为空(EMPTY)的标志位,FIFO的读宽度为(8+1)*2=18位。如附图6所示,增加一个EMPTY标志位,只有EMPTY为0时,读出的数据才有效。
本发明中,如果数据长度byte数为奇数,状态机必须将最后一个byte的INVALID标志位置1,并写入一个随机数,用来凑满32位总线。否则如果默认为零或则其他任意一个数,将会无法区分是否为真实数据。
本发明I2C支持快速模式、发出byte模式、多byte地址发出接收模式。
1.1 对于图1的快速模式,可将STOP和START标志位同时置1,即:
写方式为{3’b011,SLAVE_ADDR,1’b0},
读方式为{3’b011,SLAVE_ADDR,1’b0},
其中中括号为bit合并操作,SLAVE_ADDR为7位slaver地址。
1.2 对于图2的发出byte模式,如果数据长度byte数为奇数,读写方式为:
{8’b000,8位数据,8’b010,SLAVE_ADDR,R/W},
{8’b000,8位数据,8’b000,8位数据},
{8’b001,8位数据,8’b000,8位数据};
如果数据长度byte数为偶数,读写方式为:
{8’b000,8位数据,8’b010,SLAVE_ADDR,R/W},
{8’b000,8位数据,8’b000,8位数据},
{8’b100,8位数据,8’b001,8位数据};
其中R/W为1时表示读,为0时表示写,高8位中低3位二进制为000表示数据,高8位中低3位二进制为001表示开始,高8位中低3位二进制为100表示该数据为凑数的无效数据。
1.3 对于图3、4的多byte地址发出接收模式,在中间加入开始表示,读出(num_of_bytes+1)个有效数据的格式为:
{8’b010,SLAVE_ADDR2,8’b010,SLAVE_ADDR,1’b0},
{8’b001,num_of_bytes,8’b000,SLAVE_ADDR,1’b1}。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。

Claims (5)

1.一种面向BMC的I2C控制器的快速传输方法,其特征在于,将32位ARM分为两个16位,每个16位的低8位作为I2C的传输数据,高8位作为控制信号进行传输,在I2C控制器与ARM总线之间有读写宽度不同的两个FIFO用作命令和数据的缓存:
对于写命令数据端,FIFO写宽度为(8+3)*2=22位,其中8位为有效数据,3位表示START、STOP、INVALID三个标志位,FIFO读宽度为8+3=11位;
对于ARM读数据端,FIFO写宽度为(8+1)=9位,其中8位为有效数据,1位表示无效或者FIFO为空的标志位,FIFO的读宽度为(8+1)*2=18位。
2.根据权利要求1所述的一种面向BMC的I2C控制器的快速传输方法,其特征在于,对于写命令数据端,状态机如下:
1) I2C_START状态,当收到START标志,状态机跳到I2C_SLAVE_ADDR状态;
2) I2C_SLAVE_ADDR状态,根据8位数据的最低位跳转到读状态或者写状态,如果最低位为1,则跳转到I2C_READ状态,否则跳转I2C_WRITE状态;
3) I2C_WRITE状态,如果接收到STOP标志,状态机跳到I2C_STOP状态,如果接收到START标志,立即跳到I2C_START状态,否则状态机一直处于向slaver写状态;
4) I2C_READ状态,如果接收到STOP标志,状态机跳到I2C_STOP状态,否则状态机一直处于向slaver读数据;
5) I2C_STOP状态,表示状态机处于停止状态。
3.根据权利要求1或2所述的一种面向BMC的I2C控制器的快速传输方法,其特征在于,如果数据长度byte数为奇数,状态机必须将最后一个byte的INVALID标志位置1,并写入一个随机数,用来凑满32位总线。
4.根据权利要求1或2所述的一种面向BMC的I2C控制器的快速传输方法,其特征在于,I2C支持快速模式、发出byte模式、多byte地址发出接收模式。
5.根据权利要求1或2所述的一种面向BMC的I2C控制器的快速传输方法,其特征在于,该方法适用于各种基于SOC的I2C控制系统、或用于非SOC的I2C控制器和FPGA设计。
CN201810023683.0A 2018-01-10 2018-01-10 一种面向bmc的i2c控制器的快速传输方法 Active CN108228520B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810023683.0A CN108228520B (zh) 2018-01-10 2018-01-10 一种面向bmc的i2c控制器的快速传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810023683.0A CN108228520B (zh) 2018-01-10 2018-01-10 一种面向bmc的i2c控制器的快速传输方法

Publications (2)

Publication Number Publication Date
CN108228520A CN108228520A (zh) 2018-06-29
CN108228520B true CN108228520B (zh) 2020-06-16

Family

ID=62640705

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810023683.0A Active CN108228520B (zh) 2018-01-10 2018-01-10 一种面向bmc的i2c控制器的快速传输方法

Country Status (1)

Country Link
CN (1) CN108228520B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857688A (zh) * 2019-01-21 2019-06-07 飞依诺科技(苏州)有限公司 应用于医疗设备的i2c总线接口的数据传输方法及系统
CN116450552B (zh) * 2023-06-09 2023-08-29 江苏润石科技有限公司 基于i2c总线异步批量读写寄存器的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000597A (zh) * 2007-01-17 2007-07-18 中山大学 一种基于AMBA总线的嵌入式Java处理器IP核
CN102063009A (zh) * 2009-11-13 2011-05-18 蒋思远 一种摄像头测试系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050076527A (ko) * 2004-01-20 2005-07-26 엘지전자 주식회사 다중 입출력 장치를 이용한 인터페이스 장치
CN100416536C (zh) * 2006-11-09 2008-09-03 中兴通讯股份有限公司 10位寻址模式i2c控制器访问大容量存储器的方法
CN101719110B (zh) * 2009-12-18 2012-01-11 烽火通信科技股份有限公司 光通信器件中多路i2c器件的实时监控方法
CN102411550A (zh) * 2011-08-24 2012-04-11 四川九洲电器集团有限责任公司 一种基于i2c总线控制器件的装置与方法
CN104346131B (zh) * 2013-08-05 2017-07-04 豪威科技(上海)有限公司 一种支持批量读写从机寄存器的主机控制方法
CN105843771A (zh) * 2016-04-11 2016-08-10 浪潮电子信息产业股份有限公司 一种多核dsp中edma不同带宽设备间通信的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000597A (zh) * 2007-01-17 2007-07-18 中山大学 一种基于AMBA总线的嵌入式Java处理器IP核
CN102063009A (zh) * 2009-11-13 2011-05-18 蒋思远 一种摄像头测试系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
I2C总线接口IP核的设计研究;刘虹;《昆明理工大学学报》;20041031;第29卷(第5期);全文 *

Also Published As

Publication number Publication date
CN108228520A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
EP1764703B1 (en) A system for providing access to multiple data buffers of a data retaining and processing device
US8898358B2 (en) Multi-protocol communication on an I2C bus
US20100122003A1 (en) Ring-based high speed bus interface
CN114564427B (zh) 一种ahb总线到i2c总线的总线桥、系统及方法
CN100416536C (zh) 10位寻址模式i2c控制器访问大容量存储器的方法
JP5209461B2 (ja) 集積回路内のデバイス間のデータ転送
CN104641360A (zh) 对存储器及对等设备的双播PCIe入站写入
CN102073611B (zh) 一种i2c总线控制系统及方法
US20070088874A1 (en) Offload engine as processor peripheral
CN109411007B (zh) 一种基于fpga的通用闪存测试系统
EP1820110B1 (en) Multimedia card interface method, computer program product and apparatus
JP2007251947A (ja) マルチマスタのチェーン接続された二線シリアルバス
CN108228520B (zh) 一种面向bmc的i2c控制器的快速传输方法
CN101937413B (zh) 一种i2c总线的通信方法
CN103488600A (zh) 通用从机同步串行接口电路
CN108280041B (zh) 一种内部集成电路主机的通信方法和装置
JP2008521080A5 (zh)
CN107643993B (zh) 总线转换接口、总线转换接口的工作方法和通信设备
KR20060130664A (ko) Pci 익스프레스 장치, pci 익스프레스 시스템 및정보 통신 방법
CN110781130A (zh) 一种片上系统
KR20210075878A (ko) I2c와의 하위 호환성을 촉진하는 i3c 허브
CN114996184B (zh) 兼容实现spi或i2c从机的接口模块及数据传输方法
CN102708079A (zh) 应用于微控制器的控制数据传输的方法及系统
KR20160147373A (ko) 광 신호를 이용한 sata 호스트 버스 어댑터 및 sata 저장소 연결 방법
CN104346310A (zh) 一种高性能i2c从机数据交换电路及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200518

Address after: 215100 No. 1 Guanpu Road, Guoxiang Street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: 450000 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant