打印

FPGA - 数字经济时代的基石 (zz)

[复制链接]
2242|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AutoESL|  楼主 | 2011-10-18 22:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不在研发的第一线工作已经很久了,本想不再对具体的专业技术指手画脚,以免被内行的朋友们贻笑大方,毕竟这世界发展太快了,无论做了多少年的工作,转眼就会落伍。本次CES笔者应Xilinx的邀请参观了一下他们展出来的作品,对“汽车电子”有了比较全面的认识,并结识了两个非常要好的朋友,于是就有了写篇评论的欲望。虽然Xilinx在此次展会上发布的是几款有关“消费电子”和“汽车电子”的产品,已经有新闻稿在本网站发布,但我认为这其实不算什么新闻了,Xilinx的FPGA最强大的应用其实是在通信等其它领域,这次只不过是展示了一下跟CES相关的产品应用而已。鉴于FPGA的广泛的用途,我把我本人对FPGA的点滴认识总结一下,与大家交流,也算是了却我多年来对FPGA的一种情结。

FPGA - 数字经济时代的基石
正如我在《科技以人为本 - CES结语》一文中讲的,科技在近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 SystemProgramming),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内部构建带有一定容量存储器的微处理器- 8031RISC等,在PLD里面你是没有任何可能的。因为当今的大多数设计中都会用到微处理器,FPGA厂商争相针对这些需求开发了一些软核,比如XilinxPicoBlaze(8位的)MicroBlaze32位的),后来觉得不过瘾干脆把PowerPC给硬化进去了,一颗不够,有的芯片里面还要塞4颗。当年我们项目中采用了XilinxXC40xx,设计采用原理图输入,非常的原始但是很直观。美中不足的地方在于Xilinx的软件界面不太友好。2000年到美国后仍然从事硬件设计,还是使用XilinxFPGA,不过设计的方式先进了很多 - 用上了Verilog,做了几项比较有成就感的工程 - 全数字的QAM调制器、基于USB的数字示波器、任意波形发生器以及一系列的通信系统应用模块等等。在前后十年多的时间里,可编程逻辑器件尤其是FPGA从结构、容量、速度、编程软件、服务模式等方面都有了巨大的变化,小到最基本的数字逻辑,大到复杂的通信网络、视频编解码系统乃至ASIC原型设计,无处不见FPGA的身影。今天如果一个研发用的电路板上没有FPGA,这个研发项目的技术含量基本不高;如果一个工程师不会使用FPGA,他根本不好意思跟别人说自己是做硬件的;如果一个理工科院校还没有FPGA的课程,这个学校一定十分不靠谱,需要Xilinx大学计划的帮助。

FPGA
的优势:
根据应用的不同,设计者所采用的解决方案也会不同,在大规模数字芯片中比较典型的技术主要有:微处理器、DSP、专用集成电路ASIC等,相对于这些技术的应用来讲,FPGA有什么优势呢?
1. 微处理器:今天的微处理器(包括微控制器)品种繁多,结构也各不相同,从4位、8位、16位、32位到64位,有8051PICRISCARMMIPSXtensa以及X86等,他们大多有丰富的接口同各种外设进行连接,通过软件执行不同的进程,从而完成一定的任务,并将控制命令或结果进行输出。可以说通过软件编程微处理器可以做任何事情,但是致命的缺点就是速度有限,在外部时钟的节拍下顺序执行一条条的指令,不能并行处理,因此微处理器厂商只能玩命提高芯片的速度(比如Intel的芯片时钟在2GHz以上,ARM已经在600MHz以上),对于更复杂的任务只能多放几个兄弟在里面一起干活,也就是今天的多核技术。由于一般稍微复杂一些的系统都会用到微处理器用于输入输出、多进程处理以及网络通信等,很多满足一定性能需求的通用微处理器成本较低,因此被广泛采用。现在微处理器领域最热门的技术术语无疑就是 “嵌入式系统”了,但我认为大多数人对“嵌入式系统”的理解是片面甚至是错误的。有些公司为了商业利益把嵌入式系统以“皇帝的新装”模式进行大规模地忽悠,导致人们几乎把“嵌入式系统”同某一种IP类型画上了等号,这个行业涌现出了大批的根本不懂嵌入式系统的嵌入式系统工程师。
2. DSP: 数字信号处理,精于在数字域通过执行相应的程序进行信号的处理,广泛用于音、视频,通信等领域。众所周知,通用DSP的领导厂商当首推TI, 当然很多通信芯片公司、视频芯片公司都在自己芯片内部放入了相应的DSP模块,同微处理器一起构成完整的系统。微处理器负责控制、人机界面、网络通信等,其对应的执行软件一般称作SoftwareDSP负责算法,比如滤波、空间变换、FFT/IFFT、调制解调等,相应的执行程序被称作FirmwareDSP的优点是灵活,由软件控制可编程,并支持大规模的乘、除法运算,缺点同微处理器一样是串行处理,无论做多少个事情要一个个排着队来做。

