各位大侠会发现,FPGA技术江湖一直都在推送各种设关于FPGA的设计实例或者项目研发案例,会把设计方法和设计思想都阐述清楚,甚至有些会分享源码供各位大侠参考学习,很少去搞一些纯粹噱头性的文章,这就是因为现在社会的大环境差点意思,噱头性浮夸或者浮躁的东西太多,搞技术的最忌讳这一点,但是搞营销的可不管这些,只要有噱头有流量,就是赚了,往往这样就会出现很多误导性的信息,很多信息不去调研,技术不去钻研,凭空想象,害人害己。

搞技术的,技术大牛也有很多,但是对于学习,还是得找适合自己的,有些人自己很清楚,但是和别人表达不清楚,甚至这类人的大部分都不擅长和外界沟通,也不屑于沟通,这类人我就接触过不少,这就是为什么技术大牛多,而对于技术学习,尤其是初学引导,系统性学习有深刻理解的技术领路人不多的原因。

近期很多人问我该如何去学FPGA,那么今天,这里就和各位大侠来聊一聊。

有人问:本人零基础,想学fpga,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么开发板,用到什么书等等,希望有经验的大佬能够给我一些引导。这里假装有人这么问,其实问的人很多,这里只是汇总了一些大家的问题。

如果想速成,这样主要是面对应用的,一个小时内让你的板子运行起来。早期起来的快,活学活用,就是后期没有系统理论支持,会有些吃力,特别是大项目那完全是个悲剧。

学习FPGA,先理解对应语言的语法,这里仅对于 Verilog HDL 和 VHDL,对于系统级不做讨论。对于硬件描述语言的选择,大家不用纠结,如果没有个人或者特殊需求,本人建议先入手 Verilog HDL,Verilog HDL设计运用比较灵活,有点类似于C语言,但是在学习的时候不能按照C语言的顺序执行去思考,要转变思想。

对于 VHDL,逻辑比较缜密,格式要求比较单一,还是比较容易死记硬背的,verilog比较灵活,先学 Verilog HDL 的好处就是,可以灵活变通,如果先接触 VHDL 的话,怕你再接触 Verilog HDL时陷入死记硬背的节奏里,不太容易接受。

总的来说,学通透了,两者并没有什么影响,两种语言都熟练掌握当然是最好啦,但是你也可以仅掌握你需要用的,这个具体看个人需求了。关于HDL硬件描述语言,下面会有更详细的阐述,这里就大概说一下。

可以理解下面几点

1)看代码,建模型

只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写 Verilog HDL和写C语言整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。

2)用数学思维来简化设计逻辑

学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的大侠需要重视一下这门课哦,重新端正自己的态度哦。

举个简单的例子,比如有两个 32 bit 的数据 X[31:0]与 Y[31:0]相乘。当然,无论 Intel 还是 Xilinx 的操作软件内部都有现成的乘法器 IP 核可以调用,这也是最简单的方法,但是两个 32 bit 的乘法器将耗费大量的资源。

那么有没有节省资源,又不太复杂的方式来实现呢?

我们可以稍做修改:将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则 Y1 左移16位后与 Y2 相加可以得到Y;则X与 Y 的相乘可以转化为 X1 和 X2 分别与 Y1 和 Y2 相乘,这样一个 32 bit * 32 bit 的乘法运算转换成了四个 16 bit * 16 bit 的乘法运算和三个 32 bit 的加法运算。转换后的占用资源将会减少很多,有兴趣的大侠,不妨综合一下看看,看看两者差多少。

3)时钟与触发器的关系

“时钟是时序电路的控制者”,非常经典的一句话,可以说是FPGA设计的箴言。

FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。

打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 Clk,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿。由此可见时钟在时序电路中的核心作用。

对于以上几点,总结起来就多实践、多思考、多不耻下问。实践出真知,看100遍别人的方案不如自己去实践一下。

实践的动力一方面来自兴趣,一方面来自现实的压力。

个人觉得后者更重要,毕竟现在真正感兴趣的人并不多了,真正有兴趣的人会全身心投入,学习这些也是小事一桩。而对于后者,不管你的压力来自于何处,有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。

在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目总结的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学、同事,利用好当前丰富的网络资源,问各位大佬都可以,有经验的人点拨可能会让你原本事倍功半变成事半功倍。

多实践,从实践中深刻理解理论,结合理论,而不是纯粹实践,抛弃理论;

多思考,举一反三,掌握核心的设计思想,设计方法,不局限固有的器件;

多问,不管是谁,只要懂你之不懂,要不耻下问,学习有效的方法。

为什么不推荐0基础学习ZYNQ或SOC?

