一位FPGA初学者的感受与思考

一位FPGA初学者的感受与思考

0.绪言

在网上看了一些FPGA工程师的感言与经验等相关博客,很是感触,心血来潮决定创建自己的技术博客,感觉这也是一种很好的学习方式吧。于是我的第一篇CSDN的博客就此诞生了,我想记录下此刻处于FPGA初学者的一些感受,希望以后浏览时,依旧能够记起年少时怀揣的梦想与心中的激情!

1.为什么选择FPGA?

为什么会选择学习FPGA呢?

其实没有什么轰轰烈烈的为了兴趣、为了梦想之类的理由,只是大学本科专业是电子,然后自己在大一、大二时参加过电子设计竞赛,在这个过程中发现自己对硬件有着颇为浓厚的兴趣,也发现自己不太喜欢编程(包括软件编程和硬件编程),当时纯喜欢设计电路、画板子(我还设计过一些电路模块,交给工厂生产样板了,效果不错!哈哈哈),硬件基础可以说挺不错的。

之后大三因为各种原因,我也就没再搞电子竞赛了,但突然闲下来了很不适应,总得找点事做,为了填补自己的失落感同时也是该为以后的研究方向做准备了。和导师谈了谈自己未来的发展方向,导师建议我从事半导体设计或者FPGA开发,半导体的话已经跨专业了,说实话我对硬件的痴迷程度可能还没到这个程度,所以我自然而然地就打算往FPGA开发方向进军了,哈哈哈,就是这么平淡无奇!

但要是说热爱的话,也可以谈一谈,还记得当时备战国赛(全国大学生电子设计竞赛)期间,自己用FPGA写了一个串口通信的程序,当时是第一次接触Verilog语言,但是入手特别快,程序跑通后,我真的太兴奋了,当时就觉得FPGA太强大了,用的太顺手了,冥冥中有一种发自内心的喜爱了!(其实后来发现自己写STM32的程序也十分顺畅,可能是对硬件的理解程度变深导致一通百通吧!竞赛对我的帮助真的太大了,把本科教学没有的东西全都弥补回来了!)

哈哈哈,说了太多跑偏的话了,接下来回归正题!

2.初识FPGA的感受

刚开始接触FPGA的感受是迷惑、新奇,每天都能了解更多知识也产生更多问题。其实一开始打算学FPGA的时候,我并不知道如何入手,最初的接触仅限于在Xilinx开发板上写几个小程序而已,当我真的打算去了解的时候,才会发现自己对FPGA真的啥都不懂。首先我按照网上的经验,去学校图书馆借了几本学习FPGA的书籍,包括:吴厚航老师的 《深入浅出玩转FPGA》《FPGA嵌入式项目开发实战》 、夏宇闻老师的 《Verilog数字系统设计教程》 等。其中首先需要去了解的是关于FPGA的一些常识,任何学科都会有学科常识,FPGA开发的常识问题就比如—— 什么是FPGA? CPLD与FPGA的区别? VHDL与Verilog哪种语言更好? 等…这些是很多入门者都想要知道的东西,大部分书籍都会有所提及,以下是我总结的一些答案(仅供参考):

  1. 什么是FPGA?

    ​ FPGA全称是Field Programmable Gate Array,翻译过来就是现场可编程门阵列。 面对着这一长串陌生的名词,相信大多数初学者还是疑惑不解,我在看了一些书籍以及别人的一些看法后,有一点自己的理解,希望可以分享给大家。

    ​ FPGA是一种可以通过编程,实现内部逻辑阵列中的逻辑单元的特定连接,以实现特定设计功能的数字逻辑器件(自己的总结,如有不当之处希望大家指正)。想要去理解FPGA到底是一种什么东西,我觉得需要在对比中发现FPGA的特点。

    ​ 相对于ASIC(专用集成电路),FPGA具有更多的灵活性,如果说ASIC是特定的雕塑的话,那么FPGA就好比一块橡皮泥。在FPGA出现之前,要设计一块ASIC,就好比雕刻一个雕塑,会浪费很多半成品和原料;但是FPGA出现之后,它就好像一块橡皮泥,你想捏成什么样随便你,捏得不行可以再捏过,这就是FPGA的可编程性。

    ​ 相对于一些微处理器,FPGA同样具有更多的灵活性以及高速的特点。微处理器上的一些特定结构比如定时器、UART等,数量都是固定的,偶尔可能出现不够用的情况,但是在FPGA这就迎刃而解了,你想构建几个定时器、UART,你就能构建几个(只要逻辑单元够多)。此外,微处理器只能顺序一次处理一条指令,但FPGA是并行的结构的,能够同时执行多个指令,具备超高速的处理速度,这对于FFT或者图像处理等操作非常有用,并行、高速是FPGA显著的特点。

    ​ 相信现在各位应该对FPGA有一个初步的印象了,FPGA真的很强大,期待接下来的探索!

  2. CPLD与FPGA的区别?

    ​ 我们会发现人们经常把CPLD与FPGA放在一块谈论,CPLD又是什么东西呢?CPLD全称Complex Programmable Logic Device,翻译为复杂的可编程逻辑器件,其实它和FPGA一样也是一种可编程逻辑器件。

    ​ 在吴厚航老师的《深入浅出玩转FPGA》中有提到二者的区别,归纳地说就是二者的制造工艺不同,这导致它们的内部结构不同:CPLD是基于ROM结构,掉电记忆,它的硬件设计比较简单,更适合一些简单的应用;而FPGA是基于RAM结构的,掉电代码丢失(当然内部有一个配置ROM可以实现掉电记忆,上电加载到RAM里),它的硬件设计相对复杂些,FPGA相对于CPLD最显著的特点是它能做到数万甚至数百万逻辑门,可以做更多更复杂的工作。

  3. VHDL与Verilog哪种语言更好?

    ​ 学习FPGA自然离不开它的编程语言,目前主流的硬件描述语言有两类:VHDL与Verilog HDL语言。那我们该选择哪种编程语言更好呢?

    ​ 我一开始也面临着这样的困惑,给大家分享一下我的体验吧。我对这两种语言都是又爱又恨,本科数电实验课第一次接触到VHDL语言,就感觉非常不适应,因为第一次接触硬件描述语言,和之前学的C语言等有太多不同了,并不太习惯并行的编程语言模式,刚开始就不太喜欢VHDL;后来准备竞赛时自己尝试了Verilog语言,发现非常顺手,因为Verilog更接近C语言的编程风格,更容易理解与上手,而VHDL相对于Verilog更严谨更像硬件语言。我现在正在担任这门实验课的助教,我又重新去尝试VHDL语言了,其实VHDL也很不错,虽然更难,但是更能让你理解什么叫硬件描述语言。

    ​ 总的来说,两种语言各有优劣,我建议大家都要去掌握,VHDL可以说是传统的严谨的硬件描述语言,它的身上更体现出硬件电路设计的特点;但Verilog在日常生活中更实用,目前主流FPGA开发大部分都采用Verilog语言,就因为它的快速上手、易于使用的特点。但是,我需要指出,当你学会VHDL,你会发现Verilog非常简单;但当你只会Verilog时,你就很难适应VHDL的风格,这就是两者的显著特点。

