一种片上系统及其访问方法
技术领域
本发明涉及通信领域和芯片设计领域,具体而言,涉及一种通用的片上系统及其中的总线结构的实现。
背景技术
随着集成电路工艺的不断提高,使得SOC(片上系统)变成可能。在典型的片上系统中控制模块(CPU)和功能模块(协处理器或专用功能模块)存在于同一个芯片上,这就需要解决在片上系统中控制模块和功能模块的互联互通和数据传递问题,即片上总线的设计。此问题类似于计算机中通过PCI总线实现控制和数据传递。在总线技术中,不同的片上系统或嵌入式CPU采用的总线结构都不尽相同,这取决于CPU的数据结构、需要实现的数据传输吞吐量以及对实时性的要求。例如,ARM公司定义的AHB/APB总线系统,为了在不同的系统结构和应用情况下均能保证总线的工作,其设计的总线结构和通讯方式虽然通用性较强,但是非常复杂,并且与其它的总线系统很难兼容。同时我们发现复杂的ASIC芯片同样有对总线结构的需求,但却没有比较好的应用总线结构。
ASIC芯片一般具有一个或多个复杂的功能模块,而控制模块一般处于片外,其同样具有SOC芯片的不同模块间的控制和数据传输的需求。因此,通过引入总线系统可以使得ASIC芯片具有和SOC芯片一样的模块化设计、分析、实现的优势,最终使得ASIC芯片的开发周期变短,芯片可实现模块化设计、验证,模块的可重用性变强。
另外,即使在SOC芯片中,大部分的总线应用都是低效率的控制层应用,复杂的总线系统并没有发挥真正的作用,却使得开发的难度增加,并消耗更多的硬件资源。
综上,在实现本发明过程中,发明人发现现有技术中至少存在以下问题:
1、总线结构复杂,不易实现;
2、只适应于SOC芯片,在ASIC芯片中难以实现并会产生硬件资源的浪费;
3、结构化、通用化不强,很多可以分开设计验证的模块,由于总线结构的限制很难独立设计、验证;
4、由于是为SOC芯片所设计的总线系统,其对主控模块的个数和产生竞争后的仲裁有复杂的要求,不利于一般芯片的设计;
5、主控制模块间的冲突会造成访问效率的降低,并可能产生错误操作。
发明内容
本发明旨在提供一种片上系统及其访问方法,能够解决相关技术中存在的总线结构复杂,不易实现的问题。
根据本发明的一个方面,提供了一种片上系统,包括:OSB、以及连接在OSB上的主设备和从设备,其中:主设备,用于将请求访问从设备的访问请求发送至OSB;OSB,用于将来自主设备的访问请求发送至从设备,以及将从设备根据访问请求进行的相应操作的结果发送至主设备;从设备,用于根据访问请求进行相应操作,并将相应操作的结果发送至OSB。
进一步地,在上述的片上系统中,主设备和从设备是对等的关系。
进一步地,在上述的片上系统中,还包括:网桥单元,连接在主设备和OSB之间,用于将来自主设备的访问请求的协议转换为OSB协议,并将转换成OSB协议的访问请求发送至OSB。
进一步地,在上述的片上系统中,主设备和从设备分别有多个。
进一步地,在上述的片上系统中,还包括:仲裁器,用于接收主设备通过OSB发送来的访问请求,并对访问请求进行分析得到访问请求中所携带的所要访问的从设备的编号;以及建立主设备与编号所指示的所要访问的从设备之间的数据通道。
进一步地,在上述的片上系统中,仲裁器包括:队列仲裁模块,用于将来自多个主设备的访问请求排成队列,依次分析队列中的每个访问请求得到每个访问请求中携带的所要访问的从设备的编号;通道分配模块,用于根据队列仲裁模块分析得到的编号,向所要访问的从设备发送指令以使得从设备激活并进行相应操作,并建立主设备与所要访问的从设备之间的数据通道。
进一步地,在上述的片上系统中,主设备与OSB之间通过主设备与OSB接口进行通信,并且从设备与OSB之间通过从设备与OSB接口进行通信;其中,主设备与OSB接口包括以下至少一个:地址端口,用于指示从设备的编号以及从设备的访问空间;操作结果接收端口,用于指示从设备返回的相应操作的结果为成功或失败;访问端口,用于使能访问请求,并指示访问为读操作和/或写操作;第一输出操作数据端口,用于输出操作数据到从设备;以及第二输入操作数据端口,用于接收从设备发送来的操作数据;
从设备与OSB接口包括以下至少一个:使能端口,用于指示所要使能的从设备;访问空间端口,用于指示所要访问的从设备的访问空间,其与地址端口中的访问空间相匹配;读/写操作端口,用于使能从设备的读/写操作;操作结果返回端口,用于向主设备返回相应操作的结果为成功或失败;第二输出操作数据端口,用于输出操作数据到主设备;以及第二输入操作数据端口,用于接收主设备发送来的操作数据。
根据本发明的另一方面,还提供了一种片上系统的总线访问方法,包括以下步骤:主设备将用于请求访问从设备的访问请求发送至开放性共享总线OSB;OSB将访问请求发送至从设备;从设备根据访问请求进行相应操作,并将相应操作的结果通过OSB发送至主设备。
进一步地,主设备将用于访问从设备的访问请求发送至开放性共享总线OSB包括:主设备发送访问请求至网桥单元;网桥单元将访问请求的协议转换为OSB协议,并将转换为OSB协议的访问请求发送至OSB。
进一步地,OSB将访问请求发送至从设备包括:OSB将访问请求发送至仲裁器;仲裁器对访问请求进行分析,得到访问请求中携带的所要访问的从设备的编号;仲裁器根据编号,建立主设备与编号所指示的所要访问的从设备之间的数据通道。
本发明中,因为充分地考虑了SOC和ASIC芯片的不同点和相同点,通过对总线的优化设计大大改进了芯片的结构,使得总线系统变成提高效率的重要环节。通过提出一种低效率的通用总线结构,其有足够的控制数据传递的能力,通过降低每个总线控制模块的访问效率使得可以在同一总线系统上支持足够多的不同的总线控制模块同时工作,并且不会冲突也不会产生瞬时的总线效率下降,从而解决了相关技术中存在的总线结构复杂,不易实现的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了根据本发明一个实施例的片上系统的结构示意图;
图2示出了根据本发明另一实施例的含有仲裁器的片上系统的结构示意图;
图3示出了根据本发明实施例的Osbm_op_addr端口的位映射示意图;
图4示出了根据本发明实施例的主设备读操作的时序示意图;
图5根据本发明实施例的主设备写操作的时序示意图;
图6示出了根据本发明实施例的从设备写操作的时序示意图;
图7示出了根据本发明实施例的从设备读操作的时序示意图;
图8示出了根据本发明实施例的片上系统的总线访问方法的流程图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。
图1示出了根据本发明一个实施例的片上系统的结构示意图,在该片上系统具有总线结构,其包括:OSB(Open-Shared-Bus,开放性共享总线)10、以及连接在该OSB 10上的主设备20和从设备30,其中:主设备20,用于将请求访问从设备30的访问请求发送至OSB 10;OSB 10,用于将来自主设备20的上述访问请求发送至从设备30,以及将从设备30根据该访问请求进行的相应操作的结果发送至主设备20;从设备30,用于根据该访问请求进行上述相应操作,并将该相应操作的结果发送至OSB 10。
在实施例中,充分地考虑了SOC和ASIC芯片的不同点和相同点,通过对总线的优化设计大大改进了芯片的结构,使得总线系统变成提高效率的重要环节。通过提出一种低效率的通用总线结构,其有足够的控制数据传递的能力,通过降低每个总线控制模块的访问效率使得可以在同一总线系统上支持足够多的不同的总线控制模块同时工作,并且不会冲突也不会产生瞬时的总线效率下降,从而解决了相关技术中存在的总线结构复杂,不易实现的问题。
在上述实施例的片上系统中,主设备20和从设备30是对等的关系。也就是说,只是定义访问的设备为主设备而被访问的设备为从设备,因此,显然一个设备的主设备和从设备的角色是可以随时转换的,或者也可以同时具有这两种角色。其中,这里值得注意的是,主设备和从设备可以是任一种类型的设备。
由于主设备和从设备是对等的关系,因此在模块设计时,分开独立设计任意小的模块,从而解决了相关技术中存在的结构化、通用化不强,很多可以分开设计验证的模块,由于总线结构的限制很难独立设计、验证的问题,并进而增强了片上系统的总线的通用化。另外,主设备和从设备是对等关系,不存在谁是主控的问题,因此能够解决相关技术中的总线系统对主控模块的个数和产生竞争后的仲裁有复杂的要求,不利于一般芯片的设计的问题。
如图1所示,在实际实施时,上述的片上系统还可以包括一个网桥单元40,其连接在主设备20和OSB 10之间(一个主设备对应一个网桥单元),用于将来自主设备20的访问请求的协议转换为OSB协议,并将转换成OSB协议的访问请求发送至OSB 10。由于主设备可以是支持各种协议的设备,为了能够正常地与OSB进行通信,从而需要一个网桥设备进行协议转换。
显然,如图1所示,在上述的片上系统中可以包括多个主设备20和多个从设备30。这样,当多个主设备20和多个从设备30连接至OSB 10上时,OSB 10如何能够正确和有效地工作成为一个需要解决的问题。因此,为了解决该问题,可以在片上系统中的多个主设备和多个从设备之间设置仲裁器50(主设备、网桥单元、仲裁器和从设备的连接关系如图2所示),该仲裁器50用于接收主设备20通过OSB 10发送来的访问请求,并对该访问请求进行分析得到该访问请求中所携带的所要访问的从设备的编号;以及建立发送该访问请求的主设备与得到的编号所指示的所要访问的从设备之间的数据通道。
由于仲裁器可能会接收到多个主设备发送来的多个访问请求,因此,该仲裁器50可以采用轮询的方式作为其仲裁机制。如图2所示,该仲裁器50具体可以包括队列仲裁模块502和通道分配模块504,其中,队列仲裁模块502,用于将来自多个主设备20的访问请求排成队列,依次分析队列中的每个访问请求得到每个访问请求中携带的所要访问的从设备的编号;通道分配模块504,用于根据队列仲裁模块502分析得到的编号,向所要访问的从设备发送指令以使得该从设备激活并进行相应操作,并建立该主设备与所要访问的从设备之间的数据通道(即为该访问请求分配总线资源)。
其中,在图2中,I2C_slave(I2C从设备)、AUX-CH和MCU均是主设备。首先,主设备的访问请求通过网桥单元转换成OSB协议,然后,经仲裁器仲裁,最后送入相应的从设备中。
在上述实施例的片上系统中,主设备20需要等待响应(即上述相应操作的结果)直至成功或者失败的指示信号返回。即,从设备30一定要返回成功或者失败的指示信号到主设备20。也就是说,OSB协议是个非破坏性协议。OSB不支持例外存在的结构(即不支持除返回成功或失败的指示信号以外的情况)。所以,从设备如果忙不能答复时需要有专用的功能返回失败的指示信号。因此,该实施例的片上系统中不会发生模块间的访问冲突,从而解决了相关技术中存在的主控制模块间的冲突会造成访问效率的降低,并可能产生错误操作的问题。
为了实现具有上述总线结构的片上系统,需要定义主设备与OSB之间的通信接口以及从设备与OSB之间的通信接口,即,主设备20与OSB 10之间通过主设备与OSB接口进行通信,并且从设备30与OSB 10之间通过从设备与OSB接口进行通信;其中,
如表1所示,该主设备与OSB接口包括了多种端口,例如:地址端口,用于指示从设备的编号以及从设备的访问空间;操作结果接收端口,用于指示从设备返回的相应操作的结果为成功或失败;访问端口,用于使能访问请求,并指示访问为读操作和/或写操作;第一输出操作数据端口,用于输出操作数据到从设备;以及第二输入操作数据端口,用于接收从设备发送来的操作数据。
表1
表1所示为含仲裁器的主设备网桥接口的各个端口。Osbm_op_addr端口的位宽为32比特,如图3所示,其中的高8位表示从设备的编号,后24位表示所要访问空间的特定地址。
如表2所示,从设备与OSB接口包括以下至少一个:使能端口,用于指示所要使能的从设备;访问空间端口,用于指示所要访问的从设备的访问空间,其与地址端口中的访问空间相匹配;读/写操作端口,用于使能从设备的读/写操作;操作结果返回端口,用于向主设备返回相应操作的结果为成功或失败;第二输出操作数据端口,用于输出操作数据到主设备;以及第二输入操作数据端口,用于接收主设备发送来的操作数据。
表2
表2所示为含仲裁器的OSB从设备网桥接口的各个端口。从设备侧的操作地址端口op_addr位宽为24位,用于匹配主设备的访问地址。由于从设备的编号位宽为8比特,因此OSB可以最高支持256个从设备。当读操作开始时,端口Osbs_op_ok_n与端口Osbs_n_rd_data应同时被置为有效位。
如果控制寄存器的数据位宽只有8比特,则需要使用LSB(Least Significant Bit,最低有效位)去匹配读/写数据总线,其他位在IP中应被保留或者空置。
这里值得注意的是:表1和表2中的各个端口的所占用的位宽在实际应用中可以根据实际的需求进行调整。
在本发明的一个实施例中,在DP RX IP中定义了三个从设备。其中两个为最初的I2C访问寄存器,一个为DPCD寄存器。
图4示出了根据本发明实施例的主设备读操作的时序示意图,图5根据本发明实施例的主设备写操作的时序示意图。当主设备发送请求时,如果从设备空闲,写/读操作会在两个周期内完成。如果从设备忙,仲裁器不能够发送请求给从设备直到从设备空闲。在这种情况下,请求需要等待较长时间直至从设备空闲。
图6示出了根据本发明实施例的从设备写操作的时序示意图,图7示出了根据本发明实施例的从设备读操作的时序示意图。所有的请求信号(即访问请求)包含osbs_slave_sel必须同时到达从设备。
结合如1所示的片上系统,该片上系统的总线访问方法如图8所示,包括以下步骤:
步骤S802,主设备将用于请求访问从设备的访问请求发送至OSB(Open-Shared-Bus,开放性共享总线);
步骤S804,OSB将该访问请求发送至从设备;
步骤S806,从设备根据该访问请求进行相应操作,并将操作的结果通过OSB发送至主设备。
优选地,在上述方法中,主设备将访问请求发送至OSB包括:主设备发送访问请求至网桥单元;网桥单元将该访问请求的协议转换为OSB协议,并将转换为OSB协议的访问请求发送至OSB。
优选地,在上述方法中,OSB将访问请求发送至从设备包括:OSB将该访问请求发送至仲裁器;仲裁器对该访问请求进行分析,得到该访问请求中携带的所要访问的从设备的编号;根据得到的编号,建立主设备与该编号所指示的所要发送的从设备之间的数据通道。
从以上的描述中,可以看出,本发明上述的实施例实现了如下技术效果:
充分地考虑了SOC和ASIC芯片的不同点和相同点,通过对总线的优化设计大大改进了芯片的结构,使得总线系统变成提高效率的重要环节。通过提出一种低效率的通用总线结构,其有足够的控制数据传递的能力,通过降低每个总线控制模块的访问效率使得可以在同一总线系统上支持足够多的不同的总线控制模块同时工作,并且不会冲突也不会产生瞬时的总线效率下降,从而解决了相关技术中存在的总线结构复杂,不易实现的问题。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。