编者按:本文的原作者是Altera一位员工,文中观点虽不免偏颇,但非常有助于对整个FPGA技术有个全面的了解。(本人是一个普通的出版工作者,如果希望交流加微信:185232201)
FPGA三国志-第一篇/不可不看的故事
CPLD的时代
我在12年前,偶然接触PLD,没有想到自己居然就在这个行当里安身下来。可是这个行业也的确是个飞速发展的行业,十多年过去后,从当初的接近十家主要供应商,到今天已经激烈搏杀后,只有差不多如文章题目一样,成为了今天三足鼎立的局面。想来想去,决定以这个名字文章主题。同时也和大家分享我多年来的一些经历和感受。
全局布线,ISP,PLD,宏单元机构,成为PLD市场必备的武器。
CPLD时代,进入我国最早的供应商是Lattice,那个时候,也不是每个行业都用的了这种产品。首先,软件是需要收费的。这个和今天你可以轻松下载到免费的版本有很大的不同。另外,不同的授权,也决定你能使用不同的产品规模和设计语言。
90年代中,是电信行业大发展的年代。同时也是专用应用领域大发展的时代。当时pld是解决一个逻辑粘连的功能。同时由于Lattice很早进入市场,推广很成功。全局布线池的结构,对于布局布线要求不高。一度时间,很多大的通信企业,研究所,都很快成为Lattice的用户。但是,有句话说得好。“长江后浪推前浪,前浪死在沙滩上。”太早的成功也孕育着。安则危!
94年Altera已经有了一些用户。但是相对来说。还是很有局限性。另外过去的信息远远不可以与今天同日而语. 但是用过altera的工程师,已经为他的界面和功能留下了深刻的印象。96年是ALTERA在中国发力追赶的开始。当然,乱世出英雄。当时的代理商是一家香港的公司。他们很快找出这种集成电路最好的销售和支持模式。并且这种从大洋那边继承过来的方式,经过适当的改良,的确收到很好的效果。代理商有专门负责的现场应用工程师。这种方式极大方便了设计者与供应商之间的信息交流。在推广初期是否有技术支持,变得非常重要。这个时期在整个中国市场上涌现出很多非常优秀的现场技术工程师。今天已经有很多人成为这个行业的领军人物。
Lattice首开ISP技术先河,也就是今天常说的在线可编程,给所有设计者带来很大的方便。芯片在电路板上,可以直接编程调试。不用每次拔插芯片,再通过紫外线来擦写要方便得多。这个时候,Lattice还是明显占有上风的。毕竟先入为主嘛。当时主要的型号集中在Lattice ispLSI1032, 1016, Altera的EPM7128E,不过Altera已经做好了准备,因为,Altera毕竟是pld的发明者。而且也是最早采用Windows平台的开发工具。在美国市场上占有先机。他不会轻易放弃这样一个市场
当时的应用在电信领域主要是将之前的74系列的一些单元进行集成。同时加入一些控制功能。不过这个时期的产品结构都是采用mc单元结构。每个mc实际上就是相当于32到36个与非门,以Altera EPM3032为例就是认为有32*30到256*30,大致就是7000门左右,因此产品命名为MAX7000,但是当时的设计很多还在大量应用异步设计。因此,电路的结构如果能导致利用率的上升,将是更加有竞争力的表现。MC的结构就是采用先组合,后时序多个时钟输入结构。Lattice是用4个宏单元一组。altera采用8个一组。而且,altera在利用率上,稍微占有上风。同时Altera当时的maxplusII的良好界面。在97,98年的两年时间里,已经奠定在中国的基础。更深层次,Altera已经看到未来市场的需求,前面说到,成功太早有时候也不是好事。在MAX7000的铺垫下,Altera已经有了进攻Xilinx的武器,可Altera一致宣称那不是FPGA,换以一个更加中性的名字---CPLD(复杂可编程逻辑器件)。那什么是Altera的武器呢。FLEX8000!他的出现是Altera奠定今天可以和xilinx平分秋色的基础。
在1996,97年,成都,西安多家做专业领域的公司和研究单位,也使用了一些Actel,Actel的产品和那个时候的Quicklogic来说,都是属于Antifuse的技术。使用他的最大好处在当时就是有防止辐射,就是说在航空产品中可以用。但是需要你认真的仿真。如果你烧入进去设计,就只能换下一片了。而且为了烧断里面的熔丝,第三方的编程器支持的也不多。但是他们有些军用温度的产品。还是在这个领域有不错的口碑。
Actel当时的策略结构是,基本上和他们现在的论调也非常一致,就是精细颗粒,所有的DFF,还是可以靠独立的门来搭建。这个在他早先的A1020等产品系列上可以看到。而且芯片上有一部分是组合逻辑区,有一部分是时序逻辑区。另外他们的软件也是多家EDA工具的组合。特别是库的一致性不是特别通用。
Quicklogic的产品是FPGA公司中最早嵌入Synplify的商家,而且他们的LE结构是基于Mux的,底层的layout也可以清晰看到路由,资源消耗。输入法和库的建立很特别。但是也存在上面的问题。产品好像是QLxxx的,我还去应聘过一次这家公司,因为他们最早采用Synplify。而且,当时我已经感觉Synplify和雷昂纳多(拼写忘记了),以及exzampler??这个拼写也有问题。我在做FAE的时候,总是用这3个工具都综合一次,看他们哪个强。后来证明是对的。Sy是最平均的,而且简单的优点傻瓜。遗憾他也在今年被Synopsys收购了。现在Quicklogic也专注一些细分市场。
为什么要这样的结构-先组合,后时序多个时钟输入
随着科技的进步,有很多人已经忘记了很多细节,当然,我们也要遵循一个原则。难事做易,大事做细!就像朱熹说的--“问渠哪得清如许,为有源头活水来“,如果你不知道原理,碰到重要的问题,或者是设计的时候,即使成功,也是不知不觉成功,同样呢,也是不知不觉失败。
拉回话题,当你设计一个扫描电路的时候,例如,你可以采用一个时钟,输入一个计数器,然后计数器的输出,再驱动一个译码器,这样你的电路就出来了。当然事情完成了一半。功能实现了,但是,有没有更好的办法。后者换句话说。有没有适合PLD的方法。实际上用另外一个角度看,这个设计是典型的,先时序模块,才是组合电路。这个实际上,不是很和PLD本身的结构相符。还有一个问题时,随着电路速度的提高,每个译码输出之间的抖动也成为问题。就是输出的不一样的。从资源的角度来说,一个计数器,要3各单元。一个译码器,由于有8个输出,还是需要8各单元。但是如果用一个移位寄存器的方式,可以只需要8个单元。或者用状态机的方式实现,也是消耗同样的资源。可是,输出都是由于同一个时钟锁定,每个输出的延迟也比较一致。另外,当时对总线数据的译码是经常有的事情,因此,每个单元的扇入数量都是很高的。都有30个以上。因此,你设计的时候,要有两个思想:用同步设计模式,用先组合后时序的模式。后来的Xilinx的95系列更是将扇入系数扩大到90个。也是这个原因。当时PLD厂商比较的也是这些指标。
Xilinx , FPGA的发明者
Xilinx实际上成立的日期,比altera还晚了一年。但是他走的道路,从开始就注定了有今天的成就。在1996-1998,pld的高端市场,也就是FPGA市场,都是Xilinx把持,主要是xc3000/4000,当然Xilinx开创了一个新的结构,不过这种结构还是能够找到一些共同点,也是先组合,后时序。不过很重要的闪亮点是:
细颗粒查找表结构,丰富的寄存器资源,以及分段式路由布线结构,电路上电加载。当然如果这个也算是的话,那就是,他的内部甚至直接集成了三态门。这个特点是那个时代Xilinx拥趸攻击Altera,Lattice的重要工具。甚至有人说,没有这个不能实现某些电路设计的障碍。当然了,Altera, Lattice的pld也是具有三态门,不过是在输入输出管脚上。的确是不如Xilinx的来的强大和直接。有的人问了,这种结构有何好处。
在那个时代,衡量一个PLD很重要的指标,就是比谁的规模更大。从这个角度来看。Xilinx无疑走到了最前面。当然,也有人说,这样的设计不可靠。这样的设计指标难以预测。还有地说这样的设计无法保密。但是市场的成功,应用需求的推动,证明这些都是杂音。
我们可以从当时xc3000的选型指南上看到。最大规模的产品,也就是今天xilinx最小的xc3s50a规模相当的东西。可是这个和当时PLD流行的规模,实在是一个飞跃。
Xilinx FPGA的架构。
Xilinx的成功,激励了Altera的新产品的推出。同时也有了革命性的突破。世界就是这么奇怪。中国古语。塞翁失马,焉知非福。实际上,如下所言,这款产品因该8282,具有282个逻辑单元的。但是在中国基本上只是在1995年有个别公司使用。
1992 |
FLEX® 8000 FPGA |
Altera的第一款现场可编程门阵列(FPGA) |
我本人经历我们开始在1997年开始大规模推广Flex10K,同年5月,位于西安的邮电部4所,是第一个采用EPF10K50的用户,当时电子杂志的广告,也有表明,Altera最先推出最大的FPGA.
1996 |
FLEX 10K® FPGA |
带有集成锁相环(PLL)的FPGA |
1995 |
FLEX 10K FPGA |
带有嵌入式模块RAM的FPGA |
实际上,这个时间就是Lattice噩梦的开始,由于设计规模的迅速攀升,规模已经是决定一个产品的关键因素。但是Lattice一直没有代表作。市场份额已经开始逐步被Xilinx,Altera蚕食。Altera的结构到底是什么革新呢?
Altera FPGA粗颗粒结构,嵌入式存储器,长联线结构.
Flex10K,他的推出,已经表明,altera的思维已经非常清晰,大规模的fpga将会是将来的王道!而且,高速的嵌入式块RAM是一个开创新的思维。当时,Xilinx凭借分布式RAM以及内置三态的结构,的确大有横扫千军的架势。但是Flex10K的出现,有效提升了Altera的FPGA产品的竞争力。在RAM需求应用不断上升的市场中。Altera迎来了市场的春天。
Xilinx的分布式RAM尽管很灵活,但是随着RAM容量的增加,访问的速度也是递减。同时也要消耗大量的逻辑资源。这个时候,应该说Xilinx和Altera的产品已经是势均力敌。因为中国是新兴的市场。这一点表现得很明显.
规模制胜的产物
世界是运动的,粗颗粒,也是好结构!
这里又回到了我们的主题,产品的内在结构。先说细颗粒结构。当时,Xilinx的3000是以CLB为基本机构。
实际上,这个输入的个数是很有讲究的。当时,也有一种激烈的争论,就是5输入的好,还是4输入的好。在实际应用中,应该说,最小的逻辑单元是这样的规模是合理的。但是要注意一点。Xilinx和Lattice后面推出的fpga一样,两个寄存器是具有同一个时钟输入的。
粗颗粒结构,Altera还是依托自己以前在PLD的经验的积累,他的fpga有很多他的pld产品的血统。世界是基于以权制利的。因为这个时候如果已经有了Wintel的名字一样。数字电路以及CPU的发展,都和8以及8的倍数有关系。因此。这种大颗粒的结构确保:
Cyclone,Stratix,Vertex
Cyclone 的出现和FPGA的市场定位和产品定位
好的技术是需要,但是有效的市场定位和销售策略也要跟上。在2002年左右,为了更好服务各种不同市场的需要。而且当时的DSP市场仍然不太明朗,有的观望,也有大力投入。而且也有两种不同的策略。
一种是同一个器件平台,但是不同的应用区隔,例如Vertex和Spartan,有一段时间,他们可能是同一个产品平台,只是Spartan的东西就是Vertex屏蔽了一部分高级的性能,对于不使用的地方,也不需要检测,同时依靠同一个平台来维持成本优势。
另外一种,就是Altera的策略,完全依赖客人市场的需要,简化不需要的特性,推出简化的结构,面向主要的逻辑集成和LVDS信号链集成。推出Cyclone,市场反响非常强力,是Altera有史以来,市场响应最快的产品。
FPGA三国志-第二篇/结构篇
Altera FPGA的速度没有Xilinx的速度快,错!当然这种非对称的结构,你必须有一定的了解,才可以更好的利用.也就是要遵循:
Altera至此以后,一直沿袭这种结构规划.因此,如果你想有效利用好Altera的产品,就应该遵守这个规则.但是要说明的,真正能体现性能的东西,也许就是你意识不到的一种小东西,就是简单的就是最好的.Altera正是凭借这个简单而高效的布局结构实现了今天的王道!昨天说到这里今天继续开始.又有很多时候没有提Lattice,在1998年的时候,Lattice和Altera同时都有成为PLD霸主地位的意图.什么可以证明呢,那就是谁最先推出可以ISP的宏单元超过1000个的PLD.当然在这个游戏过程中,Altera有一些变化,他有效的将他的Flex8000的布局结构和他的MAX7000进行结合.从而实现了在PLD规模扩大的同时可以实现:
Altera在推出他的最大的9560,具有560个宏单元的PLD,登上了无可争议的PLD冠军奖台.
当然有的人要说,Lattice有推出1000个左右,怎么不提呢.正是因为这点,导致Lattice步入歧途.实际上,FPGA世界的游戏规则已经改变了.
MAX9000的成功得益于以下的细微结构.这个时候Altera又一次将自己的颗粒度进行了扩容.有16个宏聚集在一起,在实现更多位的加法,控制,超前进位,大的多选一的应用中,可以将这些模块一次性放入一个LAB,同时在LAB内完成路由.现在已经露出一种迹象.大的规模要有,但是速度的需求已经开始了.所以在FPGA,CPLD的应用中,又有了新的裁判规则,你不仅要够大,还有够快
这个时候的异步设计还是非常的多,而且板子上芯片间信号的互联也多起来了,能够有效缩短Tsu已经成为一个重要的话题.实际上,就是在IOC上要有DFF,来进行快速锁存,同时也为所有进入CPLD的总线信号进行第一次整理.怎么实现很多的异步设计,看了下面,你就明白了.第1点,就可以用所有信号的函数输出作为clk,第2点,有效的将没有用完的资源很好借用给其他的宏,来用对称的结构实现非对称的应用!用简单的结构,应变不断的变化.
纵观当时其他的PLD,在结构上就落后很多了.你想,让你和姚明来争篮板球,如果你没有人家的身材,赢他恐怕也是嘴上的功夫了.
这个时代的强者就是---谁有最多的逻辑资源,或者memory,谁就是老大.
上面说到Lattice已经在极力扩大自己的身材,但是他不是靠结构上的改变,而是Lattice收购了Vantis,也就是AMD的一个做PLD的小部门.当然在当时,AMD的Mach就这样并入了Lattice的家族.新的问题就出现了.好比我们现在有人用什么大灵通,小灵通,GSM,CDMA,是有百花齐放的感觉,但是Lattice就像变成了解放前的蒋介石,没有办法很好的用一套工具来统一使用不同的器件.而且本身Lattice自己当时的工具也是3个独立的工具拼凑在一起的.那个年代,用过Tango,后者Orcad的人都知道,他们的图形输入是第一名的,但是和MaxplusII比起来,自动识别对象链接,以及和Office 95类似的快捷键,用过Maxplusii的人,让他们转用Viewlogic等workoffice等,简直简直就是抹他们的脖子.还有当时Lattice的销售团队,总是宣扬他们是最好的PLD,有些人竟然有 "我认为64KROM,就可以应付未来所有的软件需求"这样的论调,认为PLD必将击败FPGA,事实上,市场的残酷,告诉他们那是个很冷的冬天.于是他们又一次在2000年左右,如同水淹七军一样的结局,又急忙掉转船头,收购了ORCA,可惜了ORCA是出自Lucent的一条好汉,由于没有良好的软件支撑,使得每个工程师必须像哪吒一样.对了,怎么会像哪吒?因为你必须有三头六臂,如果你公司有些产品需要从32个宏单元到2000个LE的FPGA的应用,你就必须学习3种工具来适应它.你想想,你是不是一定要像哪吒呢!
再次谈结构以及方法学!
这里开始讲些看来与我们主题有点不搭界的东西.
1--两个人相遇,只握1次手
2--三个人相遇,每人都握一次,握3次手
3--4个呢?就是2的结果加3次,6次手
4--5个呢? 10次手.
5--16个呢,.......天,不少于...
PLD就是这样的产物,当逻辑……你会发现,路由的面积都超过了有效的逻辑面积.而且,越大越糟糕.可以下载这个简单的PPT来发现一些小问题!
advantagestruc.zip
什么样的数目比较好,对于PLD的宏单元数目
实践是检验真理的唯一标准.有人说了,256个是最好的结构,为什么呢,不然怎么那么多厂商都是在这个范围呢.实际上,他是由经济规律决定的,就是当时用256个的宏单元结构的芯片的面积,和他们卖出的价钱,比较符合当时这些上市公司的利润要求,所以.....就以这个最流行了.
但是Altera进行了很好的变通.中国有句话叫"玄之又玄,妙之又妙",什么是玄?玄就是变通的意思,也是变得意思.实际上万事万物都是相通的.那Altera就像我们的学校一样,每个年级分不同楼层,每个楼层分不同班级,每个班级上不同的课.但是用行列块的方式,达到既有规模,也有位置相关性.而且路由的面积也不会大到赚不到钱.实际上你自己观察,近10年 ,Altera的FPGA的主要框架是没有变化的!
Xilinx 的FPGA结构,实际上,有一个5200系列,很向Altera的Flex6000,但是没有多久这个东西就不见了.总之,Xilinx的结构属于称为 "孤岛式"结构,就是CLB在中间,路由围着这个孤岛.在一定的密度的时候 ,这种结构也还是不错的,当然有一个很重要的结构就是,他是全对称的.就是Xilinx的芯片的逻辑上资源的密集度是上小左右对称的.这个有好处,但是也有坏处.Altera的呢,是横向资源丰富,纵向资源相对较少,但是,在局部的横向上,又可以进行级联LE,DSP,Carry chain 等等. 好了,给大家举个简单的例子.
孤岛式的结构
Altera 的类似的结构,但是颗粒度大,从这张图,应该可以看出altera在横向资源是很丰富的.就是同一行的资源远多于同一列的.输入输出就更是了.当然,这个和管脚的封装脚的出位不是绝对一一对应的.
Stratix的出现
在2001年,Altera推出了他们最伟大的产品,Stratix.当时FPGA的竞争规则又发生了改变
但是上面这三点,都不是决定性的.这个时候,数据通信对背板走线和背板总线要求已经很高了.实际上FPGA也摇身变为系统级芯片了.
你不仅要有大的逻辑规模,合理的memory尺寸,相对丰富的时钟资源,还有就是要有高速的Serdes,缺少一项,你都会在系统级的应用中只能是亚军!
刚才说了系统级的应用,已经成了FPGA最残酷的竞争市场.那么PLD呢,怎么样了,实际上自然总是物竞天择!PLD已经变为这样的几种应用了
就像一个国家的海军一样,PLD已经成为一些简单的驱逐舰,驰骋大洋的,可以跨海作战的,绝对不是这样的产品可以涵盖的.所以,你今天喝可乐的时候,不会有太多的选择.偶尔的一些牌子如同过眼烟云,很快就弹出你的视线了.
是的,十年前我的很多朋友,有在Quicklogic,有在Cypress,现在还有一些在不断出产品的公司,当然,只能是剑走偏锋.做些细分市场还是可以继续的.但是三国鼎立的形式已经是不可撼动的事实了.
北京和深圳的差别?
你到过我们的首都北京吗?到过我们的特区深圳吗?这样打比喻是因为我在深圳和北京都旅游或者工作过.实际上我也只是想借用这两个城市的布局来做个比喻.
北京是比较对称的城市,有东直门,西直门.有东单,西单等等.总之,他的布局就像Xilinx,无数个胡同就是像Xilinx围绕在CLB的路由线.这些资源在Xilinx的数据手册中有:
但是这些胡同间的联线并不是十分充足.特别是到了规模很大的时候.Altera的呢?在深圳的人,如果你不认路,很简单,只要你走到"深南大道,滨河大道,北环大道"上的任意一条,你就可以再从这些大道到你要去的地方.但是前提是 ,这3条大道的宽度要够.提示一点,这三条大道也是东西走向比较平行的.而且整个深圳也是一个东西走向的城市,地下再有一条地铁,在同样资源的情况下,布通率,和平均车速是非常好的.而北京的地铁,是环形的.资源上不如深圳的利用率高,这里无意于评价城市规划和道路设计.只是比喻.
Altera的FPGA就是如同深圳的道路,他可以让你从列上很自如的转到宽阔的行上,然后再到达你的目的地.所以,可以告诉你一个经验.
另外,这个地方也有颗粒度大带来的好处.所以,有些原来看似不精细的地方,却在规则改变后,就变得反而是犀利无比.
运筹学也是很重要的!
经常有这样的情况,大家选择FPGA的时候,就开始翻看每种FPGA的选型手册,然后对资源表.有的甚至直接说:我这个是10万门的.你的那个是6万门的,实际上,这些都不是很正确的评估.如同有人说,我家的房子4室两厅,你家的房子3室1厅双卫生间.到底哪个更大呢?到底哪个更节能呢.厨房热水器之间离得很远又是问题.
所以说,学会正确的评价资源是很重要的.这个时候还要参照他的结构!!板式的,还是砖混的!!!
可能你还听说过一个使用面积的问题.实际上,有的房子看起来大,走道,不规则的布局,导致很多的地方都不能用!下面看个例子:
左边的Hops代表跨一步的意思,就是路由转换一次的意思.这个表什么意思呢.就是说在S3的路由过程中,每个路由在第一次,就可以覆盖850LEs中的一个,V5是132.如果你的逻辑,经过4跨,同样的路径覆盖的区域A的是X的2倍.代表什么呢?
当然还有一些好事者,例如 (http://www.opencores.org)有很多公开的opencore,大家可以将它们同时尝试放在A,X,L,看谁放的多,放的快,系统延迟更小.这方便数据就不多说了,可能都成为一门学科都不一定,因为不同的比对都有benchmark的不同标准.最终我们应该很清楚的看到.
结构真的是很重要,我们能干,也要看是否站在巨人...
不过呢,很多时候,我们的朋友基本上都说:结构和我无关,我要学好VHDL,我要....codingstyle.这个设计属于系统工程!
FPGA的真正命门和Know How实际上,能做FPGA的公司太多了,但是能将我们的设计通过算法成功放到这个芯片上,而且算出正确的时间和你的仿真要求的.就不多了,说的难听点.有些领域甚至是没有亚军的竞争!选择小规模PLD,那些,不是太重要的问题.本身就不够养活一票人的产品.
Cyclone III 与 Spartan3的对决--苹果对苹果?
目前,很多人都基本上对于新的中档设计都会集中在这个系列的竞争中,换言之,在中国目前以成本为导向的第一要求下,实际上中小公司的产品选用80%是集中在这里.
经常有人说,为什么你们的LEs数目相同,价格很不同.做些解释,一家之言.
有一点要说,那些所谓我的是多少系统门的比较方式,是典型的大忽悠模式
比较产品有很多benchmark.这里列举一些.不全的地方,可以大家补充.
所以不是简单说我的苹果和你的苹果一样. S3只有销价处理才是真正的出路.
如果你知道了结构,你会发现什么呢?
实际上,Altera一直在横向布线资源上浓墨重彩,因此,在Cyclone一代系列的时候,如果你的设计模块放在一个比较长的区域就更加容易跑出好性能.
如: 5行,5列的一个资源放置,不如在一个4行7列的区域中更好发挥性能.
到了CycloneII,可能就是接近1:1.2的样子.
Statix,基本上接近正方形.
其他的你可能需要实验一下.毕竟这个是动手的科学.而且,每家FPGA厂商,在关键布线资源方面,都是秘而不宣.这个也是为什么Synplicity要另嫁豪门的原因!因为自己没有办法得到这些资源.而综合技术已经被FPGA厂商步步紧逼了!
Cyclone III的巧合.
Cyclone III的诞生,可以说也是有划时代意义的.但是赢得偶然,其中已有些必然.下面来说说这个东西.
前面有人说过Xilinx的V5不错,但是如果说V5和StatixIII带有Serdes(串行器/解串器)的产品同时间面世的话.作为设计者,可能问题就来了.太多选择就是难以选择
StratixIII速度快,布线好,但是没有Serdes
V5速度布线都不错,出来的早,快人一步也是卖点.
但是呢?这两个产品都很贵.
由于Xilinx很重视高端用户,因此他们也认为Spartan3可以解决目前很多需要,这个也对,因此他们计划在45nm左右推出Spartan的升级产品.
Cyclone III,正好赶上高端DSP处理市场的繁荣,以前Xilinx的website上面也有这方面的迹象.号称Xilinx也是一个DSP的公司.这个也要得益于其他生态链软件系统的发展,Matlab的simulink,
另外,目前的有线系统中对Memory的需求也非常高,作为有效的缓冲也需要更多的空间.
举例来说,一个Video的应用.需要一些滤波或者其他的应用,那需要的FIR的Tap数目实际上是可大可小的.但是以前他们认为逻辑资源的比例太多于DSP的建立资源.导致很多设计用30万个LE的资源的FPGA,实际上,Logic资源利用在30%左右,而Memory仍旧显得很局促.还有一个就是用DDR2的设计也有增多的趋势,
还有就是中型设计的比重已经上升很快,就是在3年前,大家很多集中在6000个LE左右的资源.而紧接着的趋势是200个500个左右的资源和10000个LE资源的迅速两级化.另外一个增长就是50000个LE左右的区间,而这部分长期以来都是Stratix和v4,v5的传统空间.可是现在由于memory,mulitiplier的增加,导致系统性能也可以用CycloneIII实现资源换取速度和效率的方案.因此CycloneIII的资源也能利用低价格来和高端FPGA分一杯羹.
但是CycloneIII尽管有价格优势,逻辑和memory的优势,可是在Serdes的应用上,还是一片空白.这也是大家觉得他的缺憾所在.
总之,CycloneIII和Spartan3 DSPA系列的推广,已经有一个暗示的信号,就是
以多块,大容量memory,Serdes可选的特点将成为新的中级FPGA市场的标杆了.
为什么Cyclone,或者说Altera的粗颗粒有一定的好处?
大家都知道,Altera的结构可以说看起来是大开大合,实际上是粗中有细.
以前一个LAB有8个LE,大家都可以理解,后来又发展成有10个LE,有16个LEs
如果你有一个计数器,假定在Cyclone里和Spartan里面跑,Cyclone和Spartan在做8位计数器方面应该是不相上下,但是,当在16位计数器还要跑同样的速度,而且保证路由资源最简单的时候,Cyclone的优势,或者说A家的优势就来了.
大家都知道,计数器就是进位翻转的传递链路是他性能的关键路径,换句话说,16位的计数器,就是两个8位计数器的级联,唯一区别的复杂度就是8位的传递时间如果是8x,那16位的就是16x了.用另外一种方式来思考:
8位的计数器,在到达FE这个数字的时候,就用一个DFF进行一次隔离,提前一个时钟节拍将进位准备好,这样就将一个16位的计数器的复杂度降低到了8位一个样子.可是原本Cyclone的LAB就有10个LE,因此为了防止毛刺的问题以及刚才需要一个插入的DFF(D触发器),就刚好放在一个LAB里面,LAB(可配置逻辑模块(CLB))里面的路由是最快的,而且编译基本不太花时间.同时也为设计流水线的译码技术,提供两级的DFF延迟,但是这些全部做到了放在一个LAB.
大家回顾一下我们的设计,不就是计数器,加多选一,什么FSM就是那几个玩意来回的组合.然后中间加流水,再平衡流水寄存器之间的路由.没有新的发明,只有新的组合.但是Altera这样的结构就相对来说..哈哈又要吹一下牛皮了.
过去10年FPGA产业的发展和FPGA厂商的挑战?
过去10年,FPGA产业发生了些重要变化,简要3点:
===============================
FPGA三国志-第三篇/SOPC篇
PLD的重新定义PLD是什么,Programmable LogicDevice.当然今天应该换个称呼了:Processor+ Logic+DSP了,世界就是这样不停的变化来维持他的稳定。
表1列出了Altera®可编程解决方案的主要历史创新发展过程。,可以看到在2000年的时候,FPGA的厂商已经开始在嵌入式微处理器方面开始崭露头脚。当然起初引来的也有一片哗然。说效率低下,难以开发。新鲜事物的诞生总是要经过这样的阵痛期。
在2002年,就有众多厂家出来声称都支持嵌入式软核CPU。甚至也和当时流行的8051 turbo以及一些ARM进行比较。
表1.在 PLD业界的率先创新 |
||
年度 |
技术发展里程碑 |
在PLD业界的率先创新 |
2008 |
Stratix ® IV FPGA |
业界的首款40-nm FPGA,具有最高的密度、最好的性能、最低的功耗、最大的收发器带宽(高达8.5-Gbps的收发器),并为PCI Express Gen 1/2提供硬核知识产权(IP)模块。 |
2007 |
ArriaTM GX FPGAs |
业界的首款低成本,基于收发器的中端,协议优化的FPGA。 |
2007 |
Cyclone® III FPGA |
业界的首款低成本65nm FPGA,前所未有地同时实现了低功耗、低成本和高性能。 |
2006 |
Stratix III FPGA |
65nm FPGA以更高的密度和性能支持高级集成,实现更复杂的产品。 |
2006 |
Quartus® II软件 |
自然支持SDC设计约束 |
2006 |
C2H编译器 |
嵌入式处理器的首款自动ANSI C至寄存器级(RTL)生成工具 |
2006 |
Stratix II GX FPGA |
速度最快,密度最大的90nm FPGA架构,含有工作在622Mbps至6.375Gbps的20个低功耗收发器。 |
2005 |
HardCopy® II结构化 ASIC |
精细粒度体系结构;从90nm Stratix II FGPA原型无缝移植。 |
2005 |
Cyclone II FPGA |
90nm FPGA,业界首款低成本FPGA,成本降低30%,密度提高3倍。 |
2004 |
Stratix II FPGA |
90nm FPGA,含有名为ALM的8输入“分段式”查找表(LUT),以此替代了4输入LUT体系结构。 |
2003 |
Quartus II软件 |
可编程逻辑软件包,提供Tcl脚本支持。 |
2003 |
Stratix GX FPGA |
0.13µm FPGA,分块收发器体系结构。 |
2003 |
HardCopy结构化 ASIC |
业界唯一原型至量产0.13µm的完整解决方案 |
2003 |
Stratix FPGA |
0.13µm、300mm、高速高密度FPGA |
2002 |
Quartus II软件 |
可编程逻辑设计工具包,支持Linux。 |
2002 |
Cyclone FPGA |
世界上成本最低的FPGA(0.13µm) |
2002 |
SOPC Builder |
第一款FPGA自动系统生成工具 |
2002 |
Stratix FPGA |
世界上第一款带有嵌入式DSP模块的FPGA |
2001 |
HardCopy APEX TM 结构化 ASIC |
FPGA 首次无缝移植至低成本结构化ASIC |
2001 |
系统互联架构 |
第一款自动生成的互联架构,支持同时主机/从机操作。 |
2001 |
Quartus II 软件 |
推出Quartus II设计软件 |
2001 |
MercuryTM FPGA |
世界上第一款带有嵌入式收发器的0.18µm FPGA |
2000 |
基于 ARM®的 Excalibur TM器件 |
世界上第一款带有硬件嵌入式处理器的 FPGA |
2000 |
Nios®嵌入式处理器 |
世界上第一款嵌入式处理器,适合可编程逻辑应用。 |
处理器嵌入在FPGA中,需要什么样的温床?
的确,在推出Nios soft processor两年之后,在我们周边也开始陆续有开始吃螃蟹的了。但是,还是回到结构的老话题上,来谈论一下为什么这个时候出现了由FPGA制造商推出的CPU,实际上在1997年,就已经有什么FPGACPU的说法甚嚣尘上。而且也有人在Xilinx和Altera上面分别实现了原形。
开始在FPGA嵌入大块RAM的时候,很多人抨击这种结构,只是一个动物园里面的老虎,实际上就是和猫差不多的杀伤力。不可以否认,它不如分布式RAM来的灵活,但是它可以作为一些Cache(高速缓冲存储器),或者是紧耦合的RAM,还有就是它的规模在容量增加的时候,仍旧有很好的速度,那就可以作为CPU的Cache了。 Altera的RAM都是做在同一列的,很方便级联。另外总线宽度也很容易更改。
还有就是CPU里面总是有很多总线,内部总线。由于丰富的行联线的存在,在几列行资源里,就可以轻松集成RAM,CPU要的逻辑资源,以及总线的结构。这样,CPU也就顺利的在FPGA的世界里粉墨登场了。虽然起初只是16bit的。
2002年,Altera的开发软件已经趋于稳定,可以说已经很适合自己产品的结构,而且布线效率非常高。同时Altera的Nios也上升为NiosII,这个时候NiosII已经蜕变为美丽蝴蝶---一个32bit的RISC CPU(精简指令集计算机)。而且Altera又采用了非对称的机构实现了革命性的Avlon互联体系。关于这个体系的由非对称可以覆盖对称的,或不对称性的应用,我们以后详细聊。总而言之。如果再有一款更好结构的低成本的FPGA,那无异于在FPGA市场上刮起一场飓风!
Xilinx有Microblaze,其他的有ARM的核,实际上FPGA上实现的CPU,不是由一个CPU的内核来决定他的应用,而是谁有最好的互联体系,能和外围设备,和FPGA中的RAM,乘法器,以及其他定制逻辑更好桥接,粘合成一个SOPC,那才是真正意思上的软核。那究竟什么样子才好呢?
如果有以上的特性,那相信留给设计者的只有是无限的遐想空间。
FPGA上的CPU,有太多的元素,你知道吗?
我们从哪里开始讲呢,准备从算盘开始讲CPU,很多人说,我是不是太无聊了呢?听我明天说给你听!看似简单的算盘,绝对孕育着无比的大智慧。看是简单的Avalon,也同样有很多玄机。那就是变变变。
来自Xilinx的消息,关于CPU在FPGA设计中的一些预测
神奇的算盘
上回说到算盘。实际上大家应该都见过这个了不起的发明,只是他出现在你的记忆中的次数越来越少,就忘记了,实际上,很多伟大之处在很早就有历史可以证明的。看看你平时见到的算盘。
算盘的妙处和Altera的LE排列布局非常相似,或许是巧合吧。
但是这里的偶然也有些必然。或许我们有一天说,FPGA的结构最早是源于我国的。哈哈,玩笑啊。
看一个更久的照片,当然这个也可以代表Cyclone的layout了。
Avalon的奥秘
总线结构:
全交叉,部分交叉型(适合FPGA中的嵌入总线!)
Xilinx的是共享总线型。仍旧属于传统型设计,只是将其搬移到了FPGA中。
处理器接口主要抽象为:
回头看Avalon:
上面看起来,这两个softcore都差不多,看了下面的特点,你就有答案了。
Selecting HardwareArchitecture
Bus
Full CrossbarSwitch-NiosII Avalon
Partial CrossbarSwitch--Avalon is okey
Streaming-AvalonStreaming Map
Dynamic Bus Sizing
UnderstandingConcurrency
Create MultipleMasters
Create SeparateDatapaths
Use DMA Engines
Include MultipleMaster or Slave Ports
Create SeparateSub-Systems
Increasing TransferThroughput
increasing thetransfer efficienc
lower frequencydevices can be used
Using PipelinedTransfers
Pipelined ReadMasters
Increasing SystemFrequency
strategy
Tatic
Use PipelineBridges
Use a Clock Crossing Bridge
Consequences ofUsing Bridges
Reducing LogicUtilization
ReducingPower Utilization
Reduce Clock Speedsof Non-Critical Logic
Clock CrossingBridge
Avalon-MM masterports operating at a higher frequency to slave ports running a alower frequency
总线结构是SOPC的最重要的战场,也是区分SOPC是否高效的关键因素!
1--说到SOPC,最基本的集成首先是CPU的内置,但是CPU的有下列因素决定总线结构。
这里声明,RISC,CISC和CPU结构无必然联系。
简单说来:RISC是以总线结构越少越好,通络尽可能简单。例如大部分指令面向寄存器,然后数据操作多数在寄存器完成。有很多甚至基于堆栈。
共享总线的速度设计与性能总结:
当然在FPGA中,双向三态的实现是依靠多选一和DFF的隔离来实现的,而且,多数为同步设计。当然在现代分离系统的设计中,已经很早有这样的先例。
例如一个ARM和TI的DSP进行协同的系统,TI DSP中有对总线进行释放的功能机制,释放的时候,可以由ARM来对DSP中的数据结果进行交换,或者是操作参数的更新。然后再将总线控制权返回给主控的ARM.在FPGA中,也是同样的道理。
NIOS II的总线结构Avalon是具有全数字交叉的总线结构,支持多主并发的结构。
FPGA中,由于FPGA中丰富的互联结构,以及FPGA中本身的逻辑胶合的本身设计定位,决定了在FPGA中的SOPC的总线结构:全数字交叉的互联结构是SOPC在FPGA中性能发挥的调节棒!
很多人对此有以下担忧:
Altera采用了一个折中的方式就是部分数字交叉结构。
而且将仲裁机制放在了从端,这样做的好处,就是有冲突访问可能的从设备,就对他增加仲裁,好处:
没有优良的总线结构,一切都是空谈,有效的机制,可以弥补CPU的性能的低能化!
总线接口的抽象!Xilinx和Altera志同道合
尽管总线接口的抽象不同,但是,不代表总线结构一致。 X是总线共享型,A是数字交叉型。
例如Avalon-MM,Avalon-SM
Xilinx是PBv,和Fastlink来对应
MM是意思采用存储地址映射抽象,就是将所有端口定义为可以用内存地址来寻址操作。而SM是代表流媒体数据型,也就是一般和DMA都有一定的联系,当然,也是一种要不就是不断接收数据流,要不就是发送数据流的接口。例如,VGA的数据缓冲,DSP信号数据的输入和输出,例如AD数据的输入,以及DA的输出,同时具有FIFO功能。
并行,并行,再并行。
FPGA中用的设计语言,VHDL,Verilog HDL等,这些都是并行的,FPGA之所以能在很多DSP领域进行大显身手,也是因为他良好的并行扩展性。那同样。在SOPC中,要提高系统的整体性能,还是要并行,并行再并行!
上面就结构已经进行了简单的说明。那么在数据处理的单元上如何设置呢。
1---动态总线宽度的适应。
当你要将32bitNIOS和8bit,或者16bit的系统进行连接的时候,他应该能自动适应!
2--增加多个主控单元,对一些控制进行有效并发。
归纳为三点:
多增加CPU的个数,SOPC支持多CPU,而且现在很多CPU也在发展多核。商用PC已经很成熟了。
多增加DMA的通道个数,这样CPU可以干别的事情,至少数据吞吐加大
增加PCI-e的设备,这样,NIOS,FPGA不方便处理的,可以通过这样的接口进行功能上的折中。当然以后也可以增加RapidIO来和TIDSP进行数据的互换。
3--创建分离的数据通路
4--用多DMA进行辅助。例如
没有新的发明,只是新的组合!
实际上今天很多所谓的创新,也就是一些不同设计元素的合并和组合。 TSMC,在20年前开始代工的时候,有很多人质疑这种方式,实际上这个是一种商业模式的创新。 Altera是前期一些Fabless的厂商之一,很多人也怀疑没有自己的工厂?怎么可以做好产品。但是回顾今天,大家不都是走这样的路吗。当然也有一些自己领域的佼佼者,内存,CPU还是自己开灶。
话题拉回,当你一个系统已经不方便的时候,或者是某种功能要求有很突出表现的时候,两个或者多个CPU的系统,或者是拆解再增加必要的子系统。也是一种创新。
分割为多个子系统的好处:
一生二,二生三,三生万物.....
现在的工具都很方便复制和例化多个功能单元。当你设计好一个上面的系统的时候,你也可以将他们又构成一个模块,然后复制这些模块来达到更大的系统。这种在DSLAM的设计,或者是多路以太网复用到光设备等经常应用。
因此,
一生二,二生三。。。。
当然这种思想是建立在大批量复制功能单元的策略。
另外,还有一种大家熟悉的方式,
就是提高局部的流水动作以提高系统吞吐。你不仅要有火尖枪,同时也要有混天绫。互相配合才是自然之道。
流水的数据操作分为两类:
读流水和写流水主要是针对目前的一些存储外设来设计的,就是一个主设备可以在第一读的动作发生,但是没有数据返回的前提下,连续发出多个读的动作,然后在适当的时钟延迟后,连续得到由连续发出读的指令而产生的返回数据序列。好处是,用个图来表达就明白了。
当然了,你可能说,这个说易行难,设计经验不足。没有关系,SOPCbuilder的master和Slave接口,已经将这些都做好了。如果你想自己设计一个,实际知道这样的时序,你也可以的。不外乎就是要做一个读和返回地址的计数器,计数器的差值是在Readdatavalid的返回时候发出的地址数目,当然你也要设计好数据的宽度
ARM Vs Nios II
大家对ARM和NiosII喜欢比较,今天就说上几句。
最快的NiosII (250Mhz)比ARM7快,
最小的NiosII比最小的ARM7要小
另外NiosII已经有了MMU,而且对Linux进行了支持
ARM7是把西瓜刀
NiosII是把瑞士军刀。NiosII做一个分型算法借助C2H,速度是ARM7的400倍,不算慢。但是ARM7的生态资源广,这两个应用实际上是相辅相成。
FPGA三国志-第四篇/工具篇
FPGA的公司实际上换而言之,也可以成为EDA的公司了,只是他们在这方面的能力是否强大而已.这3家公司中,拥有自己HDL的公司只有Altera.可能很多人不太清楚,就是AHDL,当然这种语言的辉煌期已经过去了.这里说这个,绝对不是鼓励大家用这个语言.
这3家主要的开发软件大家都知道,在中国应该以Quartus II用的最广.ISE次之.但是现在这两大软件的外观都已经有些一致的地方了.但是他们近乎同样外观的软件,却还是有很多地方非常不同.
Altera 在2000年前,在日本市场独领风骚.大家知道日本是漫画的国度,他们总是喜欢用图形表达,这可以证明Altera的图形输入做的是炉火纯青.但是,现在都是语言输入为主导了,因此Altera的这个优势才渐渐淡化.但是其他图形界面仍旧有其鲜明的特色,简单容易.
Altera的软件像Canon的相机,很傻瓜,对着景物按个快门.当然也有些地方,你也可以仔细微调.
Xilinx的软件洋洋洒洒,很专业,像部哈苏相机,你在照相前,先成为相机的专家,才能成为设计的专家.有人开玩笑了,这是拿东西来说事.那在这里引用Altera公司一些思想,给大家介绍一下.实际上,这个特点非常容易记忆.大家都知道TIPS这个单词吧,就是提示的意思.那在这里就给你一些提示,让你可以过目不忘!
TIPS---提高设计效能的秘方!
这几天准备一下,尽快让大家看到下面的章节!
从TIPS中的T开始说,FPGA的趋势如下
1--首先说一下眼前的大环境是怎么影响你的设计的.过去的设计规模应该是比较小,一个FPGA工程师,写个状态机,写个好的代码,这个就是相对来说的高手了.但是你要知道这种高手都是关起门来自称老大的.实际出门走多远很难说.因为现在器件的发展速度是很快的.
2---规模的变化
1998---一位当时的PLD的厂商说世界上有1000个宏单元的PLD就可以应付95%的设计了.今天你认为怎样?
1998---最大的FPGA内含10000LEs,今天的CycloneIII的第二小的家伙就是这个身段.
2008年---现今最大的FPGA内含530,000LEs,比1998年增大50倍!你还能用以前的设计方式来应付今天这个庞然大物吗?
3---规模的变化,带来复杂度的提高,调试也成为关键?
芯片规模大的时候,你就会要有些测试工程师的需求.因为人自己总是看不清自己的缺点.
4---一个模块跑个固定的速度,是否可以和其他模块都配合起来,还能保持性能?
目前EDA厂商众口一辞的话:20KLEs规模以上的设计,时序收敛是第一目标
当有问道Xilinx的软件设计者时候 ,他们也承认了这样的事实:
好了,第一个题目诞生了.T-IPS 中的T就是TimeQuest,以前FPGA的规模和设计ASIC不能相比,今天已经可以了.在FPGA中集成很多IP已经不是什么难题了.TimeQuest是依照SDC来进行工作的,SDC,是ASIC中设置约束的工具,换言之,也算是你如何指挥你的软件,将你设计的模块让他们统一协调好时间,然后保证最终的结构是你想要的.你不仅要看到设计,还要跑到那样的速度的时候,他还是你要的功能 ,有人说了,以前没有这样的工具吗?有,但是那不是针对大的设计的.当然大也是相对的,到了一定的规模,就必须使用另外的标准了!什么能帮助你达到时序收敛,什么可以加速你找到哪些地方不满足,TimeQuest!
目前支持这个SDC的有以下工具,当然Quartus支持的最完整.潜在的秘密是,Altera的器件的规模也是最大的了.
可能你会问,能不能详细点说一下:
TIPS中的I是指"递增编译",就是英文"Incremantalcompile"的第一个字母是I.
刚才说了,当你有时候改动了一部分设计的时候,你以前好不容易调好的时序,可能因为重新改动的影响,而在编译路由后,将没有改动的设计在布局和速度上发生了不期望的改变.那这个递增编译就是干这个的.他可以向制导武器一样,让你指哪里,打哪里.同时缩短编译时间,提高你的工作效率!当然这里绝非这么一句话就可以涵盖了.你也要有设计分离,规划布局等工作.
现在经常有提到我的产品是最好的Price,但是,现在由于系统规模增大,Power也是一个很重要的制约,功耗在某些设计中甚至是第一位的.Quartus中有关于根据Power的要求来智能编译设计的约束.就是TIPS中的P,也就是PowerPlay.
最后一个TIPS中的S就是指Systemlevel,或者是SOPC,因为你的设计可能要有各种接口,外部的,内部的,系统的互联.总线的对接,时钟域的交叉,这些,都可以用SOPC的工具SOPC builder来实现.不用内置处理器也可以.同时要求你在系统级的高度进行设计,这样就提高设计速度.在第三篇中有详细讲.
生产力发展的标志-生产工具,你现在和15年前设计方式的根本改变!
不管A,X,L,哪一家FPGA玩家,这三年来都在开发工具上投入了重兵.此前有网友争论--
Lattice用的是Synplify进行的综合,效果如何如何高.这个论调10年前是天经地义,颠覆不破的真理,但是今天再这样说,绝对偏颇!
Synplicity公司不少人后来都转投Altera门下.当时Sy最先得到Xilinx的结构的时候,大力发展所谓物理综合等一系列亮点,但是却对Altera提及甚少,大家都知道Sy的发家史,失去了FPGA厂商的支持,基本上也就失去温床.在2004年QuartusII4以后,Quartus的综合能力就已经与S家的不相伯仲了.Xilinx在10年前收购多家EDA厂商,例如StateCAD,当时用流程图生成状态机的VHDL和其他的一些厂商的时候,Quartus都是建立在自己的固有体系下.如果单独从产品器件上,只有工艺和功耗是未来需要争斗的地方,那么,综合能力和相关路由(就是紧耦合的模块放在一起)能力,以及EDA工具的全面性才是真正FPGA厂商的绝对命门.S家一共有250个软件开发人员.A家可能就远远不止了.
另外Cadence,Synopsys,Magma,Mentor等大哥,也就是卖个综合和核对工具,价值点相信大家已经悟到几分吧.
QuartusII 在今天,作为FPGA摄影大师的工具来说,不仅是精密的哈苏,更是Canon门下Eos MarkII的便捷傻瓜的代表.QuartusII就是今天FPGA的第一生产力