采用FPGA解决DSP设计难题
设S为连续的输入样本流,Y为经滤波后产生的输出样本流,那么n和k则对应特定的瞬时时间。这样,若要计算时间n时的输出样本Y(n),则需要一组在N个不同时间点的样本,即:S(n)、S(n-1)、s(n-2)、…s(n-N+1)。将这组N个输入样本乘以N个系数并求和,便可得出最终结果Y。
图2是一个简单的31抽头FIR滤波器(长度N=31)的方框图。
在选择滤波器的理想长度和系数值时,有多种设计工具可供使用。其目的是通过选择适当的参数来实现所需的滤波器性能。参数选择最常用的设计工具是MATLAB。一旦选定了滤波器参数,就可以用数学等式实现。
实现FIR滤波器的基本步骤包括:对输入数据流采样;在缓冲区组织输入样本,以便让每个捕捉到的样本与每项滤波器系数相乘;让每个数据样本与每项系数相乘,并累加结果;输出滤波结果。
使用“相乘累加法”在处理器上实现FIR滤波器的典型C语言程序,如下列代码所示:
/**捕捉输入数据样本*/datasample=input();/**将新数据样本装入缓冲器*/S[n]=datasample;/**将每个数据样本与每项系数相乘并累加结果*/y=0;for(i=0;i{y+=k[i]*S[(n+i)%N];}n=(n+1)%N;/**输出滤波结果*/output(y);
图3所示的实现方案被称为相乘累加或MAC型实现方案。这基本上就是用传统的DSP处理器实现滤波器的方法。采用内核时钟速率为1.2GHz的典型DSP处理器并以这种方式实现的31抽头FIR滤波器的最高性能约为9.68MHz,或最大的输入数据率为968MS/s。
而FPGA提供了许多不同的实现和优化选择。如果需要高资源效率的实现,MAC引擎法则相当理想。还是以31抽头滤波器为例来说明滤波器规范对所需逻辑资源的影响,这种实现方案的方框图如图4所示。
这种设计需要存储器存储数据和系数,可以混合采用FPGA内部的RAM和ROM。RAM用于存储数据样本,故而采用循环的RAM缓冲器实现。字的数量与滤波器抽头数相等,位宽按样本大小设置。ROM用于存储系数。在最糟糕的情况下,字的数量与滤波器抽头的数量相等,但如果存在对称,则可以减少字的数量。位宽必须足以支持最大的系数。因为数据样本和系数数据都随每个周期改变,所以需要全乘法器。累加器负责将产生的结果累加起来。因为随着滤波器采集数据,累加器的输出会随每个时钟周期改变,所以需要捕捉寄存器。当全套N个样本完成累加后,输出寄存器负责捕捉最终结果。
如果采用MAC模式,DSP48则非常适用,因为DSP48Slice内含输入寄存器、输出寄存器和加法器单元。实现31抽头MAC引擎需要的资源包括一个DSP48、一个18kb块RAM(blockRAM)和9个逻辑片。另外,还需要一些逻辑片用于采样、系数地址生成和控制。如果FPGA内置有600MHz的时钟,则在一个-3速度等级的Xilinx7系列器件中,该滤波器能够以19.35MHz或1,935MS/s的输入采样速率运行。
如果系统规范需要更高性能的FIR滤波器,则可采用并行结构来实现。图5显示了直接I型实现方案的方框图。
直接I型滤波器结构能够在FPGA中实现最高性能。这种结构(通常也被称作脉动FIR滤波器)采用流水线和加法器链,使DSP48Slice发挥出最高性能。输入馈送到用作数据样本缓冲器的级联寄存器;每个寄存器向DSP48提供一个样本,然后乘以对应的系数;加法器链存储部分乘积,然后依次相加,从而得到最终结果。
这种设计无需外部逻辑电路支持滤波器,并且该结构可扩展用于支持任意数量的系数。因为没有高扇出的输入信号,所以这种结构能够实现最高性能。实现31抽头FIR滤波器仅需要31个DSP48逻辑片。如果FPGA内置有600MHz的时钟,则在一个-3速度等级的Xilinx7系列器件中,该滤波器能够以600MHz或600MS/s的输入采样速率运行。
从这个实例可以清晰地看出,FPGA不仅在性能上显著超越了传统的数字信号处理器,而且要求的时钟速率也显著降低(因此,功耗也显著降低)。
这个实例只反映了采用PFGA实现FIR滤波器的两种技术。为了充分利用数据采样率规范,可对该器件进行进一步定制,此时,数据采样率可在连续MAC运算极值和全并行运算极值之间任龋用户还可考虑在包括对称系数、插值、抽癣多通道或多速率的资源利用和性能方面进行更多的权衡取舍。XilinxCOREGenerator或SystemGenerator实用工具可以帮助用户充分发掘这些设计变量和技术。
在传统DSP和FPGA之间选择
传统的数字处理器已经有多年的应用历史,当然具有为特定问题提供最佳解决方案的实例。如果系统采样率低于数kHz且为单通道实现,DSP可能是不二之眩但是,当采样率增加到数MHz以上,或者如果系统要求多通道,FPGA就越来越具优势。在高数据率条件下,DSP可能只能勉为其难地在不造成任何损耗的情况下采集、处
FPGA IP 嵌入式 PLD CPLD SoC 数字信号处理 消费电子 相关文章:
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)