第一部分:基础知识
思考了很久,不知道该如何给新手描述FGPA这个怪物,有时候张牙舞爪无法接近,有时却平易近人听候差遣。但无论多复杂的技术背后总有一段漫长的发展史,炫目的应用在起初也总是不起眼的。的确,万事万物都有起源,这一个也不例外。
1 起源
1.1 集成电路
在很久很久以前,物体导电性会随着温度变化这一现象被发现,那是半导体的元年。
在那个电子管、真空管泛滥的年代里,能够想到晶体管这样文艺且带点小清新的名字并不容易,这一新生事物于1947年诞生在大名鼎鼎的贝尔实验室。
晶体管的体积已经很小,但电子设备越来越复杂使得人们想把更多的晶体管塞到一起,Integrated“集成”这个词是不是显得高大上许多啊;1958年集成电路诞生在了TI。放张图片吧,纪念一下:
<ignore_js_op>
集成电路,TI,1958
自此,半导体现象发现的125年后,世界将被集成电路改变。
1.2 数字电路
集成电路很复杂,线性啊非线性啊种种特性总是搞得人头昏脑涨,不由自主的想到了这玩意里面有着成千上万的晶体管,因此“晶体管数量”是描述一个集成电路规模的单位。
但从这个单位就可以看出,这是一个庞大的队伍,数以万计的管子整整齐齐的排列在方寸之间,用什么规则去管理呢? 在一段时间内让人迷茫,其实人的本能是喜欢简单的东西,什么最简单?2选1够简单了吧,很快0-1二进制逻辑思维由理论算法进入了工程领域;这种内部含有“逻辑”的集成电路在速度、成本和密度三大方面决定了他们远大的未来。数字电路出现了。
本质还是晶体管啊,虽然有序且规则,像手拉手(Transistor-Transistor)的朋友,请叫他们Transistor-Transistor Logic,TTL吧;同年另一种工艺CMOS也出现了。从此数字电路的世界热闹了!
<ignore_js_op>
外表单纯内芯复杂的数字电路,与非门
1.3 可编程电路
在74和4000系列门电路充斥的20世纪下半叶工程师们总是需要背诵芯片的管脚排布,管脚兼容性也是在这段时间出现的,那时个人电脑PC还不普及,Internet更没有影子,每天捧着一本厚厚的大部头器件手册翻来翻去可不是件好玩的事情。
看着各种门电路有没有回忆起你的大学实验室里的面包板时光啊?将各种门电路之间使用导线密密麻麻的连接在一起,组成一个更加复杂的逻辑电路,是不是你的乐趣呢?有时碰掉了一根线找的满头汗也无法归位有木有?No zuo no die啊! 如果每个器件的管脚都一样就好了,天下太平!
于是可编程逻辑阵列(PLA)于上世纪70年代出现了,可编程器件的诞生绝不像明星一样大受欢迎,反而由于其速度慢,昂贵的专用烧写器,无法在线编程而被视为鸡肋,这货真的有前途吗?问题要一个一个解决,80年代的可配置可编程逻辑阵列(PAL) 可以使用原始的软件工具提供有限的触发器和查找表实现能力,字母顺序的颠倒解决了软件化的问题,这具备了今天的可编程器件的雏形,对当时来说绝对是一个创举。因此逐步为人们所接受。
<ignore_js_op>
林林总总的74门电路
1.4 FPGA&CPLD
20世纪80年代中期,可编程器件的发展逐渐加速,几个如雷贯耳的名字出现在了美国工商局的注册本里,Lattice、Xilinx、Altera相继注册,他们依次发明了ISP技术、FPGA、CPLD,可编程器件的历史一下子进入了现代。ISP技术极大推动了可编程器件的发展,FPGA和CPLD则是目前主流的编程芯片了。二者结构虽不同,但问世之初的目的大同小异。下面以FPGA为例进行描述。
看到这里,你基本应该清楚FPGA最初是什么了吧?对了,在他的发明专利上“开放式门”组成的芯片是其最原始定义。利用这种芯片工程师可以根据需要进行编程,然后在系统更新(ISP),添加新功能而不用重新设计电路板,早期的电路板主要是什么?就是一堆一堆门电路啊! 当时的FPGA就是实现胶合逻辑(Glue Logic),在内部像胶水一样把门电路粘在一起实现更复杂的门电路,有点拗口。因此不要总是问FPGA能够干什么了好吧,代替门电路是蹒跚学步的FPGA最初问世目的,到目前也是应用之一(当然现在用处远不止于此,后面还有详细的讲解)。有FPGA的板子上是不是门电路种类少了很多呢?至少你不用再记住三八译码器、与门、非门、或门、加法器、减法器.......的管脚了,有木有啊?
不要以为前面都是在闲扯——,好吧,数字电路之前的是在闲扯,但数字电路却是学好FPGA的重中之重,为什么?你能理解了吗?因为FPGA涵盖了门电路的逻辑功能。FPGA设计最高境界是什么?手中有代码,心中有电路,脑中有时序,数字电路的重要度不言而喻。
当然啦,不要着急慢慢来,毕竟你已经一步登天了。简单看一下数据,XC2064:采用2μm工艺,包含64个逻辑模块和85000个晶体管,门数量不超过1000个。
<ignore_js_op>
XC2064 FPGA
目前世界容量最大的可编程逻辑器件Virtex-7 2000T,拥有 68 亿个晶体管,200 万个逻辑单元,相当于2,000 万个 ASIC 门。赛灵思首次采用了SSI技术(硅堆叠互联)。
<ignore_js_op>
Virtex-7系列FPGA
工艺水平 晶体管 等效门数
XC2064 2μm 85000 1000
V7 2000 28nm 68 亿 2,000 万
对比 71倍 80000倍 20000倍
不难看出,现在的FPGA动辄是当年资源的成千上万倍。当然学起来会较为困难,几个或者数十个门电路互连可能你要花上半天理解,但通过FPGA你可以借助HDL语言顺利驾驭几十万个门电路的开发,是不是如虎添翼啊?当然你的研究方向也就从研究门级互联提高到了逻辑关系这个层次了,但逻辑关系也在数电的范畴啊,因此你还是逃不了数电的魔掌啊!
不忘初心,方得始终啊。万事万物都有起源,无论今天如何狂拽酷炫其本源都是质朴而单纯的,沿着技术发展的路径回溯,你将找到事物的本源,在追本溯源中去领略,去体验,抛却浮躁的念头,回到最初的静谧。不扯了,天色已晚,各位看官暂时再见!