CN114564427A - 一种ahb总线到i2c总线的总线桥、***及方法 - Google Patents

一种ahb总线到i2c总线的总线桥、***及方法 Download PDF

Info

Publication number
CN114564427A
CN114564427A CN202210199034.2A CN202210199034A CN114564427A CN 114564427 A CN114564427 A CN 114564427A CN 202210199034 A CN202210199034 A CN 202210199034A CN 114564427 A CN114564427 A CN 114564427A
Authority
CN
China
Prior art keywords
data
module
transmission
register
bus
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.)
Granted
Application number
CN202210199034.2A
Other languages
English (en)
Other versions
CN114564427B (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.)
Sichuan Chuang'an Microelectronics Co ltd
Original Assignee
Sichuan Chuang'an Microelectronics 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 Sichuan Chuang'an Microelectronics Co ltd filed Critical Sichuan Chuang'an Microelectronics Co ltd
Priority to CN202210199034.2A priority Critical patent/CN114564427B/zh
Publication of CN114564427A publication Critical patent/CN114564427A/zh
Application granted granted Critical
Publication of CN114564427B publication Critical patent/CN114564427B/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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

本发明公开了一种AHB总线到I2C总线的总线桥、***及方法,所述总线桥包括AHB从机模块、寄存器模块、数据缓存模块、安全配置模块、传输控制模块、I2C主机模块、异常检测模块和中断控制模块;将AHB总线协议通过总线桥映射成I2C总线协议。所述总线桥***包括AHB主机、AHB总线、总线桥、I2C总线和若干I2C从机,所述AHB主机通过AHB总线通信连接总线桥,所述总线桥通过I2C总线通信连接若干I2C从机。本发明基于需要用到各种复用IP的SoC芯片,通过本发明的总线桥处理跨总线协议的传输通信;实现了AHB的快速传输速率到I2C的低传输速率的过渡;本发明实现了I2C从机内部寄存器地址宽度配置功能。

Description

