FPGA采用了邏輯單元陣列概念,內部包括可配置邏輯模塊、輸出輸入模塊和內部連線(xiàn)三個(gè)部分。每一塊FPGA芯片都是由有限多個(gè)帶有可編程連接的預定義源組成來(lái)實(shí)現一種可重構數字電路。 長(cháng)久以來(lái)新型FPGA的功能和性能已經(jīng)為它們贏(yíng)得系統中的核心位置,成為許多產(chǎn)品的主要數據處理引擎。 鑒于FPGA在如此多應用中的重要地位,采取正式且注重方法的開(kāi)發(fā)流程來(lái)處理FPGA設計比以往更加重要。該流程旨在避免開(kāi)發(fā)周期后期因發(fā)現設計缺陷而不得不進(jìn)行費時(shí)費錢(qián)的設計修改,而且該缺陷還可能對項目進(jìn)度計劃、成本和質(zhì)量造成災難性影響。 本文所介紹的的框架覆蓋從系統架構考量到FPGA開(kāi)發(fā)與測試規劃等各個(gè)環(huán)節。我們從FPGA硬件的角度重點(diǎn)詳細介紹該框架,通過(guò)介紹希望其他工程團隊能夠發(fā)現該框架在復雜的FPGA設計項目里面的優(yōu)點(diǎn)。 該框架是一種在FPGA中設計硬件的自上而下的迭代設計方法。首先規劃從系統架構層面出發(fā)決策FPGA功能。隨后我們根據FPGA器件的已知功能和性能逐步優(yōu)化FPGA設計的特性。 另外,大型FPGA設計的實(shí)現需要制定完備的開(kāi)發(fā)、仿真和驗證規劃。該框架的作用就是幫助我們制定這些規劃。簡(jiǎn)而言之,該框架可歸納為圖1所示的流程圖。本文的討論將集中在規劃和技術(shù)文檔部分(頂部)。 系統架構 就本討論范圍而言,系統架構指在系統軟件和硬件之間的功能劃分。尤其,重點(diǎn)是將硬件功能細分到FPGA以及其它微芯片組件上(假設已經(jīng)明確產(chǎn)品層面需求),例如市場(chǎng)營(yíng)銷(xiāo)或產(chǎn)品定義部門(mén)可能已經(jīng)參與進(jìn)來(lái)并明確產(chǎn)品需求。 在系統架構階段,思路是如何明確地讓這些產(chǎn)品需求在真實(shí)產(chǎn)品中得以實(shí)現。就FPGA來(lái)說(shuō),主要的決策圍繞著(zhù)應將哪些特性和功能在FPGA中實(shí)現,以及進(jìn)一步,哪些特性和功能適合在FPGA中實(shí)現。 通過(guò)提前定義FPGA的高級要求,就能避免開(kāi)發(fā)流程已接近尾聲時(shí)進(jìn)行成本不菲的設計及需求修改。在設計早期階段明確系統架構有助于指導用戶(hù)做出對開(kāi)發(fā)時(shí)間和產(chǎn)品成本至關(guān)重要的多項重大決策。 在這個(gè)層面上探討,只需要一般性地概略介紹FPGA特性。詳細特性和實(shí)現需求將在FPGA需求定義過(guò)程的后續階段進(jìn)行定義。本次探討的參與者應包括熟悉系統級要求的、了解系統級架構設計的,以及熟悉FPGA特性與功能的等不同人員。 具體就FPGA而言,需要回答十大問(wèn)題: 1. 要在FPGA中實(shí)現的特性列表是什么樣的? 2. 在FPGA中實(shí)現特性與使用非FPGA組件實(shí)現特性相比,需在技術(shù)上做怎樣的權衡取舍? 3. 在FPGA中實(shí)現與使用非FPGA組件實(shí)現相比,設計工作量/成本分別如何? 4. 需要什么樣的定制特性或處理? 5. FPGA的靈活性對功能有什么好處? 6. 您應該考慮的未來(lái)風(fēng)險緩解措施是什么? 7. 能否把多個(gè)非FPGA組件的特性集中到FPGA中? 8. 根據準備實(shí)現的設計特性,如何選擇FPGA器件? 9. 特性是否能在FPGA中實(shí)現? 10. 需要什么樣的非FPGA器件,如何讓這些非FPGA器件與FPGA接口相連? FPGA架構 FPGA架構屬于FPGA器件上物理層的微架構級和芯片級數據流設計。您的團隊應與系統級架構同步設計該架構,以確定器件尺寸、選擇器件和可行性。 定義FPGA架構的目的,是確保系統架構需求是準確、現實(shí)、切實(shí)可行的設計要求,能夠在FPGA中實(shí)現。 圖1 - FPGA開(kāi)發(fā)框架 這個(gè)層面的探討需要對FPGA架構和資源的特性與功能有深入的認識。因此應該由經(jīng)驗豐富的FPGA設計人員參與完成。在這個(gè)階段,您必須考慮與FPGA性能目標、潛在風(fēng)險因素和FPGA資源利用率。 在FPGA架構定義階段,您有可能會(huì )發(fā)現系統級需求和架構無(wú)法實(shí)現,或是對實(shí)現在FPGA中而言存在高風(fēng)險。在這種情況下您必須重新評估和更新系統架構,以創(chuàng )建在FPGA中可實(shí)現的高級需求列表。 您應問(wèn)問(wèn)自己現有IP哪些可供使用,還必須創(chuàng )建哪些IP。此外,您還需要檢查I/O需求,以及把時(shí)鐘域和時(shí)鐘特性映射到FPGA時(shí)鐘資源的方法。其他關(guān)鍵問(wèn)題包括:如何在FPGA上布局千兆位收發(fā)器(GT)資源;在SSI器件中是否已考慮到交叉SLR數據流;目標時(shí)鐘頻率對設計功能而言是否實(shí)際。最后,您還必須評估您設計的目標性能對選擇的FPGA而言是否實(shí)際。 FPGA需求定義與劃分 FPGA需求定義和劃分階段與系統和FPGA架構定義緊密關(guān)聯(lián)并受這兩個(gè)階段的決策左右。FPGA需求定義指定義準備在FPGA中實(shí)現的詳細需求,并用作明確的特性清單以供設計和測試工程團隊設計、測試和實(shí)現。FPGA需求定義與系統和FPGA架構需求定義的不同之處在于FPGA需求是精確的。該清單定義了FPGA的細致要求,而不僅僅是系統的不同組件之間的功能劃分,或是穿越FPGA的數據流之間的功能劃分。 這個(gè)階段的目的是清楚地定義FPGA工程團隊確切能實(shí)現和測試的內容。在這個(gè)階段,用戶(hù)將把高級系統和FPGA架構需求轉換成用于實(shí)現的具體需求。這樣做能夠帶來(lái)雙重好處。首先,單獨定義FPGA需求能突出強調系統和FPGA架構的任何局限以及之前未曾考慮到或未曾預見(jiàn)到的狀況。其次,該步驟將為FPGA設計的開(kāi)發(fā)和測試的順利執行鋪平道路。 為適當地描述FPGA需求,您必須建立清晰且簡(jiǎn)明扼要的定義,以便提煉成單獨的需求。我們建議為各項需求添加標簽或序號,使用易于判斷其能否實(shí)現的簡(jiǎn)短描述來(lái)定義各項需求,避免用高級含糊的需求用語(yǔ)。只要足夠清晰扼要,您可以使用任何行業(yè)標準格式或專(zhuān)有格式。 避免使用含混或界定不清的用語(yǔ),例如“快速”或“小型”。應堅持使用有明確目標的用語(yǔ),如“400MHz”或“4.2K觸發(fā)器”。這樣定義的目的旨在確保將文檔分配給之前不了解系統或FPGA架構的開(kāi)發(fā)工程團隊進(jìn)行實(shí)施時(shí)不再需要反復澄清。您需要檢查每個(gè)需求是否表述清楚、簡(jiǎn)潔、明確且是否包含了所有必需的信息以避免反復澄清的必要。此外,還應該注意需求中是否包括管腳和I/O定義?是否所有的高級需求都已經(jīng)分解為基本設計要素?未參與早期系統架構定義的設計團隊是否能夠使用這些需求開(kāi)發(fā)FPGA以及最后測試與驗證團隊是否能使用該文檔開(kāi)發(fā)測試平臺和制定測試方案,明確驗證每一項需求是否通過(guò)。 FPGA設計規劃 該框架的這個(gè)階段用于為FPGA硬件的實(shí)際開(kāi)發(fā)制定規劃,確保各項特性及開(kāi)發(fā)工作的完成與整個(gè)產(chǎn)品開(kāi)發(fā)的其他部分協(xié)調一致。 這個(gè)階段的目標是適當地把當前的系統級需求、FPGA級需求和架構體現到開(kāi)發(fā)規劃中。在通過(guò)前面介紹的規劃階段之后,現在開(kāi)發(fā)團隊一般會(huì )面臨兩種情況。 第一種情況是系統與FPGA架構以及需求理解良好,描述詳盡,最終,FPGA設計開(kāi)發(fā)階段(即HDL編碼)和測試開(kāi)發(fā)階段(仿真、測試臺)基本無(wú)需修改設計需求,順利執行。 第二種情況是系統架構和FPGA需求仍然處在變動(dòng)中。這樣的設計會(huì )在設計開(kāi)發(fā)周期和測試開(kāi)發(fā)階段面臨眾多變數和修改。 雖然人人都想得到第一種情況的結果,但往往卻不能成功,最終落入第二種情況的境地。很明顯,這種情況更加難于管理。 設計規劃的總體目標應是在開(kāi)發(fā)周期的這個(gè)階段實(shí)現第一種情況。在第一種情況中,FPGA的開(kāi)發(fā)簡(jiǎn)單直觀(guān),只需為實(shí)現和測試設計特性安排進(jìn)度計劃。 在第二種情況中,最重要的管理工作是確保落實(shí)充分理解的流程,以便評估和決定應該進(jìn)行哪些修改以及每種修改為總體開(kāi)發(fā)進(jìn)度計劃帶來(lái)的影響如何。這里可以運用多種項目管理理念和技巧。最重要的一點(diǎn)是完成上述修改評估和影響評估。 就專(zhuān)門(mén)的FPGA規劃和開(kāi)發(fā)而言,FPGA的優(yōu)勢之一在于能夠多次修訂硬件平臺和多次把硬件平臺下載到原型PCB上。設計團隊應充分發(fā)揮這一功能的優(yōu)勢。因此建議的開(kāi)發(fā)規劃是逐漸把特性添加到能夠工作的設計中。其思路是從能夠實(shí)現主要通信接口的基本設計出發(fā),無(wú)需實(shí)現全部需求就能工作。 這樣做能夠帶來(lái)雙重好處。首先可以確保隨時(shí)有一個(gè)可工作的設計,您可用來(lái)調試PCB和更大型系統。其次,調試實(shí)際的FPGA設計會(huì )簡(jiǎn)單得多,因為可以檢查新添加的特性,確保新添加的特性不會(huì )干擾或中斷當前可工作的設計。 與FPGA設計開(kāi)發(fā)同步,同樣重要的是為實(shí)現的FPGA設計準備良好的仿真環(huán)境規劃。投資開(kāi)發(fā)穩健可靠的仿真環(huán)境,就可以復制現實(shí)數據流,在仿真中重現出錯條件,迅速隔離和判斷根本原因,從而不僅能減少設計缺陷,還能顯著(zhù)縮短實(shí)驗室調試時(shí)間。 開(kāi)發(fā)穩健可靠的測試仿真環(huán)境和開(kāi)發(fā)FPGA本身一樣復雜,需要視同開(kāi)發(fā)FPGA一樣規劃和考量。 |