1.何为FPGA?
FPGA是Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FPGA是Ross Freema于1985年发明的,当时第一个FPGA采用2μm工艺,包含64个逻辑模块和85000个晶体管,门数量不超过1000个,当时他所创造的 FPGA被认为是一项不切实际的技术,他的同事Bill Carter曾说:“这种理念需要很多晶体管,但那时晶体管是非常珍贵的东西。”所以人们认为Ross的想法过于脱离现实。但是Ross预计:根据摩尔定律(每18个月晶体管密度翻一翻),晶体管肯定会越来越便宜,因此它必将成为未来不可或缺的技术。在短短的几年时间内,正如Ross所预言的,出现了数十亿美元的现场可编程门阵列(FPGA)市场。但可惜的是,他已经无法享受这一派欣欣向荣的景象,Ross Freeman在1989年已经与世长辞了,但是它的发明却持续不断地促进电子行业的进步与发展。
我们知道构成数字逻辑系统最基本的单元是与门、或门、非门等,而门电路是由用二极管、三极管和电阻等元件构成的,然后与门、或门、非门又构成了各种触发器实现状态记忆。FPGA同样也属于数字逻辑电路的一种,也是由最基本的元件构成的。一片FPGA可以在内部集成上亿个门电路,打破了以往使用数量繁多分立器件实现电子装置的历史,不仅电路面积、成本大大减小,而且可靠性得到了大幅度的提升。
一般来说,FPGA内部是由最小的物理逻辑单位LE、布线网络、输入输出模块与片内外设组成的,而最小物理逻辑单元是指用户无法修改的、固定的最小单元,设计者只能将这些单元通过互联线将其连接起来,然后实现特定的功能。一个LE是由触发器、LUT与控制逻辑组成的,从而同样可以实现组合逻辑和时序逻辑。
随着FPGA集成度的不断增加,其内部的片内外设也越来越多,可集成SRAM、Flash、AD、RTC等外设,真正用单芯片方案完成系统设计,所以我们所理解的FPGA最底层是一些实实在在的门电路构成的,然后由门电路构成最小的物理逻辑单元,然后再通过布线层将这些最小物理逻辑单元连接成用户需要的特定功能,我们所需要控制的仅仅是布线层之间的互连开关,这也是我们编程的对象,通过这些开关来改变功能。
FGPA按工艺分主要有SRAM工艺和Flash工艺(工艺是针对它们的编程开关来说的)两类,基于SRAM工艺的FPGA最大的缺点是掉电数据会丢失无法保存,所以由FPGA构成的系统,外部还需要增加一个配置芯片用于保存编程数据,在系统每次上电时都需要从配置芯片中将配置数据流加载到FPGA 中,然后才能正常地运行,其优点是灵活性很强。而基于Flash架构的FPGA在掉电后不会丢失数据,无需配置芯片,上电即可运行,其特点非常类似 ASIC,但却比ASIC更加灵活可以重复编程。由此可见如果用基于Flash架构的FPGA来取代ASIC的话,不仅风险大大降低,而且成本也会大幅度地下降。
2. 为什么要学习FPGA?
FPGA从诞生以来经历了从配角到主角的转变,FPGA主要用于取代复杂的逻辑电路,现在重点强调平台概念,当集成数字信号处理器、嵌入式处理器、高速串行和其它高端技术后,从而被应用到更多的领域,正因为其飞速的发展,让更多学FPGA的人看到了希望,其广阔的前景正是我们选择的原因之一。
(1)广阔的发展前景
据市场调研公司Gartner Dataquest预测,2010年FPGA和其它可编程逻辑器件(PLD)市将从2005年的32亿美元增长到67亿美元,未来还将有不断增长的趋势。 FPGA及PLD产业发展的最大机遇是替代ASIC和专用标准产品(ASSP),由ASIC和ASSP构成的数字逻辑市场规模大约为350亿美元。由于用户可以迅速地对PLD进行编程,按照需求实现特殊功能,与ASIC和ASSP相比,PLD在灵活性、开发成本、产品快速上市方面更具优势,所以未来 FPGA将会是一个非常有前景的行业。
由于FPGA结构的特殊性,可以重复编程,开发周期较短,越来越受到人们的青睐,它的特点也更接近ASIC,ASIC比FPGA最大的优势是低成本,但是FPGA的价格现在也越来越低,例如,Actel的Nano系列更是打破了FPGA的价格屏障,提供超过50种低于1美金的FPGA,在一定程度上已经可以与ASIC相抗衡。
根据当前发展的趋势,未来的FPGA势必将会取代大部分ASIC的市场,虽然根据摩尔定律(Moore’s Law):每18至24个月能在相同的单位面积内多集成一倍的晶体管数目,也就意味着每18至24个月后芯片成本将减半,但这只是指裸晶(Die)的成本,并不表示整个芯片的成本减半,这是由于晶圆制造前端的掩膜(Mask)成本、晶圆制造后端的封装(也称为:构装、包装)成本、人力成本等都不会随摩尔定律而变化,反而芯片的成本有上升的趋势,所以过去许多中、小用量的芯片无法用先进的工艺来生产,对此不是持续使用旧工艺来制造,或是必须改用FPGA芯片来生产……
未来的趋势告诉我们,FPGA将成为21世纪最重要的高科技产业之一,特别是国内的FPGA市场,更是一个“未完全开垦的处女地”,抓住现在的机遇也就意味着为我们的将来提供更强大的竞争力。
(2)更多的就业机会
虽然FPGA市场的广阔,但是FPGA的技术人员却极度地缺乏,很多高校仍然未重视FPGA技术的教学,导致学生毕业后连什么是FPGA,什么是 Verilog都不知道,失去了很多的就业机会。广州周立功单片机发展有限公司三年来跑遍了全国22个城市,每次宣讲会场里场外都站满了人,每个学生都渴望寻找一份好工作的心情由此可见一斑,但通过考试发现懂FPGA和Verilog的学生却寥寥无几,尽管我们每年都对招聘FPGA人才寄予了很大的希望,但每次都失望而归,深深地体会到招聘FPGA开发工程师困难重重。
由此可见在应届毕业生中熟练掌握FPGA的学生已经属于稀缺资源了,然而企业为培养FPGA开发工程师无不付出沉重的代价,所以对于在校电类专业的学生来说,这是打造个人差异化竞争力的大好机会,事实上只要掌握FPGA就能够找到一份薪水更好的工作。我们公司每次在考核员工时,往往都会特别关注这些 “特殊员工”,一般来说这些员工的薪水都会比其它岗位高500元,这就是学习FPGA的就业优势,但是很多人不曾完全意识到掌握FPGA技术的重要性。
当前受金融危机的影响,对学生的就业更是巨大的考验,据教育部的统计,2008年全国普通高校毕业生达559万人,比2007年增加64万人,2009年高校毕业生规模达到611万人,比2008年增加52万人,如此多的大学生面临着就业的问题,如果个人不具备一定的优势,必将淹没在人海茫茫的潮流中而找不到理想的工作,而学习FPGA则可以帮助学生多一技之长,大大提高就业的机会。
(3)更大的技术发展空间
我们知道半导体一直是国内比较薄弱的产业,与国外相比相差甚远,大部分IC都来自欧美地区,国内拥有自主知识产权的IC技术不多,多半需要引进国外先进的 IC设计技术。但是自2000年以来,中国大陆的IC设计企业如雨后春笋般迅速涌现,企业数量5年增加了4倍多,2005年已经达到500多家,销售收入过亿元人民币的设计企业达到17家,其中两家超过5亿元的销售规模。概括地讲,中国的IC设计公司可以分为4类,第一类是国有IC设计公司,一般是承担政府研发任务的研究所转制后成立的;第二类是由系统厂商的设计部门独立出来的IC设计公司;第三类是民营IC设计公司,以海归型为主;最后一类是外资IC设计公司。
由此可见IC设计也是未来发展的一个重点方向,将会是国家大力扶持的产业之一,而IC的设计人员必须掌握FPGA的技术,在芯片流片之前都是通过 FPGA来进行前期设计验证的,与FPGA使用同样的设计语言,只是在后端的设计中才用到IC设计方面的特定技术,而IC设计人员必定是懂得FPGA设计的人,因此掌握FPGA技术是通往IC设计殿堂的必经之路,学习FPGA有助于我们扩大的技术发展空间。
3.如何学习FPGA?
既然FPGA对我们如此地重要,那么对于初学者来说,到底该如何学习呢?学习一门技术最好有合适的指导老师,这样对掌握FPGA技术更容易,可惜的是大部分的学校还未开设相关的课程,也缺少具有实践经验的老师,那么如何才能找到一种捷径帮助初学者快速学会如此具有竞争力的技术呢?我们公司从原来仅有1人,到目前为止已经发展成为了一支拥有30多人的FPGA团队,其中有一些成长的经历,在此希望能与大家一起分享。
(1)掌握FPGA的编程语言
在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从C语言开始入门,当掌握了C语言之后,开发单片机应用程序也就不是什么难事了。学习FPGA也是如此,FPGA的编程语言有两种:VHDL和Verilog,这两种语言都适合用于FPGA的编程,VHDL是由美国军方组织开发的,在1987年就成为了IEEE的标准;而Verilog则是由一家明间企业的私有财产转移过来的,由于其优越性特别突出,于是在1995年也成为了 IEEE标准。VHDL在欧洲的应用较为广泛,而Verilog在中国、美国、日本、台湾等地应用较为广泛,作者比较推崇是Verilog,因为它非常易于学习,很类似于C语言,如果具有C语言基础的人,只需要花很少的时间便能迅速掌握Verilog,而VHDL则较为抽象,学习的时间较长。
作为在校大学生,学习Verilog的最好时期是在大学二年级开设《电子技术基础(数字部分)》时同步学习,不仅能够理解数字电路实现的方式,更能通过FPGA将数字电路得以实现。作者发现华中科技大学康华光教授主编的《电子技术基础(数字部分)》非常好,可以说是一本与时俱进的教材,在本书的第二章最后一节专门介绍了Verilog语言与FPGA,并且在每一章的最后一节都介绍了如何使用Verilog建模实现相关数字电路的内容,因此本书非常适合大二学习FPGA的学生参考。本书是以《电子技术基础(数字部分)》为背景,并与该书同步配套学习FPGA,并在它的基础上作了改进,源于它而又高于它。
大三、大四的学生还可以进一步强化学习Verilog,建议以北京航天航空大学出版社出版的由夏宇闻教授编写的《Verilog数字系统设计教程(第二版)》作为蓝本,本书比较全面地、详细地介绍了Verilog的基本语法。如果是其他初学者,可以直接借助《Verilog数字系统设计教程(第二版)》和本书即能全面掌握Verilog的语法,这是学习FPGA的第一步,也是必不可少的一步。
(2)一个易学易用的硬件平台是成功的一半
除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的FPGA里运行起来,这时我们需要一个硬件平台作为支撑,然而很多FPGA硬件平台的价格却让初学者望而却步,上千元的价格并不是一般的初学者(特别是学生)能够承受的,关键是缺乏详细的配套资料,学习起来非常吃力。
(3)技术的巩固和升华
对于初学者来说,当有了一定的基础后,应该将技术继续巩固和升华,作者认为参加竞赛是学生验证所学知识的一个最好的舞台,不仅能够锻炼学生的动手能力,而且能够发挥学生的创造力和想象力。
4. 结语
综上所述,我们只有了解了什么是FPGA,为什么要学习FPGA,怎么学习FPGA后,我们才能非常有目的、有计划地学习和掌握这门技术。