3.最基本的DSP资源

3.1 由FIR滤波器谈起

随着各种应用复杂度的不断提升,传统的DSP和处理器的架构无法支持这么复杂的并行数据算法的需求。FPGA却恰好能够满足这样的需求。FPGA拥有大量的DSP计算单元能够帮助用户实现各种各样的复杂算法。拿FIR滤波器举个例子。


如上图所示,这是一个典型的FIR滤波器,第一个图是FIR滤波器的公式,第二个图是FIR滤波器的一个框图。可以看到,FIR滤波器是线性时不变系统的卷积和公式。传统上,一个FIR滤波器被画成一组并行乘法,并且所有馈送结果到单个加法器的架构。这个加法器通常被实现为一个加法器树,并且使用流水线以提高其性能。这种做法实现FIR过滤器是最简单的,但它不是唯一可能实现方法。下面将比较一下传统DSP或者处理器的顺序处理和FPGA并行处理两种方法。

在左边的传统DSP处理的方式上,它只有一个乘法器和加法器,只能通过数据、系数和所需要的时间去循环产生一个结果。这个处理过程将会非常慢,因为它要依靠乘法器和累加器的所需要调用的次数来产生一个结果。如上边左图所示,一个3960抽头的FIR滤波器运行在一个1.2GHz的DSP处理器上,那么它只能有303KSPS的能力。这个级别就很低了,只有K级。那么在右边的FPGA的处理方式,相当数量DSP的处理单元能够同时进行所有的乘法操作,每个时钟都能够产生一个结果。这个3960个抽头的FIR滤波器可以恰好放在一个包含了3960个DSP单元的Virtex-7 XT的芯片中。尽管处理的频率也就是DSP处理器的1/2,但是增加的并行处理能力能够是FIR滤波器能够达到600多MSPS的能力。虽然上图上最后所有乘法器的数据被同时送到了加法器的处理单元。实际上,这是需要一个流水线的加法器来最终产生想要的结果。实际上7系列的DSP单元包括了输入调整,流水线寄存器,专用的乘法器,操作控制单元,专用的加法器和级联路径。

输入调整包括预加器和输入流水线寄存器。流水线寄存器,在这个图中标记为Z-1和Z-2在几个地方,在DSP的单元内最大限度地提高性能。乘法器和加法器是在DSP片的主要组成部分。操作控制寄存器和专用多路复用器可以在一个DSP单元内选择不同的操作命令,从而增加了可编程性和灵活性。输入和输出级联路径(上图并未表示),允许通过使用专用和快速布线资源将多个DSP的单元被链接在一起,以形成更广泛和更复杂的功能。下次将讲述是如何在DSP单元中使用FIR滤波器可以使用DSP片结构来实现的示例。

上图中的FIR滤波器的结构被叫做转置型I的滤波器,并且使用了流水线。这种架构使用了级联的方式,充分利用了DSP Slice的结构。

这个例子显示了一个小的4抽头滤波器。输入数据通过左侧流水线被送到的DSP Slice中,级联后把数据延时送到下一级中。每个DSP slice里面的乘法器将数据和正确的系数进行相乘,在加法器中相加后输出,经过流水线并最终级联在最右端输出最终的结果。从这个例子中,可以清晰的看到FIR滤波器的抽头即使增加了,可以很简单的增加DSP Slice单元进入这个流水线中,并在该DSP单元中增加自己的系数即可。需要说明的一点是:理想状态下,不像其他DSP/处理器单元构建算法时,FPGA的DSP单元的性能不会因为滤波器的抽头的增加而减少,因为进入级联的流水线后,流水线上使用的寄存器将帮助将DSP的资源保持运行在最优的速度上。从上图结构中,可以看到输入数据被送入寄存器,寄存器充当数据缓冲器进行了级联。每个寄存器提供一个数据到乘法器并各个系数相乘。加法器相加级联后逐步形成最终结果,并且给出最终结果。这个实现方式不要外部的额外逻辑,并且所述结构是可扩展的,以支持任何数目的系数。另外DSP Slice资源的灵活性,也可以用来实现其他非DSP功能。

下面举一个非DSP功能的例子,是将一个基本的加法树的结构适配到DSP Slice单元中,如下图一个流水线的基本加法树的例子。

第一步,从第一级加法器的输出入手,去掉第一级输出的寄存器,形成如下图的结构。

这种结构就非常简化,而且容易调整需求。紧接着第二步把第三个寄存器拉下来,修正后形成下图,形成很明显的链型的结构。但是这个功能和上图的功能完全相同,相同的四个信号只是改变了相加的顺序,被相加形成最终的结果相同。

第四步,添加寄存器形成流水线,变成了下图,最大限度地提高性能。因为加法器是在一个链而不是树,在加法器链中的每个流水线寄存器需要在该数据路径中匹配一个寄存器。还要注意的是,一个附加的加法器已经放置在链的前部,其中一个输入连接到零。现在,就很容易看到的加法器和流水线寄存器如何映射到XILINX DSP Slice中。下图图中的每个虚线框代表一个DSP Slice。