<1>、容易让人有傍同心理。傍同心理是指一个人通过渲染与自己有亲近关系的人的杰出,来掩盖和弥补自己在这方面的不足,从而获得心理上的平衡。自己在学习很厉害的东西,然后也感觉自己很厉害,但这只是错觉而已。

<2>、入门应该学习尽量简单的东西,什么阶段就要做什么阶段的事情,一口吃个胖子不太现实,要么专心学习FPGA,要么专心学习MCU或者RAM。这样更容易有成就感,增强信心。

<3>、ZYNQ和SOC的应用领域最近这几年发展还是挺不错,需求也在日益增加,但是对于目前整个市场的需求还只是一小部分,最主要还是综合能力要求比较高,并不是短时间内就可以迅速达到某种程度或者某种高度,零基础去学,不太现实,因为你要学会了爬,才能更好的去走,乃至跑起来。

为什么已经存在那么多IP核,仍然需要写HDL?

<1>、首先,就不应该有这种问题,封装好的 IP 确实多,但是不可能所有东西都是用 IP 核,IP 核并非万能,不能满足所有需求。而且做这行搞技术的和其他文职类编辑设计可不一样,并不是给你弄好了你粘贴复制一下或者调用一下就可以了,具体的硬件实现调试都是需要你去懂得原理以及方式方法的,其次,做产品做项目的时候,工程上的问题也是非常多的,这个问题可以作为学生答疑用,解答困惑,没有必要纠结于此;

<2>、尽量少用闭源IP核,一旦出问题,这种黑匣子很可能让产品难产,对于整个开发团队以及产品衍生方都是巨大的困扰;

<3>、深入理解低层次,可以更好地使用高层次。这个学习的思想可以适用于所有编程语言。

为什么不推荐深入学习NIOS II 和 MicroBlaze等软核?

<1>、性价比不高,一般的软核性能跟Cortex M3或M4差不多,用FPGA那么贵的东西去做一个性能一般的CPU,在工程上是非常不划算的。不如另外加一块M3。

<2>、加上软核,可能会影响到其它的逻辑的功能。这是在资源并不十分充足的情况下,再加上软核,导致布局布线变得相当困难;

<3>、软核不开源,出现Bug的时候,不容易调试;

<4>、工程上很少使用,极有可能派不上用场。

所以不推荐深入学习,如果非要用,在别人指导下或者自己会用就行了。

关于FPGA在人工智能、5G应用的一些见解

有句话说的好,“外行看热闹,内行看门道”,2016年底到现在,人工智能这个词再次风靡全球,上次还是二十世纪七八十年代。人工智能给太多行业带去了突破瓶颈的希望,同时附带的是更大的压力,还有更多的泡沫噱头经济。

对FPGA而言,在人工智能的应用还是主要在硬件加速方面,本人之前也搭过加速器,对这方面也有所了解,这方面的理解和不推荐零基础学习 Zynq 一样,这些都是综合能力性,而且还是有门槛的,并不是所有人都能达到的高度。尽管你再努力,你也不得不承认能力是有上线,所以不用去考虑太多,当你后续能接触到了,有能力了在考虑。

但是由于现在很多培训机构打着人工智能的幌子,信口开河的忽悠人,个人选择时要有判断力,人工智能下的FPGA,可不是单纯的学习FPGA,也不是单纯的学个python就行了,至于人工智能的具体应用及实现,后续再出专题研究,这里就不过多讨论。总之,一句话,自我判断力要有,绝大多数没有实际作用,不可信。

关于企业里FPGA工程师的开直播卖板卡引导学习的见解

首先,要明白以下几个问题:

一是,你是纯正的FPGA工程师么?这里说的纯正是指,你是定岗定制专门做FPGA开发的,而不是什么都干,接触过几天FPGA就叫FPGA工程师;

二是,你自己有没有在自己的专业方向进行过系统性的学习?FPGA工程师现在对口的专业就是弱电类专业,包括电子信息工程、电子科学与技术、通信工程、集成电路、微电子、半导体、物电光电等等相关专业,具体的专业方向,能不能接触到FPGA,还需要看各个学校的具体发展方向。系统性学习就是不是片面的知识组合,而是有规划有效的学习,包括对整个市场的理解,对技术需求,对学习者的自身情况的理解,各种综合,而不是学了几天某个器件,感觉个人懂了很多,就行了;

三是,既然是引导他人学习或者推荐学习,你是否明白原理,是否很清楚如何沟通,表达清楚你懂的并且有效传达?这一点也是最重要的,在前面也说过,你懂得不代表你可以正确地去传输给别人,让别人也懂,正确地价值观,正确地引导方式都是很重要的,可以说是相互学习,共同进步,而不是单方面的输出。

这里点到为止,不过多阐述,以免给杠精机会,哈哈哈。

大家好,我是【FPGA功夫熊猫】精益求精,不断推荐好文章。

