然而今天,子系统之间带宽的迅速增长,低延时通路在子系统边界扩展的风险,以及严格的功耗和成本预算等因素导致一切变得更加复杂。在很多设计中,不可能在系统中布满CPU总线,或者外设总线。对于以芯片系统(SoC)实现的子系统,一些芯片设计人员能够通过这些子系统预先了解您的系统互联体系结构。由于低I/O电压和极短的上升时间,点对点互联遇到了很大的时序、信号完整性和电路板设计难题。
对于这一越来越复杂的情形,需要其他的解决方案。高速串行互联一直主要用于通信行业,在较长的距离上传输数据流。采用高级硅片工艺技术,在很多系统中,这些串行链路的接口变得非常小,而数据速率足够高,多千兆位串行链路替代了并行总线,甚至是异步I/O.
一个很明显的例子是PCI Express (PCIe)。最初的PCI是非常传统的并行同步总线。随着个人计算机带宽需求的增长,Intel把这一拓扑迁移到了高速串行链路的多个通路上。相似的发展也出现在大容量存储器件中,老的AT连接总线变为现在非常熟悉的串行ATA (SATA)。
而这些概念的应用已经超出了外设总线。为能够理解为什么高速串行链路可以应用于点对点连接甚至是单个电路板边界上,让我们了解一些系统划分问题。
系统划分
在理想的理论体系结构中,系统划分完全是基于数据和控制流图的系统过程。您画出图,然后,将功能模块划分到子系统中,子系统分成更大的组,这样,减小了带宽需求,增大了子系统之间链路的延时约束。然后,您可以针对这一链路的需求,以最短的合适互联,实现子系统之间的每一连接。
这一方法对于空白电路板非常适用。这实际上与SoC设计和FPGA使用的早期阶段非常相似。但是,当今的大部分设计都从商用芯片开始:专用标准产品(ASSP)或者微控制器单元(MCU)。这些SoC给我们提出了很多划分要求,如图1所示。我们选择的芯片决定了我们的子系统边界,以及应使用那种互联技术。如果您MCU唯一的外部互联是AMBA APB外设总线,或者DDR2存储器总线,以及一些通用I/O引脚,那么,这就是您的选择。
图1.电机控制电路板上的芯片按照子系统进行分组。
即使这样,划分仍然是系统设计中的一个重要步骤。而且,您必须对比SoC设计人员做出的假设和系统实际物理边界、带宽需求以及延时要求。因此,您需要识别出子系统:把需要交换大量数据的芯片放到一起,例如,SoC及其DRAM等。可以把它们之间的窄带、对延时要求不高的芯片放在不同的子系统中,例如,MCU和系统监视模数转换器(ADC)等。通过这种分组方法包括了系统中所有的功能模块后,可以转向对子系统之间的链路进行特征描述。
特征描述
在基于SoC的系统中,对子系统之间的互联进行特征描述看起来似乎没有什么意义。SoC的I/O选项很好的定义了接口。但是作为系统设计人员,您还是需要回答某些重要问题,仍然有一些可能不太明确的选项。
把问题分成带宽、延时和成本几类。带宽是这些问题的基础。如果您建议的互联方案是可行的,那么,您应该清楚的知道每一子系统的带宽需求。一般而言,这实际上是一个意义不大的问题。SoC设计人员将通路设计得很长,以保证芯片上的I/O要比预测的任务需求多得多。一般有足够的DRAM带宽来处理芯片CPU高速缓存生成的所有指令和数据流。通常有PCIe等高速总线连接至主系统或者宽带外设和加速器等。而且,还有与标准兼容的专用I/O接口。
但是,如果SoC设计人员没有预见到您所做的工作呢?有时候,基于您对系统体系结构的分析,您选择的SoC完全满足您的接口要求。在其他情况下,您可能会发现,在某些地方会遇到瓶颈,而有的情况下会遇到未使用的带宽,或者完全没有使用的接口。在所有这些情况下,您可能会重新思考这些接口的用途。或者,如果您通过在FPGA中汇集知识产权(IP)来构建SoC,那么,您能够更灵活的重新安排系统互联体系结构。特别是,您应该仔细处理系统中要求最高的数据流。将所有的东西都自动转储到一条共享总线上,即使是快速PCIe总线,也不是好方法。[page]
DRAM总线的其他用途如果您的SoC有多条DRAM总线,或者您使用一片FPGA,那么这些大量数据流的一种选择是把DRAM接口作为I/O通道使用。在最近的DesignCon大会上一次有趣的研讨中,Synopsys首席工程师John Ellis在“推动移动存储器的应用超越智能电话领域”一文中探讨了以这类方式来使用新LPDDR3接口的可能性。Ellis解释说,JEDEC专门为智能电话应用SoC及其主存储器之间的超短距离宽带连接设计了LPDDR3,特别是不超过一厘米的距离,针对连接,优化了SoC和DRAM封装的引脚布局。在这一应用中,总线能够以相对较低的功耗承载非常高的数据速率,甚至不需要匹配电阻。但是,Ellis指出,这一应用并不是使用总线的唯一方法。
Ellis说,在理想的配置中,总线可以工作在1067 MHz.“理想”包括大约1 cm的长度,写调平和地址/控制位去偏移、阻抗匹配走线,以及足够的电源和地引脚等。但是,Ellis的仿真表明,降低频率,采用较小的远端匹配电阻,以及仔细的进行布线后,总线工作长度可以延长到8至10 cm.
因此,有好消息也有不太好的消息。好消息是LPDDR3可以用于各种互联任务中,不仅仅是靠近SoC的DRAM.距离较长时,总线还可以用于子系统之间的链路。不太好的消息是,要综合考虑距离和带宽,这都取决于电路板的物理设计。
串行选择
对于子系统内部链路,由于带宽需求增大,并行总线频率和距离折中的方法带来了更严重的问题。在某些点,需要给出一些解决方法。Altera工程师Kaushik Mittra指出,“随着带宽的增大,在某些点,您不得不放弃并行总线。长度也是一个因素。如果一条宽总线的运行频率非常高,在大约40英寸时,走线之间的时序偏移占据了大部分总线周期时间。这根本无法工作。”我们在图2中描述了这一点。
图2.在快速并行总线上,比特间偏移会导致无法正常工作
通过使用足够高的时钟频率,非常注意阻抗匹配、走线匹配,以及供电方法,在较短的芯片至芯片连接上,同步并行总线可实现较大的带宽。如果电路板布板被改变了,在稍长的距离上,相同的设计就有可能失败。
而解决方法是高速串行链路。采用商用器件,单条通路工作速率可以高达28 Gbps,因此几条通路可以承载速率很高的数据流,作为高速宽带并行总线使用。由于每一条通路都是独立的,其时钟藏在数据流中,因此,不需要处理偏移问题,极大地简化了布线问题。而且,正如Altera现场应用工程师Susannah Martin所指出的,即使是并行总线能够工作在相似的环境下,几条串行通路的引脚和电路板成本要比同等并行总线低得多。
好在您所需要的高速串行互联硬件已经由您选择的SoC提供了。很多ASSP甚至是某些高级MCU都有1 Gbps以太网(GbE)或者10GbE端口,在某些情况下,还有PCIe端口,所有这些都可以用在芯片至芯片应用中。即使是低端FPGA现在都有通用多千兆位收发器,您可以定制这些收发器以满足您的链路需求。而且,Mittra指出,某些芯片包括了芯片至芯片串行链路,符合特殊应用环境的标准要求。一个例子是网络环境下的Interlaken.
延时问题
在串行链路上承载子系统之间的宽带数据流有很多优势。Martin指出,除了上面提到的低成本,还能够大幅度降低功耗。但是也有一个问题。Martin提示说,与直接并行连接相比,消息排队、串化和传输,最终在远端解串化和重新构建消息这一过程会显着增加端到端延时。在某些系统中,可能需要重新组织逻辑以解决这一延时问题。
这些问题并不意味着您在彼此异步的子系统之间只能使用串行连接。链路的最大端到端延时只要在系统总时序要求范围内,您就可以使用串行链路来实现子系统之间的传输。您的确需要使用某些可靠的方法在远端重新同步数据,但是这一问题与您使用其他的时钟域交叉方法完全不同。实际上,如果需要,通过仔细的设计,您甚至可以使用状态机内部的串行链路。
这样,还带来了另一种可能性。目前为止,我们已经讨论了采用串行链路来替代并行总线。但是,您只要仔细的理解了时序问题,也可以将一组独立的异步I/O引脚汇集成串行链路。实际上,某些基于FPGA的逻辑仿真系统使用了这一方法来划分两个或者多个内部FPGA之间的逻辑云。
另一种解决方案
在以供应商设计的ASSP和MCU为主的环境下,系统互联体系结构的范围似乎已经规定好了。但实际上,作为一名系统设计人员,您的确还很大的自由度。您当然可以选择您所设计好的芯片。一旦您确定使用SoC,您可以重新使用芯片提供的I/O,根据系统需求来使用它们,而不是限于芯片设计人员所提供的使用方法。您还可以选择使用可编程逻辑器件,完全控制互联体系结构。
通过这种自由选择,随着子系统之间链路带宽的增大,多千兆位串行互联将会扮演越来越重要的角色。在很多情况下,SoC已经有了收发器,FPGA当然也有。还有可靠的信号完整性、成本和功耗优势。采用一些几乎封装好的串行链路布板,最终的电路板将多层结构的布板难题变为相对简单的设计。在一些高性能应用中,高速串行链路I/O已经替代了并行总线,未来的应用会更加广泛。
上一篇:一种基于FPGA的接口电路设计
下一篇:仪器控制系统硬件总线选择方案
推荐阅读最新更新时间:2024-05-02 22:40