尽管当今的高性能FPGA具有专用硬件来实现乘累加(MAC)等数字信号处理(DSP)算法基本构建模块,但设计人员还需要在寄存器传送级(RTL)上加速算法的实现。那么,如何才能从ANSI C++建模算法迅速转换到运行在FPGA硬件中的RTL呢?本文告诉你。
Stratix III FPGA芯片图。
StratixIV FPGA芯片图。
在本文第二部分的讨论中,我们讨论了如何利用Catapult的ASIC功能和Altera加速库自动顺利实现这一设计过程。在接下来的第三部分讨论中,我们将讨论如何选择调度所需要的运算以满足时钟频率约束,以及如何采用高级综合资源约束来减小后端走线延时。
选择调度所需要的运算以满足时钟频率约束。这样,对于频率更高的时钟,自动选择流水线元件。此外,可以采用高级综合资源约束来加入其他的流水线级,以减小后端走线延时。
高级综合过程在技术上具有预见性,依靠下游RTL综合来推断相应的FPGA资源,编写最终自动生成的RTL网表。例如,在高级综合过程中选择的三级流水线乘法器经过网表化处理,实现乘法运算,其后是三个寄存器。然后,对寄存器和DSP模块内置寄存器重新定时,采用下游RTL综合来推断该网表相应的硬件资源。
这一流程的限制之一是C++语言不含有实现FPGA DSP模块对应的“宏”内置运算操作,例如乘累加(MAC)和乘加法(MULT-ADD)等。而且,RTL综合工具的推断功能目前只能推断出DSP模块的基本配置。Stratix III FPGA等器件支持的高级模式可实现饱和以及取整等运算,只能在RTL中直接例化DSP宏才可以使用这些模式。
Catapult C综合硬件加速流程使用Altera加速库,避免了这些限制,使设计人员能够直接从一组纯粹的ANSI C++函数中找到FPGA DSP模块。所有这些详细的DSP宏例化、配置和接口都非常清晰,很少的投入就可以实现最佳设计。
在接下来的第四部分讨论中,我们将介绍Stratix III FPGA的主要技术优势,敬请留意。