掌桥专利:专业的专利平台
掌桥专利
首页

一种多芯架构的数据和资源共享方法

文献发布时间:2023-06-19 18:37:28


一种多芯架构的数据和资源共享方法

技术领域

本发明属于数据共享的技术领域,尤其涉及一种多芯架构的数据和资源共享方法。

背景技术

随着物联网和车联网的迅速发展,数据的处理量和算力的要求变得越来越高,微处理器处理的外设资源有时也会变得非常复杂。特别是在一些产品升级换代过程中,往往因为某些资源不够用,导致设计上推翻重来的囧境。

微控制器在嵌入式系统中扮演着核心角色,整个系统的控制逻辑,运算能力,数据吞吐率,实时响应等都和微控制器的资源和算力相关。目前微控制器的设计和定义,比不上应用处理器那么高的主频和丰富资源,因此实际应用中经常遇到所选用的微控制器资源不够用的情况,比如SRAM不够、IO数不够、某些外设口数量不够等等。而不同厂商设计的微控制器使用方式上不尽相同,包括处理器架构、寄存器定义、以及功能上都有很大的差异性,导致嵌入式开发者在跨平台、或者跨芯片系列开始时,往往需要重投来过,增加了很大工作量,同时也会带来项目的风险及不确定性。

发明内容

本发明的目的是提供一种多芯架构的数据和资源共享方法,解决在复杂的嵌入式系统中,因单颗微控制器的运算能力达不到应用需求,或者单颗微控制器的IO管脚数量、外设接口数量不够用,以及单颗微控制器的存储资源受限时,可让嵌入式开发者在相同平台下开发的系统,轻松扩展数据空间和资源,适应更复杂的应用场景。

为解决上述问题,本发明的技术方案为:

一种多芯架构的数据和资源共享方法,包括:

通过HXM模块实现不同芯片之间的数据共享:

在主芯片中配置主HXM模块,在从芯片中配置从HXM模块;

主芯片中的CPU及DMA通过主HXM模块直接访问从芯片中的SRAM及外设寄存器,实现主芯片的SRAM资源和外设资源的扩展;

从HXM模块默认处于空闲状态,当主HXM模块发起读写请求时,从HXM模块进入Cmd状态,接收主芯片的读写指令,判定当前操作是读操作还是写操作;从HXM模块转而进入地址检查状态,接收主芯片发起的地址,并与预存状态表中的地址区域进行权限匹配,若被访问区域处于非Lock_S状态,则从HXM模块进入Data状态,否则从HXM模块进入Hold状态;Data状态时,若是读操作,则通过总线进行数据准备和发送;若是写操作,则通过总线接收数据存放至目标区域;持续进行数据的接收和发送,直到主HXM模块撤销请求信号。

根据本发明一实施例,所述HXM模块包括寄存器模块、地址转换模块、权限管理模块、状态机模块、总线接口模块及通信接口模块;

所述寄存器模块用于定义HXM模块的功能及参数配置;

所述地址转换模块用于地址映射及片选控制;

所述权限管理模块用于数据共享区域的访问冲突处理;

所述状态机模块用于HXM模块的工作调度;

所述总线接口模块用于对芯片内的数据通信;

所述通信接口模块用于对外部芯片的数据通信。

根据本发明一实施例,所述地址转换模块包括Region区、SPI区及I2C区;

所述Region区用于存储主芯片访问从芯片的地址空间;

所述SPI区用于存储所述Region区的地址空间对应的SPI片选信号;

所述I2C区用于存储不同从芯片地址空间所对应的设备地址;

所述从芯片的地址、SPI片选信号及设备地址通过所述寄存器模块配置;

当主芯片通过总线接口模块向从芯片发起一次访问时,地址转换模块根据访问地址对Region区域的从芯片地址进行匹配,匹配成功后,相应的SPI片选信号被选中。

根据本发明一实施例,所述权限管理模块中预存状态表,所述状态表包括地址、长度、控制及访问权限字段;

其中,地址和长度表示权限管理区域的起始地址及长度;

所述访问权限包括正在被访问状态、未被访问状态,所述访问权限的转变受主芯片发起的Req信号控制,还受从芯片发起的Take信号控制。

根据本发明一实施例,所述访问权限的转变以状态机的形式实现,所述状态机包括Free、Lock_M、Lock_S三个状态;

若当前区域的访问权限为Free状态,当主芯片发起的Req请求被从芯片响应时,Free状态进入Lock_M状态,表示此时当前区域被主芯片锁定,同时Busy信号输出1表示处于忙状态;

当从芯片的处理器发起Take锁定请求时,Free状态进入Lock_S状态,表示此时当前区域被从芯片锁定,同时Status信号输出1表示处于忙状态;