3. ASIC专用集成电路。一般为厂商在确定市场量比较大的情况下,为了降低成本而把比较成熟的功能做在一颗芯片中,支持已经确定的一些应用。它的优点是显然的:便宜,专用。缺点也是明显的,发现有问题了再改?对不起要重新投入巨大的财力和人力,如果量不大,平摊下来的单片成本就会相当的高,一颗芯片的设计、流片、测试的周期没有6个月是下不来的,时间成本是巨大的。另外客户的需求几乎是无限的,他们的胃口也是不断增加的,无论你设计中考虑的多么周全,都无法满足所有客户的需要,你会发现很多外设的接口需要增加、改进,内部的功能需要调整,片上的存储空间受到了限制等等。
4. FPGA: 它比较明显的缺点就是相对来讲成本较高,主要用于研发过程中或者市场量不会很大,FPGA在系统的整体价格中不敏感的情况下。一颗FPGA芯片的价格从低于1美元到几千美元不等,当然这是可以理解的,毕竟灵活性是靠高度的冗余带来的。它的好处是其它任何一种技术无法比拟的 - 它几乎可以做任何事情,你可以用它搭建多个微处理器,用它构建自己的乘、除法单元做出几个DSP来,而且这些处理器、DSP可以同时干活,并行工作,与此同时您还可以利用芯片内部未用的资源做很多辅助的功能,可以说是高度的灵活,当然今天FPGA厂商如Xilinx也针对一些应用推出了内置微处理器或DSP的版本。
以一个应用为例,今天的汽车电子也是以人为本,该领域的一个重要的技术热点就是司机帮助(DA)”系统,它由超声、雷达、照相机以及激光等多种不同的传感器构成,这些不同的传感器在不同的时刻或者同一时刻把相应的信号采集下来,发往中央处理单元进行识别、运算、做出判断,帮助司机在倒车、高速行驶以及夜间行驶的时候能够对周围的环境在最短的时间内做出准确的判断并做出一系列的安全保护动作。如果采用微处理器或DSP对多种传感器的信号进行处理,它们是无法并行执行多个任务,并同其他系统进行互联的,因此就会造成系统处理时间的延迟,可靠性差,从而导致事故无法及时避免。如果采用ASIC呢?随着用户对功能要求的不断增加,对性能要求的不断升级,分析、处理的算法也要不断的改进,显然采用ASIC无论从灵活性还是成本上都是不合算的。图1Xilinx专为汽车电子提供的IP模块,图2为在一颗Spartan-3E FPGA中针对司机帮助集成的功能

图1 FPGA平台能够支持的“司机帮助”系统功能


图2 采用Xilinx Spartan-3E的“司机帮助”解决方案

相关帖子

沙发
AutoESL|  楼主 | 2011-10-18 22:47 | 只看该作者
FPGA的设计:
FPGA的功能越是强大,对设计的要求也就越高,毕竟有那么多的管脚需要跟其它芯片连接起来,有那么多的功能要一行一行地采用逻辑写出来,远远不是十年前处理门级电路的时候了。虽然今天大多数用过FPGA的工程师已经对这个痛苦的过程深有体会,我还是把他们列举在此:

1. 电路板设计:

现在的电路板设计动不动就是4层板、6层板甚至更多层,芯片的封装也变得稀奇古怪,什么QFP、QFN、CP、CS、FGA、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来使唤,毕竟硬件和软件还是不同的。6年前在我做硬件工程师的时候,一个擅写DSP Firmware的老兄自学成才,用Verilog DIY了一段FPGA的代码,他花了整整一页的篇幅实现了一个用硬件的思路只要4句话就可以完成的功能,搞得我哭笑不得。在这里要时刻注意的是,FPGA内部多个功能模块都是可以并行操作的,如果用程序的思路去写,基本上只会让他们排着队串出来,FPGA并行处理的能力就让你彻底给搞残废了。

3 充分利用现有的资源:

无需争议,今天你已经不可能徒手把一个Spartan-3E中哪怕最小的系列给填满了,重新写一个I2C接口,重新做一个以太网的MAC作为锻炼还可以,在实际的项目中每个都自己去写是不可取的,如何利用现有的资源是非常重要的。首先在每个人的设计工作中要注意积累,把曾经用得不错的功能模块认真完善后写好文档以便今后自己或他人使用;再次FPGA的厂商都在配套的软件中内嵌一些免费的功能模块,根据自己的需求可以灵活地进行配置使用。当今互联网时代,信息分享成了主旋律,因此你可以方便地在一些开源的社区中找到自己需要的东西,比如在著名的、中文版的FPGA开源硬件社区中你就可以找到并下载很多其他FPGA同仁们开发并验证过的功能模块,如果有问题还可以在社区内同他们进行互动交流,咨询等,要把这些先进的手段都用上。如果贵公司有财力,又需要在最短的时间内推出产品,您可以到FPGA厂商的网站上,那里陈列着琳琅满目的商用IP, 这些都是FPGA厂商会同他们认证过的联盟厂商共同推出来的,您可以放心地使用。图3就是一个例子,Xilinx公司同其联盟厂商为消费电子领域的“数字显示屏”提供了一系列的IP,这些功能都要自己开发的话,您还不如去“钻木取火”。