一种AHB总线到I2C总线的总线桥、***及方法
技术领域
本发明涉及总线技术领域,具体涉及一种AHB总线到I2C总线的总线桥、***及方法。
背景技术
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP(Intellectual Property)复用的设计方法,并在片上***(System-on-chip,SoC)设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题,为此,业界出现了很多片上总线标准。其中ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC***集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB***总线和APB***总线。在工业控制,消费类电子,数码视讯,通信设备等领域的SoC芯片,以AMBA总线架构的设计占据了很大的份额。I2C(Inter-Intergrated Circut)作为最常用的串行通信总线之一,超过100种不同的IC上实现并应用。各大半导体公司也推出了大量的带有I2C接口的器件,如RAM、EEPROM、Flash ROM、A/D、D/A转换、LED/LCD驱动、实时时钟等。
随着芯片复杂性/功能性/规模性的增加,越来越多的具有I2C总线接口的IP器件需要集成在AMBA架构的SoC芯片中。但是由于AMBA总线没有I2C总线接口,限制了在这些SoC中使用具有I2C总线接口的器件。为了使处理器通过AHB总线接口访问具有I2C接口的IP,该IP的接口需要修改成可兼容AHB总线协议的状态。这样的修改非常不利于IP的复用。
另外不同I2C从设备会根据自身特点设计不同的I2C传输格式,在这些I2C设备集成到同一***上时造成了极大的困难。
AHB总线是用于高性能、高时钟频率的***模块,而I2C总线是用于低时钟频率的***模块,简单的协议转换会造成AHB总线被长时间的占用。
发明内容
本发明所要解决的技术问题提供一种AHB总线到I2C总线的总线桥、***及方法,通过该总线桥主要实现AHB协议到I2C协议的转换,达到不同总线数据的有效传输和不同总线上控制信号的转发处理的目的。
另外,该总线桥兼容与具有不同的I2C传输格式的I2C设备间的通讯;根据连接到I2C总线的从机器件类型的不同,数据传输格式可配置(不同大小的I2C从机内部寄存器地址、单次传输数据的大小),提高了具有I2C接口的IP的可移植性和可复用性。再者,该总线桥具有安全配置功能,可以对特定从机的存储单元中的重要数据(核心代码/重要参数/标记用户身份的数据)进行安全保护。还有,该总线桥***中,AHB主机在将需向I2C从机器件的命令传输完成后即可得到释放,避免低速的I2C总线过长时间占用高速AHB总线的问题,从而减轻AHB主机的负担,提高了AHB主机的工作效率。
本发明通过下述技术方案实现:
第一方面,本发明提供了一种AHB总线到I2C总线的总线桥,将AHB总线协议通过该总线桥映射成I2C总线协议;所述总线桥作为I2C总线的主机,同时作为AHB高级***总线的一个从机;通过AHB总线接收来自AHB主机的传输指令,对传输指令进行解析,转换成符合I2C协议的传输指令,通过I2C总线发出I2C传输指令与I2C从机进行通讯。对于写传输指令,总线桥在接收到来自AHB主机的目标地址、传输数据与必要控制信息后通过I2C总线将数据发送给对应I2C从机。对于读传输指令,总线桥在接收到来自AHB主机的目标地址与必要控制信息后通过I2C总线从对应I2C从机读取数据并进行缓存,完成I2C传输后,通知AHB主机读取缓存的读数据。
所述总线桥的结构:所述总线桥包括AHB从机模块、寄存器模块、数据缓存模块、传输控制模块和I2C主机模块;
所述AHB从机模块,用于作为AHB总线的接口,接收来自AHB总线主机的访问请求,通过AHB总线实现对总线桥内部寄存器模块的读写访问,实现寄存器模块与AHB总线的数据信息交换;及用于在写传输时将数据存入数据缓存模块,在读传输完成时将读数据从数据缓存模块中读出;
所述寄存器模块,是寄存器的集群,用于存储AHB总线到I2C总线的传输指令,所述传输指令包括传输的目标地址、必要控制信息和总线桥状态;
所述数据缓存模块,用于在读写工作状态时,对传输数据进行临时存储,包括来自AHB主机存入的写传输数据和从I2C从机接收的读传输数据;
所述传输控制模块,用于提取寄存器模块存储的传输指令,对传输指令进行解析,实现传输指令的触发标志判断功能;及实现从寄存器模块到I2C主机模块的地址转发、从数据缓存模块到I2C主机模块的写数据转发和从I2C主机模块到数据缓存模块的读数据转发功能;及实现到寄存器模块的状态反馈功能;及实现从寄存器模块到I2C主机模块的地址宽度配置功能;
所述I2C主机模块,用于根据从传输控制模块传输的传输指令控制SCL线/SDA线产生I2C传输。
进一步地,所述传输控制模块,用于实现从寄存器模块到I2C主机模块的地址转发功能,包括:
根据I2C主机模块发出数据转发请求,将I2C从机地址、I2C从机内部寄存器地址从寄存器模块取出,并通过写数据通道发送给I2C主机模块;
所述传输控制模块,用于从数据缓存模块到I2C主机模块的写数据转发功能;包括:
根据I2C主机模块发出写数据转发请求,将写数据从数据缓存模块中取出,通过写数据通道发给I2C主机模块;
所述传输控制模块,用于从I2C主机模块到数据缓存模块的读数据转发功能;包括:
根据I2C主机模块发出读数据转发请求,从读数据通道获取读数据,将读数据存入数据缓存模块。
进一步地,为了能够对应不同类型的I2C从机器件,增加了数据传输格式的可配置(不同大小的I2C从机内部寄存器地址、连续传输大小),兼容基于I2C总线的不同格式的***通讯。所述传输控制模块实现从寄存器模块到I2C主机模块的地址宽度配置功能,使所述总线桥支持地址宽度1~7字节范围的设定,得以适应不同类型的I2C从机。
寄存器模块的CR1寄存器负责协调I2C传输时地址宽度;针对不同的I2C从机,AHB主机对CR1寄存器的参数进行配置,传输控制模块根据CR1寄存器(3bit)的值,从CR4寄存器获取对应宽度(1~7)字节的I2C从机内部寄存器地址。
所述传输控制模块实现从寄存器模块到I2C主机模块的地址宽度配置功能,具体实现过程包括:
等待I2C主机模块的数据转发请求;
根据I2C主机模块的数据转发请求,从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;
从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致,则表示寄存器地址发送完成,并进入下一步根据CR3寄存器的值判断传输方向;否则进入等待I2C主机模块的数据转发请求,继续发送剩余的I2C从机内部寄存器地址。
进一步地,考虑到SoC设计中安全性的需求,本发明的总线桥具有安全配置功能,可以对特定从机的存储单元中的重要数据(核心代码/重要参数/标记用户身份的数据)进行安全保护。
所述总线桥还包括安全配置模块;所述安全配置模块,用于识别对设定I2C从机或I2C从机内部设定地址的传输并通知传输控制模块,实现对(核心代码/重要参数/标记用户身份的数据)的安全保护。
进一步地,所述安全配置模块的安全保护机制包括全局保护单元和局部保护单元;
所述全局保护单元,用于保护整个I2C从机,需要保护的I2C从机地址预存在全局保护单元内部;
所述局部保护单元,用于保护I2C从机内部设定存储单元,需要保护的I2C从机地址和对应的寄存器地址预存在局部保护单元内部。
进一步地,所述安全配置模块通过传输使能信号将传输许可状态/传输禁止状态给传输控制模块,所述传输使能信号包括1:传输许可和0:传输禁止两种状态,具体的传输许可和传输禁止的判断方式为:
从寄存器模块获取传输对象的I2C从机地址与寄存器地址;
进行全局保护单元的许可判断,即将从寄存器模块获取传输对象的I2C从机地址与预存在全局保护单元的从机地址比较,判断是否一致;如果一致,则传输禁止;如果不一致,则进入局部保护单元的许可判断,即将从寄存器模块获取传输对象的I2C从机地址与预存在局部保护单元的从机地址比较,判断是否一致;如果不一致,则传输许可;如果一致,则继续判断从寄存器模块获取传输对象的寄存器地址是否在保护范围内,即与预存在局部保护单元的对应的寄存器地址比较,判断是否一致;如果一致,则传输禁止,否则视为传输许可。
进一步地,所述总线桥还包括异常检测模块、中断控制模块;
所述异常检测模块,用于对I2C主机模块的动作进行检测,并将检测结果发送给中断控制模块进行处理;
所述中断控制模块,用于根据传输控制模块的传输完成状态、传输禁止状态以及异常检测模块的检测结果,控制中断信号的产生。
进一步地,所述I2C主机模块包括一个SCL生成逻辑、SDA生成逻辑和状态机;
所述SCL生成逻辑和SDA生成逻辑根据来自传输控制模块的数据生成符合I2C协议的SCL/SDA总线;
所述状态机控制数据转发请求生成和传输状态、起始条件、重复起始条件、停止条件、ACK/NACK返回给异常检测模块。
进一步地,所述数据缓存模块包括控制单元和数据存储单元;
所述控制单元,用于接收来自传输控制模块和AHB从机模块的控制信号和数据信号,其中,控制信号作为控制数据存储单元读出或者写入的使能信号;数据信号作为数据传输的通道,用于传输写入或者读出的数据;
所述数据存储单元,用于由可读可写的寄存器单元构成,组装成8bit(width)×255(depth)的存储单元;在写传输时存储来自AHB总线设置的写数据、在读传输时存储来自传输控制模块的读数据;
在AHB主机向I2C从机写数据时,将来自AHB主机的写数据存入所述数据存储单元中,在传输控制模块的控制下,依次读出AHB主机写入的数据;在AHB主机从I2C从机读数据时,将I2C主机模块读回的数据存入所述数据存储单元;存入完成之后,供AHB主机从数据缓存模块中读出来自I2C从机的数据到AHB总线上。
第二方面,本发明又提供了一种AHB总线到I2C总线的总线桥***,所述总线桥***包括AHB主机、AHB总线、总线桥、I2C总线和若干I2C从机,所述AHB主机通过AHB总线通信连接总线桥,所述总线桥通过I2C总线通信连接若干I2C从机;
其中,所述总线桥采用所述的一种AHB总线到I2C总线的总线桥。
第三方面,本发明又提供了一种AHB总线到I2C总线的总线桥控制方法,该控制方法应用于所述的一种AHB总线到I2C总线的总线桥,该控制方法包括:
步骤A,获取AHB主机对I2C从机内部寄存器的写数据转发请求,并等待AHB主机设置完成;
步骤B,进行数据传输开始信号使能,从CR0寄存器取出从机地址,末尾拼接上传输方向W,构成一个字节的数据(即从机地址7bit+写1bit),通过写数据通道发送给I2C主机模块;
步骤C,等待I2C主机模块的数据转发请求,若存在数据转发请求,则从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;若不存在数据转发请求,则一直等待I2C主机模块的数据转发请求;
步骤D,进行寄存器地址是否发送完的判断,若寄存器地址发送完,则根据CR3寄存器的值判断传输方向,如果是写传输则进入步骤E;如果不是写传输则执行数据读转发请求;若寄存器地址没发送完,则等待I2C主机模块的数据转发请求,继续发送剩余的I2C从机内部寄存器地址;
步骤E,等待I2C主机模块的数据转发请求,若存在数据转发请求,则从数据缓存模块取出一个字节的数据,通过写数据通道发送给I2C主机模块,写数据已写字节计数器加1;若不存在数据转发请求,则一直等待I2C主机模块的数据转发请求;
步骤F,进行数据是否发送完成的判断,若数据发送完,则等待I2C主机模块的数据转发请求;若数据未发送完,则等待I2C主机模块的数据转发请求继续发送剩余的写数据;
步骤G,进行数据传输结束信号使能,结束。
进一步地,所述的执行数据读转发请求,具体包括:
步骤H,进行数据传输开始信号使能,从CR0寄存器取出从机地址,末尾拼接上传输方向R,构成一个字节的数据(即从机地址7bit+读1bit),通过写数据通道发送给I2C主机模块;
步骤I,等待I2C主机模块的数据转发请求,读数据接收字节计数器初始化为1;
步骤J,若存在数据转发请求,则从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,判断是否一致,如果一致则将写数据通道驱动为1,通知I2C主机在下个响应脉冲期间产生NACK,否则将写数据通道驱动为0,通知I2C主机在下个响应脉冲期间产生ACK;若不存在数据转发请求,一直等待I2C主机模块的数据转发请求;
步骤K,等待I2C主机模块的数据转发请求,从读数据通道接收读数据,将读数据存入数据缓存模块,读数据接收字节计数器加1;
步骤L,从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,如果计数器的值减去1与CR2寄存器的值相等,则表示读数据传输完成并进入步骤H,否则进入步骤J。
进一步地,步骤D中进行寄存器地址是否发送完的判断依据是:从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致则表示寄存器地址发送完成;否则表示寄存器地址没有发送完成;
步骤F中进行数据是否发送完成的判断依据是:从CR2寄存器获取表示传输大小的值,与写数据已写字节计数器的值进行比较,如果一致则表示数据发送完成;否则表示数据没有发送完成。
本发明与现有技术相比,具有如下的优点和有益效果:
1、本发明基于需要用到各种复用IP的SoC芯片,通过本发明的总线桥处理跨总线协议的传输通信;实现了AHB的快速传输速率到I2C的低传输速率的过渡。
2、本发明对AHB连续传输可以进行缓存,最大支持255Byte数据的连续读传输或连续写传输;
3、本发明降低传输后续时序的要求,避免频繁的总线操作,减轻AHB主机的负担;
4、本发明AHB主机不用长期占用总线等待I2C从机反馈,提高AHB主机的工作效率;
5、本发明具有安全配置功能,可对核心数据的保护,提升***间安全性;
6、本发明实现了I2C从机内部寄存器地址宽度配置以及连续传输大小配置,即I2C传输格式可配置,具有高兼容性,可与不同的基于I2C总线的不同格式的I2C设备进行通讯。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为本发明一种AHB总线到I2C总线的总线桥结构示意图;
图2为本发明AHB从机模块的连接示意图;
图3为本发明数据缓存模块结构构成示意图;
图4为本发明安全配置模块安全配置模块工作流程图;
图5为本发明计数器计数流程图;
图6为本发明比较器比较流程图;
图7为本发明I2C主机模块结构框图;
图8为本发明I2C读写传输时序图;
图9为本发明总线桥的工作流程图;
图10为本发明AHB主机对I2C从机内部寄存器的读WRITE/写READ流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1
如图1至图8所示,本发明一种AHB总线到I2C总线的总线桥,将AHB总线协议通过该总线桥映射成I2C总线协议;所述总线桥作为I2C总线的主机,同时作为AHB高级***总线的一个从机;通过AHB总线接收来自AHB主机的传输指令,对传输指令进行解析,转换成符合I2C协议的传输指令,通过I2C总线发出I2C传输指令与I2C从机进行通讯。对于写传输指令,总线桥在接收到来自AHB主机的目标地址、传输数据与必要控制信息后通过I2C总线将数据发送给对应I2C从机。对于读传输指令,总线桥在接收到来自AHB主机的目标地址与必要控制信息后通过I2C总线从对应I2C从机读取数据并进行缓存,完成I2C传输后,通知AHB主机读取缓存的读数据。
本发明总线桥还具有安全配置功能,可以对特定从机的存储单元中的重要数据(核心代码/重要参数/标记用户身份的数据)进行安全保护。
同时为了能够对应不同类型的I2C从机器件,增加了数据传输格式的可配置(不同大小的I2C从机内部寄存器地址、连续传输大小),兼容基于I2C总线的不同格式的***通讯。
如图1所示,所述总线桥的结构为:所述总线桥包括AHB从机模块、寄存器模块、数据缓存模块、安全配置模块、传输控制模块、I2C主机模块、异常检测模块和中断控制模块。
所述AHB从机模块,用于作为AHB总线的接口,接收来自AHB总线主机的访问请求,通过AHB总线实现对总线桥内部寄存器模块的读写访问,实现寄存器模块与AHB总线的数据信息交换;及用于在写传输时将数据存入数据缓存模块,在读传输完成时将读数据从数据缓存模块中读出;
所述寄存器模块,是寄存器的集群,用于存储AHB总线到I2C总线的传输指令,所述传输指令包括传输的目标地址、必要控制信息和总线桥状态;
所述数据缓存模块,用于在读写工作状态时,对传输数据进行临时存储,包括来自AHB主机存入的写传输数据和从I2C从机接收的读传输数据;
所述安全配置模块,用于识别对特定I2C从机或I2C从机内部特定地址的传输并通知传输控制模块,实现对传输数据(核心代码/重要参数/标记用户身份的数据)进行安全保护。
所述传输控制模块,用于提取寄存器模块存储的传输指令,对传输指令进行解析,实现传输指令的触发标志判断功能;及实现从寄存器模块到I2C主机模块的地址转发、从数据缓存模块到I2C主机模块的写数据转发和从I2C主机模块到数据缓存模块的读数据转发功能;及实现到寄存器模块的状态反馈功能;及实现从寄存器模块到I2C主机模块的地址宽度配置功能;具体地:
所述传输控制模块,用于提取寄存器模块存储的传输指令,对传输指令进行解析,将I2C起始条件、重复起始条件、结束条件的触发标志发送给I2C主机模块;及根据I2C主机模块发来的数据转发请求,在写传输时将I2C传输需要的从机地址、I2C从机内部寄存器地址等从寄存器模块、写数据从数据缓存模块中取出并通过写数据通道发送给I2C主机模块进行处理、在读数据时将读数据通道收到的读传输数据缓存到数据缓存模块,传输完成之后将传输完成状态发送给中断控制模块进行处理;及接收来自安全配置模块的传输使能信号(高:传输许可,低:传输禁止),如果指示传输许可,则让I2C主机模块进入工作状态;如果指示传输禁止,则不让I2C主机模块进入工作状态,直接结束当次AHB到I2C协议转换。并将传输完成状态发送给中断控制模块进行处理。
所述I2C主机模块,用于根据从传输控制模块传输的传输指令控制SCL线/SDA线产生I2C传输。具体地:
所述I2C主机模块,用于根据来自传输控制模块的I2C起始条件、重复起始条件、结束条件的触发标志、从机地址、I2C从机内部寄存器地址或数据等信息控制SCL/SDA线产生I2C传输。在I2C读传输期间将读数据驱动到读数据通道。将传输状态(忙/空闲)返回给寄存器模块和异常检测模块。将起始条件、重复起始条件、停止条件、ACK/NACK返回给异常检测模块。
所述异常检测模块,用于对I2C主机模块的动作进行检测,并将检测结果发送给中断控制模块进行处理;
所述中断控制模块,用于根据传输控制模块的传输完成状态、传输禁止状态以及异常检测模块的检测结果,控制中断信号的产生。
总线桥中的各个模块的工作原理,如下:
1、AHB从机模块
AHB从机模块作为AHB总线的接口,接收来自AHB总线的地址和数据信息等,与寄存器模块之间可以进行信息传输,驱动对应的寄存器的读写控制信号,实现对寄存器的读写操作。也可以在写传输时将数据存入数据缓存模块,在读传输完成时将读数据从数据缓存模块中读出。如图2所示,图2为AHB从机模块的连接示意图。
2、寄存器模块
以下表1中列举了寄存器模块中包含的部分寄存器。
表1寄存器列表
寄存器名 位宽 说明
CR0 7 I2C从机地址设定
CR1 3 I2C从机内部寄存器地址宽度(3’b000~2‘b111:0个字节~7个字节)
CR2 8 连续传输大小的设定(8’h00~8’hff:0个字节~255字节)
CR3 1 传输方向设定(1’b0:写传输;1‘b1:读传输)
CR4 32 I2C从机内部寄存器地址
CR5 3 中断清零
CR6 3 中断屏蔽
CR7 1 AHB设置完成寄存器(AHB主机发送指令和数据完毕)
DR0 n Timeout比较寄存器(阈值设定)
SR0(只读) 1 I2C总线的状态(高:忙;低:空闲)
SR1(只读) 1 传输异常状态(高:ERROR;低:OK)
SR2(只读) 1 传输完成状态(高:完成;低:未完成)
SR3(只读) 2 异常标志寄存器(指示发生了哪种异常)
3、数据缓存模块
如图3所示,图3为数据缓存模块结构构成示意图;所述数据缓存模块包括控制单元和数据存储单元;
所述控制单元,用于接收来自传输控制模块和AHB从机模块的控制信号和数据信号,其中,控制信号作为控制数据存储单元读出或者写入的使能信号;数据信号作为数据传输的通道,用于传输写入或者读出的数据;
所述数据存储单元,用于由可读可写的寄存器单元构成,组装成8bit(width)×255(depth)的存储单元;在写传输时存储来自AHB总线设置的写数据、在读传输时存储来自传输控制模块的读数据;
数据缓存模块的主要功能:
在AHB主机向I2C从机写数据时,将来自AHB主机的写数据存入所述数据存储单元中,在传输控制模块的控制下,依次读出AHB主机写入的数据;在AHB主机从I2C从机读数据时,将I2C主机模块读回的数据存入所述数据存储单元;存入完成之后,供AHB主机从数据缓存模块中读出来自I2C从机的数据到AHB总线上。
4、安全配置模块
本发明考虑到SoC设计中安全性的需求,本发明的总线桥具有安全配置功能,可以对特定从机的存储单元中的重要数据(核心代码/重要参数/标记用户身份的数据)进行安全保护。因此,本发明设计了安全配置模块。
所述安全配置模块的安全保护机制包括全局保护单元和局部保护单元;
所述全局保护单元,用于保护整个I2C从机,需要保护的I2C从机地址预存在全局保护单元内部;
所述局部保护单元,用于保护I2C从机内部一些特定存储单元,需要保护的I2C从机地址和对应的寄存器地址预存在局部保护单元内部。
为了对数据(核心代码/重要参数/标记用户身份的数据)进行安全保护。这里需要强调的是,跟数据掩码(DQM)技术有所不同,数据掩码:读取时,被屏蔽的数据仍然会从存储体传出,只是在控制I/O端口处屏蔽。而本发明所述安全配置模块节约了部分时间以及减少了电量消耗。
所述安全配置模块通过传输使能信号(1:传输许可和0:传输禁止)将传输许可状态/传输禁止状态给传输控制模块;如图4所示,具体的传输许可和传输禁止的判断方式为:
从寄存器模块获取传输对象的I2C从机地址与寄存器地址;
首先进行全局保护单元的许可判断,即将从寄存器模块获取传输对象的I2C从机地址与预存在全局保护单元的从机地址比较,判断是否一致;如果一致,则传输禁止;如果不一致,则进入局部保护单元的许可判断,即将从寄存器模块获取传输对象的I2C从机地址与预存在局部保护单元的从机地址比较,判断是否一致;如果不一致,则传输许可;如果一致,则继续判断从寄存器模块获取传输对象的寄存器地址是否在保护范围内,即与预存在局部保护单元的对应的寄存器地址比较,判断是否一致;如果一致,则传输禁止,否则视为传输许可。
5、异常检测模块
所述异常检测模块可以对应的异常包括:
①I2C从机长时间未响应的Timeout异常,此异常会造成I2C主机模块发起传输后,长时间内得不到响应。
②访问不存在的I2C从机时的访问异常,此异常会造成I2C主机发起slave地址后,得不到响应。
针对第①点异常,本发明提供的一种具体实施方案如下:
在异常检测模块中,设计一个计时计数器Timer counter。计数流程如图5所示。
当I2C主机在进行I2C传输时,该计数器进行计数,当I2C主机未进行I2C传输时,该计数器停止计数。
为了获取I2C主机是否在进行I2C传输,需要I2C主机模块传入一个I2C是否在传输过程的标志信号比如busy信号。
该计时计数器在I2C传输发起:起始条件,重复起始条件,响应脉冲,停止条件时进行复位。
并在寄存器模块中设计一个Timeout比较寄存器,此Timeout比较寄存器可以通过AHB主机进行配置。比较寄存器工作流程如图6所示。
比较计时计数器和Timeout比较寄存器的大小,当计时计数器的值大于Timeout比较寄存器的值时,说明I2C在传输过程中长时间未获得响应,此时产生timeout标志信号。
将该timeout标志信号输出给传输控制模块,可以让传输控制模块发起数据传输停止信号,中止当前I2C的传输。
并将该timeout标志信号传输给中断控制模块,使之能够通知AHB主机知道当前传输未完成。
针对第②点异常,本发明提供的一种具体实施方案如下:
在异常检测模块中,根据I2C主机模块发起I2C传输开始/重新开始信号后,检测地址响应位是否有从机响应(第9个SCL拉高期间),如果没有任何从机响应,那么产生访问异常标志信号。
将该访问异常标志信号反馈给传输控制模块,让传输控制模块发起停止信号,中止当前传输。
并将该访问异常标志信号传输给中断控制模块,使之能够通知AHB主机知道当前传输未完成。针对①②异常可以在寄存器模块中设计一个异常标志寄存器、用于指示是否发生异常,发生了何种异常。
6、中断控制模块
针对中断控制模块,本发明提供的一种具体实施方案如下:
将异常检测模块输入的异常标志信号,传输控制模块输入的传输完成信号进行汇总,产生一个统一的中断信号,输出给AHB主机。
并在寄存器模块中设计一个中断清除寄存器,用于中断信号的清除。设计一个中断屏蔽寄存器,用于中断信号的屏蔽。
在中断控制模块中根据中断清除寄存器的值控制中断信号的清除。例如AHB主机在已经接收了该中断以后,可以配置该寄存器用于清除中断。
在中断控制模块中根据中断屏蔽寄存器的值控制中断信号的屏蔽。例如当在***中不想使用中断时,可以配置该寄存器用于屏蔽中断。
7、I2C主机模块
如图7所示,所述I2C主机模块包括一个SCL生成逻辑、SDA生成逻辑和状态机;
所述SCL生成逻辑和SDA生成逻辑根据来自传输控制模块的数据生成符合I2C协议的SCL/SDA总线;
所述状态机控制数据转发请求生成和传输状态、起始条件、重复起始条件、停止条件、ACK/NACK返回给异常检测模块。
如图8所示,图8是总线桥作为主机时发送模式(WRITE)和接收模式(READ)的时序图,可以发现数据之间的衔接都是通过数据转发请求。根据传输控制模块发送的数据传输开始和数据传输结束信号,控制SCL/SDA产生起始条件和停止条件。在响应脉冲期间(ACK/NACK)给出数据转发请求,将数据转发请求发送给传输控制模块,请求做好数据转发的准备。数据转发请求发送后,根据传输控制模块驱动到写数据通道的数据,把数据通过SDA发送出去。在读传输过程中,I2C主机模块在响应脉冲期间根据写数据通道的值产生响应或不响应。当写数据通道的值为0时,表示还需要接收下一个数据字节,产生ACK(响应);当写数据通道的值为1时,表示所有的数据字节接收完毕,产生NACK(不响应),向从机发送器通知数据结束。根据起始条件和停止条件确认I2C总线的传输状态,将传输状态发送给寄存器模块和异常检测模块。
8、传输控制模块
传输控制模块主要功能如下:
(1)触发标志判断(传输控制模块→I2C主机模块)
给出数据传输开始信号和数据传输结束信号。
(2)地址转发(寄存器模块→传输控制模块→I2C主机模块)
I2C主机模块发出数据转发请求,根据数据请求将I2C从机地址、I2C从机内部寄存器地址从寄存器取出,通过【写数据通道】发送给I2C主机模块
(3)写数据转发(数据缓存模块→传输控制模块→I2C主机模块)
I2C主机模块发出数据转发请求,根据数据转发请求将写数据从数据缓存模块中取出,通过【写数据通道】发给I2C主机模块。
(4)读数据转发(I2C主机模块→传输控制模块→数据缓存模块)
I2C主机模块发出数据转发请求,根据数据转发请求从【读数据通道】获取读数据,将读数据存入数据缓存模块。
(5)状态反馈(传输控制模块→寄存器模块)
当读数据全部缓存到数据缓存模块,将此状态反馈给寄存器模块的状态寄存器,并作为信息发送给中断控制模块,标志着AHB主机可以开始从数据缓存模块获取读数据。
(6)异常对应(异常检测模块→传输控制模块→I2C主机模块)
当接收到异常检测模块的异常标志信号,直接将数据传输结束信号使能,使I2C主机模块产生I2C停止条件,中止当前传输。
(7)安全保护处理(异常检测模块→传输控制模块→I2C主机模块)
接收安全配置模块的传输使能信号(该信号的生成参考图4),当该使能信号为高时(传输许可),正常进行AHB到I2C协议转换;当该使能信号为低时(传输禁止),数据传输开始信号不被使能,不使I2C主机模块进入工作状态,此时I2C总线状态寄存器保持为空闲状态,直接结束当次AHB到I2C协议转换,同时将传输完成状态输入到中断控制模块进行处理。通知AHB主机传输完成,如果是读传输的情况,读数据返回零值。
(8)I2C从机内部寄存器地址宽度配置功能(寄存器模块→传输控制模块→I2C主机模块)
该功能是传输控制模块的主要设计点,这是为了能够对应不同类型的I2C从机器件,增加了数据传输格式的可配置(不同大小的I2C从机内部寄存器地址、连续传输大小),兼容基于I2C总线的不同格式的***通讯。所述传输控制模块实现从寄存器模块到I2C主机模块的地址宽度配置功能,使所述总线桥支持地址宽度1~7字节范围的设定,用以适应不同类型的I2C从机,且数据传输格式可配置。
I2C从机内部寄存器的地址宽度视器件类型的不同而变化。例如EEPROM存储器(AT24C04)的内部地址宽度是一个字节,EEPROM存储器(AT24C64)的内部地址宽度是两个字节。具体是多少个字节,与器件的存储单元数量有关,该地址段可以为一个字节、二个字节长度等。有鉴于此,本发明的总线桥支持地址宽度(1~7字节范围)的设定,用以适应不同的I2C从机。寄存器模块的CR1寄存器负责协调I2C传输时地址宽度。针对不同的I2C从机,AHB主机对CR1寄存器的参数进行配置,传输控制模块根据CR1寄存器(3bit)的值,从CR4寄存器获取对应宽度(1~7)字节的I2C从机内部寄存器地址。
所述传输控制模块实现从寄存器模块到I2C主机模块的地址宽度配置功能,包括:
等待I2C主机模块的数据转发请求;
根据I2C主机模块的数据转发请求,从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;
从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致,则表示寄存器地址发送完成并根据CR3寄存器的值判断传输方向;否则进入等待I2C主机模块的数据转发请求,继续发送剩余的I2C从机内部寄存器地址。
(9)传输大小配置(寄存器模块→传输控制模块→I2C主机模块)
为了提高传输效率,对于AHB主机对I2C从机的连续地址访问,本发明的总线桥支持单次I2C传输数据大小(1-255字节)的设定,用以适应更多的应用场景。寄存器模块的CR2寄存器负责协调I2C传输的数据大小。AHB主机对CR2寄存器的参数进行配置,传输控制模块根据寄存器CR2(8bit)的值,如果是写传输,将写数据连续写入I2C从机的内部寄存器,如果是读传输,从I2C从机连续接收读数据,传输的数据等于CR2寄存器设定的大小时,结束I2C读写传输。写传输参看实施3的控制流程步骤9-13,读传输参看实施例3的控制流程步骤17-21。
随着越来越多的IP集成到SoC设计中,单独的AHB总线已经不能满足通信需求。基于需要用到各种复用IP的SoC芯片,通过本发明的总线桥处理跨总线协议的传输通信;实现了AHB的快速传输速率到I2C的低传输速率的过渡。
1、对AHB连续传输可以进行缓存,最大支持255Byte数据的连续读传输或连续写传输;
2、降低传输后续时序的要求,避免频繁的总线操作,减轻AHB主机的负担;
3、AHB主机不用长期占用总线等待I2C从机反馈,提高AHB主机的工作效率;
4、具有安全配置功能,可对核心数据的保护,提升***间安全性;
5、实现了I2C从机内部寄存器地址宽度配置以及连续传输大小配置,即I2C传输格式可配置,具有高兼容性,可与不同的基于I2C总线的不同格式的I2C设备进行通讯。
实施例2
如图1至图8所示,本实施例与实施例1的区别在于,本实施例提供了一种AHB总线到I2C总线的总线桥***,所述总线桥***包括AHB主机、AHB总线、总线桥、I2C总线和若干I2C从机,所述AHB主机通过AHB总线通信连接总线桥,所述总线桥通过I2C总线通信连接若干I2C从机;
其中,所述总线桥采用实施例1所述的一种AHB总线到I2C总线的总线桥。
实施例3
如图9、图10所示,本实施例与实施例1的区别在于,本实施例提供了一种AHB总线到I2C总线的总线桥控制方法,该控制方法应用于实施例1所述的一种AHB总线到I2C总线的总线桥,该控制方法包括:
步骤A,获取AHB主机对I2C从机内部寄存器的写数据转发请求,并等待AHB主机设置完成;
步骤B,进行数据传输开始信号使能,从CR0寄存器取出从机地址,末尾拼接上传输方向W,构成一个字节的数据(即从机地址7bit+写1bit),通过写数据通道发送给I2C主机模块;
步骤C,等待I2C主机模块的数据转发请求,若存在数据转发请求,则从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;若不存在数据转发请求,则一直等待I2C主机模块的数据转发请求;
步骤D,进行寄存器地址是否发送完的判断,若寄存器地址发送完,则根据CR3寄存器的值判断传输方向,如果是写传输则进入步骤E;如果不是写传输则执行数据读转发请求;若寄存器地址没发送完,则等待I2C主机模块的数据转发请求,继续发送剩余的I2C从机内部寄存器地址;其中,进行寄存器地址是否发送完的判断依据是:从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致则表示寄存器地址发送完成;否则表示寄存器地址没有发送完成;
步骤E,等待I2C主机模块的数据转发请求,若存在数据转发请求,则从数据缓存模块取出一个字节的数据,通过写数据通道发送给I2C主机模块,写数据已写字节计数器加1;若不存在数据转发请求,则一直等待I2C主机模块的数据转发请求;
步骤F,进行数据是否发送完成的判断,若数据发送完,则等待I2C主机模块的数据转发请求;若数据未发送完,则等待I2C主机模块的数据转发请求继续发送剩余的写数据;其中,进行数据是否发送完成的判断依据是:从CR2寄存器获取表示传输大小的值,与写数据已写字节计数器的值进行比较,如果一致则表示数据发送完成;否则表示数据没有发送完成;
步骤G,进行数据传输结束信号使能,结束。
具体地,所述的执行数据读转发请求,具体包括:
步骤H,进行数据传输开始信号使能,从CR0寄存器取出从机地址,末尾拼接上传输方向R,构成一个字节的数据(即从机地址7bit+读1bit),通过写数据通道发送给I2C主机模块;
步骤I,等待I2C主机模块的数据转发请求,读数据接收字节计数器初始化为1;
步骤J,若存在数据转发请求,则从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,判断是否一致,如果一致则将写数据通道驱动为1,通知I2C主机在下个响应脉冲期间产生NACK,否则将写数据通道驱动为0,通知I2C主机在下个响应脉冲期间产生ACK;若不存在数据转发请求,一直等待I2C主机模块的数据转发请求;
步骤K,等待I2C主机模块的数据转发请求,从读数据通道接收读数据,将读数据存入数据缓存模块,读数据接收字节计数器加1;
步骤L,从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,如果计数器的值减去1与CR2寄存器的值相等,则表示读数据传输完成并进入步骤H,否则进入步骤J。
具体实施时,本发明根据AHB主机对I2C从机内部寄存器的读WRITE/写READ流程,总线桥执行如下控制流程,如图9所示,图9为总线桥的工作流程图。具体控制流程步骤如下:
1.开始;
2.等待AHB主机设置完成;
3.数据传输开始信号使能;
4.从CR0寄存器取出从机地址,末尾拼接上传输方向(W),构成一个字节的数据,通过写数据通道发送给I2C主机模块;
5.等待I2C主机模块的数据转发请求;
6.从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;
7.从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致则表示寄存器地址发送完成并进入步骤8,否则进入步骤5继续发送剩余的I2C从机内部寄存器地址;
8.根据CR3寄存器的值判断传输方向,如果是写传输则进入步骤9,否则进入步骤15;
9.等待I2C主机模块的数据转发请求;
10.从数据缓存模块取出一个字节的数据,通过写数据通道发送给I2C主机模块,写数据已写字节计数器加1;
11.从CR2寄存器获取表示传输大小的值,与写数据已写字节计数器的值进行比较,如果一致则表示数据传输是否完成并进入步骤12,否则进入步骤9继续发送剩余的写数据;
12.等待I2C主机模块的数据转发请求;
13.数据传输结束信号使能;
14.结束;
15.数据传输开始信号使能;
16.从CR0寄存器取出从机地址,末尾拼接上传输方向(R),构成一个字节的数据,通过写数据通道发送给I2C主机模块;
17.等待I2C主机模块的数据转发请求,读数据接收字节计数器初始化为1;
18.从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,判断是否一致,如果一致则将写数据通道驱动为1,通知I2C主机在下个响应脉冲期间产生NACK,否则则将写数据通道驱动为0,通知I2C主机在下个响应脉冲期间产生ACK
19.等待I2C主机模块的数据转发请求;
20.从读数据通道接收读数据,将读数据存入数据缓存模块,读数据接收字节计数器加1;
21.从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,如果计数器的值减去1与CR2寄存器的值相等,则表示读数据传输完成并进入步骤13,否则进入步骤18。
如图10所示,图10为AHB主机对I2C从机内部寄存器的读WRITE/写READ流程图。
一个基本的来自于AHB主机的传输信息包括以下信息:
1)I2C从机地址
2)指向从机内部寄存器的子地址(索引)
3)传输方向(读/写)
4)从机内部寄存器的子地址(索引)位宽
针对从机内部寄存器的子地址位宽不同时,本总线桥支持宽度为1~7byte范围的设置,所以需要AHB主机在发送传输控制信息时包括一个表示从机内部寄存器的子地址(索引)位宽的信息。
5)传输大小
针对连续访问的数据字节不同时,本总线桥支持连续传输数据大小(1~255byte)的设置,所以需要AHB主机在发送传输控制信息时包括一个表示传输大小的信息。
6)写数据
情况1:【AHB主机对I2C从机内部寄存器的写WRITE】
1.开始;
2.AHB主机确认总线桥空闲;
3.将从机地址设定到CR0寄存器;
4.将传输方向设定到CR3寄存器;
5.将从机内部寄存器地址宽度设定到CR1寄存器;
6.将传输的I2C从机的内部寄存器地址设定到CR4寄存器;
7.将传输数据大小设定到CR2寄存器;
8.将要传输的写数据设定到数据缓存模块;
9.设定CR7寄存器,通知总线桥AHB主机设置完成;
10.结束。
情况2:【AHB主机对I2C从机内部寄存器的读READ】
1.开始;
2.AHB主机确认总线桥空闲;
3.将从机地址设定到CR0寄存器;
4.将传输方向设定到CR3寄存器;
5.将从机内部寄存器地址宽度设定到CR1寄存器;
6.将传输的I2C从机的内部寄存器地址设定到CR4寄存器;
7.将传输数据大小设定到CR2寄存器;
8.设定CR7寄存器,通知总线桥AHB主机设置完成;
9.中断产生,确认SR2寄存器传输完成,如果完成则进入步骤10,否则进行异常处理;
10.从数据缓存模块读出读数据;
11.结束。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种AHB总线到I2C总线的总线桥,其特征在于,所述总线桥包括AHB从机模块、寄存器模块、数据缓存模块、传输控制模块和I2C主机模块;将AHB总线协议通过总线桥映射成I2C总线协议;
AHB从机模块,用于接收AHB主机的访问请求,通过AHB总线实现对寄存器模块的读写访问,实现寄存器模块与AHB总线的数据信息交换功能;
寄存器模块,用于存储AHB总线到I2C总线的传输指令;
数据缓存模块,用于在读写工作状态时,对传输数据进行临时存储,包括来自AHB主机存入的写传输数据和从I2C从机接收的读传输数据;
传输控制模块,用于实现传输指令的触发标志判断功能;及实现从寄存器模块到I2C主机模块的地址转发、从数据缓存模块到I2C主机模块的写数据转发和从I2C主机模块到数据缓存模块的读数据转发功能;及实现到寄存器模块的状态反馈功能;及实现从寄存器模块到I2C主机模块的地址宽度配置功能;
I2C主机模块,用于根据从传输控制模块传输的信息控制SCL线/SDA线产生I2C传输。
2.根据权利要求1所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述传输控制模块,用于实现从寄存器模块到I2C主机模块的地址转发功能,包括:
根据I2C主机模块发出数据转发请求,将I2C从机地址、I2C从机内部寄存器地址从寄存器模块取出,并通过写数据通道发送给I2C主机模块;
所述传输控制模块,用于从数据缓存模块到I2C主机模块的写数据转发功能;包括:
根据I2C主机模块发出写数据转发请求,将写数据从数据缓存模块中取出,通过写数据通道发给I2C主机模块;
所述传输控制模块,用于从I2C主机模块到数据缓存模块的读数据转发功能;包括:
根据I2C主机模块发出读数据转发请求,从读数据通道获取读数据,将读数据存入数据缓存模块。
3.根据权利要求1或2所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述传输控制模块实现从寄存器模块到I2C主机模块的地址宽度配置功能,使所述总线桥支持地址宽度1~7字节范围的设定,用以适应不同类型的I2C从机,且数据传输格式可配置;所述传输控制模块实现从寄存器模块到I2C主机模块的地址宽度配置功能,包括:
等待I2C主机模块的数据转发请求;
根据I2C主机模块的数据转发请求,从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;
从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致,则表示寄存器地址发送完成并根据CR3寄存器的值判断传输方向;否则进入等待I2C主机模块的数据转发请求,继续发送剩余的I2C从机内部寄存器地址。
4.根据权利要求1所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述总线桥还包括安全配置模块;
所述安全配置模块,用于识别对设定I2C从机或I2C从机内部设定地址的传输并通知传输控制模块,实现对传输数据进行安全保护。
5.根据权利要求4所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述安全配置模块包括全局保护单元和局部保护单元;
所述全局保护单元,用于保护整个I2C从机,需要保护的I2C从机地址预存在全局保护单元内部;
所述局部保护单元,用于保护I2C从机内部设定存储单元,需要保护的I2C从机地址和对应的寄存器地址预存在局部保护单元内部。
6.根据权利要求5所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述安全配置模块通过传输使能信号将传输许可状态/传输禁止状态给传输控制模块,所述传输使能信号包括传输许可和传输禁止;具体的传输许可和传输禁止的判断方式为:
从寄存器模块获取传输对象的I2C从机地址与寄存器地址;
进行全局保护单元的许可判断,即将从寄存器模块获取传输对象的I2C从机地址与预存在全局保护单元的从机地址比较,判断是否一致;如果一致,则传输禁止;如果不一致,则进入局部保护单元的许可判断,即将从寄存器模块获取传输对象的I2C从机地址与预存在局部保护单元的从机地址比较,判断是否一致;如果不一致,则传输许可;如果一致,则继续判断从寄存器模块获取传输对象的寄存器地址是否在保护范围内,即与预存在局部保护单元的对应的寄存器地址比较,判断是否一致;如果一致,则传输禁止,否则视为传输许可。
7.根据权利要求1所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述总线桥还包括异常检测模块、中断控制模块;
所述异常检测模块,用于对I2C主机模块的动作进行检测,并将检测结果发送给中断控制模块进行处理;
所述中断控制模块,用于根据传输控制模块的传输完成状态、传输禁止状态以及异常检测模块的检测结果,控制中断信号的产生。
8.根据权利要求7所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述I2C主机模块包括SCL生成逻辑、SDA生成逻辑和状态机;
所述SCL生成逻辑和SDA生成逻辑根据来自传输控制模块的数据生成符合I2C协议的SCL/SDA总线;
所述状态机控制数据转发请求生成和传输状态、起始条件、重复起始条件、停止条件、ACK/NACK返回给异常检测模块。
9.根据权利要求1所述的一种AHB总线到I2C总线的总线桥,其特征在于,所述数据缓存模块包括控制单元和数据存储单元;
所述控制单元,用于接收来自传输控制模块和AHB从机模块的控制信号和数据信号,其中,控制信号作为控制数据存储单元读出或者写入的使能信号;数据信号作为数据传输的通道,用于传输写入或者读出的数据;
所述数据存储单元,用于由可读可写的寄存器单元构成,组装成8bit×255的存储单元;在写传输时存储来自AHB总线设置的写数据、在读传输时存储来自传输控制模块的读数据;
在AHB主机向I2C从机写数据时,将来自AHB主机的写数据存入所述数据存储单元中,在传输控制模块的控制下,依次读出AHB主机写入的数据;在AHB主机从I2C从机读数据时,将I2C主机模块读回的数据存入所述数据存储单元;存入完成之后,供AHB主机从数据缓存模块中读出来自I2C从机的数据到AHB总线上。
10.一种AHB总线到I2C总线的总线桥***,其特征在于,所述总线桥***包括AHB主机、AHB总线、总线桥、I2C总线和若干I2C从机,所述AHB主机通过AHB总线通信连接总线桥,所述总线桥通过I2C总线通信连接若干I2C从机;
其中,所述总线桥采用如权利要求1至9中任一所述的一种AHB总线到I2C总线的总线桥。
11.一种AHB总线到I2C总线的总线桥控制方法,其特征在于,该控制方法应用于如权利要求1至9中任一所述的一种AHB总线到I2C总线的总线桥,该控制方法包括:
步骤A,获取AHB主机对I2C从机内部寄存器的写数据转发请求,并等待AHB主机设置完成;
步骤B,进行数据传输开始信号使能,从CR0寄存器取出从机地址,末尾拼接上传输方向W,构成一个字节的数据,通过写数据通道发送给I2C主机模块;
步骤C,等待I2C主机模块的数据转发请求,若存在数据转发请求,则从CR4寄存器取出I2C从机内部寄存器地址,通过写数据通道发送给I2C主机模块,寄存器地址已写字节计数器加1;若不存在数据转发请求,则一直等待I2C主机模块的数据转发请求;
步骤D,进行寄存器地址是否发送完的判断,若寄存器地址发送完,则根据CR3寄存器的值判断传输方向,如果是写传输则进入步骤E;如果不是写传输则执行数据读转发请求;若寄存器地址没发送完,则等待I2C主机模块的数据转发请求,继续发送剩余的I2C从机内部寄存器地址;
步骤E,等待I2C主机模块的数据转发请求,若存在数据转发请求,则从数据缓存模块取出一个字节的数据,通过写数据通道发送给I2C主机模块,写数据已写字节计数器加1;若不存在数据转发请求,则一直等待I2C主机模块的数据转发请求;
步骤F,进行数据是否发送完成的判断,若数据发送完,则等待I2C主机模块的数据转发请求;若数据未发送完,则等待I2C主机模块的数据转发请求继续发送剩余的写数据;
步骤G,进行数据传输结束信号使能,结束。
12.根据权利要求11所述的一种AHB总线到I2C总线的总线桥控制方法,其特征在于,所述的执行数据读转发请求,包括:
步骤H,进行数据传输开始信号使能,从CR0寄存器取出从机地址,末尾拼接上传输方向R,构成一个字节的数据,通过写数据通道发送给I2C主机模块;
步骤I,等待I2C主机模块的数据转发请求,读数据接收字节计数器初始化为1;
步骤J,从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,判断是否一致,如果一致则将写数据通道驱动为1,通知I2C主机在下个响应脉冲期间产生NACK,否则将写数据通道驱动为0,通知I2C主机在下个响应脉冲期间产生ACK;
步骤K,等待I2C主机模块的数据转发请求,从读数据通道接收读数据,将读数据存入数据缓存模块,读数据接收字节计数器加1;
步骤L,从CR2寄存器获取表示传输大小的值,与读数据接收字节计数器的值进行比较,如果计数器的值减去1与CR2寄存器的值相等,则表示读数据传输完成并进入步骤H,否则进入步骤J。
13.根据权利要求11所述的一种AHB总线到I2C总线的总线桥控制方法,其特征在于,步骤D中进行寄存器地址是否发送完的判断依据是:从CR1寄存器取出表示地址宽度的值,与寄存器地址已写字节计数器的值进行比较,如果一致则表示寄存器地址发送完成;否则表示寄存器地址没有发送完成;
步骤F中进行数据是否发送完成的判断依据是:从CR2寄存器获取表示传输大小的值,与写数据已写字节计数器的值进行比较,如果一致则表示数据发送完成;否则表示数据没有发送完成。
CN202210199034.2A 2022-03-01 2022-03-01 一种ahb总线到i2c总线的总线桥、***及方法 Active CN114564427B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210199034.2A CN114564427B (zh) 2022-03-01 2022-03-01 一种ahb总线到i2c总线的总线桥、***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210199034.2A CN114564427B (zh) 2022-03-01 2022-03-01 一种ahb总线到i2c总线的总线桥、***及方法