其它情况下Free状态保持不变。

根据本发明一实施例,若当前区域的访问权限为Lock_M状态,此时主芯片的Req请求被撤销,当前区域从Lock_M状态进入Free状态;

若当前区域的访问权限为Lock_S状态,此时从芯片发起释放请求,当前区域从Lock_S状态进入Free状态。

根据本发明一实施例,从芯片支持一步锁和两步锁;

所述一步锁是指向指定寄存器发起读操作,硬件触发Take=1信号,同时Status信号返回Lock_S状态;

所述两步锁是指向Lock/Free寄存器写1操作,硬件触发Take=1信号,再向Lock/Free寄存器发起读操作,Status信号返回Lock_S状态。

根据本发明一实施例,当主芯片通过总线发起读写操作时,主HXM模块从空闲状态进入地址映射状态;若目标地址与预存地址中的区域匹配,则Req信号置1并进入Cmd状态,否则Req信号置0的同时返回空闲状态;

Cmd状态时,主HXM模块根据读写操作发起响应的读写指令,进行Addr状态;

Addr状态根据从芯片给出的Ack信号,切换主HXM模块进入Data状态或Hold状态;当从芯片的目标区域处于空闲状态,则主HXM模块进入Data状态;否则,主HXM模块进入Hold状态。

本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:

1)本发明一实施例中的多芯架构的数据和资源共享方法,通过HXM(HardwareeXternal Memory)硬件模块,来控制多个芯片之间的数据交互,采取存储器映射机制,将多颗微控制器的数据空间划分为对应区域,由1颗主控制器、多颗从控制器组成,并可通过地址总线直接访问的方式,提升访问效率,便于软件移植扩展;通过串行总线(比如SPI、I2C、UART等)将多颗微控制器进行互联,尤其是SPI总线的实现,配合HXM模块定义的Req和Ack信号,进行握手请求信号和响应信号,减少传统存储器并行总线庞大的地址和数据线占用过多的IO管脚资源。

2)本发明一实施例中的多芯架构的数据和资源共享方法,基于SPI总线的存储器访问协议,实现软件通过地址直接访问其它微控制器数据空间的方法,就如访问微控制器自身存储器或寄存器一样,达到了数据和资源共享和扩展的目的。

3)本发明一实施例中的多芯架构的数据和资源共享方法,HXM模块支持主从两种模式,可直接挂载到总线上,支持CPU和DMA访问,并且支持多方同时访问时的仲裁机制;不同微控制器之间的数据空间支持互斥锁功能,采用Lock_M和Lock_S硬件双锁的实现方式,支持硬件模块和总线访问莫斯,支持一步锁和两步锁,支持互斥锁状态变化的中断机制。

附图说明

图1为本发明一实施例中的多芯架构整体功能框图;

图2为本发明一实施例中的HXM模块逻辑框图;

图3为本发明一实施例中的地址转换模块示意图;

图4为本发明一实施例中的权限管理模块示意图;

图5为本发明一实施例中的权限管理模块状态机示意图;

图6为本发明一实施例中的HXM模块主模式状态机示意图;

图7为本发明一实施例中的HXM模块从模式状态机示意图。

具体实施方式

以下结合附图和具体实施例对本发明提出的一种多芯架构的数据和资源共享方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。

传统的多芯片应用场景中,多个芯片之间需要通过主从的通信接口进行互联,并口的访问效率高,但同时支持主从模式的芯片不多,且IO资源占用多,串口通信需要软件开销调度,导致访问效率和实时性偏低。多个芯片之间数据交互需要软件制定通信协议才能解析实际传输的有效数据,这样增加了系统设计的复杂度。在不同芯片间数据共享的场景,需要软件来调度解决同一块存储空间在不同时间、不同处理器访问时的冲突,影响系统的效率和实时响应能力。通常,多个芯片协同工作下的系统复杂度,要比单颗芯片高好几倍,因此系统的开发难度和稳定性也会受到影响。怎样使得多芯片的协同工作变得简洁、高效,成为越来越多嵌入式开发者思考的问题。

本实施例提供了一种多芯架构的数据和资源共享方法,实现在复杂的嵌入式系统中,因单颗微控制器的运算能力达不到应用需求,或者单颗微控制器的IO管脚数量、外设接口数量不够用,以及单颗微控制器的存储资源受限时,可让嵌入式开发者在相同平台下开发的系统,轻松扩展数据空间和资源,适应更复杂的应用场景。

