整理:FPGA选型
针对性整理下FPGA选型问题
一、获取芯片资料:
要做芯片的选型,首先就是要对有可能要面对的芯片有整体的了解,也就是说要尽可能多的先获取芯片的资料。现在FPGA主要有4个生产厂家,ALTERA,XILINX,LATTICE和ACTEL。获取资料最便捷的途径就是这些生产厂家的官方网站(http://www.altera.com.cn/,http://china.xilinx.com/,http://www.lattice.com/,http://www.actel.com/intl/china/)。一般情况下,官方网站都会按照产品系列或应用场合列出所有的产品,直观的告诉你某个系列产品的应用场合。比如在ALTERA的网站,就会明确标明它的三大类的FPGA产品,高端的Stratix系列,中端的Arria系列和低成本的Cyclone系列。
每个厂家每年都会推出一个产品选型手册,很多公司网站上还提供评估工具,下图是Altera2012版的选型手册:

经常逛一逛这些厂家的官方网站,看一些概述类的文档,当对各FPGA厂家的产品系列有比较广泛的了解以后,选型就不会成为太大的问题了。确定要做的方向之前,如果能够找到类似的产品,可以研究下这些产品所采用的方案,如果找不到,可以通过检索知网等数据库,也可以看看其他人做类似的方向所采用的方案,这也是非常好的一个参考,需要注意的是很多学术研究型的方案并不是经过产品验证的,有些方案还是比较滞后的,总之需要做一个综合的评估。
二、FPGA厂家的选择
如上所述,生产FPGA厂家主要有ALTERA,XILINX,LATTICE和ACTEL。每个厂家的产品都有各自的特色和适用领域。选择厂家是一个相对比较复杂,要综合考虑下面几个因素:
- 要满足项目特殊的需求。比如说你要选择4mmx4mm封装的小体积同时又不需要配置芯片的FPGA,那么可能ACTEl就是你唯一的选择。如果你需要一个带ADC的FPGA芯片,那么可能你只能选择XILINX和ACTEL的某些带ADC的FPGA。
- 看供货,好的供货渠道对于产品的量产会有比较好的保证,如果没有特殊渠道还是选择那些比较好买并且广泛使用的型号
- 看价格,较低的价格会有效的提高产品的竞争力
- 就是技术人员对所有符合要求的厂家的产品的熟悉程度。使用最熟悉的产品,可以有效的缩短开发的难度,减少开发时间,提高产品上市时间。
- 看该芯片的成熟度,是不是有较好的开发软件平台,是不是有较好的技术支持,是不是有大批量的应用,是否可以比较容易的获取到资源等等。
三、芯片系列的选择
每个FPGA的生产厂家都有多个系列的产品,来满足不同应用场合对性能和价格的不同需求。例如对于Altera公司的FPGA产品,主要分为三个系列,分别是高端的Stratix,中端的Arria和低端的Cyclone。
每一个系列FPGA具体的性能特点也都可以在ALTERA的官方网站上找到相应的文档。在选择的时候,要根据实际的项目需求,来选择合适的系列。比如说,如果需要实现一个比较简单的控制功能,对资源的要求比较低,且成本控制要求比较高,那么就需要从Cyclone系列的FPGA入手,评估这一系列的FPGA是否可以满足要求。但如果要做比较大型的ASIC芯片的validation,对FPGA的逻辑资源,带宽以及运行频率的要求都比较高,那么就要去评估Stratix系列的FPGA。有一个基本的原则是需要注意的,可以用低端的芯片完成的工作,就不要采用高端的芯片,目标是达到性能和成本的最佳平衡点。
每一个系列的FPGA芯片,可能又分为好几代的产品,比如ALTERA的Cyclone系列,到现在已经发展了Cyclone,CycloneII,CycloneIII和CycloneIV四代产品。这种产品的升级换代很大程度上都是由于半导体工艺的升级换代引起的。随着半导体工艺的升级换代,FPGA芯片也在升级换代的过程中,提供了更强大的功能,更低的功耗和更好的性价比。那么在确定一个系列的FPGA后,选择哪一代的产品则又成为一个问题。我个人建议是在价格和供货都没有问题的情况下,选择越新的产品越好。一定不能选择厂家已经或者即将停产的芯片。任何产品都是有生命周期的,目标就是尽量保证在产品的生命周期里,所用到的芯片的生命周期还没有结束。在产品初期规划时做芯片选型,要尽可能选用厂家刚量产或者量产不久的产品,甚至在有确切的供货渠道的情况下,可以选择厂家即将量产的芯片。
四、芯片的选择
在CycloneIII这个系列的FPGA中,又分为两个不同的子系列,普通的CycloneIII和CycloneIII LS。在每个子系列里,根据片内资源的不同又分为更多的型号,比如普通的CycloneIII子系列,就包含了EP3C5,EP3C10,EP3C16,EP3C25,EP3C40,EP3C55,EP3C80和EP3C120等8种型号的芯片。每个型号的芯片又根据通用I/O口数量和封装区分出不同的芯片。比如,EP3C5的芯片又有EP3C5E144,EP3C5M164,EP3C5F256和EP3C5U256这四种不同的芯片。而每一种芯片,又有不同的速度等级,比如说EP3C5E144就有C7,C8,I7和A7四个速度等级。
下面的表格从不同的角度列出了普通CycloneIII系列的FPGA的参数,这些表格都源自于CycloneIII芯片的官方文档:
1,各型号芯片的片内资源表。这个表格中给出了每个型号芯片的片内资源,其中Maximum User I/Os给出了该型号最多拥有的User I/O的数量,但需要注意的是,不同的封装拥有的User I/O的数量并不相同。

2,下面的表格给出了各型号芯片的封装信息,以及该封装下,芯片所具有的可用I/O的数量和查分信号通道的数量。

在选择具体的芯片型号以及封装的时候,要根据下面的几个方面做综合的考量:
1,片上资源,主要依据表1给出的信息。要根据设计的大小选择合适的片上资源。这个是比较难确定的一个参数,自己做的设计到底有多大,需要多少片上资源,很难一下子确定下来。比较推荐的一个方式是先拿之前的设计去综合后映射到某一个芯片上,看看需要占用多少的片内资源,然后评估要做的新的设计跟之前的大小,做换算后得到需要片上资源的数量。另外的一种方式就是先完成新的设计,直接综合出来映射到不同型号的芯片上,然后评估哪一种芯片合适。还有一个需要注意的地方就是,不能选择片上资源刚刚够用的芯片,要留有一定的余量,以便于后期设计错误的修正和升级。
2,封装,主要依据表2和表3给出的信息。选择封装,主要需要在两个方面考量,第一个就是可用的I/O口的数量。第二个就是封装的尺寸。I/O数量是一个必要的条件,先要根据这个条件筛选出可以用的芯片。然后在筛选出来的芯片中,再根据封装类型,尺寸和pitch尺寸选择合适的芯片。在封装尺寸符合要求的情况下,尽量选择有利于PCB设计和生产的封装。比如如果有TQFP封装的芯片,尺寸又符合项目的需求,那么就不要选择BGA封装的。对于BGA封装的芯片,如果有pitch为1.0mm的可以满足要求,就不要选择pitch为0.5mm的。这直接影响到PCB设计难度,制造成本和良率。
3,速度等级,主要依据表4给出的信息。速度等级是一个相对比较独立的参数。要根据实际设计所能综合出来的最高运行频率和需求的运行频率做比较,尽量选用速度等级比较慢的芯片。当所有的速度等级都不能满足需要的时候,更多的要从优化设计的角度来提高设计本身所能达到的最高运行频率。
五、FPGA初学者的选择
对于一个FPGA的初学者,如何选择一个公司的某一个系列的产品作为学习的基础呢?这是一个问题,但并不是最重要的问题。
初学者在学习FPGA的时候,要解决的首要的问题就是对数字电路技术基础知识的掌握,然后就是对硬件描述语言的掌握(veirlog或者VHDL)。至于FPGA芯片本身,只是一个载体。当真正掌握了FPGA设计的本质后,需要使用某一个厂家的某一种FPGA的时候,只需要针对这个厂家的该型号的FPGA做一些了解就可以了,设计的基础还是一样的,以往积累的大部分经验都可以应用得上。
不过在选择的时候,还是要选择主流厂家的流行的型号,这样更容易获取学习资源。
整理:FPGA选型的更多相关文章
- FPGA选型
工欲善其事必先利其器,开发FPGA的第一步,当然是选择一片符合你设计需求的芯片. 但是芯片种类那么多,老板又要你越省越好,硬件工程师也天天问你到底该用哪块芯片,怎么办? 今天正好可以跟大家聊聊这些问题 ...
- [整理]FPGA学习资料汇总
01.特权同学倾情奉献海量FPGA学习资料 http://pan.baidu.com/s/1pJIb32F
- 自顶而下设计FPGA
对IC设计而言,FPGA设计层级大致包括:系统级和行为级,RTL级,门级和晶体管级.然而更普遍的情况,FPGA只是用作实时数据采集控制.某些快速处理算法.PCIe\DDR3等高速数据通道,甚至某些简单 ...
- 基于FPGA的线阵CCD图像测量系统研究——笔记
本文是对基于FPGA的线阵CCD图像测量系统研究(作者:高尚)的阅读笔记 第一章绪论 1. 读读看 读了前面的摘要依然没有看懂作者要做什么.接着往下读....终于看到了一个字眼“基于机器视觉的图像测量 ...
- 用FPGA对ASIC进行原型验证的过程(转)
用FPGA对ASIC进行原型验证的过程 reference:http://xilinx.eetrend.com/d6-xilinx/article/2018-10/13736.html 鉴 ...
- 【设计经验】3、ISE中烧录QSPI Flash以及配置mcs文件的加载速度与传输位宽
一.软件与硬件平台 软件平台: 操作系统:Windows 7 64-bit 开发套件:ISE14.7 硬件平台: FPGA型号:XC6SLX45-CSG324 QSPI Flash型号:W25Q128 ...
- 图像处理算法的仿真平台之VGA时序
一 概述 图像处理算法一般是用matla或OpenCV实现的,若是用FPGA实现,设计思路差别极大.matlab和opencv的优势:这些工具的优势在于可以方便地载入图像文件,或输出数据到图像文件, ...
- 浅谈FPGA的选型
工欲善其事必先利其器,开发FPGA的第一步,当然是选择一片符合设计需求的芯片. 器件特色 选片第一个关注的应该是FPGA器件的专用资源. 例如是否需要高速接口,如果需要的话,需要多少个通道,各个通道需 ...
- FPGA代码设计规范整理
1.设计中的FIFO.状态机接口需要有异常恢复状态和状态上报机制,格雷码电路防止被综合电路优化掉. a)自行设计的格雷码FIFO(一般用于连续数据流跨时钟域)用Synplify综合时,为了防止被优化需 ...
随机推荐
- leetcode 岛屿的个数 python
岛屿的个数 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包 ...
- http://blog.mn886.net/jqGrid/
http://blog.mn886.net/jqGrid/ 中文版 http://www.trirand.com/blog/jqgrid/jqgrid.html 英文版
- NOIP练习赛题目1
有些题目可能没做,如计算几何.恶心模拟. 高级打字机 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 早苗入手了最新的高级打字机 ...
- [USACO07JAN]Balanced Lineup
OJ题号:洛谷2880 思路1: 线段树维护区间最大最小值. #include<cstdio> #include<cctype> #include<utility> ...
- poj 3177 边双联通 **
题意:给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图. 链接:点我 kuangbin模板题,分析链接:点我 #include <stdio.h> #include < ...
- BZOJ3009 : 集合
取一棵生成森林,根据题目限制可得,与一个点相连的多余的边数是$O(\sqrt{m})$级别的. 对于树边,每个点维护3棵权值线段树,依次保存它的儿子里各个集合的边. 再开3*3个分块数组,记录多余边以 ...
- 【学习笔记】python2和python3的input()
python2中的input()只接受变量作为传入值,非变量内容会报错. >>> user=input("Enter your name:") Enter you ...
- Beyond Compare 4提示已经过了30天试用期,破解方式,亲测可用
修改注册表 1)在搜索栏中输入 regedit ,打开注册表 2) 删除项目:计算机\HKEY_CURRENT_USER\Software\Scooter Software\Beyond Compar ...
- 回顾JavsScript对象的克隆
JS对象的数据类型分为两大类:原始类型(string, boolean, number,undefined, function)和 对象类型(array, object, null). 1.浅度克隆 ...
- FireDAC 下的 Sqlite [8] - 自定义函数
Sqlite 本身没有这个功能, FireDAC 通过 TFDSQLiteFunction 增加了该功能; 尽管通过某些 SQL 语句或通过视图也可以达到类似效果, 但函数会更灵活些. 本例先建了一个 ...