许多年轻的工程师在工作中考虑潜在设计选项时首先想到可编程逻辑。然而,随着对可编程逻辑的日益依赖也给教授电路设计带来了经常被忽略的一些问题,这使许多年轻的工程师在创建系统时,没有意识到现在有许多可选择的技术能够解决他们在设计方面的挑战。在许多情况下,这种行业选择的知识缺乏与实践设置经验的缺乏是有关系的,这种专门技术的缺乏直接影响到他们设计高性能、低成本产品的能力。
图1:用于高性能路由器的40Gbps解决方案 内嵌的缓冲存储器
这种趋势的最好例子就是内嵌的数据缓冲存储应用。多年来,FIFO和多端口存储器一直是资深设计工程师创建高性价比的数据缓冲子系统的事实上的标准。然而,随着FPGA存储器密度的增加,设计工程师们已经选择使用片上存储器替代分立的FIFO或多端口存储器的功能。 对高级系统来说,把分立的FIFO或多端口存储器功能集成到FPGA似乎很有意义。将多个数据缓冲器和数据控制功能集成一个芯片中,提供了一个更为优秀的解决方案。其吸引力在于能使设计工程师减少元件数量和最大限度地缩小电路板的空间需求。为了帮助设计工程师,FPGA供应商提供了一系列标准化的设计构建模块来加速开发进程。 但是,优秀的解决方案需要一定的成本,高密度的FPGA并不便宜。当数据总线速度超过100MHz,同时需要更高密度的缓冲器时,那就要更加昂贵的 FPGA。性能也可能成为一个问题。当工程师把FIFO或多端口存储器功能集成到可编程逻辑单元时,一些性能局限并不是显而易见的。在许多情况下,采用分立元件或结合小型FPGA可以提供更为理想的解决方案。 在没有意识的情况下问题产生了。假定教育机构过分依赖可编程逻辑,那么今天的许多工程师就失去了对分立的专用存储器最新发展的认识,例如FIFO和多端口存储器。现在,半导体供应商可提供密度范围高达18Mb的FIFO器件。读写端口能够完全独立地以高达250MHz的速度运行,而且DDR选项能使每个端口性能提高达20Gbps。众多的可选择端口特性使用户可选择总线的宽度、I/O电压、数据速率和同步或异步操作。集成标记运算(flag operation)增加了器件的功能,最重要的是,整个产品线的引脚兼容性使设计工程师很容易升级到更高的密度和速度。 多端口存储器有类似的发展过程。设计工程师可选择每个端口不同总线宽度,支持8到72位之间的器件。这些器件在同步模式下速度高达200MHz或在异步模式访问速率达 10ns,同时密度高达36Mb。目前器件可支持的内核电压范围为5V、3.3V、2.5V或1.8V,I/O电压为5V、3.3V、2.5V,可选择 3.3V/2.5V或1.8V。还有许多特殊功能可供使用,包括全边界计数器(full-boundary counter)、独立字节使能、冲突检测、中断、旗语和忙仲裁。 内嵌数据缓存的性能局限性
当一直被教育使用 FPGA的工程师设计数据缓冲子系统时,他们自然地倾向于把FIFO设计成FPGA。然而许多人没有意识到,因为他们设计中的FIFO数量的增加使他们面临着性能局限性的问题。通常,这些工程师使用来自主要供应商的工具,自动地将多FIFO映射到单个物理存储器模块中,在多个特定用户FIFO之间产生时间域复用所需的逻辑。然而,因为每个独立的FIFO端口必须一起进行复用,所以每个FIFO端口的最高工作频率与映射到设计中的FIFO的数量成反比。
图2:低功耗双端口器件是多媒体智能电话的理想之选 当每个FIFO器件利用其时钟独立运行时,数据、控制输入和状态标记、FIFO之间总的存储带宽是共享的。当一个FIFO器件的读写操作启动时,定序器(sequencer) 电路会在快速的时分复用(TDM)时钟域存取物理数据。之后,定序器电路快速访问TDM时钟域的物理存储器。然后,定序器把信息传回到FIFO端口的时钟域完成存储存取。因为时钟域的传输,FIFO器件的性能受到定序器电路的速度和使用的FIFO数量固有的限制。实际上,一些领先FPGA供应商推荐需要在高性能设计中把他们器件的FIFO数量控制在10个之内。 在把一个FPGA配置成双端口时,也会有很多与性能相关的问题。在很多这种应用中,FPGA往往和ASIC连接在一起。性能受三个主要因素控制:内在速度或从双端口写入和读取信息的速度、建立时间或数据在ASIC输入变得稳定需要的时间,以及最高速度或外部ASIC获得双端口信息的速度。 因为在输入的数据稳定之前ASIC不能运行,建立时间就直接影响到速度的提升。由于设计工程师在FPGA中使用了大量的存储器,所以某些存储器会离I/O和逻辑门很远。结果,内部写脉冲的长度就会存在很大的差异性,并导致建立时间延长,最后使性能降低。在某些情况下,由于减少了建立时间,一个内部速度超过200MHz的FPGA将只能表现出最高120MHz的速度或者更低。相反, 200MHz的双端口存储器的建立时间和最大速度则保持恒定,并明显快于整个存储器密度范围的FPGA。如果设计工程师选择使用小型FPGA和外部多端口,性能就只会受FPGA的I/O限制。 面积和成本的考虑
封装面积是另一个有时带有欺骗性的需要考虑的问题。如前所述,在许多情况下,把一个数据缓冲器设计集成到一个FPGA可以在低密度情况下显著节省占板面积。然而,随着密度的增加,空间节省并不明显。在许多情况下,元件数量越多,却可出乎意料占用更小的空间。 例如,随着设计工程师将小型4万门FPGA换成8百万门FPGA,封装的尺寸几乎增加6倍,从256引脚球栅阵列封装(BGA)增长到1,152引脚BGA 封装。相反,FIFO和多端口存储器在不同的密度条件下,可以提供相同的256引脚的BGA封装。在这些情况下,使用一个非常大的FPGA增加存储器容量不会实现最小的占板面积。对于更高密度的选择,设计工程师可以通过组合具有足够门数的FPGA和外部多端口FIFO或者多端口存储器,得到更为有效的结果。 在许多设计中成本是至关重要的,经常迫使设计工程师对其性能做出折衷,数据缓冲器设计也不例外。不过,对FPGA存储器和分立存储器仔细的成本分析可以带来最具成本效益的选择。 FPGA 和FIFO存储器每比特成本之间的比较说明了分立存储器器件和FPGA之间主要的区别。像任何分立存储器器件一样,FIFO和多端口器件的每比特成本随着密度增加都会按合理比例持续减少。尽管存储器嵌入到一个FPGA里价格会比分立器件高,在256K以下随着每比特的成本变化速度与FIFO和多端口器件相近,而密度高于256K的FPGA每比特成本增长更快,高密度下的FPGA存储器更昂贵。 这个区别对于不得不在他们的设计中增加存储器的设计工程师来说具有很重要的意义。当设计工程师的需求已经超过一个FPGA的存储器容量时,他们必须转向到下一个更高密度的器件。更高容量的FPGA不仅迫使设计工程师为额外的存储器付出更高的成本,也迫使他们为嵌入在更高密度FPGA里的逻辑买单。此外,高密度的FPGA也要求大的封装来满足额外的 I/O,所以也增大了电路板空间站用。使用分立的FIFO或多端口器件的设计可以利用引脚上兼容的下一代高密度器件,来增加额外的存储器IC或替代现有的存储器,从而简便地扩展容量。因此,使用分立器件增加存储器的成本实际上保持不变,使用FPGA增加存储器的成本却不断增加。 引脚兼容的分立FIFO和多端口存储器产品系列的可用性也在很大程度上影响设计的灵活性,它使设计工程师能够升级性能或推出另一个有不同性能的终端产品。而改变FPGA里的设计实现,通常需要重新编辑、改变计时和进行其他调节。 可靠性是设计中需要考虑的另一个问题。缩小工艺尺寸和降低工作电压有助于增加存储器的密度。但是,降低容量和降低电压也会增加SRAM单元里的软错误 (soft-error)。由于FPGA比FIFO和多端口更趋向采用更小更低电压和尺寸,也会出现更多的软错误。工作在高电压下使用FIFO和多端口的存储器将很少受到软错误的影响,而且可以提供更高的性能。 |