为什么你觉得FPGA难学?如何入门?相关推荐

  1. 为什么大量的人会觉得FPGA难学?

    来源:内容来自「FPGAer俱乐部」,谢谢. 转自https://www.sohu.com/a/274574398_132567 先总结如下几点: 1.看代码,建模型 只有在脑海中建立了一个个逻辑模型 ...

  2. 【转】为什么FPGA难学?是因为你还没搞清背后的根源

    经常看到有初学者的提问,本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导. FPGA到底怎么学呢? ...

  3. 为什么很多人会觉得FPGA难学?

    1) 不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理. FPGA为什么是可以编程的? 恐怕很多自以为入门都不知道,可能也不想知道.因为觉得这是无关紧要的.潜意识的认为可编程嘛,肯定就是像写软 ...

  4. python为什么那么难学_Python入门很难吗? 为什么越来越多的人都学Python?

    Python都说是最容易学习的编程语言,但是为什么还是有很多的小白在学习的过程中学的云里雾里,一天到晚都是报错,异常,这也怪不得会有那么多人说,学Python是从入门到入土!其实一门编程语言不像语文那 ...

  5. FPGA真的很难学吗?那可能是没弄明白这些道理

    问:零基础,想学FPGA,应该从哪入手?应该看什么教程?应该用什么学习板和开发板?看什么书等? 如果想速成,那就上网看视频吧,这样主要是面对应用的,一个小时内让你的板子运行起来.早期起来的快,活学活用 ...

  6. 【转】FPGA真的很难学详细解答

    如果想速成,那就上网看视频吧,这样主要是面对应用的,一个小时内让你的板子运行起来.早期起来的快,活学活用,就是后期没有系统理论支持,会有些吃力,特别是大项目,那完全是个悲剧.国内做的可以的,周立功算一 ...

  7. Java和php哪个难学?学Java好还是学php好?

    人们对编程语言的评价是众说纷纭,很多想入门的编程语言的朋友都在询问什么编程语言难学?编程语言入门时学什么好?很多人都推荐Java,也有很多人推荐PHP,Java和PHP的口水之战,人们就不曾停歇过,那 ...

  8. 学计算机编程难吗,计算机编程入门 计算机编程难学吗

    计算机编程入门 计算机编程难学吗?有很多人在一开始学习计算机编程时都会有疑问,编程难学吗?零基础可以学编程吗?如何入门?一般要学习多久?其实,我认为编程最重要的是入门,如果你入门的时候有一个好的学习方 ...

  9. 俄语入门难不难-大舌音难学吗-弹舌难学吗

    俄语的大舌音是一个非常难学的音,需要初学者勤学多练才能学会. 很多初学者们也很给力地抓紧一切空闲时间,有事没事就弹弹自己的舌头,弹着弹着发现自己越弹越上瘾. 如果你在这时弹出大舌音的话那是皆大欢喜,但 ...

最新文章

  1. SAP MM已经转成PO的采购申请Item依旧可以被删除?
  2. 无线节能组信标为什么会自动切换? 排查故障的过程真的像谜一样无法解释
  3. Oracle DML
  4. 【Android 应用开发】AndroidUI设计 之 图片浏览器
  5. 春招不迷茫,模板刷题101实验室上线啦
  6. 原来R语言还有这些不为人知的用处!
  7. linux图形界面 革命,Windows 95带来的革命
  8. python3学习之反射的四种基本方法
  9. 劝退与转行:没有什么是普适的
  10. [转]使用Visual C#制作可伸缩个性化窗体
  11. 持有至少百万美元钱包本周增至66,540,增长了150%
  12. iOS开发那些事-iOS6苹果地图有用开发
  13. LAMP平台部署及应用(二) 安装Discuz!论坛系统
  14. 全通阅卷系统服务器配置,网上阅卷系统建设方案(24页)-原创力文档
  15. SpringBoot实现阿里云短信接口对接
  16. 米家1代电动牙刷 更换电池
  17. 2.9Unicode 文本标准化
  18. 获取和设置默认打印机
  19. pwnable-passcode
  20. Hrbust 2294 修建传送门【思维】

热门文章

  1. 12 readdir 函数
  2. python word字体颜色_python操作word设置字体
  3. 应“疫”而生的英文单词
  4. linux for多个变量,linux – for循环数字的变量
  5. C语言数字图像处理进阶---7 Sketch Filter
  6. 中国象棋程序的设计与实现(一)--项目截图
  7. HIT哈工大软件构造实验lab3设计
  8. 机器人布里茨哪个皮肤好看_蒸汽机器人皮肤特效,布里茨的皮肤介绍
  9. 红娘相亲app同城交友软件婚恋相亲系统的主要功能
  10. deepin无声_无声战士大厅