设计工程师的困境
设计一个灵活的可编程DSP系统架构是令人望而生畏的工作。从不断发展的移动标准到最新的视频压缩技术,这些新算法变得越来越复杂。例如,您的客户以前对标准清晰度的MPEG-2视频压缩已经很满意了,但是现在却要求今后的产品支持高清晰度的H.264,这对系统性能的要求高出了一个数量级以上。同时,随着网络容量的持续增长,增加系统通道数量的压力也在不断增大。这样,当启动一个新设计时,工程师不但要考虑今天的需求,还必须明白系统应该可以迎接哪些无法预料的挑战。
还有没有别的设计选择?历史上,构建高速数字通信或者实时视频处理的高性能DSP设计的方法有限。常用的方法是在电路板上尽可能地安装大量DSP处理器(俗称DSP
Farm),然后寄希望于软件工程师所编写的软件不会超出系统的最大处理能力。
但是,设计复杂性和系统总容量等问题限制了这种方法的灵活性。进一步讲,这种方法依赖于DSP处理器供应商能够不断地提高时钟速率、降低功耗,而这是难以保证实现的。现在,幸好由于过去几年中FPGA性能得到了长足的发展,这些器件整合了硬件嵌入式乘法器,为解决性能、灵活性和可伸缩性等问题提供了新的体系结构选择。
为DSP构建FPGA协处理器的考量
FPGA协处理架构是解决这些挑战的理想方案,见图1。通过巧妙地将DSP算法在DSP处理器和FPGA协处理器之间进行划分,可以获得多种优势,包括性能的显著提高以及系统总成本的降低等。然而,在采用这种方法之前还需要考虑许多问题。特殊系统需求以及工程设计团队的偏好将在最终的体系结构取舍上扮演重要角色。为高性能DSP系统设计FPGA协处理器解决方案时,系统设计人员需要考虑和不需要考虑的方面包括:
图1 (略)
不需要考虑的方面(一)
不要认为您可以像在DSP处理器上那样,以相同的方法在FPGA上开发DSP算法。一般认为较好的方法是在FPGA中例化软核DSP处理器,采用与传统DSP软件开发相似的方式来生成代码。而这是一种普遍的错误认识,必须采用完全不同的方法。为了充分发挥FPGA协处理的优势,必须重新设计数据通道的结构,以并行而不是串行的方式来实现后续DSP处理器编码类型。尽管DSP处理器和FPGA都具有嵌入式乘法器,与传统的DSP处理器相比,基于FPGA的设计有潜力执行每周期更多的乘累加(MAC)运算。应该评估您的DSP系统和所需的算法,考虑如何将它们“并行处理”。在DSP处理器设计基础之上,仔细地进行FPGA协处理器体系结构规划和开发,可以将性能提升一个数量级以上。
需要考虑的方面(一)
应明白哪种DSP设计流程方法最适合您的设计人员,特别是对于那些不太熟悉FPGA设计流程的人员。首先要回答的问题是:算法开发组倾向于采用什么方法来进行DSP系统原型开发?他们将开发以C语言编写的内部模型吗(该模型不依靠任何的特定工具或者开发环境)?如果是这样,那么可以非常灵活地选择DSP设计流程。开发组可选择模块化方法,针对每个模块建立硬件实施。这种选择可以决定FPGA协处理器设计的最佳启动点。开发组也许更习惯于针对工程,采用仿真环境对算法迅速建模和仿真。在DSP软件上经验丰富的开发组会更欢迎这种方法。
开发组具有ASIC或者FPGA设计流程的背景吗?如果是这样的话,还可以直接编写VHDL或者Verilog,不使用高级设计抽象工具来开发DSP数据通道。尽管最终设计有可能耗费大量的人工和时间,但还是可以优化其容量和性能的。
采用C至逻辑门的方法会怎样?某些EDA供应商专门针对DSP应用引入了C输入工具,可以生成HDL代码,直接在FPGA设计软件中综合、实现。所有这些方法可以整合在DSP设计流程中,实现FPGA协处理器。
需要考虑的方面(二)
应决定怎样将DSP算法在DSP处理器/FPGA协处理器体系结构中进行划分。一种直观、易于理解的方法是将计算量最大的DSP算法卸载给FPGA,让DSP处理控制流部分。这种数据通道/控制通道体系结构,尽管简单直观,但是不一定适用于您的工程。流行的软核嵌入式处理器FPGA例化方法,可以实现大部分FPGA控制通道。实际上,可利用多个软核处理器来为控制流提供更精细的粒度等级。另一方面,已有的DSP代码使开发组很难决定在FPGA中实施全部的数据通道处理,特别是已经投入了大量人力和时间在DSP处理器平台上进行库开发的情况。在这种情况下,开发组可能会决定仅将处理过程中的一小部分或者新的部分首先在FPGA上实现。
请注意,灵活性是这种体系方法的关键优势。假设在您的第一个FPGA设计中,采用了保守的方法,仅将设计处理的一小部分在FPGA中实现,而在系统DSP处理器中执行其他部分。对于下一代设计,可以将更多的处理交由FPGA实现,不必重新设计当前的电路板便可以提升系统性能。要实现这种延续性,需要进行仔细的规划。
需要考虑的方面(三)
衡量一下在设计中是“编写还是购买”关键的DSP知识产权?目标DSP设计是由标准DSP模块构成,还是大部分由自己努力实现?更有可能的是最终设计采用已有IP内核和开发组定制逻辑的组合。最好的设计将考虑工程需求,包括成本、今后的设计使用以及产品及时面市等。与编写模块相比,采用现成的内核可能会便宜一些,实现起来也更快,当然这些内核应提供良好的支持,具有合适的功能特性。下一个问题是您能否找到一个达到您设计要求的供应商。围绕DSP处理器庞大的第三方IP网络可以满足您的这一要求。在最近几年中,围绕FPGA已经开发了相似的支撑系统,以适应大量的基于FPGA的DSP设计。FIR滤波器、快速傅立叶变换(FFT)和前向纠错(FEC)内核等最常用的模块已经成功实现,可以在系统中采用。IP供应商能够以封装好的FPGA内核的形式提供H.264视频编解码器等新颖的专用IP。最后,应确定销售商可以提供完整的文档、性能测试、验证测试台以及良好的人员支持,解决您可能遇到的任何问题。
需要考虑的方面(四)
确定FPGA协处理器系统集成是如何进行的?一旦确定了处理划分之后,两个不同的部分如何集成到一起?特别是怎样选择DSP和FPGA之间的主要硬件接口?DSP的外设功能将会决定这些选择。系统中DSP处理器和FPGA之间很有可能存在多个连接,器件之间是采用低速串行连接进行控制,还是采用高速连接进行数据交换?
根据器件之间的处理功能划分,必须选择合适的接口吞吐量。在您的系统中,可能会采用FPGA来为专用音频或者视频数据总线建立特定的桥接。FPGA通过提供外设和存储器扩展,可用于提高DSP处理器的容量。当希望设计实现那些DSP处理器供应商还无法提供支持的新兴业界标准时,这一点便显得特别有用。
既然您已经选择了您偏爱的硬件接口,那么,FPGA设计流程是否能够将接口无缝集成到您的设计中呢?尽管可以建立定制逻辑模块来实现这些功能,实际上还可以采用全面的系统集成工具完成这项烦杂的连接工作。这类软件通常包括外设元件库,实现多种互联选项。其次,这类设计工具能够产生应用程序编程接口(API)或者存储器映射头文件,并整合到DSP软件集成开发环境中。不要小看这一步的作用。在DSP软件架构中集成硬件加速算法是体现FPGA协处理器架构优势的关键。
不需要考虑的方面(二)
不要受限于初步设计的要求。您已经建立了第一个FPGA协处理架构,可以准备体验这一灵活平台的优势。如果需要改进系统功能,或者要降低系统材料(BOM)总成本,您可以采用多种方法来达到这些目的,而不必重新设计当前的电路板。FPGA供应商一般在整个密度范围内提供引脚兼容的器件,以支持纵向移植。为了降低生产成本,在设计许可的前提下,您可以决定使用小容量的FPGA。或者,您可以将更多的功能由DSP处理器实现转为FPGA实现,来降低元件总数,而不必调整当前的电路板布局。为提高平台性能,可以采用密度更高的FPGA,构建功能更强大、容量更高的设计。这种方法使您能够最大限度地重复使用设计,将下一代产品尽快推向市场。要实现这一点,应尽量保证您的初始设计具有模块化特性。
|