FPGA研发牛人心得总结

上传人:飞*** 文档编号:26985997 上传时间:2018-01-04 格式:PDF 页数:55 大小:2.22MB
返回 下载 相关 举报
FPGA研发牛人心得总结_第1页
第1页 / 共55页
FPGA研发牛人心得总结_第2页
第2页 / 共55页
FPGA研发牛人心得总结_第3页
第3页 / 共55页
FPGA研发牛人心得总结_第4页
第4页 / 共55页
FPGA研发牛人心得总结_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《FPGA研发牛人心得总结》由会员分享,可在线阅读,更多相关《FPGA研发牛人心得总结(55页珍藏版)》请在金锄头文库上搜索。

1、FPGA 研发之道FPGA 是个什么玩意?FPGA 是个什么玩意?首先来说:FPGA 是一种器件。其英文名 feild programable gate arry 。很长,但不通俗。通俗来说,是一种功能强大似乎无所不能的器件。通常用于通信、网络、图像处理、工业控制等不同领域的器件。就像 ARM 、 DSP 等嵌入式器件一样,成为无数码农码工们情感倾泻而出的代码真正获得生命的地方。只不过,一样的编程, 却是不一样的思想。 嵌入式软件人员看到的是 C。而 FPGA 工程师看到是硬件描述语言, verilog 或 VHDL 。软件看到是函数、对象、重构。 FPGA 工程师则是模块、流水、复用。从现象

2、上看,都是代码到下载程序再到硬件上运行。不能只看现象而忽略本质。 FPGA 开发本质上是设计一颗 IC, “ *的身子,丫鬟的命 ” 不是所有 verilog/VHDL 代码,都能获得青睐去流片成为真正的芯片,而更多的则成为运行在 FPGA 器件上,成为完成相同功能的替代品。其实现的功能却一点也不逊色于百万身价流片的近亲。从而成为独树一帜的行业。FPGA 开发的流程, 是通过 verilog/VHDL 等硬件描述语言通过 EDA 工具编译、 综合、布局布线成为下载文件,最终加载到 FPGA 器件中去,完成所实现的功能。那硬件描述语言描述的是什么?这里描述的就是组合逻辑电路和时序逻辑电路。 组合

3、逻辑电路就是大家所熟知的 与门、或门、非门。时序逻辑电路则是触发器。数字芯片上绝大部分逻辑都是这两种逻辑实现的。 也就是基本上每个电子行业的人所学过的数字电路。 顺便说一下, 感谢香农大师,在其硕士毕业论文 就奠定了数字电路的的根基。只不过在 FPGA 中,与或非的操作变成了查找表的操作。于是所有的数字电路变成了查找表和寄存器,这就构成了 FPGA 的基础。查找表负责逻辑实现,寄存器存储电路状态。二者配合,双剑合璧,天衣无缝。这是最初的 FPGA 的雏形。 现代 FPGA 内部出了查找表和寄存器之外,还有 RAM 块,用于存储大量的数据块,这是因为 RAM 块较寄存器来存储大量数据更能节省芯片

4、实现的面积。 FPGA 内部的时序电路则需要时钟的输入,通常 FPGA 内部需要时钟种类较多, 因此需要在片内产生所需的的相关的时钟, 如不同频率, 不同相位的时钟,因此时钟管理单元 DCM/PLL 也是必不可少的内部部件。除此之外, FPGA 内部还包括接口 I/O , I/O 分为普通 I/O 和高速 I/O,高速 I/O 支持例如高速的 SERDES ,用于实现XAUI , PCIE 等高速接口,这些接口动辄几 Gbps 到 10Gbps 以上。此外种类多种多样的硬核 IP 也是各 FPGA 厂商差异化竞争利器,例如 POWERPC 、 ARM 等硬核 IP。从而构成CPU+FPGA 于

5、一体的集可编程性和可重构的处理平台。因此,相对来所, FPGA 虽然发展有二三十年的历史,其基本架构一直不变不大。回到问题开始的地方, FPGA 的英文翻译过来是现场可编程门阵列。 这是相对 ASIC 来说的, ASIC 的硬件也可看做是门阵列,但是其是非可编程的器件。流片完成其功能就固化了,而 FPGA 的可编程性就在其能够重新下载配置文件,来改变其内在的功能,这就是其可编程性的由来。从前端开发流程来说, FPGA 和 ASIC 开发并无二至。由于 ASIC 开发一次性投入成本较高, FPGA 无疑是一种经济的替代方案,用于实现的高速的数据并行处理。如业务能够支撑大规模应用并且协议固化,则能

