虽然信号处理一般总是要用到数位讯号处理器,但是,很明显的发展趋势是选择FPGA作为实现高性能、高精度信号处理的平台。
对于很多这类应用,通常是最终选择使用一片FPGA、带有相关DSP处理器或者一组DSP处理器的FPGA。
一般认为可以采用C语言对DSP处理器进行程式设计,这样可以实现非常简单的开发流程,但是,当设计被划分到多个DSP处理器上,或者在DSP处理器和FPGA之间进行设计时,这种优势就会消失殆尽。实际情况是,一片DSP处理器不具备完成大部分基础设施系统所需要的信号处理性能。
这就要求系统设计人员在使用多片DSP处理器和FPGA之间进行选择。后一种选择总是能够实现较低的系统成本和功耗。
图一显示了这些基础设施系统的一个共同点——性能需求超出了传统可程式设计数位讯号处理器所具备的性能。
![《图一 不同的应用有不同的性能、精度、IP和工具需求》](/art/2011/05/111027425610/p1S.JPG)
《图一 不同的应用有不同的性能、精度、IP和工具需求》 |
|
这些系统还有不同的性能和精度要求,以及不同的设计和开发流程。
例如,视频处理需要9至12位精度,一些高端设计需要12位色彩深度。这些设计通常在HDL设计流程中完成,越来越多的使用视频和影像处理IP功能来加速开发流程。
另一方面,军用雷达设计要求尽可能提高DSP性能以及浮点精度,以获得最大动态范围。很多这类设计在MATLAB和Simulink工具中建模,提供适用于FPGA体系结构的浮点功能。
当选择FPGA时,系统设计人员必须了解FPGA矽片体系结构,选择设计工具、IP、功能系统模组以及适用的参考设计,以便能够迅速高效的完成演算法程式。本文介绍一些加速FPGA-DSP设计实现的典型DSP解决方案。
设置FPGA精度以满足您的应用需求
选择符合您的演算法程式精度要求的FPGA-DSP体系结构。应避免按照FPGA供应商提供的任意精度范围来划分演算法程式。
传统上,FPGA体系结构具有固定精度DSP结构,要么浪费宝贵的矽片资源,要么把设计画分到多个模组上,这样降低了系统性能。例如,实现HD视频处理应用时,系统一般只需要9x9乘法运算,而固定精度18x25 DSP体系结构就有些浪费了。浪费了一半的DSP模组。
或者,实现复数乘法器时,在高性能DSP系统电路板上实现用于快速傅里叶变换(FFT)功能的通用构建模组,在很多情况下,需要级联DSP模组才能支援18x25或者18x36复数乘法运算。需要确认DSP模组有足够宽的级联链和累加器宽度,通过专用布线来实现级联链。使用FPGA中的通用布线会产生性能代价。或者,如果级联汇流排/累加器不够宽,您不得不在连接下一DSP模组前采用一个精度位。
有些设计人员会为部分设计实现浮点资料通路。这些功能需要24位或者更高的精度在一个精度格式中实现尾数乘法。
当选择FPGA-DSP体系结构时,确定这一体系结构能够支援多种精度范围,有足够宽的级联汇流排,满足系统精度要求(参见表一)。
(表一) 28nm DSP模组体系结构支援的精度模式
28nm一个‘精度可调D模组 |
三个独立9x9 |
2个汇总模式18x18 |
两个32位解析度的18x18 |
1个独立模式18x25或者18x36 |
一个独立模式27x27 |
最常在FPGA中实现的功能之一是有限冲击回应(FIR)滤波器。非常重要的是,FPGA DSP模组体系结构能够有效的支援高性能、多通道FIR滤波器的实现。 Altera在设计28nm DSP体系结构的一些关键特性时,非常注重FIR滤波器设计,如表2所示。
(表二) 实现FIR滤波器设计的DSP体系结构特性
28nm“精度可调”DS模组 |
优点 |
内部系数寄存器 |
更高的fmax,更少的外部寄存器 |
DSP模组中两级加法器树 |
DSP模组中的加法器树,减少了外部逻辑 |
硬核预加器(18位和26位) |
一半的对称FIR滤波器,乘法器数量减半 |
脉动FIR输出寄存器 |
不需要外部寄存器,实现脉动FIR滤波器 |
出于行销的目的,有的公司宣称按动按钮就能够在硬体中全部实现MATLAB/Simulink设计。但是,他们没有注意到,这需要对设计进行很大的改动才能满足所有时序约束要求。应该采用“时序驱动”Simulink综合引擎。
这一工具不但产生了原始结构的HDL,而且能够非常直观的增加流水线或者时分复用功能,因此,得到的HDL满足了fMAX或者延时约束要求。
Altera的DSP Builder高级模组库就是围绕这些目的来设计实现的。该工具分析Simulink设计描述,为目标FPGA器件生成HDL和位元流,含有时序约束–fMAX或者延时。通过加入流水线寄存器以及适当的时分复用功能来自动完成这一工作,以满足甚至超过要求的时序。
采用DSP Builder高级模组库开发的大规模高性能军用雷达设计不需要手动调整HDL就能够达到时序收敛。
图二显示的例子中,50,000个逻辑单元(LE)的FPGA设计在350 Mhz达到时序收敛。虽然图二中的设计实例只是一个雷达系统的前端,所实现的多相FIR滤波器、FFT和合成器等功能也经常用于很多高性能DSP设计中。
![《图二 50,000个逻辑单元(LE)的FPGA设计在350 Mhz达到时序收敛》](/art/2011/05/111027425610/p2S.JPG)
《图二 50,000个逻辑单元(LE)的FPGA设计在350 Mhz达到时序收敛》 |
|
高清晰视频处理——非常适合由FPGA来实现
对高清晰视频的需求越来越大:
- ●视频监控系统从标准清晰(SD)视频发展到高清晰(HD),具有宽动态范围(WDR)等功能,从而推动了高解析度视频处理功能的需求。在很多工业图像系统中,这一发展趋势也非常明显。
- ●广播视频系统逐步从1080p HD解析度发展到2K、4K和3D解析度,以满足下一代影院和演播室需求。
- ●医疗成像系统解析度也越来越高,需要高性能信号处理功能。
视频处理向1080p HD解析度发展,非常适合采用FPGA实现其功能。为FPGA开发视频设计非常耗时,通过采用图三所示的构建模组、标准视频界面以及参考设计能够显著加速这一过程。
Altera的视频设计工作台包括18个视频功能,支援流视频界面标准,提供6个经过硬体验证的参考设计,以及多种视频开发套件。
采用视频设计工作台,您可以从已有的设计开始工作,在常见功能上重新使用经过预验证的IP,例如,缩放、去隔行和合成等,加入到定制功能中,与从头开发设计相比,在更短的时间内完成设计。
浮点精度:实现高性能DSP
在高性能DSP领域,浮点信号处理速度较慢,但的确是提高动态范围的一种方法。在高级军事STAP雷达、LTE通道卡的MIMO等化器,以及高性能计算等系统中都会有这种情况出现。最近的研究表明,2012年,FPGA DSP设计中浮点信号处理演算法的比例将从10%增长到20%。
浮点处理一般涉及到尾数乘法、尾数归一化/去归一化和指数加法。虽然指数加法/减法非常简单,但是,尾数乘法和归一化操作需要精度高于24位的乘法器。这可以通过级联两个定点DSP模组来实现,也可以配置一个高精度模式的精度可调DSP来实现。
实现浮点精度时,检查DSP体系结构能否在一个DSP模组中支援浮点尾数乘法或者尾数归一化操作。这不但能够节省资源,而且还提高了性能(例如,更高的fMAX)。
FPGA供应商可以利用其体系结构,提供一组高效的高性能浮点构建模组IP内核,如图四所示。
为浮点DSP应用选择FPGA平台时,应认真确定浮点运算的硬体效率以及能否使用构建模组浮点功能。针对浮点DSP实现进行了优化的FPGA DSP体系结构能够提供更高的系统fMAX以及多种浮点功能,大幅度缩短了开发时间。
总结
FPGA供应商提供的DSP解决方案以及市场需要的解决方案都在随时间的变化而不断变化。在开始高性能DSP系统设计之前,应通过不同的晶片供应商来(针对产品及时面市)评估各种DSP解决方案。这不但能够显著缩短设计和开发时间,而且还体现了供应商对DSP市场的承诺。这对于支援和更新复杂系统非常关键。