使用面向FPGA的OpenCL设计两百万点频域滤波器

  作者:Dmitry Denisenko 时间:2015-11-09来源:电子产品世界

编者按:快速傅里叶变换(FFT)是信号处理应用的基础。FPGA供应商一直以来提供了运行良好的FFT库,处理适配到FPGA片内存储器中的大量数据。但是,如果数据规模太大,应该如何应对? 为解决这一问题,FPGA设计人员现在必须要做出设计决定,这些决定互相纠缠在一起,例如,片内FFT内核的配置选择,其数量,它们怎样连接并访问外部存储器,多个内核之间的同步等。分析所有这类设计决定就是要能够很好的结合现有产品,在HDL中编程,这会非常耗时,而且带来了性能问题。采用OpenCL等高级编程语言,能够很快的完成系统设计分析。本

除了复制一个片外FFT计算流水线,还将以下部件加入到系统中:

  1. 频域的复数乘法被加入到第三个F1T模块中。coef缓冲保存了两百万复数乘法系数。

  2. 增加了I/O输入和I/O输出内核,对万兆以太网通道上的外部存储器负载进行逼真的建模 。采用这些内核,能够继续纯软件开发,在内核计算流水线完全优化好之后,再集成以太网通道。I/O输入内核在每一时钟周期产生一个采样,I/O输出每一时钟周期占用一个采样。

  正如片外FFT试验所示,只能适配两个F1T模块,采用POINTS=4。因此,要完成全部计算,数据要通过硬件两次。对于2M点数,系统总吞吐量只有120 MSPS,低于目标150 MSPS。通过把数据长度减小到1M点,能够适配POINTS=8版本,吞吐量达到198 MSPS。这表明,只要能够让POINTS=8版本适配2M点数,就还能提高性能!

  在图2中,找出全流水线的优化结构是整个设计过程的下一步。首先能够提高的是去掉tmp3缓冲。两边都以同样的方式访问它(转置写和读操作)。因此,可以通过通道把第二和第三个F1T模块直接连接起来。这要求转置内核将其输出写入到外部存储器中,或者通道中,获取内核也是相似的修改。这类修改是由主机动态控制的,因此,可以使用获取内核的一个物理例化。注意,这改变了与外部存储器的连接。但是,根本不用对此担心——OpenCL编译器已经为系统生成了高效的定制外部存储器互联。

  进一步的改进是,把第二个转置“T”从写到tmp1改为从tmp1读(tmp1中的数据以不同的方式存储,但是效果一样)。这样,转置就不需要本地存储器缓冲了。

  原来是通过两级来实现转置的:第一,所需的数据被装入到本地存储器中,然后,使用转置地址从本地存储器读取。为高效的使用这类流水线,OpenCL编译器自动将本地存储器系统的缓冲加倍。以这种方式,流水线的装入部分能够将数据装入到一个副本中,而读部分能够从另一副本读取以前的数组。自动双缓冲非常适合的转置算法,但是太昂贵了。相反,重新编写转置内核。这一内核只需要一个缓冲,支持同时读写多个数据点。对这一转置内核的介绍已经超出了本文的范围。

  经过以上修改后,能够采用POINTS=8配置适配2M点的FFT,吞吐量达到164 MSPS。

4 调度

  只能适配F1T的两个副本。图3显示了怎样调度数据流,以便完全利用流水线。注意,在稳定状态下,流水线交替处理第二和第三组数据,不需要额外的缓冲。由CPU上运行的主程序控制这种调度,使用动态分析工具进行验证。

5 缓冲分配

  在OpenCL系统中,主程序控制了包含那个缓冲区的DDR块。DDR块只要不是同时读写,在读操作或者写操作时的效率最高,因此,在两个DDR块之间按以下原则来分配5个缓冲:

  • DDR块#0分配input和tmp2。

  • DDR块#1分配tmp1、coef和out。

  给DDR块分配一个缓冲就是在OpenCL主程序中修改一行代码。编译器和底层平台完成其他任务。能够自动完成这一过程,在2-DDR和4-DDR电路板上进行了试验,为每一块电路板找到缓冲到存储器块的最佳映射。

6 结论

  在本文中,介绍了怎样使用为FPGA提供的Altera OpenCL SDK,设计2M点数频域滤波器。使用软件类型的仿真对所有功能进行了验证。每一个硬件编译都能够正确工作。并没有打开硬件仿真器,也不用担心时序收敛问题。

参考文献:

  [1]D. H. Bailey. FFTs in external of hierarchical memory Proc. of ACM/IEEE Conf. on Supercomputing’89 (SC89), 1989, 234-242

  [2]FFT (1D) Off-Chip Design Example.[EB/OR] https://www.altera.com/support/support-resources/design-examples/design-software/opencl/fft-1d-offchip.html

1 2

关键词: FPGA 频域滤波器 OpenCL 201511

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版