6、够分摊成本的 ASIC 实现就有成本的优势。FPGA 作为一种器件,技术上主要垄断在少数大公司手中,那就是双巨头 ALTERA 和XILINX 。 除此之外还有一些份额相对较小的公司, 例如 ACTEL 和 LATTICE 。 不止是 FPGA的硬件芯片,其配套的 EDA 工具技术壁垒更高。因此相对于 CPU 来说, FPGA 的国产化更不乐观, 不过已经有国内的厂商来从事这一行业, 例如国微和京微雅格等, 也在一些细分市场上推出自己的 FPGA 产品。FPGA 和他那些小伙伴们 (一) 系统架构组成通常来讲, “ 一个好汉三个帮 ” , 一个完整的嵌入式系统中由单独一个 FPGA 使用的情况

7、较少。通常由多个器件组合完成, 例如由一个 FPGA+CPU 来构成。 通常为一个 FPGA+ARM , ARM负责软件配置管理,界面输入外设操作等操作, FPGA 负责大数据量运算,可以看做 CPU的专用协处理器来使用,也常会用于扩展外部接口。常用的有 ARM+FPGA , DSP+FPGA ,或者网络处理器 +FPGA 等种种架构形式,这些架构形式构成整个高速嵌入式设备的处理形态。不得不说的是,随着技术的进步,现在 CPU 中集成的单元也随之增加,例如 TI 的 “ 达芬奇 ” 架构的处理器内部通常由 ARM+DSP 构成。同时异构的处理器形态业逐渐流行,如ARM9+ARM7 的结构。这类

8、一个主要处理系统 (ARM9) 外带辅助处理系统 (ARM7) 的设计,同样成为现在处理器设计的流行方向。 主处理系统运行嵌入式操作系统, 而辅助处理单元则专注某一些的专用领域的处理。 这些系统的应用减少了 FPGA 作为 CPU 协处理单元的领域。因为毕竟 FPGA 相比 ARM 等流行嵌入式处理器价格要相对较高。在这种情形下, FPGA 的厂商似乎也感受到了压力,不约而同推出了带 ARM 硬核的FPGA ,例如 ALTERA 的 和 XILINX 的 ZYNQ 和 ALTERA 的 SOC FPGA 。这是即是互相竞争的需要,也是同众多 CPU 厂商一掰手腕的杰总。即使在这两种在趋势下,经

9、典的处理器 +FPGA 的设计仍然可看做为高性能嵌入式系统的典型配置。经典的处理器 +FPGA 的配置中有多种的架构形式,即多个处理器单元 ,可能是 ARM ,MIPS, 或者 DSP , FPGA 也可能是多片的配置, 具体架构形式于具体处理的业务相关和目标设备的定位也相关。 因为 FPGA 作为简单业务流大数据量的处理形态仍然是 CPU 无可比拟的优势, FPGA 内部可以开发大量业务数据并行,从而实现高速的数据处理。在实现高速处理方面, CPU 的另一个发展趋势是多核,多核处理器也能处理大数据量的业务的并行,例如业界 TERILA 已推出 64 核的多核处理器,采用 MIPS 处理器,通

10、过二维 MASH 网络连接在一起,形成 NOC 的结构。在性能上已经和现有的高速 FPGA 的处理能力上不相上下。 但是多核处理器的不得不说的问题就是, 同一业务流分配到多核处理上后,如需交互, 例如访问同一资源, 就会造成读写的缓存一致的问题, 解决的这一问题的天然思路是加锁, 即在变量访问上加自旋锁, 但是带来的问题就是处理性能的急剧下降。 而 FPGA无论并行处理和同一变量的访问, 都可以变成工程师的设计水平的问题, 没有原理性的挑战。没有一种器件可以满足全人类的众多需求, 因此不用担心 FPGA 没有用武之地。 必定是一系列产品的组合。下面主要介绍一下 FPGA 可以作为现今热门场景的