具体的,如图1所示,本实施例在多芯架构中,主要通过HXM(Hardware eXternalMemory)硬件模块来实现不同芯片之间的数据共享,芯片IC1作为主系统芯片,芯片IC2为从系统芯片,同时还可以挂载多个IC3、IC4等从系统芯片。整个系统采用一主多从的架构,主系统芯片中的HXM模块配置为主模式,从系统芯片中的HXM模块配置为从模式。主系统芯片IC1的CPU1和DMA1可以通过HXM模块直接访问从系统芯片IC2中的SRAM2和外设寄存器,这样主系统芯片可以轻松扩展SRAM资源和外设资源。

如图2所示,HXM(Hardware eXternal Memory)硬件模块主要由寄存器模块(Register)、地址转换模块(Addr Mapping)、权限管理模块(Locker)、状态机模块(StateMachine)、总线接口模块(Bus Interface)和通信接口模块(SPI Interface)组成。寄存器模块定义HXM模块的主要功能配置,地址转换模块负责地址映射和片选控制,权限管理模块负责共享区域的访问冲突处理,状态机模块负责整个模块工作调度的控制,总线接口和通信接口分别是对内与对外的数据通信模块。

总线接口负责与CPU端的数据交互,主要按照处理器支持的总线来设计,比如说AMBA总线的AHB、APB、AXI等等。由于HXM模块直接挂载在CPU的总线上,因此支持CPU和DMA的访问模式,配合权限管理模块(图5会详细介绍),支持多方同时访问时的互锁和仲裁机制。通信接口模负责与外部芯片互联的接口,建议选择传输速率高、IO资源少的接口协议,比如本方案使用的是SPI,支持4线传输模式。对于其它常用的接口,比如UART、I2C等,也同样适用。

寄存器模块主要定义HXM的功能及参数配置,其它模块根据寄存器模块中配置的参数进行初始化和工作。寄存器模块主要包含的参数有地址映射区间,对应的片选信号,对应的设备地址,互锁的地址与长度,HXM模块的主从模式、启动、中断配置等等。

如图3所示,地址转换模块的示意图,每一行代表一个从芯片的地址映射关系。Region代表主芯片访问从芯片的地址空间;SPI表示Region区的地址空间对应的SPI片选信号,可支持CS[0]、CS[1]、…CS[m]总共m个外设从芯片;I2C表示当不采用SPI作为通信接口时,在I2C通信时,不同从芯片地址空间所对应的设备地址,该设备地址可配置。从芯片地址、片选信号、设备地址均可通过寄存器模块来进行配置。当主芯片端通过总线模块发起一次访问时,地址转换模块根据访问地址来对Region区域的从芯片地址进行匹配,匹配成功后,相应的SPI片选信号将被选中。通过将总线端发起的目标地址的读写访问,硬件转化为相应SPI接口的CMD、Addr、Data(图6中会详细介绍),使得软件通过地址直接访问其它微控制器数据空间,就像访问微控制器自身存储器或寄存器一样,达到了数据和资源共享和扩展的目的。

图4是权限管理模块的示意图,每个从芯片端的HXM模块里有一张状态表,包含4个字段:地址(Addr)、长度(Len)、控制(Ctrl)、访问权限(Lock/Free)。每一行代表一个区域的访问状态,Lock表示该区域正在被访问,Free表示该区域没有在被访问,也就是说每个区域对应1个Lock/Free权限模块,总共有n个。Addr和Len分别表示权限管理区域的起始地址和长度,Addr的边界会与Len表示的单位对齐。举例:Len若设置为1KB,则Addr的低10位将不参与地址匹配,即Addr[9:0]不参与地址匹配,仅匹配Addr[10]以上的位。Lock/Free的访问权限转变受到来自主芯片(Master)端的Req和Ack信号控制,同时也受到来自从芯片(Slave)端的Take信号控制,而Busy和Status各自代表了主芯片与从芯片端的访问权限(Lock/Free)状态。Req和Ack信号是主芯片的握手信号,由主芯片端的HXM模块硬件发起和响应;而Take信号是从芯片的软件发起,即处理器通过总线访问从芯片端的HXM模块进行控制。

Lock/Free访问权限的变化,如图5的状态机所示,状态机总共分为Free、Lock_M、Lock_S三个状态。Free表示对应的区域处于空闲状态,没有被锁定,当主芯片发起的请求(Req=1)被从芯片响应(Ack=1)时,Free状态进入Lock_M状态,表示此时该区域被主芯片锁定,同时Busy信号输出1表示处于忙状态;当从芯片的处理器发起锁定请求(Take=1)时,Free状态进入Lock_S状态,表示此时该区域被从芯片锁定,同时Status信号输出1表示处于忙状态;其它情况下Free状态保持为Free状态。