FPGA从Xilinx的7系列学起(7)相关推荐

  1. FPGA从Xilinx 的7系列学起(1)

    FPGA进入到一个工艺越来越牛的境界,很多人在学习FPGA的时候还在墨守陈规的从Spartan3学起,还是在ISE开始着手,总是觉得工艺是类似的,方法也是类似的.在和很多工程师一起讨论的时候,就明确的 ...

  2. FPGA从Xilinx的7系列学起(6)

    用户必须要认识到,学习一下技巧可以让更多的逻辑放在更少的Slice中,使工具能够达到既实现设计时序要求又满足用户对功耗的要求.而现在很多用户缺乏代码编写的想法,编写出一个有时序问题的设计.为了满足要求 ...

  3. FPGA从Xilinx的7系列学起(4)

    2. 最基本的BlockRAM 2.1 BlockRAM的初探 BlockRAM资源对FPGA来说也是非常重要的,我们的很多设计用到了BlockRAM以后,可以变得设计非常灵活,这样我们就可以设计出很 ...

  4. FPGA从Xilinx 的7系列学起(5)

    2.4 BlockRAM的级联 7系列BlockRAM存储器可以把两个相邻RAM使用专用的布线资源级联到一起.这个对于工程师的重要性在于仅仅级联两块RAM的时候,可以考虑节省不少的资源.从上面说讲述中 ...

  5. FPGA从Xilinx的7系列学起(3)

    1.3再深入一点的了解CLB 这个图有点大,但是太经典了,搞得我不得不放弃扔掉它的想法.是不是有人已经看迷糊了.那咱就慢慢的清晰呗.有时候也不一定要一开始明白,如果一开始明白,那么会越来越糊涂. 那么 ...

  6. FPGA从Xilinx的7系列学起(2)

    1. 最基本的CLB CLB是FPGA最最基本的单元,不能说是类似于质子和中子的概念,但也至少是原子和分子的概念了.如果是最根本的单元都无法能够很好的理解,那么其实很多FPGA的原理还是停留在一个写写 ...

  7. 基于Xilinx的Kintex-7系列XC7K325T的硬件加速卡

    产品型号: B-PCIE-K7F5XILINX的Kintex-7系列FPGA处理器 B-PCIE-K7F5是一款基于PCI Express总线架构的高性能FPGA算法加速卡,该板卡采用Xilinx的高 ...

  8. Xilinx FPGA资源解析与使用系列——Transceiver(十)PRBS、RX Equalizer、CDR

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(十)PRBS.RX Equalizer.CDR PRBS测试序列 ...

  9. Xilinx FPGA资源解析与使用系列——Transceiver(一)参考时钟解析

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Xilinx FPGA资源解析与使用系列--Transceiver(一)参考时钟解析 前言 IP核的部分设置 Quad 的定义是什么? ...

最新文章

  1. Mybatis-plus常用API全套教程,看完没有不懂的
  2. c++ 弧形面如何逆时针排序_这8种常见的Java排序算法,学算法必看!
  3. Linux系统文件I/O编程(一)---open()等基本函数
  4. python控制台动画_Python真神奇,带你体验另类的“全自动编程”
  5. Android自定义控件ImageViwe(一)——依据控件的大小来设置缩放图片显示
  6. 正在搞用web.py做的通讯录
  7. day34-常见内置模块三(re模块)
  8. 记事本可以编辑html语言吗,笔记本win7系统使用记事本编辑和运行html代码的方法...
  9. PADS无模命令总结
  10. 网络管理:超级详细Tcpdump 的用法
  11. nodejs pm2教程(转载)
  12. webrtc之SVC实现(十)
  13. 在页面加载完后执行javascript代码
  14. uniapp消息推送
  15. DELL存储SCv3020组件概念
  16. docker push 过程 distribution源码 分析
  17. Eclipse(Windows)下第一个动态Java Web项目(Tomcat部署)
  18. Java播放声音文件
  19. SQL server用户Sa登录失败的解决方法
  20. 案例分享|国内某大行数据平台案例

热门文章

  1. 关闭页面时执行“退出”的解决方案
  2. linux修改led中颜色,Linux学习三之LED驱动(修改内核)
  3. requests.get(url)执行没反应_如果贾府抄家时黛玉还活着,她会是什么反应?
  4. vb获得mysql的值,VB.NET调用MySQL存储过程并获得返回值的方法
  5. dragsort html拖拽排序 的应用
  6. mysql 字符串有有乱码 转码_第09期:有关 MySQL 字符集的乱码问题
  7. 基于555时基集成芯片压控振荡器
  8. Apriltag : 用于视觉系统标定图标tag36H11
  9. 什么是PCB板上的鼠牙洞?
  10. SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管