FPGA – 数字经济年代的柱石
科技在近20年里发生了天翻地覆的改变,背面的推进首要来自于半导体技能的飞速发展,其间最大的革新是天才的人们经过模数改换,把自然界的全部模仿量改换到数字域,在数字域里用咱们5千年来练就的功力 – 数学来描绘并处理模仿的国际,在数字逻辑的基础上人们又发明晰依据指令的核算、数字信号处理等技能,所以有了咱们今日的紧缩视频、数字通讯、无线网络、互联网等等,能够说“数字”是当今半导体科技的主旋律,咱们正处于一个“数字年代”,正如本年度的CES也把主旋律界说成了“数字经济”。从事电子技能的同仁们都知道,数字逻辑的底子单元便是“门”,由许多的“门”构成林林总总不管多么杂乱的逻辑功用。FPGA – “现场可编程”“门阵列”,也就成了数字范畴的“乐高”,用它能够建立出恣意的作品。
FPGA的演进
让我先来回忆一下前史。1989年我榜首次接触到电路板的时分,上面布满着一系列的TTL、CMOS芯片,一颗14~20只管脚的芯片中一般只需4-6个简略的“门”,十几个芯片的大板子也就完结寻址、译码之类的功用,运用起来是十分的苦楚,假如要修正逻辑,只能用手术刀切开电路板并进行飞线。94年的时分我开始运用GAL(其时是Lattice的16V8,20V8),觉得那简直是一个革新,居然能够用软件编程修正芯片内部的逻辑而不必切开电路板,其时GAL不方便的当地在于输入、输出管脚都现已固定好,不能够在线编程,每次修正逻辑都需求运用暴力把芯片从板座上拔下来放回编程器上进行修正。不久Lattice、AMD(好像还有Philips)都推出了能够在线编程的PLD(CPLD/EPLD),专业术语叫ISP(In System Programming),I/O管脚现已能够恣意界说,管脚数量也到达44个以上,十分合适中等规划的数字逻辑规划。1995年后期因为项目的需求,PLD现已无法满意咱们体系的要求,因为咱们需求芯片内部要有许多的寄存器做Buffer, FIFO等。所以Altera, Xilinx以及他们的代理商轮流去访问咱们的实验室,给咱们引荐新的器材 – FPGA。FPGA跟PLD有很大的不同:榜首,PLD是能够经过再编程修正逻辑的器材,一旦编程好了,就好像功用固定的逻辑功用块能够做它该做的作业了,FPGA就像痴人相同,一掉电里边的东西全不见了,每次板子上电的时分需求从外部PROM(比小容量的FPGA还贵,而且原厂供给的一般都是只能一次编程的)把逻辑加载进来。第二,FPGA的结构跟PLD是不相同的,PLD的优势在于速度,首要用途在于灵敏地构建各种组合和时序逻辑,而FPGA拼的是内部的存储器,后期的FPGA内部有许多的块状存储器(可方便地装备成SRAM,双口RAM、FIFO等)以及分立的存储器,适用于需求许多内部存储器的运用,比方数据收集,通讯体系中的交错、去交错,在FPGA内部构建带有必定容量存储器的微处理器 – 8031、RISC等,在PLD里边你是没有任何或许的。因为当今的大多数规划中都会用到微处理器,FPGA厂商争相针对这些需求开发了一些软核,比方Xilinx的PicoBlaze(8位的)、MicroBlaze(32位的),后来觉得不过瘾爽性把PowerPC给硬化进去了,一颗不行,有的芯片里边还要塞4颗。
当年咱们项目中选用了Xilx的XC40xx,规划选用原理图输入,十分的原始可是很直观。美中不足的当地在于Xilinx的软件界面不太友爱。2000年到美国后依然从事硬件规划,仍是运用Xilinx的FPGA,不过规划的方法先进了许多 – 用上了Verilog,比较骄傲的工程 – 完好的QAM调制器、依据USB的数字示波器、恣意波形发生器以及一系列的通讯体系运用模块。
在前后十年多的时间里,可编程逻辑器材尤其是FPGA从结构、容量、速度、编程软件、服务形式等方面都有了巨大的改变,小到最底子的数字逻辑,大到杂乱的通讯网络、视频编解码体系乃至ASIC原型规划,无处不见FPGA的身影。今日假如一个研制用的电路板上没有FPGA,这个研制项目的技能含量底子不高;假如一个工程师不会运用FPGA,他底子欠好意思跟别人说自己是做硬件的;假如一个理工科院校还没有FPGA的课程,这个校园必定十分不靠谱,需求Xilinx大学方案的协助。
FPGA的优势:
依据运用的不同,规划者所选用的解决方案也会不同,在大规划数字芯片中比较典型的技能首要有:微处理器、DSP、专用集成电路ASIC等,相关于这些技能的运用来讲,FPGA有什么优势呢?
1. 微处理器:今日的微处理器(包含微操控器)品种繁多,结构也各不相同,从4位、8位、16位、32位到64位,有8051,PIC,RISC、ARM、MIPS、Xtensa以及X86等,他们大多有丰厚的接口同各种外设进行衔接,经过软件履行不同的进程,然后完结必定的使命,并将操控指令或成果进行输出。能够说经过软件编程微处理器能够做任何作业,可是丧命的缺陷便是速度有限,在外部时钟的节拍下次序履行一条条的指令,不能并行处理,因而微处理器厂商只能玩命进步芯片的速度(比方Intel的芯片时钟在2GHz以上,ARM现已在600MHz以上),关于更杂乱的使命只能多放几个兄弟在里边一同干活,也便是今日的多核技能。因为一般略微杂乱一些的体系都会用到微处理器用于输入输出、多进程处理以及网络通讯等,许多满意必定功用需求的通用微处理器本钱较低,因而被广泛选用。现在微处理器范畴最抢手的技能术语无疑便是 “嵌入式体系”了,但我能够担任任地讲,大多数人对“嵌入式体系”的了解是片面乃至是过错的。有些公司为了商业利益把嵌入式体系以“皇帝的新装”形式进行大规划地忽悠,导致人们简直把“嵌入式体系”同某一种IP类型画上了等号,这个职业出现出了大批的底子不明白嵌入式体系的嵌入式体系工程师。
2. DSP: 数字信号处理,精于在数字域经过履行相应的程序进行信号的处理,广泛用于音、视频,通讯等范畴。众所周知,通用DSP的领导厂商当首推TI, 当然许多通讯芯片公司、视频芯片公司都在自己芯片内部放入了相应的DSP模块,同微处理器一同构成完好的体系。微处理器担任操控、人机界面、网络通讯等,其对应的履行软件一般称作Software;DSP担任算法,比方滤波、空间改换、FFT/IFFT、调制解调等,相应的履行程序被称作Firmware。DSP的长处是灵敏,由软件操控的可编程,并支撑大规划的乘除法运算,缺陷同微处理器相同是串行处理,不管做多少个作业要一个个排着队来做。
3. ASIC:专用集成电路。一般为厂商在确认商场量比较大的情况下,为了下降本钱而把比较老练的功用做在一颗芯片中,履行现已确认的一些运用。它的长处是显着的:廉价,专用。缺陷也是显着的,发现有问题了再改?对不住从头交钱。假如量不大,平摊下来的单片本钱就会适当的高,一颗芯片的规划、流片、测验的周期没有6个月是下不来的,时间本钱是巨大的。别的客户的需求简直是无限的,他们的食欲也是不断添加的,不管你规划中考虑的多么周全,都无法满意一切客户的需求,你会发现许多外设的接口需求添加、改善,内部的功用需求调整,片上的存储空间受到了约束等等。
4. FPGA: 它比较显着的缺陷便是相对来讲本钱较高,首要用于研制进程中或许商场量不会很大,FPGA在体系的全体价格中不灵敏。一颗FPGA芯片的价格从低于1美元到几千美元不等,当然这是能够了解的,究竟灵敏性是靠高度的冗余带来的。它的优点是其它任何一种技能无法比拟的 – 它简直能够做任何作业,你能够用它建立多个微处理器,用它构建自己的乘、除法单元做出几个DSP来,而且这些处理器、DSP能够一起干活,并行作业,与此一起您还能够运用芯片内部未用的资源做许多辅佐的功用,能够说是高度的灵敏。
以一个运用为例,今日的轿车电子也是以人为本,该范畴的一个重要的技能热门便是“司机协助(DA)”体系,它由超声、雷达、照相机以及激光等多种不同的传感器构成,这些不同的传感器在不同的时间或许同一时间把相应的信号收集下来,发往中央处理单元进行辨认、运算、做出判别,协助司机在倒车、高速行进以及夜间行进的时分能够对周围的环境在最短的时间内做出精确的判别并做出一系列的安全维护动作。假如选用微处理器或DSP对多传感器的信号进行处理,它们无法并行履行多个使命,而且同其他体系进行互联,因而就会形成体系的处理时间延迟,可靠性差,然后导致事端无法及时防止。假如选用ASIC呢?跟着用户对功用要求的不断添加,对功用要求的不断晋级,也就要求算法要不断的改善,显着选用ASIC不管从灵敏性仍是本钱上都是不合算的。图1是Xilinx专为轿车电子开发供给的功用模块,图2为在一颗Spartan-3E FPGA中针对“司机协助”集成了许多的功用 。
FPGA的规划:
FPGA的功用越是强壮,对规划的要求也就越高,究竟有那么多的管脚需求跟其它芯片衔接起来,有那么多的功用要一行一行地选用逻辑写出来,远远不是十年前处理门级电路的时分了。尽管今日大多数用过FPGA的工程师现已对这个苦楚的进程深有体会,我仍是把他们罗列在此:
1. 电路板规划:
现在的电路板规划动不动便是4层板、6层板乃至更多层,芯片的封装也变得八怪七喇,什么QFN、BGA等等,假如发现了衔接不对想手艺修正,拿着烙铁都找不到往哪里烫,底子没有露出来的管脚。尤其是FPGA芯片, 256个管脚的BGA封装都算照料你了,假如再添加一些功用,容量再大一些,一不留神就到1000多个管脚去了,光做原理图中的符号就要折腾你三天,完了还要拿着放大镜不断地查看,不然做回来的电路板极有或许是废的。这还不算,等你布局、布线的时分你会发现许多的线都是扭着的,一是难布,二是电气功用也欠好,好在FPGA的管脚是能够从头装备的,修正一下管脚的界说就能够让芯片之间的联线能过做到最优。
当然体系的速度高了,对高速数字规划方面的常识要求便是有必要的了,这儿边有一个词叫“信号完好性”,有几位美国大牛在这方面很有研讨,其间有不少他们的作品翻译成中文了。假如你想真的了解并能够灵敏运用,好好回炉去学厚实电磁场理论,不明白电磁理论,就不或许做好高速数字规划。FPGA支撑各种高速串、并行总线并在许多体系中要和高速的数据、时钟进行衔接,假如信号被你给搞得不完好了,整个体系功用会大大下降乃至不干活。
一般的体系都会有一个需求大电流的Core电压(1.2V或1.8V等,取决于工艺)和一个需求小电流的接口电压(一般是+3.3V),而且有多组不同的地。除了这些对工程师的布线提出应战之外,还有必要注重的一个部分便是锁相环(PLL/DLL),这个部分的布线是适当的要害,一旦有问题,整个体系的功用就会大打折扣,尽管数字的电路不是0便是1,可它就跑不快了。
2 逻辑规划:
开始用PLD/FPGA的时分还都是选用图形输入法,直观而原始。现在FPGA的用户底子都在选用更高档的言语 – VHDL或Verilog,这种言语高档得好像C,用起来十分简单。可是您千万不能把它当C来使唤,究竟硬件和软件仍是不同的。4年前在我做硬件工程师的时分,一个擅写DSP软件的兄弟写了一段FPGA的代码,他花了整整一页的篇幅完结了一个用硬件的思路只需4句话就能够完结的功用,搞得我苦笑不得。在这儿边要时间留意的是,FPGA内部多个功用模块都是能够并行操作的,假如用程序的思路去写,底子上会让他们排着队串着出来,当成DSP用了。
3 充分运用现有的资源:
无需争议,今日你现已不或许徒手把一个Spartan-3E中哪怕最小的系列给填满了,从头写一个I2C接口,从头做一个以太网的MAC作为训练还能够,在实践的项目中每个都自己去写是不可取的,怎么运用现有的资源是十分重要的。首先在每个人的规划作业中要留意堆集,把从前用得不错的功用模块仔细完善后写好文档以便往后自己或别人运用;再次FPGA的厂商都在配套的软件中内嵌一些免费的功用模块,依据自己的需求能够灵敏地进行装备运用。当今互联网年代,信息共享成了主旋律,因而你能够方便地在一些开源的社区中找到自己需求的东西,比方在www.openhw.org社区中你就能够找到并下载许多其他FPGA同仁们开发并验证过的功用模块,假如有问题还能够在社区内同他们进行互动沟通,咨询等,要把这些先进的手法都用上。当然假如公司有财力,又需求在最短的时间内推出产品,您能够到FPGA厂商的网站上,那里陈设着琳琅满目的商用IP, 这些都是FPGA厂商会同他们认证过的联盟厂商一起推出来的,您能够放心肠运用。图3为Xilinx公司为消费电子范畴的“数字显示屏”供给的系列IP示例。