FPGA知识大梳理(一)对FPGA行业的一点感言
今天想开始把这FPGA行业的知识点做一个大整理,从个人感想,到语法,到器件基础,难点攻克,到项目应用。把自己这几年接触到的知识做一个全面的回顾,看看自己这几年走过的路。
人生无常,几年的跌跌撞撞勉强算是在FPGA行业大门前。之前一直都是看别人的感言,逛别人的论坛笔记。或许自己应该有一个突破。
我经常把工程师比喻成农民伯伯,相同之处有两点,第一他们都是沉默寡言 老老实实的辛勤的工作者。第二,技术的世界像耕地一样,你无法投机取巧,也没有捷径,所有的知识点都需要你脚踏实地的去开辟。你多努力一点就回报多一点,知道的就多一点,见效快。
今天我就只想谈谈个人的看法,也是当年困扰我的问题。现在我觉得想通了,拿出来大家讨论一下。
问题一:FPGA会不会死
当年徘徊了一段时间要不要学习FPGA的时候就在想这个问题,万一这个行业被openCL这样的软件系统给替换掉了,那我不就悲剧了。
现在我这么看待的,FPGA行业分两大知识点部分。1:编程语言。2,器件。行业会死就是这两大部分被其他东西代替。我们分开讨论
1,编程语言
FPGA 最常见的开发语言就是HDL ,敝人不才,没有接触过别的,类似systemC等等。所以单说HDL语言。
最近几年不管是altera还是xilinx都力推用C实现HDL开发,但是一直是进展不大。貌似并没有出现颠覆性的成果,所以一直是噱头和彼此抢风头的阶段(现在altera被intel收购)。有人就担心(当年我也想过)HDL会不会被C 替换掉呢?只要有这么一个编辑器,就可以了。我的答案是不会。原因要从编程语言特性说起。
大家知道现在的编程语言发展也是相当快的,从原始的汇编,到C , java,c++ ,c#,html5.........
这里有一个误区,大家以为汇编被干掉了,其实没有,现在懂汇编的工程师是抢手货。应用场景有两个地方,一,小型mcu随着智能家居兴起,有些产品开发就是需要汇编。二,IC设计公司,像处理器mcu的开发,必须使用汇编进行指令测试,实现指令全覆盖,这个是其他语言无法替代的。比汇编高级一点点的就是C语言,而C语言一直都是经典,语言发展到再高级都无法将C和汇编完全替换掉,为什么呢?因为他们是面向过程的开发语言,就是写出数据的处理过程,而java,c++,c#,html5...... 都是面向对象的编程语言,当然他们存在都是有各自的特性,可是编程的思维方式是类似的。
说了这么多,只想说出一句:HDL是一种硬件描述语言(HDL:Hardware Description Language)。C是面向过程的,根本无法完全兼容。HDL一直是以硬件电路为设计思维导向,而不是数据流的思维导向。举例,C语言要实现sin。就直接写a=sinb。可是HDL要实现一个sin。那就是一个IP 。而HDL写一个移位操作在硬件里面很好理解也很好实现。用C 就要写好几行。语言没有好坏之分,他们各有特色,所以想用C的思维模式来指导硬件电路的设计,这个路似乎太长了吧。
说到这里不得不提一门语言systemverilog。知道SV的人就知道SV迟早会替代HDL,其实也不叫替代,是更新。因为SV是融合了verilogHDL 以及C 再加上一些自己的拓展形成的语言,也就是说你学的verilog其实就是SV的一部分。现在的SV 主要用来做IC 验证,形成了独立的验证方法学,这是SV 特性发展出来的。SV中融合的C 以及自己的其他特性主要是用来写testbench的,也就是说在可综合的代码部分,还是由verilogHDL撑着。目前也不用急于学sv,因为不是做IC 验证,用SV做项目有点杀鸡用了宰牛刀一样,当然,多了解一下更好。
所以,HDL 会向SV升级,但是不会死。
2,器件
器件包括器件特性以及开发工具(altera的QuartusII 以及xilinx的vivado为主)。
器件,那就是工艺需要考虑的事情,我们只需要跟随原厂就行。他们会告诉我们这种工艺下的器件特性和之前比有哪些不同,以及出现问题是工艺的影响还是设计的因素。至于工具,一个FPGA原厂想推广自己的产品必然有相关的技术培训,也就是最没有技术含量但是新手看来最能忽悠的技能。最近国产FPGA势头很猛,没有用过不发表看法。
这些就是工作的时候,公司用谁的产品我们就用谁的器件和工具,这些是大同小异。
问题二:FPGA的市场与技术现状
说得好听就是高处不胜寒 —— 高端解决方案,一般公司不用,那玩意儿贵啊。量产都是用ASIC,极少数有用FPGA的。门槛相对软件要高一点,比IC门槛要低一点。
当年我在学校的时候altera和xilinx都力推SOPC,就是在FPGA中嵌入原厂自己的CPU 。后来估计也是知道自己的CPU性能都太差了,所以现在又都力推SOC —— 既然自己的CPU 不行,那就用别人的 —— 嵌入硬核ARM。所以未来的发展就是软件和硬件这种技术壁垒突破越来越多,学FPGA也要学ARM,软硬兼施才行。SV软件和硬件语言已经融合了(虽然目前看起来还是有些独立的感觉),知识上当然也就要求我们攻城狮都要学习啊。
啰啰嗦嗦如此之多了。感谢一路走来的亲人和朋友,也感谢自己这颗坚强的心。
FPGA知识大梳理(一)对FPGA行业的一点感言的更多相关文章
- FPGA知识大梳理(四)FPGA中的复位系统大汇总
本文整合特权(吴厚航)和coyoo(王敏志)两位大神的博文.我也很推崇这两位大神的书籍,特权的书籍要偏基础一下,大家不要一听我这么说就想买coyoo的.我还是那一句话,做技术就要step by ste ...
- FPGA知识大梳理(三)verilogHDL语法入门(2)知识汇总
1,时序逻辑.将上次的练习修改成时序逻辑会如何设计. always @ (posedge clock) 2,block 与unblocking A,有clock的always中通常使用nonbloc ...
- FPGA知识大梳理(二)verilogHDL语法入门(1)
此文是写给0基础学习者,也是对自己知识点总结水平的考验. 对于有C基础的人来说,学习verilog应该是轻而易举 —— 类比法学习. 第一步:格式. 对于C来说我们前面会写 ‘include“std ...
- 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装
高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...
- FPGA各大厂商,不可不知
引言: FPGA市场前景诱人,但是门槛之高在芯片行业里无出其右.全球有60多家公司先后斥资数十亿美元,前赴后继地尝试登顶FPGA高地,其中不乏英特尔.IBM.德州仪器.摩托罗拉.飞利浦.东芝.三星这样 ...
- MySQL系列(一)--基础知识大总结
MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里只是作为简单的介绍,但是具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续 ...
- FPGA笔试必会知识点2—FPGA器件
FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构, ...
- 转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1. TCP/IP是 ...
- 转:XSS知识大总结
转:https://www.jianshu.com/p/75a3d9332b8c XSS知识大总结 2016.10.28 21:05* 字数 1332 阅读 961评论 2喜欢 13 XSS-即Cro ...
随机推荐
- HDU5280 Senior's Array(简单DP)
题目链接:pid=5280">传送门 题意: 给定一个长度为n的序列,和一个改动的值p,必须从原序列中选一个位置改动成p, 求改动后的区间和的最大值. 分析: 枚举位置+最大区间和. ...
- 某IT校招笔试
前言 博主明天上午9点还有面试,今天突然看到某大牌IT公司笔试题目,必须做一下了 题目 1.假设把整数关键码K散列到N个槽列表,以下哪些散列函数是好的散列函数 A: h(K)=K/N; B: h(K) ...
- chrome 、 火狐等浏览器对空格符 解析不同,页面显示不一致
最近初学web,从头开始,菜鸟级别,遇到的小问题记录下来. 网上资料说 空格在ie.firefox.chrome浏览器上显示的效果不太一样,主要是前面的空格宽度不同,这可能是因为不同的浏览器会有不同的 ...
- Visual Studio 继续并运行上次的成功生成,未提示直接运行上一个版本解决方案!
Visual Studio ==>工具 ==> 选项==>项目和解决方案 ==>生成并运行_运行时,当出现生成或部署错误时_选择,提示启动
- 1.4. chromium源代码分析 - chromiumframe - 消息系列
Message framework 是对消息循环的封装和扩展,Chromium在消息循环中增加处理内部任务的工作.将内部工作处理寄生在Windows的消息循环中,会有一个问题,就是没有Windows自 ...
- c++ primer plus 习题答案(6)
p425.1 #include<iostream> #include<cstring> #include<cstdlib> using namespace std; ...
- LOJ 1341 Aladdin and the Flying Carpet(质因子分解)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意:给两个数a,b,求满足c * d = a且c>=b且d>=b的 ...
- C++内置类型对象之间的转换
C++定义了一组内置类型对象之间的标准转换,在必要时它们被编译器隐式地应用到对象上. 隐式类型转换发生在下列这些典型情况下. 1. 在混合类型的算数表达式中 规则:在这种情况下最宽的数据类型成为目标转 ...
- Problem B: Excuses, Excuses!
Description Judge Ito is having a problem with people subpoenaed for jury duty giving rather lame ex ...
- Ajax学习之小结
ajax: * 同步交互和异步交互: * 同步交互:客户端发送请求——>等待服务器端处理——>接收响应,这个过程客户端不能做任何其他事情,这种模式叫做同步交互 * 异步交互:客户端发送 ...