使用FPGA实现DSP功能的简单方法

本文作者:admin       点击: 2009-09-10 00:00
前言:

使用FPGA建构采用DSP架构的系统会有一定难度,经常会出现进度推迟的情况。设计、整合、验证、功能需求变化以及投产过程中都有可能出现意想不到的进度推迟。现在,有一种FPGA开发工具,它可缩短产品开发周期,解决了产品生命周期中很多常见的难题。

FPGA优化DSP算法的复杂性

大家都知道FPGA在可编程平台上具有最好的DSP性能,但其缺点是,在FPGA中优化DSP算法是一项比较困难的工作。直到现在,都需要将算法导入HDL,然后对RTL功能仿真进行验证,以匹配高阶模拟测试向量,接着再开始时序验证过程。当所需要的时钟速率越高,管线和电路最佳化工作就越多。时序逼近需要进行反复迭代,因此,也需要进行多次编译。时序逼近结束后,必须再次进行功能验证。如果必须同时处理多个信道,控制逻辑和内存必须提供相应的分时多任务数据流,以维持所需时钟速率的时序余量,因此,整个过程会更加复杂。如果需要修改通道数量、FFT位数、滤波器长度或者系统时钟速率等参数,那么,通常会对整个设计进行更新,然后再次进行验证。

现在,已经可以自动完成整个过程,提供高阶设计输入,简化测试平台的产生,调整信道数量,优化性能(400+ MHz)。透过参数对过程进行控制,只需要几次点选,重新编译就可以改变时钟速率,增加或者减少信道数量,或者改变所选用的FPGA系列。这将有利于设计重用以及产品规范的后期改动。
由于紧迫的项目进度安排,设计团队通常会感到没有时间采用其他设计方法。需要综合考虑在改进设计和验证方法上的投入,尽量避免在设计、整合和验证过程中出现产品开发推迟。大家对新的设计方法能否达到其所承诺的改进效果,通常都心存疑虑。

如果新的设计方法能够符合现有的设计流程,然后逐步采用,那么就能够大大降低采用新设计方法的风险。这样一来,将可以在特定范围内使用新方法进行设计和验证,与使用传统HDL方法建构的其他设计部分进行整合。逐步地、系统化的采用新方法能够降低风险,实际的效能优势以及相关的学习曲线都会对新方法的应用有所影响。设计团队还可以自由选择只在一定范围内采用新流程,在这些地方,采用新流程的好处要远远大于在新设计流程上的最初投入成本。

新工具解决问题

现在,一种采用Simulink架构,称之为DSP Builder高阶模块集(Advanced Blockset)的新工具,将能够同时实现高阶设计抽象,提高效能,同时获得传统HDL方法的性能优势。这一种新方法采用对DSP算法的高阶行为描述,与DSP理论相似。
这种方法可以同时对设计进行模拟,然后例化到FPGA硬件中。结构图电路描述使用的Mathworks Simulink是非常流行的工具。在Simulink中,使用缓存器、乘法器和加法器等单元,以非常直观和图形化的方式,将很容易地重新建立原理图。图1显示了一个简单的例子,这是一个常用的FIR滤波器,用于DSP处理。

DSP系统中常用的另一种结构是快速傅立叶变换(FFT)。透过高阶模块集,使用图2中所示的蝶形和旋转因子等常用基元模块函式库,将很容易直觉地建构出符合要求的FFT。
图3中所示的FFT电路蝶形图与DSP理论流程图一样。高阶模块集演示函式库中含有FFT设计实例。

在Simulink环境中,将很容易加入虚拟来源,例如,正弦来源、调变来源,甚至是类似噪声的信号。这将可大幅减轻产生测试平台的工作量。可以采用虚拟示波器和频谱分析仪连接输出信号,查看时域和频域响应。透过这种方式,将可很容易地观察FFT或者FIR滤波器响应。测试平台电路并不在FPGA中实现,可以采用任意Simulink模块来实现这些电路。高阶模块集工具还可以与ModelSim整合,比对Simulink设计输出和使用ModelSim产生的RTL。这样,设计人员能够确定RTL与高阶Simulink输出在位层级完全一致。
在很多情况下,DSP数据通路都是多通道的。最常见的要求是I和Q正交信号的平行处理。为实现多通道设计,只需要在设计图中加入“ChannelIn”和“ChannelOut”模块,不需要设计逻辑来实现多个信道之间DSP电路的分时多任务,它将可自动完成。

在Simulink工具中对设计进行模拟,每次运行Simulink档案时,Simulink模拟会在后台启动高阶模块集工具。后台处理非常有趣,高阶模块集工具会使用每一颗FPGA的内置时序模型以及Quartus II设计软件中的速率等级,处理Simulink行为模型,结合所提供的参数,完成RTL时序驱动合成。高阶模块集工具加入实现所提供时钟速率需要的管线缓存器和控制逻辑。透过从高阶模块函式库中加入信道化模块,工具会自动配置FPGA缓存器和控制逻辑,来完成分时多任务,因此,高速时钟滤波器可以处理多个低速数据速率信道。在所有情况下,高阶模块集工具会根据需要,采用乘法器和逻辑资源来提供较大的MMAC/秒,使用参数档中含有的规定时钟速率,完成一定数量信道上的DSP处理。

这些过程都会自动完成,然后将结果传送至Quartus开发软件的TimeQuest时序分析器。在很多情况下,FPGA限定的乘法器Fmax限制了性能等级,这在100多个分接以及16个以上通道的滤波器设计中比较普遍。使用高阶模块集工具一般可以实现超过400 MHz的高性能FPGA,以及240 MHz的低功率消耗和低成本FPGA。

延时在本质上并不是确定性的,高阶模块集需要对此进行调整,以适应所需要的时钟速率和信道数量。然而,需要透过工具在设计模块子集基础上进行管理或者约束延时。这样,用户将可以完成设计,处理好未约束的延时。选择了设计配置和性能等级后,可以约束延时,与周围其他部分实现可预测连接。如果考虑未来设计的灵活性而选择较大的延时,高阶模块集工具能够增加输出缓存器层级来进行匹配。

采用这一种功能,在设计完成后,将很容易进行更新,增加信道,改变系统时钟速率,根据需要导出到其他FPGA组件中。高阶模块集不仅有简单的FIR滤波器,工具中还提供了参考设计和IP模块,内插法和十进制FIR滤波器、CIC滤波器、IIR滤波器、基底2 FFT、非基底2 FFT以及其他DSP功能,以便迅速地进行优化设计。它还可以用于建构复杂的子系统,例如多信道FFT、数字向上变频或者向下变频链,或者峰值因子抑制算法等。军用雷达、广播EdgeQAM、无线基地台和医疗成像等领域采用了高性能、多信道数据通路,这些都是高阶模块集显著提高设计团队效能和灵活性的应用实例。此外还可以在高阶模块函式库中选择使用各种IP模块,或者从基元模块中建构算法。图1显示了基元模块设计流程。

这一种工具功能强大,即使Simulink还不是当前设计模拟的组成部分,也应该考虑使用这一种高度优化的FPGA合成技术。由于可以在规模较大的FPGA设计中插入高阶模块集来实现部分设计,因此,用户可以尝试采用这一种设计方法,降低中断现有设计流程所带来的风险。

这一种设计工具包括高阶模块集,可以免费试用30天。高阶模块集工具中含有很多设计实例,帮助Simulink新用户迅速采用这一种方法。建构高性能滤波器链、FFT或者其他DSP数据通路时,使用高阶模块集不但缩短了设计时间,而且实现了最佳设计。