若当前区域访问权限为Lock_M状态,此时主芯片的请求被撤销(Req=0)时,Lock_M状态进入Free状态,否则Lock_M状态将继续保持为Lock_M状态。

若当前区域访问权限为Lock_S状态,此时从芯片发起释放请求(Take=0)时,Lock_S状态进入Free状态,否则Lock_S状态将继续保持为Lock_S状态。

从处理器支持一步锁和两步锁,一步锁是往指定寄存器Ctrl发起读操作,硬件触发Take=1信号,同时Status返回Lock_S状态,经Ctrl寄存器返回给从处理器;两步锁是指往Lock/Free寄存器写1操作,硬件触发Take=1信号,然后再向Lock/Free寄存器发起读操作,返回Lock_S状态。

两步锁操作直观,一步锁执行效率更高,可适应不同软件需要。Busy信号与Status信号的变化均可配置中断响应,方便软件及时响应数据区状态更新,并进行处理。采用Lock_M和Lock_S状态分开,并且互相间转换必须经过Free状态的设计,可以确保两边主芯片的访问不会冲突,并且通过Free状态安全的进行状态切换。

图6是主芯片端HXM模块的状态机,即HXM模块处于主模式时的工作原理。主芯片端通过总线发起读写操作(R/W)时,状态机从空闲(Idle)状态进入地址映射(Addr Mapping)状态;如果目标地址与图三所示地址转换模块中的区域匹配,则Req信号置1并进入Cmd状态,否则Req信号置0的同时状态机返回Idle状态;Cmd状态根据读写操作(R/W)发起响应的读写指令,然后进行Addr状态;Addr状态根据从芯片给出的Ack信号,如果从芯片该区域处于Free状态(即Ack=1)则进入Data状态,否则(Ack=0)进入Hold状态,Hold状态将保持直到Ack信号变为1后,再进入Data状态;Data状态时,如果是读操作(R),则SPI或其它总线进行数据获取;若是写操作(W),则SPI或其它总线将数据发送。数据接收和发送的单位是字节,如果后续还有连续的数据进行读写,即一次总线操作发起多个字节的操作,Continue信号为1,将继续停留在Data状态进行数据收发,否则读写操作完成,Data状态转到Idle状态。一次总线操作的地址如果超过从芯片设定的区域边界,将会自动被拆分,并返回Idle状态,跨区域的部分将重新经历地址映射和Req/Ack握手协商阶段。

图7是从芯片端HXM模块的状态机,即HXM模块处于从模式时的工作原理。从芯片端默认处于空闲(Idle)状态,当主芯片端发起读写请求(Req=1)时,将进入Cmd状态;Cmd状态接收主芯片的读写指令,判定此次操作是读操作(R)或写操作(W),然后进入地址检查(AddrCheck)状态;地址检查状态接收主芯片发起的地址,并与图4中状态表中的地址区域进行权限匹配,并将结果反馈至Ack信号,如果被访问区域处于非Lock_S状态(Status=0),则进入Data状态,否则(Status=1)进入Hold状态,Hold状态将保持直到Status信号变为0后,再进入Data状态;Data状态时,如果是读操作(R),则SPI或其它总线进行数据准备和发送;若是写操作(W),则SPI或其它总线将数据接收后,存放至目标区域。数据的接收和发送将持续进行,直到主芯片端请求信号撤销(Req=0),则状态机回到Idle状态。从芯片端HXM模块具有发起总线读写功能,因此可直接访问从芯片的SRAM区域或者外设寄存器REG区域,从而实现数据空间扩展,包括数据交互、数据共享,同时也实现了控制其它从芯片外设的能力。

通过上述多芯架构的数据和资源共享方法,实现以下功能:

1、多个微控制器之间采用同一个系统来处理,相当于多个微控制器组成一个多核的芯片来使用,灵活性更高;

2、多个微控制器之间的数据交换与共享更加便捷,通过存储器映射机制让数据能够直接按地址进行访问,软件可当作同个芯片中的另一块SRAM存储器来使用,便于单系统软件的业务逻辑控制;

3、通过直接访问方式,主芯片可方便读写从芯片的外设寄存器,也可通过数据结构通知从芯片的控制器,实现灵活的外设资源和IO资源扩展;

4、当数据共享发生访问冲突时,硬件设置互斥锁,软件无需额外增加处理逻辑,提升数据访问的效率;

5、本方法具有软件开销低,所需硬件管脚少等特点,适用于产品功能升级,算力加强,IO资源扩展等各种应用领域。同时针对微控制器,无需设计多款同系列产品,即可通过多芯架构应对应用端各种高中低档的产品开发需求。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。

技术分类

06120115638248