电子工程专辑
UBM China

FPGA可促进嵌入式系统设计改善实时应用性能

上网日期: 2005年03月01日 ?? 作者: Rodger Hosking and Richard Kuenzler, Pentek Inc. ?? 我来评论 字号:放大 | 缩小 分享到:sina weibo tencent weibo tencent weibo


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友

关键字:实时系统? 可编程逻辑器件? 嵌入式? 现场可编程门阵列?

现场可编程逻辑器件一直是连接高速外设(如宽带A/D和D/A转换器、数字接收器)和实现与嵌入式实时系统中可编程处理器连接的首选电路。FPGA(现场可编程门阵列)尤其适合于处理时钟、同步以及这些专用器件所需的其它各种定时电路。此外,FPGA还非常适合于数据格式化任务,例如串行到并行转换、数据包装、时间标记、多路复用和数据包形成。

不过,随着近来芯片技术的进步,不仅芯片的速度和密度有很大提高,而且FPGA的基本作用也发生了戏剧性的变化。今天,主要FPGA供应商提供的所有最新器件基本上都包括针对数字信号处理(DSP)应用的构造模块,它们包括专用的乘法引擎和灵活的存储器结构,如存储器块、双口RAM、FIFO存储器和移位寄存器。

的确,DSP功能已经成为FPGA最重要的产品策略之一,这一点可从FPGA供应商近几年在此技术上的工程和营销投资的急剧增长上窥见一斑。

图1:Pentek公司带有FPGA的6235型双通道数字接收器

在跟上DSP潮流之后,FPGA供应商有时喜欢发表一些有关通用型可编程DSP芯片会消失的预测。不过,实际上,对实时嵌入式系统中的很多种任务而言,可编程DSP仍将是一个更好的选择。作为例证,目前上市的最新一代FPGA芯片上仅由标准RISC处理器内核、逻辑块和可配置存储器资源组成。这主要是因为对一个具有明确特性、并得到良好支持的标准处理器进行编程仍然要比对FPGA中某种组合的信号处理单元进行编程要容易的多。

不过,FPGA对某些DSP功能的处理效率更高,尤其是对那些能够利用并行运算的定义良好的算法。凭借这一优势,FPGA现在已经确立了它在嵌入式系统产品设计中的地位,而且常常直接嵌入到信号流处理路径中。因此,用FPGA中新获得的DSP资源来处理原先安排给可编程处理器的一些数字信号处理功能可以认为是一个快速的技术飞跃。

FPGA在软件无线电中的应用

图1展示的是一个附属于quad-DSP处理器VME主板的双通道数字接收器子卡模块。该模块带两个采样速率高达100MHz的12位A/D转换器和两个数字下变换器,它们用来翻译和滤除宽带数字化输入的特定部分。

卡上的一个FPGA既接收两个A/D转换器的实际输出,也接收两个数字下变换器的复杂基带输出。该FPGA实现了VIM(Velocity Interface Mezzanine)接口,从而可以把数据直接送入处理器主板上的各个DSP或PowerPC,该主板上的FIFO缓存器支持速率高达400MBps的DMA块数据传输。

由于看重增加DSP功能,因此该产品选用FPGA时自然就选择Xilinx公司的Virtex-II系列芯片。XC2V3000上有96个专用18×18乘法器模块和超过200KB的RAM块,即便应对一些更复杂的应用,也可以提供充足的信号处理资源。

在该模块的基本出厂配置中,该FPGA仍然执行传统的定时、格式化、及为板上的各种器件提供胶合逻辑的任务。因为这些功能相对简单,所以只消耗6%的可编程逻辑资源。这就为增加DSP算法留下了94%的逻辑块、全部96个乘法器、以及实际上全部的RAM块。

为了帮助证明这些未用资源所能提供的能量,曾经启动了一个在这些资源上实现一个高性能FFT引擎的工程项目。由于通信、雷达和信号智能系统都利用FFT来进行跟踪、调整和图像处理操作,因此FFT一直是衡量处理器性能的最流行算法之一。

FFT接收大量的输入时域采样并将它们转换成大量的输出频域采样,因为计算相当复杂,所以它占用了大量DSP处理资源并成为选择采用FPGA实现的一个重要原因。

构造FFT

执行FFT计算最有效的方法之一就是基数为4的“蝶形”算法的重复执行。每次蝶形运算中,四个输入数据点与一个正弦表中的多个系数进行相乘,随后结合产生四个输出点。这种蝶形运算会一直重复,直到所有输入点都得到处理。蝶形运算每次处理四个输入点,表示一个单独的“级”。为了实现一个4,096点的FFT,需要六级的蝶形运算。

