【转】FPGA 三国志-第二篇/结构篇2-3
0赞运筹学也是很重要的!
经常有这样的情况,大家选择FPGA的时候,就开始翻看每种FPGA的选型手册,然后对资源表. 有的甚至直接说:我这个是10万门的. 你的那个是6万门的,实际上,这些都不是很正确的评估. 如同有人说,我家的房子4室两厅,你家的房子3室1厅双卫生间. 到底哪个更大呢? 到底哪个更节能呢. 厨房热水器之间离得很远又是问题.
所以说,学会正确的评价资源是很重要的. 这个时候还要参照他的结构!!板式的,还是砖混的!!!
可能你还听说过一个使用面积的问题. 实际上,有的房子看起来大,走道,不规则的布局,导致很多的地方都不能用!下面看个例子:
左边的Hops代表跨一步的意思,就是路由转换一次的意思. 这个表什么意思呢. 就是说在S3的路由过程中,每个路由在第一次,就可以覆盖850LEs中的一个,V5是132. 如果你的逻辑,经过4跨,同样的路径覆盖的区域A的是X的2倍. 代表什么呢?
- 编译速度更快,因为概率提高,路由成功率提高
- 布通率更高
- 速度更快!为什么,90nm以后,LE内部延迟已经不如路由延迟的时间长了. 所以经过的路由多,就会严重降低系统速度.
当然还有一些好事者,例如 (http://www.opencores.org) 有很多公开的opencore,大家可以将它们同时尝试放在A,X,L,看谁放的多,放的快,系统延迟更小. 这方便数据就不多说了,可能都成为一门学科都不一定,因为不同的比对都有benchmark的不同标准. 最终我们应该很清楚的看到.
结构真的是很重要,我们能干,也要看是否站在巨人...
不过呢,很多时候,我们的朋友基本上都说: 结构和我无关,我要学好VHDL,我要....codingstyle. 这个设计属于系统工程!
FPGA的真正命门和Know How实际上,能做FPGA的公司太多了,但是能将我们的设计通过算法成功放到这个芯片上,而且算出正确的时间和你的仿真要求的. 就不多了,说的难听点. 有些领域甚至是没有亚军的竞争!选择小规模PLD,那些,不是太重要的问题. 本身就不够养活一票人的产品.
Cyclone III 与 Spartan3 的对决--苹果对苹果?
目前,很多人都基本上对于新的中档设计都会集中在这个系列的竞争中,换言之,在中国目前以成本为导向的第一要求下,实际上中小公司的产品选用80%是集中在这里.
经常有人说,为什么你们的LEs数目相同,价格很不同. 做些解释,一家之言.
- 在今天,尽管是可以编程的器件,还是有不灵活的地方. 例如,你的应用决定你对什么资源敏感
- 不同市场也有不同的关注. 没有哪个东西绝对适合,只能是系列之间互相交叉来完成.
有一点要说,那些所谓我的是多少系统门的比较方式,是典型的大忽悠模式
比较产品有很多benchmark. 这里列举一些. 不全的地方,可以大家补充.
- 工艺
Cyclone III,65nm
Spartan3,90nm
眼前看,90nm是主流工艺,但是未来降价空间在2009年中达到轨点,另外,65nm的功耗不用说,35%的优势轻轻松松. - 设计学
CycloneIII ---LP工艺,有很多人不理解这个,同样的设计采用LP和不采用就很大不同.
Spartan3--没有采用 - 规模
Spartan3,3e,3a,3an,覆盖区域不同,从1K到40KLE左右
CycloneIII: 典型长中长焦距镜头,5K到120K,
40K 以上,基本上Spartan3没有产品,可以用V5,V5定义为Highend,S3定义为Lowercost
无线,DSLAM,医疗,平均规模在25KLE到80KLEs为最多,CycloneIII解决了有无问题 - Memory
这个是CycloneIII的幸运之处,当时可能设计上没有这么大吧.
9K块,总容量绝对平均高出S为30%,块数也同样. Sp3dsp例外,但是他只有两个孩子.定焦镜头.要符合你的品味.
memory多影响到: CPU速度的提高,DSP应用,DUC,DDC,FIR等,级数上可以做更多. 速度高,还可以提高复用. - 乘法器,一个18x18的乘法器,相当于350-450个LEs,当然流水的话要另外算.
- PLL: Altera是模拟的,X是数字的. 恢复性和收敛速度那毫无疑问,地球人都知道模拟的好. A的时钟树更是多
- 布局: 从左到有,基本符合多时钟域交叉,
如: LVDS入,经过第一级FIFO,进行时钟域交叉,或者数据交叉,第一次处理,然后经过中间逻辑加工,参数重加载等,然后进入乘法器,可以级联,然后有通过通用逻辑池进行加工,再次通过FIFO或者RAM来对接下一级.
其他行可以独立构成NiosII等,布局收敛性一流. 我尽量找个照片来显示.
所以不是简单说我的苹果和你的苹果一样. 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,就刚好放在一个LAB里面,LAB里面的路由是最快的,而且编译基本不太花时间. 同时也为设计流水线的译码技术,提供两级的DFF延迟,但是这些全部做到了放在一个LAB.
大家回顾一下我们的设计,不就是计数器,加多选一,什么FSM就是那几个玩意来回的组合. 然后中间加流水,再平衡流水寄存器之间的路由. 没有新的发明,只有新的组合. 但是Altera这样的结构就相对来说..哈哈又要吹一下牛皮了.
过去10年FPGA产业的发展和FPGA厂商的挑战?
过去10年,FPGA产业发生了些重要变化,简要3点:
- 逻辑数量超过10年前50倍,
- 存储容量超过100倍
- Serdes速度接近10G(Xilinx6.5G)
- 消耗功耗只提高10倍多些.
===============================
- 编译算法和综合算法的提高
- 和结构结合的物理综合
- 编译平台多CPU的支持,例如4核CPU的PC
- 递增编译和编译约束的更好支持