新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA原型設(shè)計(jì) 能為您做些什么?

基于FPGA原型設(shè)計(jì) 能為您做些什么?

作者: 時(shí)間:2011-09-27 來(lái)源:網(wǎng)絡(luò) 收藏

作為基于 原型方法的擁護(hù)者,有人可能會(huì)認(rèn)為我們只片面地看到了這種方法的優(yōu)點(diǎn),而對(duì)其缺陷視而不見(jiàn)。但那絕非我們的本意。我們這本《基于 的原型方法手冊(cè)》旨在全面揭示基于 的原型的利弊,因?yàn)樽罱K我們并不想看到有人本來(lái)可以使用其他方法更好地達(dá)到目的(比如說(shuō)用基于System C的虛擬原型),卻行進(jìn)在這種方法的漫漫征途上。

讓我們來(lái)更深入地研究一下基于FPGA原型方法的目的和局限性,以及其對(duì)于系統(tǒng)級(jí)驗(yàn)證和其他目的的適用性。把重點(diǎn)始終放在原型項(xiàng)目的目的上,讓我們?cè)谄脚_(tái)、IP 使用、設(shè)計(jì)導(dǎo)出、調(diào)試及其他設(shè)計(jì)方面更容易地做出決策。這樣,我們就能夠通過(guò)分析世界上其他團(tuán)隊(duì)的案例,從他們的項(xiàng)目中汲取經(jīng)驗(yàn)。

基于FPGA的原型可滿(mǎn)足不同目的需求

不是一個(gè)按幾個(gè)按鈕就能完成的過(guò)程,在它不同的階段需要仔細(xì)的關(guān)注和思考。除說(shuō)明這個(gè)過(guò)程需要完成的工作和涉及到的專(zhuān)業(yè)知識(shí)外,我們還應(yīng)解釋在 SoC 項(xiàng)目中該進(jìn)行(或者不該進(jìn)行)的原因。在與原型設(shè)計(jì)人員多年交談中,我們最常問(wèn)到的一個(gè)問(wèn)題是“為什么您這么做?”。答案有多種多樣,我們把它們總結(jié)成了表 1 中幾條常見(jiàn)的理由。舉例來(lái)說(shuō),“真實(shí)環(huán)境中的數(shù)據(jù)效應(yīng)”,這可能指的是某個(gè)團(tuán)隊(duì)的工作是通過(guò)原型設(shè)計(jì)得到某個(gè)系統(tǒng)全速運(yùn)行時(shí)的模型,并將其與其他系統(tǒng)或外設(shè)相連,目的可能是為了測(cè)試對(duì)某個(gè)新接口標(biāo)準(zhǔn)的合規(guī)情況。他們進(jìn)行原型設(shè)計(jì)的大致理由是“與真實(shí)環(huán)境接口”,而且原型設(shè)計(jì)也確實(shí)在真正的芯片器件面世之前,提供了實(shí)現(xiàn)這個(gè)目的的最快、最準(zhǔn)確的途徑。

基于FPGA原型設(shè)計(jì) 能為您做些什么?
表 1 采用基于 FPGA 原型的常見(jiàn)目的與原因

系統(tǒng)了解這些項(xiàng)目的目的和我們進(jìn)行原型設(shè)計(jì)的原因,將有助于我們判斷基于 FPGA 的原型設(shè)計(jì)是否能為我們的下一個(gè)項(xiàng)目提供幫助。

因此,讓我們探究一下表 1 所述的目的以及基于 FPGA 的原型方法如何能幫助實(shí)現(xiàn)這些目的。在許多情況下,我們還會(huì)給出真實(shí)環(huán)境中的一些實(shí)例,筆者藉此提前感謝那些奉獻(xiàn)自己經(jīng)驗(yàn)、指導(dǎo)他人走向成功的人士。

高性能與準(zhǔn)確度

