一种片上系统及其访问方法 技术领域 本发明涉及通信领域和芯片设计领域, 具体而言, 涉及一种通用的片上系统及其 中的总线结构的实现。
背景技术 随着集成电路工艺的不断提高, 使得 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 芯片的不同点和相同点, 通过对总线的优化设计大大改 进了芯片的结构, 使得总线系统变成提高效率的重要环节。通过提出一种低效率的通用总 线结构, 其有足够的控制数据传递的能力, 通过降低每个总线控制模块的访问效率使得可 以在同一总线系统上支持足够多的不同的总线控制模块同时工作, 并且不会冲突也不会产 生瞬时的总线效率下降, 从而解决了相关技术中存在的总线结构复杂, 不易实现的问题。 显然, 本领域的技术人员应该明白, 上述的本发明的各模块或各步骤可以用通用 的计算装置来实现, 它们可以集中在单个的计算装置上, 或者分布在多个计算装置所组成 的网络上, 可选地, 它们可以用计算装置可执行的程序代码来实现, 从而可以将它们存储在 存储装置中由计算装置来执行, 或者将它们分别制作成各个集成电路模块, 或者将它们中 的多个模块或步骤制作成单个集成电路模块来实现。这样, 本发明不限制于任何特定的硬 件和软件结合。
以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。