第二篇-FPGA学习之RoadMap
古语云:知己知彼,百战不殆。那么既然选择了FPGA之路,欲练此功,必先……
必先了解清楚,FPGA的特点,FPGA善于/不善于解决什么类型问题,以及FPGA应用的方向,FPGA学习的要素等等。
一、FPGA的特点
理论上,通用MCU/CPU和数字ASIC能够做的事,FPGA都能做,甚至可以利用FPGA内部资源实现一个CPU,也即是通常所说“软核”。但这几个既然能够共存,实际上都有各自适合和不适合的领域。CPU/MCU为通用任务设计,能够胜任大量常规的控制、计算任务,但是对一些特殊的任务,比如高速信号处理、大规模并行计算却是无能为力,这也是为什么机器学习基本要靠GPU或者FPGA。ASIC为特定应用设计,性能和功耗都非FPGA能及,但是功能固定,流片费用极高,通常用于非常大批量的场合。和CPU大哥相比,FPGA的特点是,可以利用并行实现更高速的计算和更大的吞吐量,也可以利用其灵活性作为CPU的协处理单元或扩展接口。和二哥ASIC相比,FPGA的优点主要是其灵活性极高,重复编程,在批量不够大或需重复修改的场合较ASIC更为优势。
当然FPGA也有其相应的缺点以及不适合的工作。和MCU比价格相对高,和ASIC相比速度和功耗都望尘莫及(ASIC作为专用电路比通用电路更加高效)。另外FPGA不适合 1-大量顺序控制,2-大量存储要求的场合,这类工作通用MCU更为擅长也更经济。
二、FPGA应用领域
一些传统行业,比如电力、能源、医疗,有不少FPGA的需求,这主要是得益于FPGA灵活的特点。这些领域的设备通常 1-设备大,价格高昂(成本相对不敏感),2- 批量无法巨大(不适合定制ASIC),3-设备更新升级较快。这几个特点决定了需要FPGA来实现粘合、接口扩展、通讯实现的需求,也会包括一些较高速的数据采集处理的应用。当然反过来说,这些通常不是重型应用,通常是作为CPU或DSP的扩展和辅助,用到的FPGA基本是中低端型号。
另一个FPGA广泛应用的领域是ASIC的验证。由于行业不同了解不深,仅从外行人的初步了解来看,这个领域 1-用到FPGA通常是逻辑量非常大的型号,2-因为不会产品化只是作为设计验证工具,批量不会大。
相对上述两个行业领域,无线通信行业中FPGA的使用相对更为广泛。这主要因为FPGA的并行架构能够满足其高速信号处理的需求。
仅仅从这些传统领域来看,FPGA的市场大小远不如CPU和ASIC这两位大哥,但目前高速发展的一些新兴领域给了FPGA新的机会,比如工业以太网、机器视觉、机器学习的兴起和实用化。一个典型的方向是机器视觉,图像和视频的底层处理本身需要及其庞大的重复性运算,如使用CPU会大大受制于内存读取瓶颈的限制。而这恰恰是FPGA作为硬件计算本身擅长的工作。相信随着越来越多需要高速信号处理、并行计算的新兴技术领域的日渐步入实用化阶段,FPGA会有更大的用武之地。
三、FPGA学习路线
前面这些算是对FPGA本身的介绍,下面这些就是FPGA学习路线方面的干货了。趁机会对目前我所了解的内容作个总结,也作为今后在FPGA之路上前进的路标参照。
FPGA的学习基础是语言和各种工具的掌握,另外还需要最FPGA的架构和资源有必要的认识。亚稳态、跨时钟域问题个人感觉是验证一个人是否入门FPGA的试金石,也是能够开发FPGA的一个必要前提。其它的比如硬件思想、速度-面积互换这些需要不断在实际中运用体会。
但做这么久FPGA,我的观点是FPGA的难点,全在FPGA之外。使用FPGA本身不难,难的是能够用FPGA做什么事。比如做通讯接口扩展要求对常用的并行/串行通讯时序有深入理解,做高速信号采集则要求对ADC、硬件、信号完整性这些方面都有认识,做图像处理、机器视觉这些更是要求对这些专业领域有比较深的建树 ----可见,FPGA学习本部仅仅是学习FPGA本身,作为一种工具,其能够实现多大的价值更要看对专业领域的认识。
当然了,每个方向都是一个深坑,甚至是一个独立的专业,人生苦短,往往在其中一个方向有很深的建树就已经了不起了。
(码字不易,转载请注明出处,谢谢!)
第二篇-FPGA学习之RoadMap的更多相关文章
- Hadoop入门第二篇-MapReduce学习
mapreduce是一种计算模型,是google的一篇论文向全世界介绍了MapReduce.MapReduce其实可以可以用多种语言编写Map或Reduce程序,因为hadoop是java写的,所以通 ...
- 【第二篇】学习 android 事件总线androidEventbus之异步事件的传递
1,不同Activity直接发送Ansy的事件,以及其他任何事件,必须通过 postSticky方式来进行事件的传递,而不能通过post的形式来进行传递:EventBus.getDefault().p ...
- RabbitMQ学习总结 第二篇:快速入门HelloWorld
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- 学习KnockOut第二篇之Counter
学习KnockOut第二篇之Counter 欲看此 ...
- 老老实实学习WCF[第二篇] 配置wcf
老老实实学WCF 第二篇 配置WCF 在上一篇中,我们在一个控制台应用程序中编写了一个简单的WCF服务并承载了它.先回顾一下服务端的代码: using System; using System.Col ...
- #Java学习之路——基础阶段二(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- angularjs学习第三天笔记(过滤器第二篇---filter过滤器及其自定义过滤器)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...
- JavaWeb学习总结第二篇--第一个JavaWeb程序
JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...
- Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍
Java并发包下锁学习第二篇队列同步器 还记得在第一篇文章中,讲到的locks包下的类结果图吗?如下图: 从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本 ...
随机推荐
- Pycharm安装、设置、优化
一.版本选择 建议安装5.0版本,因为好注册,这个你懂得. 下载地址: https://confluence.jetbrains.com/display/PYH/Previous+PyCharm+Re ...
- ASP.NET MVC AJAX的调用示例
@{ ViewBag.Title = "Home Page"; //下面引用Jquery和unobtrusive-ajax } @Scripts.Render("~/bu ...
- pb9常见错误及含义
1. by zero 发生被0除错误 2. Null object reference 空对象引用 3. Array boundary exceeded 数组越界 4. Enumerated v ...
- 从给数组中的对象去重看Javascript中的reduce()
假设有这样一个数组: let person = [ {id: 0, name: "小明"}, {id: 1, name: "小张"}, {id: 2, name ...
- 四种Sandcastle方法生成c#.net帮助类帮助文档
方法一 前端时间在网上收集和自己平时工作总结整理了<干货,比较全面的c#.net公共帮助类>,整理完成上传github之后我又想,既然是帮助类,总得有个帮助文档于是乎想到了Sandcast ...
- 通过 PackageManager 获得你想要的 App 信息
一.前言 开门见山,开篇明义.有些场景下,我们会需要获取一些其它 App 的各项信息,例如:App 名称,包名.Icon 等.这个时候就需要使用到 PackageManager 这个类了. 本篇就 P ...
- 博客发在oschina
国内git.oschina做的很好,看到oschina还有博客 直接导入csdn博客 http://my.oschina.net/lindexi/blog
- 在centos6编译配置httpd2.4的N种方法
前言 我们使用linux的过程中,一定会用到httpd这个服务,在centos7上,默认安装的httpd就是2.4版本,大家都知道,2.4版本相对之前的版本已经做了改进,用起来更加方便,但是我们的ce ...
- property--staticmethod--classmethod
特性(property): 作为装饰器使用,调用方式从最初的方法调用改变为属性调用 类方法(classmethod):和类进行交互,单不和实例进行交互 在函数中可以不用上传参数 静态方法(static ...
- 牛顿插值法及其C++实现
h1 { margin-bottom: 0.21cm } h1.western { font-family: "Liberation Sans", sans-serif; font ...