只有基于 FPGA 的原型才能提供正確測(cè)試設(shè)計(jì)各個(gè)方面所需的速度和準(zhǔn)確度。我們把這個(gè)理由放在首位的原因是,雖然項(xiàng)目有許多需要實(shí)現(xiàn)的給定目的,但對(duì)需要進(jìn)行原型設(shè)計(jì)的團(tuán)隊(duì)來(lái)說(shuō),這可能是所有理由中最根本的原因。舉例來(lái)說(shuō),這個(gè)團(tuán)隊(duì)的目的可能是驗(yàn)證某些 SoC 的嵌入式軟件,觀(guān)察其在真實(shí)硬件上全速運(yùn)行的情況,但使用原型的根本原因是為了確保高性能與準(zhǔn)確度。我們?cè)谔摂M系統(tǒng)中可以在更高的性能水平下驗(yàn)證該軟件,但我們無(wú)法達(dá)到使用真實(shí)的 RTL 所能實(shí)現(xiàn)的準(zhǔn)確度。

實(shí)時(shí)數(shù)據(jù)流

難以驗(yàn)證 SoC 的原因之一是因?yàn)槠錉顟B(tài)取決于許多變量,包括其之前的狀態(tài)、輸入的次序以及更廣泛的 SoC 輸出系統(tǒng)效應(yīng)(以及可能的反饋)。將 SoC 設(shè)計(jì)與系統(tǒng)的其他部分相連并以實(shí)時(shí)速度運(yùn)行,可以讓我們立即觀(guān)察到實(shí)時(shí)條件、輸入和系統(tǒng)反饋的變化帶來(lái)的效應(yīng)。

葡萄牙波爾圖市 Synopsys 公司 IP 團(tuán)隊(duì)開(kāi)發(fā)的 HDMI 原型中的實(shí)時(shí)數(shù)據(jù)流就是一個(gè)很好的例子。在本實(shí)例中,高清(HD)媒體數(shù)據(jù)流經(jīng)處理內(nèi)核的原型輸出到高清顯示器上,如圖 1 的方框圖所示。注意方框圖底部顯示的是實(shí)時(shí)音頻和高清視頻數(shù)據(jù)流,從接收器(從外部源)接收,流經(jīng)原型,輸出到與外部監(jiān)控器相連的實(shí)時(shí)HDMI PHY 的整個(gè)流程。
通過(guò)使用投片前的原型,我們可以立即看到和聽(tīng)到不同的高清數(shù)據(jù)在我們的設(shè)計(jì)上的效果,反之亦然。只有采用基于 FPGA 的原型方法才支持這種實(shí)時(shí)數(shù)據(jù)流,不僅給此類(lèi)多媒體應(yīng)用帶來(lái)極大好處,也能給許多其他要求對(duì)輸入數(shù)據(jù)流做出實(shí)時(shí)響應(yīng)的應(yīng)用帶來(lái)諸多裨益。

基于FPGA原型設(shè)計(jì) 能為您做些什么?
圖 1 HDMI 原型方框圖

軟硬件集成

在上述實(shí)例中,讀者可能已經(jīng)注意到原型使用了一塊小型 MicroBlazeTM CPU,并備有外設(shè)和存儲(chǔ)器,從而體現(xiàn)了一個(gè) SoC 的所有常見(jiàn)模塊。在這個(gè)設(shè)計(jì)中,運(yùn)行在 CPU 上的軟件主要用于加載和控制 A/V 處理。然而,在許多SoC 設(shè)計(jì)中,軟件最耗精力。

鑒于軟件已成為 SoC 開(kāi)發(fā)工作的主體部分,軟件工作在項(xiàng)目日程中占據(jù)關(guān)鍵位置越來(lái)越常見(jiàn)。當(dāng) SoC 能夠有效達(dá)到量產(chǎn)標(biāo)準(zhǔn)的時(shí)候,決定項(xiàng)目實(shí)際完成日期的是軟件開(kāi)發(fā)和驗(yàn)證工作。在這種情況下,系統(tǒng)開(kāi)發(fā)團(tuán)隊(duì)如何才能提升軟件開(kāi)發(fā)和驗(yàn)證工作的效率呢?要回答這個(gè)問(wèn)題,我們需要查看軟件開(kāi)發(fā)團(tuán)隊(duì)把時(shí)間都花在什么地方。

