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 ...
随机推荐
- PHPRPC for PHP
14的路 PHPRPC for PHP PHPRPC 是一个轻型的.安全的.跨网际的.跨语言的.跨平台的.跨环境的.跨域的.支持复杂对象传输的.支持引用参数传递的.支持内容输出重定向的.支持分级错误处 ...
- ios之TableViewCell重用机制避免反复显示问题
常规配置例如以下 当超过tableView显示的范围的时候 后面显示的内容将会和前面反复 // 这样配置的话超过页面显示的内容会反复出现 - (UITableViewCell *)tableView: ...
- 倒计时IE6+
很简单的 下面是我为了做多个倒计时更改之后的 dome 下载链接 兼容 IE7以上 IE6没测试应该没问题 http://yunpan.cn/cf29rxmGKuMyJ 提取码 ca61
- (转)openURL的使用方法
view plaincopy to clipboardprint? [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ap ...
- oracle 计算两个时间之间的月份差,相差几个星期,相差多少天
相差多少天: sysdate-to_date('1991-01-01','YYYY-MM-DD'))<7 and (sysdate-to_date('1991=01=01','YYYY-MM ...
- 小猪猪C++笔记基础篇(五)表达式、语句
小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...
- 如何修改MFC发布程序的图标
(1)第一种方法,直接替换工程路径下面res下面的ico图标,然后重新编译,一般需要重启系统才会生效: (2)第二种方法,在VS工程资源预览窗口的ICO下增加一个ico资源,名为IDR_ICON1,然 ...
- 08-C语言循环
目录: 一.for循环 二.break,continue 三.循环嵌套 四.while 五.do while 六.三个循环的对比 七.空语句 回到顶部 一.for循环 标识每次循环,循环终止条件,循环 ...
- JS 原型 & 继承
理解原型链 先看看http://www.ituring.com.cn/article/56184和http://www.cavabiao.com/prototype-and-inherit-of-ja ...
- .net mvc Authorization Filter,Exception Filter与Action Filter
一:知识点部分 权限是做网页经常要涉及到的一个知识点,在使用MVC做权限设计时需要先了解以下知识: MVC中Url的执行是按照Controller->Action->View页面,但是我们 ...