SoC系统中实时总线模块的设计理念
发布时间:2008/6/3 0:00:00 访问次数:477
p>soc中cpu总线一般采用应答机制,是非实时的,数据的处理采用中断响应机制以发挥效率。处理特定实时数据并没有固定的延时与稳定的吞吐率,因此需要设计一个模块来处理实时数据到非实时总线之间的平滑过度问题。作者以此模块设计为例,阐述非实时总线中实时数据切换的设计理念与几个实用技术。
在芯片设计中,芯片内部总线的设计往往决定了芯片的性能、功耗与各模块设计的复杂度。我们设计总线往往会依据两方面的原则:一是芯片设计流程其内在的需求,二是所针对的应用对交换宽带、延时、效率、灵活性的需求。
针对芯片总线设计流程内在的需求,高效总线结构设计通常遵循的基本原则包括:同步设计、可综合、无三态信号、低延时、单触发延、支持多主控及总线仲裁(支持dma及多cpu核)、高时钟频率独立性、支持突发(高效率)和低门数。遵循这些基本原则可以帮助我们规避很多设计上的风险,提高总线效率与ip复用度。当然,实际上述有些原则如“三态总线”,可以而且应当在某些应用中使用,只是不建议芯片及设计工程师轻易地突破这些规范,增加风险。南山之桥微电子公司在高端芯片设计中使用了三态总线技术来解决超宽总线的布线聚集与时序匹配问题。
应用的需求往往会决定总线的形式,如soc芯片中往往会采用嵌入式cpu的总线结构。反过来说,我们选用哪一款cpu,除了成本、性能、功耗、快速精确的时序仿真模型、编译环境和可用ip外,还有重要的一点就是其总线设计是否简单、高效与有利于发挥其它设计模块的效率。
图1:帧结构tdm形式时序图。 |
以现在较流行的arm处理器来说,采用amba总线标准,其中高速芯片通常采用的ahb总线有以下几个特质:流水线式、非三态总线、支持多主控、总线仲裁与集中地址译码、应答响应机制(非实时)、支持突发。
总之,ahb总线适宜于发挥cpu的效率,符合高效总线设计的原则,但是其本身也有总线位宽限制(主要是指令集位宽)与split(切分)选项支持的复杂度。在笔者参与的设计中有一半以上不支持split选项以降低设计与验证开销,限于篇幅在此不展开阐述。最主要的问题是soc中cpu总线一般采用应答机制,也就是非实时的,数据的处理采用中断响应机制以发挥效率。处理特定实时数据并没有固定的延时与稳定的吞吐率,那么就需要设计一个模块来处理实时数据到非实时总线之间的平滑过度问题。笔者以此模块设计为例,阐述非实时总线中实时数据切换的设计理念与几个实用技术。例子中实时数据传递采用tdm总线形式(time division multiplexed,时分复用),我们称此模式为tdm模块。
tdm模块设计
tdm模块一端的界面是多路音频信号的输入与输出,另一端是ahb总线,音频数据的输入/输出,通常采用帧结构tdm形式(见图1)。其中,sp_io_xclk代表音频数据采样时钟,sp_io_xfs代表帧同步头,下面两行分别是输出与输入数据。可见,这是一个含帧格式的多通道时分实时数据传输格式。关于amba总线,有大量介绍资料,此处不赘述。
在这个模块的设计中,我们考虑了以下几个原则:平滑匹配数据传输速度、低延时与低资源占用(逻辑与存储资源)、高效使用ahb总线宽带、提高cpu处理效率、可靠性与错误处理、可控性与可观性。最基本的思路是:采用fifo(先入先出)技术暨队列来缓冲数据传输,同时要尽量少缓存数据在队列中,以满足低延时与低资源的占用;同时采用ahb burst模式提高总线利用带宽;最后,还要提供寄存器读写来控制传输参数与状态存储,采用ahb从控模式(slave)。初步的设计结构如图2。
dma技术的使用时机
在这个初步设计中,缓存队列的长度计算主要取决于ahb burst的速度与频率。要少缓存数据,就要频繁进行ahb传递,也就是频繁中断cpu,这降低了cpu的处理效率。
图2:tdm模块的初步设计结构。 |
这看起来是无解的矛盾,我们可以采用dma(direct memory access,直接存储读写)技术解决。一般soc芯片都有外接ddr/sdram作为最终的数据与程序缓存,tdm模块可以直接向dram传输实时数据,而不用频繁地中断cpu,实质上是把片内缓存的需求转移到了片外(假设总线带宽足够),既降低了队列长度又降低了中断cpu的频率,从而解决了这一对矛盾。
dma技术实质上也是模块主动掌握总线主动权,要求采用ahb总线主控模式,最终框架结构会变成图3所示。
延时与dma应用的矛盾
细心的读者会发现dma的采用增加了处理延时,这不是与我们的原则矛盾吗?这里牵涉
p>soc中cpu总线一般采用应答机制,是非实时的,数据的处理采用中断响应机制以发挥效率。处理特定实时数据并没有固定的延时与稳定的吞吐率,因此需要设计一个模块来处理实时数据到非实时总线之间的平滑过度问题。作者以此模块设计为例,阐述非实时总线中实时数据切换的设计理念与几个实用技术。
在芯片设计中,芯片内部总线的设计往往决定了芯片的性能、功耗与各模块设计的复杂度。我们设计总线往往会依据两方面的原则:一是芯片设计流程其内在的需求,二是所针对的应用对交换宽带、延时、效率、灵活性的需求。
针对芯片总线设计流程内在的需求,高效总线结构设计通常遵循的基本原则包括:同步设计、可综合、无三态信号、低延时、单触发延、支持多主控及总线仲裁(支持dma及多cpu核)、高时钟频率独立性、支持突发(高效率)和低门数。遵循这些基本原则可以帮助我们规避很多设计上的风险,提高总线效率与ip复用度。当然,实际上述有些原则如“三态总线”,可以而且应当在某些应用中使用,只是不建议芯片及设计工程师轻易地突破这些规范,增加风险。南山之桥微电子公司在高端芯片设计中使用了三态总线技术来解决超宽总线的布线聚集与时序匹配问题。
应用的需求往往会决定总线的形式,如soc芯片中往往会采用嵌入式cpu的总线结构。反过来说,我们选用哪一款cpu,除了成本、性能、功耗、快速精确的时序仿真模型、编译环境和可用ip外,还有重要的一点就是其总线设计是否简单、高效与有利于发挥其它设计模块的效率。
图1:帧结构tdm形式时序图。 |
以现在较流行的arm处理器来说,采用amba总线标准,其中高速芯片通常采用的ahb总线有以下几个特质:流水线式、非三态总线、支持多主控、总线仲裁与集中地址译码、应答响应机制(非实时)、支持突发。
总之,ahb总线适宜于发挥cpu的效率,符合高效总线设计的原则,但是其本身也有总线位宽限制(主要是指令集位宽)与split(切分)选项支持的复杂度。在笔者参与的设计中有一半以上不支持split选项以降低设计与验证开销,限于篇幅在此不展开阐述。最主要的问题是soc中cpu总线一般采用应答机制,也就是非实时的,数据的处理采用中断响应机制以发挥效率。处理特定实时数据并没有固定的延时与稳定的吞吐率,那么就需要设计一个模块来处理实时数据到非实时总线之间的平滑过度问题。笔者以此模块设计为例,阐述非实时总线中实时数据切换的设计理念与几个实用技术。例子中实时数据传递采用tdm总线形式(time division multiplexed,时分复用),我们称此模式为tdm模块。
tdm模块设计
tdm模块一端的界面是多路音频信号的输入与输出,另一端是ahb总线,音频数据的输入/输出,通常采用帧结构tdm形式(见图1)。其中,sp_io_xclk代表音频数据采样时钟,sp_io_xfs代表帧同步头,下面两行分别是输出与输入数据。可见,这是一个含帧格式的多通道时分实时数据传输格式。关于amba总线,有大量介绍资料,此处不赘述。
在这个模块的设计中,我们考虑了以下几个原则:平滑匹配数据传输速度、低延时与低资源占用(逻辑与存储资源)、高效使用ahb总线宽带、提高cpu处理效率、可靠性与错误处理、可控性与可观性。最基本的思路是:采用fifo(先入先出)技术暨队列来缓冲数据传输,同时要尽量少缓存数据在队列中,以满足低延时与低资源的占用;同时采用ahb burst模式提高总线利用带宽;最后,还要提供寄存器读写来控制传输参数与状态存储,采用ahb从控模式(slave)。初步的设计结构如图2。
dma技术的使用时机
在这个初步设计中,缓存队列的长度计算主要取决于ahb burst的速度与频率。要少缓存数据,就要频繁进行ahb传递,也就是频繁中断cpu,这降低了cpu的处理效率。
图2:tdm模块的初步设计结构。 |
这看起来是无解的矛盾,我们可以采用dma(direct memory access,直接存储读写)技术解决。一般soc芯片都有外接ddr/sdram作为最终的数据与程序缓存,tdm模块可以直接向dram传输实时数据,而不用频繁地中断cpu,实质上是把片内缓存的需求转移到了片外(假设总线带宽足够),既降低了队列长度又降低了中断cpu的频率,从而解决了这一对矛盾。
dma技术实质上也是模块主动掌握总线主动权,要求采用ahb总线主控模式,最终框架结构会变成图3所示。
延时与dma应用的矛盾
细心的读者会发现dma的采用增加了处理延时,这不是与我们的原则矛盾吗?这里牵涉