為軟件開(kāi)發(fā)建立 SoC 的模型軟件由于自身的復(fù)雜性,很難做到完美。對(duì)我們?cè)谌粘J褂糜?jì)算機(jī)的過(guò)程中遇到的軟件升級(jí)、服務(wù)包和漏洞修補(bǔ)的情況,我們都已經(jīng)司空見(jiàn)慣。但是,具體到嵌入 SoC 中的軟件,這種無(wú)休止的軟件改進(jìn)方法就遇到了障礙。另一方面,相比于通用的計(jì)算機(jī)軟件而言,與嵌入式軟件互動(dòng)的系統(tǒng),其設(shè)定的使用模式和環(huán)境條件都更容易確定。而且,為較簡(jiǎn)單的系統(tǒng)開(kāi)發(fā)的嵌入式軟件可以比較簡(jiǎn)單,也就更易于全面驗(yàn)證。

舉例來(lái)說(shuō),控制車(chē)輛子系統(tǒng)或電子玩具的 SoC 比在實(shí)時(shí)操作系統(tǒng) (RTOS) 上運(yùn)行許多應(yīng)用和流程的智能手機(jī)更容易
進(jìn)行全面測(cè)試。

如果我們更加仔細(xì)地觀(guān)察運(yùn)行在這類(lèi)智能手機(jī)上的軟件,例如圖 2 所示的 Android 軟件,我們可以看到一種多層布置,這稱(chēng)為軟件協(xié)議棧。(該圖基于軟件設(shè)計(jì)師 Frank Abelson 在其所著的《Unlocking Android》一書(shū)中的原始圖。

基于FPGA原型設(shè)計(jì) 能為您做些什么?
圖 2 Android 軟件協(xié)議棧

在觀(guān)察軟件協(xié)議棧時(shí),我們會(huì)發(fā)現(xiàn),協(xié)議棧的最底層——也就是那些最接近硬件的部分,主要是為了滿(mǎn)足將軟件映射到 SoC 硬件上的需求。這就需要對(duì)硬件有絕對(duì)的了解,甚至包括地址和時(shí)鐘周期等。軟件協(xié)議棧最底層的設(shè)計(jì)人員往往稱(chēng)自己為平臺(tái)工程師,他們的工作就是準(zhǔn)確描述硬件,以便協(xié)議棧的更高層次能夠識(shí)別和重復(fù)使用。這種描述被某些 RTOS 廠(chǎng)商稱(chēng)為板支持包(BSP),與我們?nèi)粘J褂玫?PC 的基本輸入/輸出系統(tǒng) (BIOS) 類(lèi)似。

協(xié)議棧從下往上第二層包含 RTOS的內(nèi)核以及將較高層次的軟件與被描述的硬件相連的必要驅(qū)動(dòng)程序。在這些協(xié)議棧的最底層中,平臺(tái)工程師和驅(qū)動(dòng)程序開(kāi)發(fā)人員需要在真實(shí)的 SoC 或完全準(zhǔn)確的SoC 模型上驗(yàn)證他們的代碼。這個(gè)層面的軟件開(kāi)發(fā)人員需要全面了解各時(shí)鐘周期軟件的行為。

