没有合适的资源?快使用搜索试试~ 我知道了~
这是这几年的经验的总结,也许你在工作中已用到,也许你还没有用到,或许将来你用到了才明白原来是这样,绝对的对fpga开发者
资源推荐
资源详情
资源评论
FPGA 研发之道
FPGA 是个什么玩意?
FPGA 是个什么玩意?
首先来说:
FPGA 是一种器件。其英文名 feild programable gate arry 。很长,但不通俗。通俗
来说,是一种功能强大似乎无所不能的器件。通常用于通信、网络、图像处理、工业控制
等不同领域的器件。就像 ARM、DSP 等嵌入式器件一样,成为无数码农码工们情感倾泻
而出的代码真正获得生命的地方。只不过,一样的编程,却是不一样的思想。嵌入式软件
人员看到的是 C。而 FPGA 工程师看到是硬件描述语言,verilog 或 VHDL。软件看到是函
数、对象、重构。FPGA 工程师则是模块、流水、复用。从现象上看,都是代码到下载程
序再到硬件上运行。不能只看现象而忽略本质。FPGA 开发本质上是设计一颗 IC,“**的身
子,丫鬟的命”不是所有 verilog/VHDL 代码,都能获得青睐去流片成为真正的芯片,而更
多的则成为运行在 FPGA 器件上,成为完成相同功能的替代品。其实现的功能却一点也不
逊色于百万身价流片的近亲。从而成为独树一帜的行业。
FPGA 开发的流程,是通过 verilog/VHDL 等硬件描述语言通过 EDA 工具编译、综
合、布局布线成为下载文件,最终加载到 FPGA 器件中去,完成所实现的功能。那硬件描
述语言描述的是什么?这里描述的就是组合逻辑电路和时序逻辑电路。组合逻辑电路就是
大家所熟知的 与门、或门、非门。时序逻辑电路则是触发器。数字芯片上绝大部分逻辑都
是这两种逻辑实现的。也就是基本上每个电子行业的人所学过的数字电路。顺便说一下,
感谢香农大师,在其硕士毕业论文<继电器与开关电路的符号分析>就奠定了数字电路的的
根基。只不过在 FPGA 中,与或非的操作变成了查找表的操作。于是所有的数字电路变成
了查找表和寄存器,这就构成了 FPGA 的基础。查找表负责逻辑实现,寄存器存储电路状
态。二者配合,双剑合璧,天衣无缝。这是最初的 FPGA 的雏形。 现代 FPGA 内部出了查
找表和寄存器之外,还有 RAM 块,用于存储大量的数据块,这是因为 RAM 块较寄存器来
存储大量数据更能节省芯片实现的面积。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 于一体的集可编程性和可重构的处理平台。因此,相对
来所,FPGA 虽然发展有二三十年的历史,其基本架构一直不变不大。<<<<<<
回到问题开始的地方,FPGA 的英文翻译过来是现场可编程门阵列。这是相对 ASIC
来说的,ASIC 的硬件也可看做是门阵列,但是其是非可编程的器件。流片完成其功能就固
化了,而 FPGA 的可编程性就在其能够重新下载配置文件,来改变其内在的功能,这就是
其可编程性的由来。从前端开发流程来说,FPGA 和 ASIC 开发并无二至。由于 ASIC 开发
一次性投入成本较高,FPGA 无疑是一种经济的替代方案,用于实现的高速的数据并行处
理。如业务能够支撑大规模应用并且协议固化,则能够分摊成本的 ASIC 实现就有成本的
优势。
FPGA 作为一种器件,技术上主要垄断在少数大公司手中,那就是双巨头 ALTERA 和
XILINX。除此之外还有一些份额相对较小的公司,例如 ACTEL 和 LATTICE。不止是
FPGA 的硬件芯片,其配套的 EDA 工具技术壁垒更高。因此相对于 CPU 来说,FPGA 的
国产化更不乐观,不过已经有国内的厂商来从事这一行业,例如国微和京微雅格等,也在
一些细分市场上推出自己的 FPGA 产品。
FPGA 和他那些小伙伴们 (一) 系统架构组成
通常来讲,“一个好汉三个帮”,一个完整的嵌入式系统中由单独一个 FPGA 使用的情况较
少。通常由多个器件组合完成,例如由一个 FPGA+CPU 来构成。通常为一个
FPGA+ARM,ARM 负责软件配置管理,界面输入外设操作等操作,FPGA 负责大数据量
运算,可以看做 CPU 的专用协处理器来使用,也常会用于扩展外部接口。常用的有
ARM+FPGA,DSP+FPGA,或者网络处理器+FPGA 等种种架构形式,这些架构形式构成
整个高速嵌入式设备的处理形态。
不得不说的是,随着技术的进步,现在 CPU 中集成的单元也随之增加,例如 TI 的“达芬
奇”架构的处理器内部通常由 ARM+DSP 构成。同时异构的处理器形态业逐渐流行,如
ARM9+ARM7 的结构。这类一个主要处理系统(ARM9)外带辅助处理系统(ARM7)的设计,
同样成为现在处理器设计的流行方向。主处理系统运行嵌入式操作系统,而辅助处理单元
则专注某一些的专用领域的处理。这些系统的应用减少了 FPGA 作为 CPU 协处理单元的
领域。因为毕竟 FPGA 相比 ARM 等流行嵌入式处理器价格要相对较高。
在这种情形下,FPGA 的厂商似乎也感受到了压力,不约而同推出了带 ARM 硬核的
FPGA,例如 ALTERA 的 <和 XILINX 的 ZYNQ 和 ALTERA 的 SOC FPGA。这是即是互相
竞争的需要,也是同众多 CPU 厂商一掰手腕的杰总。即使在这两种在趋势下,经典的处理
器+FPGA 的设计仍然可看做为高性能嵌入式系统的典型配置。
经典的处理器+FPGA 的配置中有多种的架构形式,即多个处理器单元,可能是
ARM,MIPS,或者 DSP,FPGA 也可能是多片的配置,具体架构形式于具体处理的业务相
关和目标设备的定位也相关。因为 FPGA 作为简单业务流大数据量的处理形态仍然是 CPU
无可比拟的优势,FPGA 内部可以开发大量业务数据并行,从而实现高速的数据处理。
在实现高速处理方面,CPU 的另一个发展趋势是多核,多核处理器也能处理大数据量
的业务的并行,例如业界 TERILA 已推出 64 核的多核处理器,采用 MIPS 处理器,通过二
维 MASH 网络连接在一起,形成 NOC 的结构。在性能上已经和现有的高速 FPGA 的处理
能力上不相上下。但是多核处理器的不得不说的问题就是,同一业务流分配到多核处理上
后,如需交互,例如访问同一资源,就会造成读写的缓存一致的问题,解决的这一问题的
天然思路是加锁,即在变量访问上加自旋锁,但是带来的问题就是处理性能的急剧下降。
而 FPGA 无论并行处理和同一变量的访问,都可以变成工程师的设计水平的问题,没有原
理性的挑战。
没有一种器件可以满足全人类的众多需求,因此不用担心 FPGA 没有用武之地。必定
是一系列产品的组合。下面主要介绍一下 FPGA 可以作为现今热门场景的几种应用。
(1)网络存储产品,特别是现在的 NAS,或者 SAN 设备上,其存储的时间、接口、安全
性等都要求较高,而 FPGA 无论处理性能还是扩展接口的能力都使其在这一领域大有作为。
现在高端 FPGA 单片就可以扩展 32 个或者更多 4G 或者 8G 的 FC 接口。并且其协议处理
相对的固定,也使 FPGA 在这一领域有大量的可能应用。
(2)高速网络设备,现在高速网络设备 10G、40/100G 以太网设备领域,同样 FPGA 也
是关键的处理部件。特别是 IPv6 的商用化及大数据对于基础设施的高要求,都使这一领域
的处理应用会逐渐广泛,这一领域通常是高速网络处理器(NP)+FPGA 的典型架构。
(3)4G 等通信设备,对于新一代通信基站的信号处理,FPGA+DSP 阵列的架构就是绝
配。特别是在专用处理芯片面世之前,这样的架构可以保证新一代通信基础设施的迅速研
发和部署。
没有完美的架构,只有合适的组合,各种芯片和架构都是为应用服务,互相的渗透是
趋势,也是必然。FPGA 相对处理器的可编程领域,仍然属于小众(虽然人数也不少)。
但是正像一则笑话所说:大腿虽然比根命根子粗,但决没有命子重要。这算开个玩笑。
FPGA 的实现为以后的芯片化留下了许多可能和想象空间,从而在应用大量爆发时通过芯
片化来大幅降低成本,这这也正是其他可编程器件所不能比拟的。
FPGA 和他那些小伙伴们 (二) 器件互联
系统架构确定,下一步就是 FPGA 与各组成器件之间互联的问题了。通常来说,CPU 和
FPGA 的互联接口,主要取决两个要素:
(1)CPU 所支持的接口。
(2)交互的业务。
通常来说,FPGA 一般支持与 CPU 连接的数字接口,其常用的有 EMIF,PCI,PCI-
E,UPP,网口(MII/GMII/RGMII),DDR 等接口。作为总线类接口,FPGA 通常作为从设
备与 CPU 连接,CPU 作为主设备通过访问直接映射的地址对 FPGA 进行访问。根据是否
有时钟同步,通常总线访问分为同步或异步的总线,根据 CPU 外部总线协议有所不同,但
数据、地址、控制信号基本是总线访问类型中总线信号所不能省略的。CPU 手册中会对信
号定义和时序控制有着详细的说明,FPGA 需要根据这些详细说明来实现相应的逻辑。同
时 CPU 还可以对访问时序进行设置,比如最快时钟,甚至所需的最小建立时间和保持时间,
这些一般 CPU 都可以进行设置,而这些具体参数,不仅影响 FPGA 的实现,也决定总线
剩余51页未读,继续阅读
资源评论
九章子
- 粉丝: 57
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 各种字符串相似度和距离算法的实现Levenshtein、Jaro-winkler、n-Gram、Q-Gram、Jaccard index、最长公共子序列编辑距离、余弦相似度…….zip
- 运用python生成的跳跃的爱心
- 包括用 Java 编写的程序 欢迎您在此做出贡献!.zip
- (源码)基于QT框架的学生管理系统.zip
- 功能齐全的 Java Socket.IO 客户端库,兼容 Socket.IO v1.0 及更高版本 .zip
- 功能性 javascript 研讨会 无需任何库(即无需下划线),只需 ES5 .zip
- 分享Java相关的东西 - Java安全漫谈笔记相关内容.zip
- 具有适合 Java 应用程序的顺序定义的 Cloud Native Buildpack.zip
- 网络建设运维资料库职业
- 关于 Java 的一切.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功