Direct Form I 滤波器能够在 FPGA 中实现最高性能的设计。这种结构通常也称为收缩型 FIR 滤波器,它采用流水线和加法器链让 DSP48 Slice 发挥出最高性能。输入首先馈送到用作数据样本缓冲器的级联寄存器。每个寄存器随后向 DSP48 提供一个样本,随即乘以对应的系数。加法器链负责存储部分结果,然后顺序相加,得到最终结果。
这种设计无需外部逻辑支持滤波器,且该结构可扩展用于支持任意数量的系数。由于没有高扇出的输入信号,故这种结构能够实现最高性能。实现 31 抽头 FIR 滤波器仅需要 31 个 DSP48 Slice。如果 FPGA 内置有 600MHz 的时钟,则在一个 -3 速度等级的赛灵思 7 系列器件中该滤波器能够以 600MHz 的输入采样速率运行,即 600Msps。
从这个实例可以清晰地看出 FPGA 不仅在性能上显著超越了传统的数字信号处理器,而且要求的时钟速率也显著降低(因此功耗也显著降低)。
这个实例只反映出采用 PFGA 实现 FIR 滤波器的部分技巧。为充分利用数据采样率规范,可对该器件进行进一步的定制,此时数据采样率可在顺序 MAC 运算极值和完全并行运算极值之间任取。用户还可考虑在涉及对称系数、内插、抽取、多通道或多速率的性能和资源利用方面进行更多权衡取舍。赛灵思 CORE Generator™ 或System Generator 实用工具可帮助用户充分发掘这些设计变量和技巧。
在传统 DSP 和 FPGA 之间决策
传统数字处理器已经有多年的应用历史,当然不乏为特定问题提供最佳解决方案的实例。如果系统采样率低于数 KHz 且为单通道设计,DSP 可能是不二之选。但是,当采样率增加到数 MHz 以上,或者系统要求多通道,FPGA 就越来越具优势。在高数据速率条件下,DSP 只能勉为其能地在不造成任何损耗的情况下采集、处理和输出数据。这是因为在处理器中存在大量共享的资源、总线,乃至内核。而 FPGA 能够为每项功能提供专门的资源。
DSP 是基于指令而非时钟的器件。一般来说,对单个样本上的任何数学运算需要三条或四条指令。数据必须经输入端采集,发送到处理内核,每完成一次运算需循环通过内核,然后发送到输出端。相比之下,FPGA 基于时钟,故每个时钟周期都有可能在输入数据流上进行一次数学运算。
由于 DSP 的运算以指令或代码为基础,编程机制为标准的 C 语言,或者在需要更高性能的情况下,用低级汇编语言。这种代码可能包含高级决策树或者分支运算,难以在 FPGA 中实现。例如现存的大量用于执行预设功能或标准的代码,比如音频和语音编解码器。
FPGA 厂商和第三方合作伙伴已经意识到将 FPGA 用于高性能 DSP 系统的优势。如今已有许多 IP 核广泛应用于视频、图像处理、通信、汽车、医疗和军用等大部分垂直应用市场。与把高级系统方框图映射成为 C 语言代码的DSP 设计相比,将高级系统方框图分解为 FPGA 模块和 IP核会更加简便易行。
从 DSP 转向 FPGA
考查一些主要标准有利于在传统 DSP 和 FPGA 之间做出决策(见表 1)。
软件编程人员的数量远远超过硬件设计人员的数量,这已是不争的事实。DSP 编程人员的数量与 FPGA 设计人员的数量之间的关系也是如此。不过让系统架构师或者 DSP设计人员转为使用 FPGA 的难度并不像让软件编程人员转为从事硬件设计那么大。有大量的资源可以显著简化 DSP算法开发和 FPGA 设计工作。
主要的障碍是转换问题描述和解决的思路,即从基于样本和事件的方法转向基于时钟的方法。如果能够在设计流程的系统架构和定义阶段就能够完成,对这种转换的理解和应用就会简单得多。由彼此隔绝的不同工程师和数学专家负责
系统架构的定义,DSP 算法的开发和 FPGA 的设计是司空见惯的事情。当然,如果每个成员对其他开发
小组成员面临
的难题有一定程度的认识的话,这个过程会顺利得多。
要支持 FPGA 实现方案,架构师不需要高度精通FPGA 设计。只需要对器件、资源和工具有基本的理解即可。通过提供的多种专题课程,可以快速进阶。
具体的进阶方式取决于工程师的背景和专业知识。具体就 DSP 类课程而言,就有算法开发课、高效设计课和System Generator 设计课。如果用户期望成为在 FPGA 进行 DSP 设计的高手,Hardent 和其他赛灵思授权培训合作伙伴提供的三大课程可帮助您快速入门:DSP 入门、使用赛灵思 FPGA 完成 DSP 设计的必备技巧、使用 SystemGenerator 进行 DSP 设计。