首页 » 业界动态 » FPGA分担DSP功能降低建构成本

FPGA分担DSP功能降低建构成本

作者:  时间:2009-02-16 20:08  来源:52RD嵌入式开发


 

在任何产品开发中,有多种办法可以减小成本和增加功能。在更高端DSP应用尤其如此,这些应用都是大计算量和对性能要求严苛的,需要比通用型微处理器或低成本DSP晶片有更大的处理能力。对于这类应用,有许多软体/硬体方案可选用,包括DSP元件、专用ASIC和现场可编程逻辑阵列(FPGA)。这些可供选用的方案具有不同程度的性能优势,但也必须在包括成本、功耗和设计时间在内的其他因素之间进行权衡。

最近大容量FPGA的成本在降低,加上软体导向的FPGA设计工具的发展,导致了这些元件获得更多的使用,既能处理过去DSP处理器领域的功能,同时大大地降低专用ASIC方案的风险和前期成本。

在新的和现有的设计中增加使用FPGA,是为了延长一般的、更低成本微处理器的寿命(分担大计算量的工作)或减小或消除对更高成本顶级DSP处理器的需求。在那些必须增加现有系统传输量才能处理更高解析度或更大讯号频宽的情况下,增加的必要性能主要是针对计算(需要可调整的计算资源)或可能需要全新的方法来解决频宽问题。

讯号处理演算法(典型DSP应用的计算内部核心)通常可以用相对少量的C语言原始码来描述。因此,用C语言模型快速试验新演算方法的能力是有用的。另一方面,重新建造低阶的硬体设计可能是单调乏味和易发生错误的过程。

FPGA通过两种方式解决这些问题。首先,它们有潜力实现相当高性能的DSP应用作为专用的硬体,而且没有专用ASIC的前期风险。主流(和相对低成本)的FPGA元件现在有必备的能力和功能支援这些应用。第二,同样重要的是由于设计工具的发展,FPGA变得更加的容易使用。现在用多种软体导向(採用图形或语言)的设计方式成为FPGA设计过程的一部分,这是完全可能的。

当FPGA用来实现讯号处理或其他大计算量应用时,FPGA可以作为原型设计(之后可以转换为硬式掩膜版的专用ASIC中或结构化ASIC)或实际的产品平臺。在这种情况下FPGA在现场软体升级上具有独特的优势,对中低批量产品有着有力的成本优势。

大容量FPGA对加值工程也很有意义。在这种情况下,多种元件(包括处理器週边和随机或「胶合」逻辑)可以整合到单个FPGA中。虽然尺寸和系统复杂度的减小是这类整合产品的优势,但是主要的优势还是成本。把FPGA作为一个无所不能的硬体平臺是很常见的,但是这方面的工作往往忽略了FPGA完成主要处理及传统硬体功能的优势。

在最近几年中,FPGA具备了日益强大的嵌入式处理器核心。例如,Altera®的Nios™处理器是高性能的32bit RISC处理器,具有很丰富的可供选择週边和配置(使用Altera提供的SOPC Builder™软体),直接编程到大规模Stratix™或Cyclone™ FPGA中。这种处理器为混合软体/硬体应用提供了出众的平臺,进一步增加了FPGA的整合度和加值工程应用机会。採用FPGA架构的视讯会议方案
为了检验最新的FPGA架构如何使用,我们考虑视讯会议产品。Be Here Technologies(Fremont,California)制造了视讯/音讯电话,包括一个专利的360°镜头(见下图)。这个系统中所需的图像处理包括动态去除由单个镜片产生的环形图像的扭曲,以及视讯压缩和其他大计算量的操作。
 

 

图一:Be Here专利的360°镜片把整个环境捕捉为完整但扭曲的图像。单个CCD不好的图像必须在压缩和传输之前重新进行大量的处理。

 

当使用这类先进的产品时,必然需要改进的视讯和声音解析度和取样率。最初对该产品的分析建议採用现成的处理器(作为图像变形软体的控制器),结合高性能的DSP元件就能够为应用的视讯压缩单元(在专用的图帧尺寸上使用H.264压缩标准,工作速率高达每秒20帧)提供必要的性能。然而当团队考虑开发成本时,很明显是使用更高性能的DSP将使系统超出预算,需要另闢蹊径。