作為軟件開(kāi)發(fā)人員的另一極,在協(xié)議棧的頂層,我們可以看到用戶(hù)空間,在這里可以同時(shí)運(yùn)行多個(gè)應(yīng)用,比如像智能電話(huà)中的聯(lián)系人管理器、視頻顯示器、互聯(lián)網(wǎng)瀏覽器和實(shí)際呼叫的電話(huà)子系統(tǒng)。這些應(yīng)用中的每一個(gè)都不能直接訪(fǎng)問(wèn) SoC 硬件,而且實(shí)際上在某種程度上違背了所有硬件考慮事項(xiàng)。這些應(yīng)用依賴(lài)運(yùn)行在協(xié)議棧較低層的軟件代表自己與 SoC 硬件及系統(tǒng)其他部分通信。

我們可以歸納為:在協(xié)議棧的每一層,軟件開(kāi)發(fā)人員只需要一個(gè)足夠準(zhǔn)確的模型來(lái)讓自己的代碼認(rèn)為自己運(yùn)行在目標(biāo) SoC 上即可。超過(guò)必要的準(zhǔn)確度只會(huì)讓模型在模擬器上的運(yùn)行速度下降。實(shí)際上,任何層面的 SoC 建模,都要求我們把硬件和協(xié)議棧描述為比當(dāng)前層面更低的一層,以便進(jìn)行驗(yàn)證。而且在理想的情況下,我們應(yīng)該只要求夠用的準(zhǔn)確度,以實(shí)現(xiàn)最高性能。

舉例來(lái)說(shuō),協(xié)議棧頂層的應(yīng)用開(kāi)發(fā)人員可以在真實(shí)的SoC或 SoC 模型上測(cè)試代碼。在這種情況下,模型的準(zhǔn)確度只要能夠讓?xiě)?yīng)用認(rèn)為自己運(yùn)行在真正的 SoC 上就足夠,它不需要精確到時(shí)鐘周期,也不需要了解硬件的細(xì)致結(jié)構(gòu)。但這里速度非常重要,因?yàn)樵谠S多情況下有多個(gè)應(yīng)用會(huì)同時(shí)運(yùn)行,并與真實(shí)環(huán)境中的數(shù)據(jù)接口。

這種只為軟件層提供“夠用的準(zhǔn)確度”的建模方法為不同的軟件開(kāi)發(fā)人員提供了多種不同的建模環(huán)境,供他們?cè)赟oC 項(xiàng)目的不同階段使用??梢圆捎肧ystemC 這樣的語(yǔ)言進(jìn)行事務(wù)處理層面的建模,創(chuàng)建出一個(gè)準(zhǔn)確度低但速度足夠快的仿真器模型,用來(lái)同時(shí)運(yùn)行許多應(yīng)用。如果實(shí)時(shí)的真實(shí)數(shù)據(jù)的處理不是很重要,那么考慮采用虛擬原型方法比較好。

不過(guò),必須完整運(yùn)行整個(gè)軟件協(xié)議?;虮仨毺幚碚鎸?shí)環(huán)境中的數(shù)據(jù)時(shí),最適合采用基于 FPGA 的原型方法。

使用原型驗(yàn)證軟件的實(shí)例只有采用基于 FPGA 的原型方法才能夠打破建模方法中準(zhǔn)確度與性能之間內(nèi)在的相互牽制關(guān)系。采用 FPGA,我們既能實(shí)現(xiàn)實(shí)時(shí)的速度,又能以完全的 RTL 周期精度建模。這樣,單個(gè)原型不僅能供低層軟件驗(yàn)證要求的準(zhǔn)確模型使用,又能供高層應(yīng)用開(kāi)發(fā)人員需要的高速模型使用。實(shí)際上,整個(gè) SoC軟件協(xié)議棧都可以在單個(gè)基于 FPGA的原型上建模。德克薩斯州奧斯汀市Freescale Semiconductor公司移動(dòng)產(chǎn)品部的 Scott Constable 及其團(tuán)隊(duì)開(kāi)展的項(xiàng)目就是采用 FPGA 驗(yàn)證軟件的一個(gè)很好的例子。

