[发明专利]一种面向BMC的I2C控制器的快速传输方法有效
申请号: | 201810023683.0 | 申请日: | 2018-01-10 |
公开(公告)号: | CN108228520B | 公开(公告)日: | 2020-06-16 |
发明(设计)人: | 王朝辉;王霞;王振江 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F13/42 | 分类号: | G06F13/42 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 刘淑风 |
地址: | 215100 江苏省苏州*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 bmc i2c 控制器 快速 传输 方法 | ||
本发明提供一种面向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系统的整体性能。
技术领域
本发明涉及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位。
作为本发明进一步改进的,对于写命令数据端,状态机如下:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810023683.0/2.html,转载请声明来源钻瓜专利网。