11、几种应用。( 1)网络存储产品,特别是现在的 NAS ,或者 SAN 设备上,其存储的时间、接口、安全性等都要求较高, 而 FPGA 无论处理性能还是扩展接口的能力都使其在这一领域大有作为。现在高端 FPGA 单片就可以扩展 32 个或者更多 4G 或者 8G 的 FC 接口。并且其协议处理相对的固定,也使 FPGA 在这一领域有大量的可能应用。( 2) 高速网络设备,现在高速网络设备 10G 、 40/100G 以太网设备领域, 同样 FPGA 也是关键的处理部件。特别是 IPv6 的商用化及大数据对于基础设施的高要求,都使这一领域的处理应用会逐渐广泛,这一领域通常是高速网络处理器( NP

12、) +FPGA 的典型架构。( 3) 4G 等通信设备, 对于新一代通信基站的信号处理, FPGA+DSP 阵列的架构就是绝配。特别是在专用处理芯片面世之前, 这样的架构可以保证新一代通信基础设施的迅速研发和部署。没有完美的架构,只有合适的组合,各种芯片和架构都是为应用服务,互相的渗透是趋势,也是必然。 FPGA 相对处理器的可编程领域,仍然属于小众(虽然人数也不少)。但是正像一则笑话所说:大腿虽然比根命根子粗,但决没有命子重要。这算开个玩笑。 FPGA的实现为以后的芯片化留下了许多可能和想象空间, 从而在应用大量爆发时通过芯片化来大幅降低成本,这这也正是其他可编程器件所不能比拟的。FPGA

13、和他那些小伙伴们 (二) 器件互联系统架构确定,下一步就是 FPGA 与各组成器件之间互联的问题了。通常来说, CPU 和FPGA 的互联接口,主要取决两个要素:( 1) CPU 所支持的接口。( 2)交互的业务。通常来说, FPGA 一般支持与 CPU 连接的数字接口, 其常用的有 EMIF , PCI,PCI-E,UPP,网口( MII/GMII/RGMII ), DDR 等接口。作为总线类接口, FPGA 通常作为从设备与 CPU连接, CPU 作为主设备通过访问直接映射的地址对 FPGA 进行访问。 根据是否有时钟同步,通常总线访问分为同步或异步的总线,根据 CPU 外部总线协议有所不

14、同,但数据、地址、控制信号基本是总线访问类型中总线信号所不能省略的。 CPU 手册中会对信号定义和时序控制有着详细的说明, FPGA 需要根据这些详细说明来实现相应的逻辑。同时 CPU 还可以对访问时序进行设置, 比如最快时钟, 甚至所需的最小建立时间和保持时间, 这些一般 CPU都可以进行设置,而这些具体参数,不仅影响 FPGA 的实现,也决定总线访问的速度和效率。对于同步总线, 只需要根据输入时钟进行采样处理即可, 但对于异步总线,则需要的对进入的控制信号进行同步化处理, 通常处理方式是寄存两拍, 去掉毛刺。 因此用于采样的时钟就与 CPU 所设置的总线参数相关,如采样时钟较低,等控制信号

15、稳定后在译码后输出,一个总线操作周期的时间就会相对较长, 其处理的效率也相对较低; 假如采样时钟过快, 则对关键路径又是一个挑战, 因此合理设定采样频率, 便于接口的移植并接口的效率是设计的关键点和平衡点。对于总线型的访问来说,数据信号通常为三态信号, 用于输入和输出。 这种设计的目的是为了减少外部连线的数量。 因为数据信号相对较多一般为 8/16/32 位数据总线。 总线的访问的优势是直接映射到系统的地址区间, 访问较为直观。 但相对传输速率不高, 通常在几十到 100Mbps 以下。这种原因的造成主要为以下因素( 1)受制总线访问的间隔,总线操作周期等因素, 总线访问间隔即两次访问之间总线

16、空闲的时间, 而总线操作周期为从发起到相应的时间。( 2)不支持双向传输,并且 FPGA 需主动发起对 CPU 操作时,一般只有发起CPU 的中断处理一种方式。这种总线型操作特点,使其可以用作系统的管理操作,例如FPGA 内部寄存器配置,运行过程中所需参数配置,以及数据流量较小的信息交互等操作。这些操作数据量和所需带宽适中,可以应对普通的嵌入式系统的处理需求。对于大数据流量的数据交互,一般采用专用的总线交互,其特点是,支持双向传输,总线传输速率较快, 例如 GMII/RGMII 、 Upp 、 专用 LVDS 接口, 及 SERDES 接口。 专用 SERDES接口一般支持的有 PCI-E , XAUI , SGMII , SATA , Interlaken 接口等接口。 GMII/RGMII,专用 LVDS 接口一般处理在 1GbpS 一下的业务形式,而 PCI-E ,根据其型号不同,支持几Gbps 的传输速率。 而 XAUI 可支持到 10Gbps 的传输速率, lnterlaken 接口可支持到 40Gbps的业务传输。对于不

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 经营企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号