就计算FFT来说,FPGA优于常规可编程处理器的一点原因是可以提供大量乘法器进行同步计算。在上面提到的4,096点的例子中,为了平行实现全部六级FFT蝶形运算,总共需要60个乘法器。XC2V3000有96个可用的乘法器,这也很清楚地解释了为什么FPGA通常比只带有二或四个硬件乘法器的标准DSP处理器更胜一筹的原因,特别是针对类似FFT的算法而言。

因为FFT本质上是一个面向RAM块的算法,所以当一个自由寻址的RAM支持快速访问所有的输入和输出采样时,FFT的运算非常有效率。然而,这个随机数据可用的理想模型和来自于A/D转换器的顺序输入数据采样相矛盾。幸运的是,FPGA可配置的块RAM资源能够重组成新的存储器结构,从而把适宜的采样送进并行的四个蝶形引擎的输入数据存储器端口,这样就解决了数据可用性问题。这个专有的存储器架构允许随后的输入模块以连续的systolic方式得到处理,使得分布在六个级别的所有乘法器都可以在工作时间内发挥高效性。

图2:在Xilinx公司Virtex-II FPGA上实现的实时FFT引擎

一个FPGA时钟周期内,每个基数为4的蝶形运算处理四个输入采样,因而当FPGA处理时钟等同于A/D时钟时,上述架构的运行速度比实时快四倍。有了合适的硬件多路复用方案,同一个FFT引擎可用来处理四个,而不是单独一个输入数据流。

在介绍的产品样例中,两个A/D转换器和FPGA的时钟均为100MHz,该FPGA只发挥了一半的工作潜力。但是只要稍加外力,该引擎就可通过设定完成两个通道50%的输入重叠处理工作,从而使硬件得到充分利用。在这种情况下,对每个FFT而言,管线执行时间达到令人吃惊的10.24微秒。这比以100MHz采样速率收集 4,096个输入点所花的时间快四倍,与在实时环境中完成四个FFT的时间等同。

FFT改进方法

由于96个乘法器当中只有60被用来进行FFT运算,因此可以利用其余乘法器实现附加的功能。在四个合成输入流的每个流上,可以加入一个可选的Hanning窗口,这需要八个额外的乘法器。因为用于FFT和用于Hanning窗口的系数采用不同的FPGA表格存储器,所以交替输入窗口功能可用来代替Hanning窗口。

再选用八个乘法器来完成FFT输出端的可选功率计算,在这里,四个输出结果中的每一个的实部和虚部都要平方后再相加。最终,将FFT 50%的输入重叠处理后的两个输出结果进行平均,以改进信噪比特性。在FPGA的输出端,一个多路选通器允许每个信号处理级的结果直接与处理器接口。图2显示了图1所示的接收子卡上FPGA内部的所有基本功能模块。

FPGA非常适合FFT运算

该FPGA能以10.24微秒的速度完成一个4,096点的合成FFT运算,性能超过运行在400MHz G4 PowerPC上的一个优化FFT算法基准一个数量级。

为了达到一个优于90dB的计算动态范围,多种技术都被用来减小FPGA整数算术中固有的舍入和截断误差。在通过配置可用的FPGA资源对执行速度进行优化之后,整个设计利用了XC2V3000器件96个乘法器中的76个,使用了99%的逻辑片单元,以及97%的RAM块。

作为对Pentek公司6235型双通道宽带接收器的一个安装选项,这个基于FPGA的FFT引擎为许多信号处理系统提供了一个非常强大的前端功能。它比通用DSP快十倍的执行速度优势能够大大减小系统的成本、功率和设计复杂度,同时提高系统的性能,这个策略对于卸载可编程处理器中定义明确的CPU密集型任务是极其有效的。随着这些带DSP功能的FPGA进入板级产品,采用该策略的设计将越来越常见。

作者:Rodger Hosking和Richard Kuenzler


Pentek公司







我来评论 - FPGA可促进嵌入式系统设计改善实时应用性能
评论:
*? 您还能输入[0]字
分享到: 新浪微博 qq空间
验证码:
????????????????
?

关注电子工程专辑微信
扫描以下二维码或添加微信号“eet-china”

访问电子工程专辑手机网站
随时把握电子产业动态,请扫描以下二维码

?

5G网络在提供1Gbps至10Gbps吞吐量方面具有很好的前途, 并且功耗要求比今天的网络和手机都要低,同时还能为关键应用提供严格的延时性能。本期封面故事将会与您分享5G的关键技术发展,以及在4G网络上有怎样的进步。

?
?
有问题请反馈
推荐到论坛,赢取4积分X