Be Here开发团队开始关注最新的FPGA平臺,尤其是Altera产品。团队最终决定採用Altera的Stratix系列,因为其支援电路板上大量记忆体的能力和用Altera HardCopy™ ASIC转换能满足批量成本需求。同时系统也需要一个微处理器来控制图像变形和产生观看的硬体,以及图像感测器。Altera的嵌入式Nios处理器(它是无需权利金和具备高可配置性的)是完成这些功能最自然的选择。

为了提供一个支援快速原型开发的开发平臺,Be Here设计了专用的板子,其中包括了一块Stratix EP1S10元件和各种用于除错和开发的介面。这块板和Altera的Stratix开发板很相似,作为Nios开发套件的一部分,但是为Be Here的特殊需求进行了修改。电路板上的连接允许直接和多种不同的DSP评估板相连接,以及直接和必须的摄影机和显示元件相连接。

Be Here最新的产品包括具有独家的图像处理技术的H.264压缩,这是视讯会议整体方案的一部分。正如前面所述,这部分的设计用相对昂贵的DSP元件无法满足制造成本的目标。然而在Stratix FPGA之外使用成本更低和能力更低的DSP,就可以满足成本目标。然后设计问题就变成了一种划分的问题:决定哪种功能(代表演算法「热点」)是最适合于用FPGA实现,将那些功能转换为适合FPGA的更低层次的硬体描述,把较不关键的演算法留给成本更低的DSP去实现。

如早期的每个DSP应用中,最佳的方案是混合处理器设计,应用性能不太严苛的零件(包括作业系统、网路协定堆叠、使用者介面、视讯Codec和POT控制)都由主微处理器完成。大计算量的零件(包括图像纠正、图像观看产生和压缩/解压缩加速)必须採用高端DSP,或是採用FPGA中的专有硬体。这需要多种功能和硬体设计方法和工具的知识,但要依性能为成本提供最大的效益。

对于系统中的每种处理器类型(标准处理器、DSP和FPGA),要考虑不同的优点、劣势和所需的设计技能水准。例如,虽然DSP是软体可编程的,对工具的初始投入很低,但是它们需要一些具有DSP专业设计技术的专门人员,通常需要撰写组合语言程式的技能。另一方面,FPGA在设计时间和工具专业程度上需要相对大的投入,尤其当使用硬体设计语言作为主要的设计输入模式时,更是如此。

然而当和专业ASIC设计的专业人员和工具投入相比,FPGA显然是成本更低和风险更低的专用硬体开发方案。的确,对这种产品,选择FPGA的主要因素是设计处理相对比专用ASIC的方式来的简单和低风险。而且,通过移植到Altera HardCopy ASIC,Be Here也降低了制造成本,实现了类似ASIC的价格/性能比。

FPGA提供了和设计过程相关的其他优势。在整个开发过程中使用FPGA,团队也能够逐步地导入和验证以前在软体中进行原型设计的演算法。这是手工完成的(手工把C程式码转化为更低阶的HDL),但是採用C语言的设计工具(见下图)还是可以更好地加快了这个设计过程。

为了加快硬体开发和支援叠代方式进行设计,Be Here设计了专用的开发板,允许通过连续的原型处理图像资料,从现有的高解析度摄影机和安装在高端个人电脑中的图帧撷取卡开始(运行原型图像变形和显示软体),然后进行更全面的图像处理链,包括专门设计的整合了图像变形的摄影机(在FPGA上运行)。显示仍然在开发PC中完成──还是为原型设计服务的用途。

这种叠代方式的重要优点是能够一次一个单元地改变设计(例如把演算法移至FPGA中)。在这个专案中,开发者从用原型的专用摄影机替代现成的摄影机开始,用开发卡把资料发送给图帧撷取卡,好像它是现成的摄影机。这允许用新的镜片系统验证系统,而不会改变显示链中的其他任何部分。软体零件然后逐渐从软体原型实现移至FPGA中,每个部分在进入下一步之前都会经过验证。这种方式大大地缩短了除错时间,降低了引入难以跟踪的系统级错误的风险。

 採用C语言的设计和原型工具加快开发
