許多工程師認為,只要定義了FPGA的功能,工作就算完成了,。但實際上將FPGA插入PCB時也會面臨一系列挑戰(zhàn)。
對于許多工程師和項目經(jīng)理來說,在FPGA中實現(xiàn)功能并實現(xiàn)時序收斂是主要目標,但實際上在印刷電路板上設(shè)計FPGA的硬件級工作也會出現(xiàn)很多有趣的挑戰(zhàn),,只有解決了這些挑戰(zhàn)才能實現(xiàn)成功設(shè)計,。
一切的起點均在于架構(gòu)。硬件開發(fā)第一步就是定義解決方案的架構(gòu),。架構(gòu)應(yīng)該對應(yīng)于系統(tǒng)要求,,并具體明確它們?nèi)绾卧谟布械玫綄崿F(xiàn)。雖然不同系統(tǒng)的架構(gòu)各有差異,,而且每個系統(tǒng)的具體應(yīng)用也大相徑庭,,但很多系統(tǒng)均包含類似的架構(gòu)模塊。您能夠同時也應(yīng)該對經(jīng)常需要的硬件模塊進行重復(fù)利用,,就好像您重利用常用的HDL模塊一樣,。
圖1和圖2分別給出了整體架構(gòu)和電源架構(gòu)的實例,而兩側(cè)則列出了設(shè)計FPGA系統(tǒng)時通常需要考慮的問題,。
器件選擇
您一開始面臨最重要的選擇就是在大量可用FPGA中找到最合適的,。FPGA器件的選擇涉及許多因素。首要因素就是該FPGA提供什么可用資源,,是否足夠用來以所需的工作頻率實現(xiàn)您想要的功能,。
根據(jù)這些參數(shù),您可以很快將選擇范圍細化到有限數(shù)量的器件,,這樣您就能再進一步細化選擇標準,,找到適當?shù)?span lang="EN-US">FPGA。另一個重要因素就是您系統(tǒng)可能需要的其它資源,,比方說DSP slice或乘法器,、嵌入式處理器或高速串行鏈路等。是否提供這些資源,,可以進一步縮小器件選擇的范圍,。在許多情況下,根據(jù)具體資源需求,,您會進一步尋找器件的子系列,,比方說如果需要邏輯或高速串行鏈路,則應(yīng)選擇賽靈思Spartan®-6 LX或Spartan-6 LXT,。
器件所需的輸入輸出數(shù)量會同時影響到器件選擇和封裝選擇,,因為一款器件可能提供幾種不同的封裝選擇,每種選擇還提供不同數(shù)量的用戶I/O,。這里通常需要注意的是,,您應(yīng)當考慮今后如何升級,而且要考慮所選系列的各種器件是否具有通用的封裝尺寸,。
此外,,選擇器件時您還應(yīng)考慮工作環(huán)境,。舉例來說,,是不是商業(yè)組件就夠了,,是否需要工業(yè)、醫(yī)療或汽車級的部件,?某些情況下您的系統(tǒng)可能需要軍用或航天級的組件,。
此外,您還必須要考慮到配置架構(gòu)問題,?;?span lang="EN-US">SRAM的FPGA能否滿足應(yīng)用需求?或者說賽靈思Spartan-3AN系列這樣的非易失性解決方案是否更好一些,?設(shè)計的安全性同樣也是一大重要考慮因素,。如果應(yīng)用需要設(shè)計安全性,就應(yīng)考慮避免讀回并對數(shù)據(jù)流進行加密,。
無論應(yīng)用是進行量產(chǎn)或是作為一次性的定制航天設(shè)計,,組件成本當然也始終是一個重要因素。您應(yīng)制定目標成本預(yù)算,,并努力確保在成本限度內(nèi)完成任務(wù),。
上述許多參數(shù)在系統(tǒng)中其它器件的選擇上也很重要。特別重要的一個標準就是選擇的組件要能夠在相同的電壓軌上工作,,這樣就能簡化電源架構(gòu),。
您還應(yīng)考慮在設(shè)計中是否有組件標準降低的問題。所有制造商的組件數(shù)據(jù)手冊都給出了器件的最大額定值和最大工作電應(yīng)力,。如果我們選用的器件剛好在最大額定值以下的電應(yīng)力工作,,那么設(shè)計的可靠性就會大幅下降,因為系統(tǒng)一直是在推薦工作條件以外工作的,。根據(jù)最終應(yīng)用的不同,,故障可能會導(dǎo)致各種后果,包括導(dǎo)致人員傷亡,,破壞工作任務(wù),,公司質(zhì)量聲譽下挫等。為了生產(chǎn)出可靠的設(shè)備,,您必須在設(shè)計中減少電應(yīng)力,。因此在選擇應(yīng)用器件時,您必須考慮到器件所承受的電應(yīng)力,。
電源架構(gòu)
器件選擇好之后,,下一步影響項目成敗最關(guān)鍵的部分就是電源架構(gòu)了。這個因素往往被忽視?,F(xiàn)代FPGA的核心電壓通常介于0.9V到1.5 V之間,。相對于高性能FPGA而言,這種器件需要的靜態(tài)電流可能很高,,而且器件完成配置并開始計時后的動態(tài)電流也很大,。
設(shè)計中的功耗估算非常重要,,需要在項目早期進行,以準確評估電源架構(gòu),。賽靈思提供功耗估算電子數(shù)據(jù)表,,您可在以下網(wǎng)址下載:http://www.origin.xilinx.com/prod- ucts/design_tools/logic_design/xpe.htm。在電子數(shù)據(jù)表中,,您可根據(jù)選定器件的環(huán)境參數(shù)選擇FPGA資源的時鐘速率和翻轉(zhuǎn)率,。如果您不確定,寧可做出更謹慎的選擇,,也就是要對估算做出悲觀考慮而不是過于樂觀,。一旦明確了FPGA的電源要求,就能將其整合到系統(tǒng)的整體功耗預(yù)算中,,并在此基礎(chǔ)上明確電源架構(gòu),。
有的系統(tǒng)需要較大電流,我們建議采用開關(guān)DC/DC轉(zhuǎn)換器保持整體效率,,確保單元散熱設(shè)計不是很復(fù)雜,。如果需要的電流較低,而且系統(tǒng)必須特別注意避免噪聲,,也就是說為高速串行鏈路或敏感型ADC,、DAC組件提供電源的話,那么您可采用線性穩(wěn)壓器和額外的濾波機制,。在所有情況下,,您都應(yīng)該仔細閱讀具體器件的數(shù)據(jù)手冊。
一旦完成FPGA設(shè)計,,您就應(yīng)該使用賽靈思ISE®設(shè)計套件中的XPower Analyzer獲得詳細的功耗估算,。這一步驟將幫助您完成電源架構(gòu)的設(shè)計工作。
此外,,您還應(yīng)考慮板上器件的電源去耦問題?,F(xiàn)代器件的開關(guān)速度比調(diào)節(jié)電壓的電源快很多倍。如果不采用去耦電容,,這種局面就會導(dǎo)致當穩(wěn)壓器上升時電源軌下降,。理想情況下,應(yīng)讓去耦電容的值在結(jié)合PCB層間電容時的阻抗曲線低于0.1Ω,,而且可能的話應(yīng)在100 kHz到1 GHz之間,。要實現(xiàn)這樣的性能,應(yīng)采用一系列去耦電容值,,每個值都有不同的自諧振頻率,。這種方法可讓電源抑制比(PSRR)值不佳的器件也能實現(xiàn)最佳性能,而PSRR在某些器件上會隨工作頻率的上升而下降。
最后,,要盡可能減少額外電壓軌的數(shù)量,,這有助于降低解決方案的復(fù)雜性。此外,,您還應(yīng)注意到任何電源軌排序或斜坡速率,并確保您的解決方案能夠滿足這些要求,。
時鐘和復(fù)位樹
您的系統(tǒng)需要至少一個時鐘工作,。通常讓邏輯級振蕩器在所需頻率上工作??紤]振蕩器時,,要注意一系列問題。其中振蕩器所需的輸出頻率和穩(wěn)定性是關(guān)鍵參數(shù),。振蕩器穩(wěn)定性單位為PPM(百萬分之一),,通常為+/-50 PPM或+/-100 PPM。
驅(qū)動高速串行鏈路或為ADC/DAC提供時鐘的振蕩器通常還需要低相位噪聲和低抖動,。保持低噪聲和低抖動非常重要,,因為低噪聲有助于降低高速鏈路的誤碼率,而高噪聲和高抖動則會增加ADC和DAC上的噪聲水平,,從而降低信噪比,。
您還應(yīng)考慮輸出信號標準。LVDS或LVPECL等差分信號的抗噪性比單端LVCMOS或LVTTL輸出要好,。此外,,差分信號還能減少EMI問題,加速上升和下降時間,。不過,,差分信號的相位噪聲性能比單端輸出要差。高性能系統(tǒng)將采用正弦波振蕩器作為主時鐘源以減少相位噪聲和抖動的影響,,這在ADC和DAC計時情況下尤其如此,。
由于FPGA可在內(nèi)部支持多個時鐘域,因此目前系統(tǒng)通常采用一個以上的時鐘域,。如果不能通過DLL,、DCM或PLL等內(nèi)部時鐘資源實現(xiàn)所需的分頻,那么設(shè)計人員往往會采用高速時鐘和低速率時鐘相結(jié)合,。此外,,不同的協(xié)議或算法也會需要不同的時鐘頻率,從而在設(shè)計中創(chuàng)建多個時鐘和時鐘域,。圖3給出了典型的時鐘樹,。