針對性整理下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做一些了解就可以了,設計的基礎還是一樣的,以往積累的大部分經驗都可以應用得上。
不過在選擇的時候,還是要選擇主流廠家的流行的型號,這樣更容易獲取學習資源。



