克服FPGA電路板設(shè)計(jì)挑戰(zhàn)
如果你在采用FPGA的電路板設(shè)計(jì)方面的經(jīng)驗(yàn)很有限或根本沒有,那么在新的項(xiàng)目中使用FPGA的前景就十分堪憂——特別是如果FPGA是一個(gè)有1000個(gè)引腳的大塊頭。繼續(xù)閱讀本文將有助于你的FPGA選型和設(shè)計(jì)過程,并且有助于你規(guī)避許多難題。
選取一家供應(yīng)商
你面臨的第一個(gè)問題當(dāng)然是供應(yīng)商和器件的選擇。通常供應(yīng)商決策傾向于你以前接觸最多的那家——如果你是一位FPGA初學(xué)者當(dāng)然另當(dāng)別論了。或許這個(gè)決策早已由設(shè)計(jì)內(nèi)部邏輯的工程師(也許就是你)依據(jù)熟悉的供應(yīng)商或第三方IP及其成本完成了。
供應(yīng)商的軟件工具也會(huì)影響到上述決策。下載并使用這些軟件工具,不需要硬件就能將設(shè)計(jì)帶入仿真階段。這也是判斷需要多大規(guī)模的FPGA的一種方式,前提是你的內(nèi)部邏輯設(shè)計(jì)基本做完了。
要想知道FPGA的水有多深,需要多逛逛各家供應(yīng)商的網(wǎng)站。如果你想從這些網(wǎng)站提供的海量(而且并不總是想象中那么清晰的)信息中有所收獲,必須確保你有一整天空閑的時(shí)間。Altera和賽靈思公司是在市場份額和前沿技術(shù)方面都遙遙領(lǐng)先的兩家公司。它們的器件使用內(nèi)部配置RAM,因此要求使用存放配置數(shù)據(jù)的外部ROM來“啟動(dòng)”器件(兩家公司也都有些小的非易失性CPLD類產(chǎn)品)。值得考慮的其它供應(yīng)商還有Microsemi/Actel、萊迪思和賽普拉斯。它們的器件功能包括非常低的靜態(tài)功耗、用于“即時(shí)開機(jī)”啟動(dòng)的基于ROM的配置和模擬外設(shè)。
好了,至此供應(yīng)商問題解決了。接下來是選取FPGA的系列和規(guī)模。供應(yīng)商都會(huì)將它們的產(chǎn)品細(xì)分成多個(gè)系列,通常以低端、中端和高端性能(和規(guī)模)這樣的模糊概念加以區(qū)分。片上RAM需要多大?要多少DSP/乘法模塊,或千兆位收發(fā)器?你可能需要通讀一遍數(shù)據(jù)手冊(cè),找出諸如最大時(shí)鐘頻率和I/O時(shí)延等參數(shù)來幫助你選擇正確的系列。需要重申的是,擁有HDL代碼是有很大幫助的,因?yàn)樵O(shè)計(jì)軟件可以讓你知道適合哪種器件,它們是否能夠滿足你的性能要求。
(來源:維基百科)
你的應(yīng)用還可以從不改變PCB就能更新器件中受益。一些FPGA系列包含眾多引腳兼容的器件,可以在需要時(shí)讓你切換到更大(或更便宜和更小)的器件。只是要確保針對(duì)最少數(shù)量的引腳輸出進(jìn)行設(shè)計(jì)。
不要忘了考慮其它一些細(xì)節(jié),比如如何為不同的供電電壓和I/O標(biāo)準(zhǔn)劃分I/O組、PLL要求以及DDR接口要求。
我們需要更多的功率!
通常很難計(jì)算一塊電路板要求的最大電流。但FPGA電源設(shè)計(jì)相當(dāng)有技巧。FPGA所需電流很大程度上取決于邏輯設(shè)計(jì)和時(shí)鐘頻率。同樣一個(gè)器件在一個(gè)設(shè)計(jì)中可能只需0.5W,而在另一個(gè)設(shè)計(jì)中可能高達(dá)5W。
開發(fā)工具(或一個(gè)獨(dú)立的程序或電子數(shù)據(jù)表)應(yīng)該可以為給定設(shè)計(jì)提供功率預(yù)估值,但它們需要從你那兒得到許多附加信息,其中一些可能只是有根據(jù)的推測。如果有FPGA開發(fā)板,就應(yīng)該有方法測量各種情況下的供電電流。一些開發(fā)板甚至內(nèi)嵌電流計(jì)顯示器!只是要確保增加足夠多的余量來應(yīng)對(duì)設(shè)計(jì)更改以及特殊工藝/溫度要求。
下面是“難題”可能會(huì)出現(xiàn)的時(shí)候:
● 做熱分析,并在必要時(shí)增加散熱器。
● FPGA要求按順序加電嗎?(你的設(shè)計(jì)很容易出現(xiàn)5個(gè)或6個(gè)電源)
● 至少可能需要一個(gè)“安靜的”電源,通常用于片上PLL。可以使用LDO加上一些無源濾波器件。千兆位收發(fā)器電源也能從低噪聲中受益。
● 確保你理解FPGA在上電和初始化時(shí)在做什么事。許多器件在這個(gè)時(shí)候需要抽取很大的電流。
關(guān)于引腳及其它
接下來可以認(rèn)真考慮引腳分配這件大事了。同樣,如果你的邏輯設(shè)計(jì)已經(jīng)達(dá)到可以被編譯的階段,就讓設(shè)計(jì)軟件來提供幫助吧,或至少在做電路板之前驗(yàn)證你分配的引腳是可行的。你當(dāng)然已經(jīng)處理過明顯的資源,比如根據(jù)供電電壓劃分I/O組,確保諸如LVDS、SSTL或內(nèi)部50Ω終端等“特殊”引腳設(shè)置兼容它們所在的組和供電電壓。
但在許多器件中存在更深層次的微妙關(guān)系:在“不要在單端信號(hào)的2個(gè)IC綁定焊盤內(nèi)放置差分對(duì)”,或“類似于參考電壓的輸入必須距離時(shí)鐘信號(hào)至少3個(gè)焊盤遠(yuǎn)”等字里行間隱含著復(fù)雜的規(guī)則。這些規(guī)則很容易讓人發(fā)瘋。如果讓人不堪忍受,就讓設(shè)計(jì)軟件為你指出違例吧。如果你不這樣做,那么這些問題肯定會(huì)讓你疲憊不堪。
接地反彈或并發(fā)開關(guān)噪聲(SSN)是另外一個(gè)考慮因素。由于FPGA的應(yīng)用方式太多,所以供應(yīng)商經(jīng)常為最好的場景設(shè)計(jì)電源分配方案。如果你的設(shè)計(jì)要充分發(fā)揮I/O功能,比方使用數(shù)量很多的快速同時(shí)開關(guān)輸出,那么你可能需要“減少”實(shí)際可以使用的引腳數(shù)量。盡量減小驅(qū)動(dòng)和壓擺率設(shè)置通常是一個(gè)好主意。設(shè)計(jì)軟件也可能幫助進(jìn)行SSN分析。我認(rèn)為減小SSN的一個(gè)技巧是將未用引腳連接到地,然后在設(shè)計(jì)文件中將它們?cè)O(shè)置為輸出,驅(qū)動(dòng)‘0’。這些引腳將被用作偽地引腳,雖然質(zhì)量沒有真實(shí)地好。
交付
現(xiàn)在是將凝聚了你心血的產(chǎn)品交付給PCB版圖設(shè)計(jì)的時(shí)候了。這里我不想深入討論P(yáng)CB設(shè)計(jì)(可以參考下面給出的一些文章),但會(huì)指出針對(duì)FPGA設(shè)計(jì)需要考慮的一些事項(xiàng)。
堆疊設(shè)計(jì)對(duì)任何復(fù)雜的電路板來說都很重要,而在最復(fù)雜的電路板中通常都能找到FPGA的身影。隨著500引腳芯片被認(rèn)為是“中等規(guī)模”以及不斷縮小的引腳間距,你可能需要十分留意走線逃逸圖案、焊盤中的過孔、引腳區(qū)域內(nèi)的去耦電容以及電源與地平面。一定要有創(chuàng)造性。必要時(shí)可以分割電源平面(當(dāng)然要避免高速走線)。如果足夠小心,一些電源連接(通常是局部的電源,如PLL電源)可以放在信號(hào)層上。將一些關(guān)鍵平面和信號(hào)放在最靠近FPGA的層。留意一些專門的版圖建議,比如針對(duì)DRAM的一些建議。
成功!