CN108228520B - 一种面向bmc的i2c控制器的快速传输方法 - Google Patents
一种面向bmc的i2c控制器的快速传输方法 Download PDFInfo
- 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
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000013461 design Methods 0.000 claims abstract description 7
- 239000000872 buffer Substances 0.000 claims abstract description 4
- 238000004891 communication Methods 0.000 abstract description 5
- 230000006872 improvement Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus 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
技术领域
本发明涉及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设计。
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)
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)
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)
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不同带宽设备间通信的方法 |
-
2018
- 2018-01-10 CN CN201810023683.0A patent/CN108228520B/zh active Active
Patent Citations (2)
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)
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 |