哈哈哈,我一个初学者居然分享了这么多东西,真的惭愧,这其实也是我看过、听过很多观点后,自己也尝试过后,得到的最真实的感受。当你想去学习一种东西的时候,你得先用心去了解它,这样你才能更坚定地在这条路上走下去,并且拥有自己的色彩!

3.一些建议与方法

学习FPGA,你需要掌握哪些重要的能力呢?我看过几篇相关的文章,我觉得讲的非常全面,在这里推荐给大家,希望对大家能有所帮助。
1.如何学习FPGA
2.如何学习FPGA(不断更新)
上面的文章已经把如何学习FPGA这个问题讲的很全面了,我还想分享一些方法给大家,我觉得一个优秀的工程师,文字记录的能力一定不能差,我看过一位老工程师写的一些经验,我被这样一个方法吸引了——拥有自己的红宝书——把自己有所体会的一些经验知识记录下来,你会逐渐有一个专业知识的体系的,而不是往复学习、忘记、再学习的不断重复。此外,有时候还需要把自己的想法记录下来,去分享,去实现,去创造!这也是我想写一些技术博客的缘由。

4.关于前景与梦想

看过一些老FPGA工程师对FPGA这条道路的感受,有让自己担忧的方面,也有让自己更想坚持下去的方面。

说说担忧的方面:

  • 首先就是年龄方面的担忧,很多人都觉得这些技术岗位都是吃年轻饭的,担心自己在工作岗位上年龄大了后就没有竞争力了,整天担心被淘汰掉。这是现在很多技术岗位的事实现状,技术的更新换代太快了,老员工论精力比不上年轻员工,而积累的经验起的作用基本不大。说实话,这确实值得担忧,这是事实,无可厚非!但是,只要你懂的东西更多,技术钻研得更深,我觉得你的价值永远都存在。我们害怕的是什么呢?我们害怕的是长期处在一些没有深度的工作中,学不到新知识,拼体力拼精力自然不可长久,所以这就要求你不断要求自己去成长去汲取智慧!
  • 其次说到底还是年龄方面的担忧,做技术到底能不能长久?说实话我也不清楚,我也不知道自己老了之后学习能力会有多差,但我还没有担忧过这个问题,可能我还年轻还体会不到那些老工程师的感受,只想说年轻真好,能够做自己喜欢的事,也没有那么多需要担忧的,我从来不会后悔自己的决定,有梦想便有意义!

还是多谈谈正能量的方面吧:

  • 99%的担心都是不会发生的!
  • 如果你真的热爱工程师这个行业,如果你真的喜欢技术,那么每天给自己一点时间,学习一下自己感兴趣的东西,日积月累,一定会有所收获。
  • 适合别人走的路不见得适合自己走。同时,选任何的路都是有代价的,不要只看到好处。
  • FPGA是介于软硬件之间的一朵奇葩。你用它做接口、做通信,它就偏向硬件;你用它做算法、做控制,它就偏向软件。而且随着人工智能、机器视觉的崛起,FPGA更加偏向软件算法的异构,有和GPU一争高下的潜力。

最后,梦想很美!很重要!需要坚持!

  • 12
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值