图3 Xilinx同联盟厂商提供的用于“数字显示屏”的系列IP

FPGA的未来之路:

技术仍在不断发展,而且是以更快的步伐。FPGA在容量、功能和速度上的提高带给我们今天年轻人的压力越来越大,那么多的专业知识需要学习,那么多的设计技巧需要掌握,那么多的系统功能需要实现,对用户的挑战同样也是对FPGA厂商的挑战,如何能够让用户在最短的时间内设计出满足其性能需要的产品是FPGA厂商面临的最主要的问题,同时也影响着他们服务模式的改变,在此列举出我认为目前FPGA厂商需要注意的一些问题。

1. 要高度重视用户体验:

很多工程师和学生在开始使用Xilinx FPGA遇到的第一个头疼的问题就是下载线,原装的太贵了,要花掉$199,山寨版的售价也在500元以上,而且有些高级的调试功能还不能支持。听说有脑瓜聪明的学生干脆买一块带USB和JTAG接口的Spartan-3E开发板拿来当下载线使用,比买原装的下载线还要便宜很多,可见大家对Xilinx的FPGA产品的喜爱及对下载工具的无奈。对用户体验的不尊重会严重打击用户的学习积极性,让大批对FPGA充满热情的年轻人投奔到其它的领域,比如“嵌入式系统”或DSP。我衷心希望FPGA厂商也能“以人文本”,除了在技术上不断升级之外,更多地关注一下用户的体验,站在用户的角度努力改进软件的用户接口界面并能够最大可能地方便用户的编程及调试。

2. 推出易用封装的FPGA:

盲目地追求大而全并不见得是件好事,今天的FPGA动不动就几百只、上千只管脚,需要设计4层以上的电路板,而大多数的应用根本用不了那么多管脚,也不需要那么高的速度。为什么不能提供一批内部容量大而管脚较少的芯片?当年在几乎所有微处理器都往“多端口、多管脚”挺进的时候,Cygnal公司率先推出只有5~20条腿但内部功能强大的8051单片机而获得巨大成功并最终被Silicon Labs收购。如果能够有20条管脚之内、双列直插的FPGA芯片,我相信FPGA的普及率以及应用领域都会大幅增加。

3. 提供FPGA到ASIC的转换工具:

高端FPGA的一个重要应用就是提供给那些做ASIC的公司用作原型设计,但今天普遍存在的一个问题是在FPGA上所做好的设计需要再花大量的时间进行“重设计”才能做成ASIC,毕竟FPGA的速度同最终做成ASIC后的运行速度有天壤之别,而且要做成ASIC还取决于Fab厂商的库。但如果FPGA厂商能够提供一套转换软件帮助FPGA用户顺利地转成ASIC,我相信大量做ASIC设计的厂商会放心地成为高端FPGA的客户。

4. FPGA的学习要从中学开始:

20多年前邓大人拍着李进的脑袋说“计算机要从娃娃抓起”,今天五、六岁的娃娃已经不仅能够熟练地使用计算机,网络也已经成为他们生活的一个重要部分。我们处于“数字经济时代”,数字的概念已经渗透在生活的各个角落,为什么我们的基础教育中还缺少这么重要的一块?学习“数字逻辑”不比“立体几何”“解析几何”等更有意义吗?。我相信不久的将来“数字逻辑”将成为中学教育的一部分,而作为数字经济时代的“门”积木 – FPGA则也会贯穿到整个中学教育体系中去。要实现这些,还需要我们的FPGA厂商能有更加人性化的用户接口界面,让中学生能够非常直观地使用FPGA去实现各种功能。

FPGA,一个说不完的话题,一个数字经济时代的DNA,更是我们每一个从事电子技术行业的工程技术人员都应该熟悉并灵活应用的基本工具。

使用特权

评论回复
板凳
AutoESL|  楼主 | 2011-10-18 22:47 | 只看该作者
地板
hawksabre| | 2012-6-26 18:52 | 只看该作者
观望也是一种态度,不会还是顶一下的啊   学习了  因为这篇**  我转战FPGA

使用特权

评论回复
5
bairan168| | 2012-6-26 20:32 | 只看该作者
老贴重现。

使用特权

评论回复
6
梅花望青竹| | 2012-6-26 21:46 | 只看该作者
:dizzy:

使用特权

评论回复
7
fredfong| | 2012-7-3 17:33 | 只看该作者
:P 咱反而行之,从FPGA转回ARM+linux 4# hawksabre

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:天使宝贝 博客IT人生 From C/C++/SystemC to Xilinx FPGA

0

主题

2517

帖子

3

粉丝