許多工程師認為,只要定義了FPGA的功能,工作就算完成了。但實際上將FPGA插入PCB時也會面臨一系列挑戰(zhàn)。
對于許多工程師和項目經(jīng)理來說,在FPGA中實現(xiàn)功能并實現(xiàn)時序收斂是主要目標,但實際上在印刷電路板上設計FPGA的硬件級工作也會出現(xiàn)很多有趣的挑戰(zhàn),只有解決了這些挑戰(zhàn)才能實現(xiàn)成功設計。
一切的起點均在于架構。硬件開發(fā)第一步就是定義解決方案的架構。架構應該對應于系統(tǒng)要求,并具體明確它們?nèi)绾卧谟布械玫綄崿F(xiàn)。雖然不同系統(tǒng)的架構各有差異,而且每個系統(tǒng)的具體應用也大相徑庭,但很多系統(tǒng)均包含類似的架構模塊。您能夠同時也應該對經(jī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ù)流進行加密。
無論應用是進行量產(chǎn)或是作為一次性的定制航天設計,組件成本當然也始終是一個重要因素。您應制定目標成本預算,并努力確保在成本限度內(nèi)完成任務。
上述許多參數(shù)在系統(tǒng)中其它器件的選擇上也很重要。特別重要的一個標準就是選擇的組件要能夠在相同的電壓軌上工作,這樣就能簡化電源架構。
您還應考慮在設計中是否有組件標準降低的問題。所有制造商的組件數(shù)據(jù)手冊都給出了器件的最大額定值和最大工作電應力。如果我們選用的器件剛好在最大額定值以下的電應力工作,那么設計的可靠性就會大幅下降,因為系統(tǒng)一直是在推薦工作條件以外工作的。根據(jù)最終應用的不同,故障可能會導致各種后果,包括導致人員傷亡,破壞工作任務,公司質(zhì)量聲譽下挫等。為了生產(chǎn)出可靠的設備,您必須在設計中減少電應力。因此在選擇應用器件時,您必須考慮到器件所承受的電應力。
電源架構
器件選擇好之后,下一步影響項目成敗最關鍵的部分就是電源架構了。這個因素往往被忽視。現(xiàn)代FPGA的核心電壓通常介于0.9V到1.5 V之間。相對于高性能FPGA而言,這種器件需要的靜態(tài)電流可能很高,而且器件完成配置并開始計時后的動態(tài)電流也很大。
設計中的功耗估算非常重要,需要在項目早期進行,以準確評估電源架構。賽靈思提供功耗估算電子數(shù)據(jù)表,您可在以下網(wǎng)址下載: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獲得詳細的功耗估算。這一步驟將幫助您完成電源架構的設計工作。
此外,您還應考慮板上器件的電源去耦問題?,F(xiàn)代器件的開關速度比調(diào)節(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。
驅(qū)動高速串行鏈路或為ADC/DAC提供時鐘的振蕩器通常還需要低相位噪聲和低抖動。保持低噪聲和低抖動非常重要,因為低噪聲有助于降低高速鏈路的誤碼率,而高噪聲和高抖動則會增加ADC和DAC上的噪聲水平,從而降低信噪比。
您還應考慮輸出信號標準。LVDS或LVPECL等差分信號的抗噪性比單端LVCMOS或LVTTL輸出要好。此外,差分信號還能減少EMI問題,加速上升和下降時間。不過,差分信號的相位噪聲性能比單端輸出要差。高性能系統(tǒng)將采用正弦波振蕩器作為主時鐘源以減少相位噪聲和抖動的影響,這在ADC和DAC計時情況下尤其如此。
由于FPGA可在內(nèi)部支持多個時鐘域,因此目前系統(tǒng)通常采用一個以上的時鐘域。如果不能通過DLL、DCM或PLL等內(nèi)部時鐘資源實現(xiàn)所需的分頻,那么設計人員往往會采用高速時鐘和低速率時鐘相結合。此外,不同的協(xié)議或算法也會需要不同的時鐘頻率,從而在設計中創(chuàng)建多個時鐘和時鐘域。圖3給出了典型的時鐘樹。