Publications (2)

Publication Number Publication Date
CN114564427A true CN114564427A (zh) 2022-05-31
CN114564427B CN114564427B (zh) 2023-06-23

Family

ID=81715757

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210199034.2A Active CN114564427B (zh) 2022-03-01 2022-03-01 一种ahb总线到i2c总线的总线桥、***及方法

Country Status (1)

Country Link
CN (1) CN114564427B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114884770A (zh) * 2022-07-13 2022-08-09 南京观海微电子有限公司 一种基于***总线的多机通讯***及通讯方法
CN116049081A (zh) * 2022-12-30 2023-05-02 成都电科星拓科技有限公司 一种SMBus slave数字模块设计方法及装置
CN116049047A (zh) * 2022-12-30 2023-05-02 成都电科星拓科技有限公司 一种eeprom访问结构及访问方法
CN116225151A (zh) * 2023-05-10 2023-06-06 上海励驰半导体有限公司 一种基于时钟总线的数据处理***和方法
CN116561041A (zh) * 2023-07-12 2023-08-08 成都市芯璨科技有限公司 一种单总线通信***及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101089A1 (en) * 2005-11-01 2007-05-03 Lsi Logic Corporation Pseudo pipeline and pseudo pipelined SDRAM controller
CN102710890A (zh) * 2012-04-06 2012-10-03 东莞中山大学研究院 双ahb总线的视频处理片上***
CN106371954A (zh) * 2016-08-19 2017-02-01 浪潮(北京)电子信息产业有限公司 基于10位从机地址的i2c总线验证的方法及***
CN108933651A (zh) * 2017-05-27 2018-12-04 佛山芯珠微电子有限公司 基于soc的保密通信***及保密通信的方法
CN209640846U (zh) * 2019-03-28 2019-11-15 上海磐启微电子有限公司 一种串行总线转ahb总线的转换电路

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070101089A1 (en) * 2005-11-01 2007-05-03 Lsi Logic Corporation Pseudo pipeline and pseudo pipelined SDRAM controller
CN102710890A (zh) * 2012-04-06 2012-10-03 东莞中山大学研究院 双ahb总线的视频处理片上***
CN106371954A (zh) * 2016-08-19 2017-02-01 浪潮(北京)电子信息产业有限公司 基于10位从机地址的i2c总线验证的方法及***
CN108933651A (zh) * 2017-05-27 2018-12-04 佛山芯珠微电子有限公司 基于soc的保密通信***及保密通信的方法
CN209640846U (zh) * 2019-03-28 2019-11-15 上海磐启微电子有限公司 一种串行总线转ahb总线的转换电路

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王爱俊: "基于UVM的串行同步两线总线验证IP的研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, pages 135 - 284 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114884770A (zh) * 2022-07-13 2022-08-09 南京观海微电子有限公司 一种基于***总线的多机通讯***及通讯方法
CN116049081A (zh) * 2022-12-30 2023-05-02 成都电科星拓科技有限公司 一种SMBus slave数字模块设计方法及装置
CN116049047A (zh) * 2022-12-30 2023-05-02 成都电科星拓科技有限公司 一种eeprom访问结构及访问方法
CN116049047B (zh) * 2022-12-30 2024-04-12 成都电科星拓科技有限公司 一种eeprom访问方法
CN116049081B (zh) * 2022-12-30 2024-05-28 成都电科星拓科技有限公司 一种SMBus slave数字模块设计方法及装置
CN116225151A (zh) * 2023-05-10 2023-06-06 上海励驰半导体有限公司 一种基于时钟总线的数据处理***和方法
CN116561041A (zh) * 2023-07-12 2023-08-08 成都市芯璨科技有限公司 一种单总线通信***及方法
CN116561041B (zh) * 2023-07-12 2023-09-19 成都市芯璨科技有限公司 一种单总线通信***及方法