採用混合硬体/软体方案的试验可能是耗时的过程,因为过去软体发展方式和硬体设计(包括FPGA的设计)所需的低阶方式之间是分割开的。在上述的例子中,最终的软体/硬体设计是软体和硬体原始档案的集合,它们不易于通过单一的工具组进行编译、模拟和除错。另外,因为硬体设计过程是效率很低的,硬体和软体设计週期可能是不同步的,系统介面和基本软体/硬体划分和演算法必须要较早地确定下来。

然而,随着採用C语言的FPGA设计工具的发展,现在有可能对很大一部分的应用使用类似软体的设计工具和标准C语言,尤其是那些本身就是演算法的设计部分,更是如此。后期的性能调整可能引入手工编写的HDL程式码替代自动产生的硬体(正如DSP用户会用手工编写的组合语言替代更高级的C程式码)。因为设计能够直接从C程式码编译成初始的FPGA实现,硬体工程师需要进行性能调整的时刻更推后了,总体上系统可以用更高生产力的软体设计方法来设计。

像CoDeveloper™(来自Impulse Accelerated Technologies)这样的工具允许C语言的应用编译来设计硬体,以FPGA网表形式,也包括使用高度平行和多处理应用所需的C语言扩展。对于包括嵌入式处理器(如Altera的Nios软式核心处理器)的目标平臺,CoDeveloper可以用来产生必要的硬体/软体介面,及产生特定过程的低阶硬体描述。

这些工具和硬体/软体方法成功的关键一般是软体和硬体处理资源的合理划分。好的划分策略不仅要考虑给定演算法零件的计算量需求,而且要考虑资料频宽需求。这是因为硬体/软体介面可能是主要的性能瓶颈。

利用适合于高度平行应用的编程模型也是很重要的。虽然用传统的编程方法如远端程序唿叫(RPC)把专门的功能交由FPGA处理是很好的,但是研究表明交替的资料流程导向的通讯方式是更有效率的,更不会给应用引入阻塞或造成锁死。在一些情况下,这意味着要重新从整体考虑应用,寻找新的方式加快资料的搬移和处理。然而这么做的结果是很有成效的,例如,通过增加应用层级的平行度,利用可编程应用资源的优势,使得普通演算法比纯软体实现提高几个数量级是可能的。

在这类应用的开发过程中(或重新设计),设计工具可以用来视觉化和除错多个平行过程的互连性。例如,应用监视能够提供应用和过程的整体情况,好像在标准C除错器控制下。这种工具能够确定代表应用瓶颈的高资料传输量的区域,帮助量化给定划分方案的结果。当这些工具和类似的软体性能分析方法相结合,允许特定区域的程式码进行确定,获得详细的分析或进行性能调整。在开发后期週期精度或指令集模拟器的使用能够帮助进一步最佳化应用。  范例:边缘检测图像滤波器
为了演示如何使用这类工具把演算法过程移到FPGA中,可以考虑图像滤波的问题,在这个图像滤波中输入图像资料流必须非常快地进行处理(一般是对一个「视窗」的相临图元进行一些定义的计算),产生转换的图像流。这种问题可能涉及大量的运算,但是也需要大量的频宽。另外,最终的实现不必为了增加整体性能而牺牲资料传输量。

本范例中选用的特定的图像处理演算法是图像捲积演算法,它在一些图像处理演算法中是关键的一个步骤,是这类其他图像处理滤波器的代表。

我们使用CoDeveloper把原有的C程式码转换为适合于所选FPGA硬体编译的版本,并对所需的C语言进行硬体编译。我们利用Be Here的FPGA开发板(如上述)及Altera的标准Nios开发套件(使用Stratix和Cyclone FPGA)来完成这个试验。

在这个测试中进行的指定的捲积是边界检测功能,它对3×3的视窗进行组合,处理来源图像中的每个图元。C语言描述的两个流水线硬体过程来说明这个过程。一个过程从来源图像(按图元流读出)产生一列匹配图元,同时另一个过程接收第一个过程的结果,对每个图元视窗进行捲积,产生输出图像,由第二过程输出显示的捲积图元流来表示。过程和串流採用Impulse C函式库中符合C语言的流式I/O副程式来声明和读写。

