在5G無線、衛星通信、雷達探測、航天測控等復雜系統設計中,FPGA工程師扮演著重要角色。
對于一個FPGA團隊來說,需要根據項目需要完成產品的設計和驗證,保證項目的交付。為了在越來越復雜的系統設計中,FPGA工程師之間保持高效溝通和工作推進,這就需要找到一個適合的設計方法論。目標是通過在設計團隊之間建立一個通用的方法來提高FPGA設計團隊的生產力,同時允許跨團隊交換設計模塊。
FPGA設計中的三個關鍵因素:
FPGA工程管理
FPGA設計方法
FPGA芯片選擇
首先,需要建立FPGA中實現系統設計的可預測性路線圖。實現可預測結果的三個步驟是:
適當的項目計劃和范圍。
準確選擇FPGA芯片,以確保當今和未來的項目可以使用正確、成熟的技術。
遵循FPGA設計開發的最佳實踐,以縮短設計周期,并確保設計按時完成,設計模塊可以在未來的項目中以最小的代價進行復用。
所有三個元素需要順利地一起工作,以確保成功的FPGA設計,如圖1所示。

圖1 成功進行FPGA設計的三個步驟
供應商的選擇應該是兩家公司之間的長期合作關系,特別是設計軟件和IP Core的授權。通過共享路線圖和共同管理現有項目,不僅可以確保當前項目的成功,還可以及時為未來的項目提供正確的解決方案。一個基于經驗的微調過程,以確保項目的成功。
FPGA設計方法,這是最佳實踐方法的主要焦點。這涵蓋了從基礎到高級技術的完整FPGA設計流程。這種方法是獨立于FPGA供應商,因為適用于FPGA的設計實踐,但同時需要結合FPGA的設計軟件,比如Vivado和Quartus的設計環境不同,相關的設計流程有所不同。對于FPGA工程師而言,設計流程大同小異,可以快速切換。圖2所示的圖表顯示了最佳實踐設計方法論。

圖2 FPGA設計最佳實踐設計方法
Board Layout、RTL設計、IP重用、功能驗證和時序收斂,往往是設計團隊擁有不同設計方法的領域,工程師需要獲得一致的結果和縮短設計周期。
FPGA設計中面臨的許多挑戰并不是FPGA設計所特有的,而是設計中常見的挑戰。與ASIC設計相比,FPGA設備本身確實提供了獨特的挑戰和機會。FPGA設備性能的提高導致針對FPGA的設計更加復雜,ASIC工程師與FPGA工程師可以相互轉換。這導致許多設計團隊將ASIC設計原則遷移到FPGA設計。總的來說,這對FPGA設計流程有好處。然而,它需要與FPGA帶來的設計流程的好處相平衡。FPGA的可編程特性為在系統中執行更多的驗證打開了大門。當正確使用時,這可以大大加快驗證周期,但如果濫用,它會延長設計周期。I/O的可配置特性提供了ASIC設計中不存在的挑戰。同時,行業使用的EDA工具在功能和成本上,FPGA和ASIC也有所不同。
FPGA工程師需要熟悉FPGA廠商軟件,比如Vivado或者Quartus設計軟件。FPGA工程師通常負責編寫和驗證設計的RTL代碼,負責在FPGA中實現設計,并幫助在最終系統中進行聯調。FPGA工程師在PCB設計中扮演著重要的角色。負責從FPGA設計軟件生成FPGA引腳輸出。因此,FPGA工程師需要與硬件PCB設計工程師進行原理圖確認,任何修改都需要提供更新的引腳分配,并最終進行實現和驗證。
在實際的FPGA設計過程中,FPGA工程師除了最基本的RTL代碼設計、仿真和調試外,還需要非常熟悉項目所涉及的技術路線、信號處理過程、系統架構等,常常也需要參與到系統方案的設計制定,并給出最佳實現方案。
因此,對于FPGA工程師而言,最難的不是寫RTL代碼,而是在一個復雜系統設計中,需要涉及技術方案制定、架構設計、深入理解技術協議、模塊設計與驗證、系統集成、整個系統的聯調,以及與其他部門的協作。
此外,需要有好的領導來帶領FPGA團隊,避免非專業領導過多干預FPGA團隊的正常工作。
在系統設計過程中,經常會遇到各種問題,尤其是在系統調試階段,FPGA常常成為“背鍋俠”。FPGA工程師又要通過各種手段去證明自己的設計沒問題,還需要定位出問題出現的原因。每一款產品的成功推出,背后都是一部“研發風云錄”。
總結起來,為了實現復雜系統設計,FPGA工程師需要:
制定詳細的設計方案和系統架構
掌握FPGA信號處理與接口設計方法
做好工程管理和維護
掌握儀器設備的使用和問題排故