Also Published As

Publication number Publication date
CN114564427B (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
CN114564427B (zh) 一种ahb总线到i2c总线的总线桥、***及方法
EP1899832B1 (en) Software layer for communication between rs-232 to i2c translation ic and a host
CN108255776B (zh) 一种兼容apb总线的i3c主设备、主从***及通信方法
CN110851388B (zh) 针对risc-v处理器的调试***及调试信号传输方法
CN104901859A (zh) 一种axi/pcie总线转换装置
JP2010086524A (ja) 省電力機能を有するブリッジ装置
CN105573951A (zh) 一种针对数据流传输的ahb总线接口***
CN102073611B (zh) 一种i2c总线控制***及方法
CN103399830A (zh) 通过PCI Express总线读取计算机物理内存的设备及方法
EP2639703B1 (en) Device for booting soc chip and soc chip
US8074232B2 (en) Method for improving the communication of the human interface device
CN101369948A (zh) 一种实现低功耗的通信***
CN112565036B (zh) 数据传输方法、装置、存储介质及通信***
KR20060130664A (ko) Pci 익스프레스 장치, pci 익스프레스 시스템 및정보 통신 방법
CN116185936B (zh) 一种spi通信数据收发异常检测控制***及检测方法
CN108228520B (zh) 一种面向bmc的i2c控制器的快速传输方法
Li et al. UART Controller with FIFO Buffer Function Based on APB Bus
CN111858459A (zh) 处理器及计算机
JP2008502977A (ja) バス・コントローラのための割り込み方式
KR20070070680A (ko) 슬레이브의 디버깅 방법 및 시스템
CN114124609B (zh) 一种基于1553b总线的通信装置及通信方法
CN114385544A (zh) Uart芯片及fpga芯片
KR20070024600A (ko) 호스트 제어기 및 그 동작 방법
EP0702306A1 (en) System and method for interfacing risc busses to peripheral circuits using another template of busses in a data communication adapter
CN113534723B (zh) 一种用于重水堆控制***的通信传输装置

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
GR01 Patent grant
GR01 Patent grant