Freescale非常想加快 SoC 開(kāi)發(fā)進(jìn)程,因?yàn)槭謾C(jī)市場(chǎng)上產(chǎn)品生命周期短,需要產(chǎn)品盡快打入市場(chǎng)。這不僅是為了贏得競(jìng)爭(zhēng),也是為了避免迅速過(guò)時(shí)。通過(guò)分析流程中耗時(shí)最多的環(huán)節(jié),F(xiàn)reescale發(fā)現(xiàn)通過(guò)加快手機(jī)3G協(xié)議測(cè)試工作可以帶來(lái)最明顯的效果。如果測(cè)試工作能夠在流片前完成,F(xiàn)reescale就可以將項(xiàng)目時(shí)間縮短數(shù)月。與通常只有一到兩年的產(chǎn)品生命周期而言,這非常重要。

協(xié)議測(cè)試是一個(gè)復(fù)雜的過(guò)程,就算以較高的實(shí)時(shí)速度進(jìn)行,也需要一天才能完成。使用 RTL 級(jí)仿真需要花上數(shù)年,而在較快的仿真器上運(yùn)行也要數(shù)周時(shí)間,這都不切合實(shí)際。采用 FPGA 是因?yàn)檫@是實(shí)現(xiàn)必要的時(shí)鐘速度,及時(shí)完成測(cè)試的唯一途徑。

協(xié)議測(cè)試需要開(kāi)發(fā)產(chǎn)品的各種軟件特性,包括硬件驅(qū)動(dòng)程序、操作系統(tǒng)和協(xié)議棧代碼。雖然如前所述主要的目的是協(xié)議測(cè)試,通過(guò)使用 FPGA,所有這些軟件開(kāi)發(fā)工作都能夠在流片前完成,從而大大加快各種最終產(chǎn)品的開(kāi)發(fā)進(jìn)度。

Freescale 構(gòu)建了一個(gè)多芯片系統(tǒng)的原型,其中包括一個(gè)雙核 MXC2 基帶處理器和一個(gè) RF收發(fā)器芯片的數(shù)字部分?;鶐幚砥鲀?nèi)置一個(gè)用于調(diào)制解調(diào)器處理的 Freescale StarCore DSP內(nèi)核、一個(gè)用于用戶(hù)應(yīng)用處理的ARM?926 內(nèi)核,以及 60 多個(gè)外設(shè)。

Synopsys HAPS-54 原型板用來(lái)實(shí)現(xiàn)原型(如圖 3 所示)。該基帶處理器有 500 多萬(wàn)個(gè) ASIC門(mén),Scott 的團(tuán)隊(duì)使用 Synopsys Certify 工具將其在原型板上劃分給三個(gè)賽靈思 Virtex-5FPGA,同時(shí)把數(shù)字 RF 設(shè)計(jì)布置在第四個(gè) FPGA 中。Freescale 決定不構(gòu)建模擬部分的原型,而是直接從 Antritsu協(xié)議測(cè)試盒中以數(shù)字形式提供移動(dòng)網(wǎng)絡(luò)數(shù)據(jù)。

基于FPGA原型設(shè)計(jì) 能為您做些什么?
圖3 Freescale 的 SoC 設(shè)計(jì)在 HAPS-54 原型板上的分區(qū)

較早的內(nèi)核使用的某些設(shè)計(jì)技術(shù)對(duì)ASIC 來(lái)說(shuō)非常有效果,但對(duì) FPGA 來(lái)說(shuō)卻不太好用。另外,RTL 的一部分是從系統(tǒng)級(jí)設(shè)計(jì)代碼中自動(dòng)生成的,由于其過(guò)于復(fù)雜的時(shí)鐘網(wǎng)絡(luò),對(duì) FPGA 來(lái)說(shuō)也是相當(dāng)不利。因此,必須對(duì) RTL 進(jìn)行一些調(diào)整,使其更加兼容 FPGA,這樣做的成效非常顯著。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: FPGA 原型設(shè)計(jì)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