首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

采用FPGA解决DSP设计难题

采用FPGA解决DSP设计难题

关键字:VHDL   FIR滤波器   DSP   FPGA  
DSP对电子系统设计来说非常重要,因为它能够迅速地测量、过滤或压缩即时的模拟信号。这样有助于实现数字世界和真实(模拟)世界的通信。但随着电子系统进一步精细化,需要处理多种模拟信号源,迫使工程师不得不做出艰难的决策。是使用多个DSP并将其功能与系统的其余部分同步更具优势?还是采用一个能够处理多功能的具有精细软件的高性能DSP更具优势?
由于当今的系统非常复杂,在许多情况下,单DSP的实现方案根本没有足够的处理能力。同时,系统架构也不能满足多芯片系统带来的成本、复杂性和功耗要求。

FPGA已成为需要高性能DSP功能的系统的理想选择。事实上,与单独的数字信号处理器相比,FPGA技术常常能够为高难度的DSP挑战提供大为简化的解决方案。要明白其中的缘由,需要回顾一下DSP的起源以及发展。





专用微处理器

在过去二十年里,传统的DSP架构一直在竭尽全力地跟上不断提高的性能需求的步伐。但随着视频系统大踏步地迈进高清和3D时代,并且通信系统为实现更高带宽已将现有技术发挥到极致,设计人员需要替代性的实现策略。常用于实现数字信号处理算法的硬件不外乎如下三种基本器件之一:微处理器、逻辑电路和存储器。部分设计还需要额外的硬件来实现模数(A/D)和数模(D/A)转换以及高速数字接口。

传统的数字信号处理器是设计用于实现专门目的的微处理器。这类处理器非常适合算法密集的任务,但是性能却受时钟速率和其内部设计顺序性的限制。这限制了它们对输入数据采样每秒最多执行的运算次数。一般来说,每执行一次算术逻辑单元(ALU)运算需要三或四个时钟周期。多核架构可以提升性能,但是提升幅度仍然有限。因此,采用传统的信号处理器设计必须将架构单元重复用于算法实现。对每次执行的加、减、乘或其它任何基本运算,不论是内部还是外部反馈,每次执行都必须循环通过ALU。

不幸的是,在处理当今众多的高性能应用时,这种传统的DSP难以满足系统的要求。在过去为此提出过多种解决方案,包括在一个器件中使用多个ALU,或在一块板上布置多个DSP器件。然而,这些方案往往会造成成本的大幅上升,并且只是把问题推向另一个领域。例如:用多个器件提高性能遵循指数曲线。要让性能提高一倍,需要两个器件。再提高一倍,则需要四个器件,依此类推。另外,编程人员往往从注重信号处理功能转为注重多个处理器与内核之间的任务调度。这样会产生大量的附加代码,而且这些代码会成为系统开销,而不是用于解决眼前的数字信号处理问题。

FPGA技术的引入为解决DSP实现方案日益增长的复杂性带来了福音。FPGA最初开发用于整合和集中分立的存储器和逻辑电路,以实现更高的集成度、更出色的性能以及更高的灵活性。FPGA技术已成为当今使用的几乎每一款高性能系统的重要组成部分。与传统的DSP相比,FPGA是由可配置逻辑块(CLB)、存储器、DSP逻辑片(Slice)及一些其它元件组成的统一阵列构成的巨大并行结构。它们既可以使用VHDL和Verilog等高级描述语言进行编程,也可以在方框图中用系统生成器(System Generator)编程。FPGA还提供众多的专用功能和IP核,用于以高度优化的方式直接完成实现方案。

在FPGA中完成数字信号处理的主要优势在于能够根据系统要求定制实现方案。这意味着对于多通道或高速系统,用户可以充分利用FPGA器件的并行性来实现性能的最佳化,而对低速系统,则可以更多地采用串行方式完成设计。这样,设计人员就能够根据算法和系统的要求来定制实现方案,而不必折衷期望的理想设计来迎合纯顺序器件的诸多局限。另外,超高速I/O通过最大限度地提高从捕捉经处理链再到最终输出的数据流,可进一步降低成本并减少瓶颈问题。

下面以一个同时使用传统DSP架构和FPGA架构的FIR滤波器实现方案为例,来说明每种解决方案的优劣。

数字FIR滤波器实例

有限脉冲响应(FIR)滤波器是一种使用最广的数字信号处理元件。设计人员使用滤波器来改变数字信号的幅度或频谱,通常用于隔离或突出样本数据频谱中的特定区域。从这个角度说,可以把滤波器视为信号的预处理方式。在典型的滤波器应用中,输入数据样本通过小心同步的数学运算与滤波器系数相结合(这取决于滤波器的类型和实现策略),随后数据样本进入下一个处理阶段。如果数据源和目的地都是模拟信号,则数据样本必须首先通过A/D转换器,而结果则必须馈送给D/A转换器。

最简单的FIR滤波器类型采用一系列的延迟元件、乘法器和加法器树或加法器链来实现。

下面的等式是单通道FIR滤波器的数学表达式:





在选择滤波器的理想长度和系数值时,有多种设计工具可供使用。其目的是通过选择适当的参数来实现所需的滤波器性能。参数选择最常用的设计工具是MATLAB。一旦选定了滤波器参数,就可以用数学等式实现。

实现FIR滤波器的基本步骤包括:对输入数据流采样;在缓冲区组织输入样本,以便让每个捕捉到的样本与每项滤波器系数相乘;让每个数据样本与每项系数相乘,并累加结果;输出滤波结果。

使用“相乘累加法”在处理器上实现FIR滤波器的典型C语言程序,如下列代码所示:

/*

*捕捉输入数据样本

*/

datasample=input();

/*

*将新数据样本装入缓冲器

*/

S[n]=datasample;

/*

*将每个数据样本与每项系数相乘并累加结果

*/

y=0;

for(i=0;i{

y+=k*S[(n+i)%N];

}

n=(n+1)%N;

/*

*输出滤波结果

*/

output(y);
返回列表