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