今天想开始把这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. jQuery Lint: enables you to automatically inject jQuery Lint into the page as it is loaded (great for ad-hoc code validation)

    FireQuery is a Firebug extension for jQuery development jQuery Lint: enables you to automatically in ...

  2. stringstream字符串流

    例题详解 題目:输入的第一行有一个数字 N 代表接下來有 N 行資料,每一行資料里有不固定個數的整數(最多 20 個,每行最大 200 個字元),請你寫一個程式將每行的总和印出來. 輸入: 3 1 2 ...

  3. ASP.NET Web编程

    runat="server"直接回交服务器,处理数据,又以数据加密后的hidden属性的input控件插入回去,实现表单的状态保存 ruant="server" ...

  4. 第八章 C#面向对象编程(Object-Oriented Programming,OOP)简介

    .NET OOP 一.面向对象编程的含义 1.函数(过程化)编程常常导致单一的应用程序,即所有的功能都包含在几个代码模块中(常常是一个代码模块) 而使用OOP技术,常常使用许多代码模块,每个模块提供特 ...

  5. Assertion failure in -[UIView layoutSublayersOfLayer:]

    Assertion failure in -[UIView layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2935.137/UIView.m:8 ...

  6. 简单天气应用开发——API接口

    寒假回家无事,想到自学iOS开发已有一段时间,还没做过真正自己的应用,就起了做一个天气预报App的念头. 想到就做.天气预报第一步自然是找到好用的API接口来获取天气信息.在百度上搜索了一圈,找到的都 ...

  7. cocos2d-x教程1 hello world

    HelloworldScene.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos ...

  8. c语言各类问题 代码

    定义一个结构体,有两个成员变量,一个整型的n,一个字符型的c,利用结构体类型声明一个具有5个元素的数组,并随机初始化,根据成员变量n进行从小到大排序,然后输出 冒泡排序然后 在输出结构体#includ ...

  9. Select specified items from Tuple List

    #Select specified items from Tuple List ##Select one item to form list `tupleList.Select(element =&g ...

  10. 使用RUBY生成二维码

    二维码现在貌似已经成为一个项目必不可少的总分了,最近在做的微信项目,更是大大的依赖于二维码,微信公众平台提供的临时二维码,局限太多,只能带一个ID,做不了太多有意义的整个,因为我们很多的二维码是需要自 ...