因为演算法是用标准C语言(加上Impulse™函式库),我们可以从软体测试应用开始,它在桌面模拟环境上运行图像演算法。这种测试应用把两个和图像捲积功能相关的过程和软体测试平臺过程相结合(它能够编译和作为PC应用或Nios处理器上的嵌入式应用运行),从TIFF格式档中读取资料进行处理。这种测试被建立和用标准桌面除错工具和CoDeveloper应用监视器(见下图)来运行。在进入下一步和对目标FPGA平臺进行编译之前,要验证结果。

 

 

图二:应用监视有助于除错和分析多种平行过程。
 

 

对硬体进行编译
用标准桌面工具模拟完功能之后,我们准备用Altera Stratix原型板在混合FPGA/处理目标上实现该应用。Altera Nios开发套件包括编译、合成硬体和软体(包括自动产生表示硬体过程的HDL原始码和表示软体测试过程的C原始码)至FPGA目标所需的所有硬体和软体。当和Impulse Codeveloper相结合时,Altera提供的软体包括从我们的C原始档案中编译和执行测试应用所需的一切。

我们第一步是为图像处理器本身的硬体。因此,我们在CoDeveloper工具中选择Altera Nios平臺支援套件,处理相关的Impulse C原始档。这会得到大约1200行的产生RTL和相关硬体/软体介面原始档。

接下来,用Altera Quartus统计创建一个新的专案,产生一个包括必要週边的Nios处理器核心(使用Altera的SOPC Builder)。CoDeveloper的导出软体和导出硬体特性把从CoDeveloper产生的硬体和软体档输出到新创建的Quartus专案中。使用Altera模块方框图工具,我们通过Avalon晶片内匯流排把产生的硬体处理和Nios处理器相连接。

包括Nios处理器和产生硬体的完整的系统用Altera的Quartus工具进行合成。应用的软体部分(标准C语言版的图像滤波器和包括主函数的测试功能)也导入到Quartus项目中,使用包括在内的Nios编译器进行编译。

最后,用Altera工具产生bit档,通过提供的平行埠缆线下载到平臺上,然后供电运行。联合使用CoDeveloper和Altera提供工具的设计流程如下所示:

 

 

图三:CoDeveloper从C原始码产生可合成的硬体描述和硬体/软体介面。

 


在本例中,两个图像滤波过程显示了管线,结合由CoDeveloper C至硬体的编译器自动产生的(过程级)管线可获得每两个FPGA时钟週期的最佳的单图元图像处理速率,转换为全512×512图像大约需10ms的处理速度。

当然,任何在FPGA上实现的任何演算法的绝对性能要取决于I/O及演算法本身。我们的图像滤波器测试例子中图像资料从在Nios上运行的测试产生器,通过Avalon晶片内互连传送到产生的FPGA硬体,它的有效传输量比上述的最大图元率低很多。另一种演算法,图元资料直接从FPGA硬体介面进行转换,可以获得和最佳结果最接近的结果。因此,考虑硬化划分的频宽限制是很重要的,可能的话在硬体进行测试。如CoDeveloper的工具能够进行这样的评估,试验又快又容易。

 结论
现代的大规模FPGA已经验证能够胜任先进的大计算量的演算法和应用。因这些元件可以作为现有微处理器和DSP的补充(或替代)。最佳的软体导向设计工具的发展使得FPGA作为软体/硬体应用更受关注,大大地缩短了创建混合硬体/软体原型的时间和减小其所需的专业性。

相关推荐

没有退路的FPGA与晶圆代工业者

FPGA  晶圆代工  2014-01-03

采用FPGA的可编程电阻的设计结构分析

FPGA  电阻  2013-09-24

从FPGA的制程竞赛看英特尔与Fabless的后续变化

FPGA  Fabless  2013-07-16

物联网融合自动化推动高效生产模式变革

物联网  FPGA  SoC  2013-07-09

14纳米FPGA展现突破性优势

14纳米  FPGA  2013-06-20

高清视频监控FPGA应用迎来小高峰

视频监控  FPGA  2013-06-20
在线研讨会
焦点