今天想开始把这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行业的一点感言的更多相关文章

  1. FPGA知识大梳理(四)FPGA中的复位系统大汇总

    本文整合特权(吴厚航)和coyoo(王敏志)两位大神的博文.我也很推崇这两位大神的书籍,特权的书籍要偏基础一下,大家不要一听我这么说就想买coyoo的.我还是那一句话,做技术就要step by ste ...

  2. FPGA知识大梳理(三)verilogHDL语法入门(2)知识汇总

    1,时序逻辑.将上次的练习修改成时序逻辑会如何设计. always @ (posedge clock) 2,block 与unblocking  A,有clock的always中通常使用nonbloc ...

  3. FPGA知识大梳理(二)verilogHDL语法入门(1)

    此文是写给0基础学习者,也是对自己知识点总结水平的考验. 对于有C基础的人来说,学习verilog应该是轻而易举 —— 类比法学习. 第一步:格式. 对于C来说我们前面会写  ‘include“std ...

  4. 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装

    高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...

  5. FPGA各大厂商,不可不知

    引言: FPGA市场前景诱人,但是门槛之高在芯片行业里无出其右.全球有60多家公司先后斥资数十亿美元,前赴后继地尝试登顶FPGA高地,其中不乏英特尔.IBM.德州仪器.摩托罗拉.飞利浦.东芝.三星这样 ...

  6. MySQL系列(一)--基础知识大总结

    MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里只是作为简单的介绍,但是具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续 ...

  7. FPGA笔试必会知识点2—FPGA器件

    FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构, ...

  8. 转帖--计算机网络基础知识大总汇 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是 ...

  9. 转:XSS知识大总结

    转:https://www.jianshu.com/p/75a3d9332b8c XSS知识大总结 2016.10.28 21:05* 字数 1332 阅读 961评论 2喜欢 13 XSS-即Cro ...

随机推荐

  1. HDU 5800 To My Girlfriend(单调DP)

    [题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5800 [题目大意] 给出一个容量上限s,f[i][j][k][l][m]表示k和l两个物品不能选,i ...

  2. java字符串函数及理解

    Java中的字符串也是一连串的字符.但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理.将字符串作为内置的对象处理允许Java提供十分丰富的功能特性 ...

  3. move.js

    function startMove(obj,json,fn){ var flag=true;//标志所有运动是否到达目标值 clearInterval(obj.timer); obj.timer=s ...

  4. linux系统的安装

    安装linux系统须要选择一个linux操作系统,有redhat,ubuntu,centos,这里选择centos进行linux系统的安装 首先在centos的官方站点下载镜像文件CentOS-6.5 ...

  5. Mac下搭建quick cocos2d-x编译环境

    一. 我知道在你的电脑中一定已经安装好了Xcode(没有自己下载去吧),打开Xcode,开启"偏好设置"对话框(commond + ,).假设打开之后出现的是这种一个对话框,那么直 ...

  6. Swift中类的初始化器与继承

    初始化是类,结构体和枚举类型实例化的准备阶段.这个阶段设置这个实例存储的属性的初始化数值和做一些使用实例之前的准备以及必须要做的其他一些设置工作. 通过定义构造器(initializers)实现这个实 ...

  7. sublime编辑器怎样高速输入PHP头部版本号声明

    Sublime 菜单条->Tools→New Snippet→得到例如以下图内容: 输入下面内容: <snippet> <content><![CDATA[ < ...

  8. 在SSIS包中使用 Checkpoint从失败处重新启动包

    使用SSIS做ETL的过程中会遇到各种各样的错误,对于一些大数据量的Job失败以后我们不希望重新运行,因为重新运行的时间开销是非常大的,我们只希望从失败的部分开始运行,这样可以省去很多的时间. SSI ...

  9. Linux下并发网络设计之I/O复用

    I/O 流: 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作 ...

  10. iOS实践03

    主要目标:版本新特性界面,新浪授权界面(登录界面)的处理 任务基本完成了,基本的框架也就到这了,接下来的应该是首页获取微博了. 1.版本新特性,可以单独作为一个model,写完之加入到项目中.我们新建 ...