將處理器集成入FPGA的整合之道
引言
現(xiàn)有的FPGA設(shè)計策略只是將FPGA看作一個單個元件,且需要依靠HDL輸入(HDL capture)和仿真的手段來進(jìn)行元件設(shè)計和驗證。而在將處理器集成入FPGA,試圖在可編程部件中成就一個完全內(nèi)嵌的系統(tǒng)時,其所呈現(xiàn)出的復(fù)雜性是現(xiàn)有方法無法有效解決的。
若想對嵌入到FPGA中基于處理器的整個數(shù)字系統(tǒng)進(jìn)行輸入、運(yùn)行及調(diào)試,工程技術(shù)人員需要有一個集合各種工程軟硬件設(shè)計工具,在一個集成化的FPGA執(zhí)行環(huán)境中協(xié)調(diào)工作的理想設(shè)計平臺。
本文概述了開發(fā)這種系統(tǒng)所必須面對的各種設(shè)計挑戰(zhàn),并講解了Altium公司的最新電子設(shè)計環(huán)境Nexar如何為FPGA設(shè)計提供一種全新的方法。這種方法不僅可將處理器有效地集成入FPGA之中,而且成為一種挖掘現(xiàn)有以及未來大容量、低成本FPGA部件應(yīng)用潛力的系統(tǒng)級FPGA設(shè)計策略。
復(fù)雜度提升所帶來的問題
一直以來,像FPGA這樣的大容量可編程部件都是用于組成邏輯塊的,實質(zhì)上FPGA就是用于研制單一用途的元件,然后與其他現(xiàn)成的元件組合在一起構(gòu)建一個完整的嵌入式系統(tǒng)。這種工作對于一個含有數(shù)萬設(shè)計門柵的FPGA來講已經(jīng)足夠了。然而依照摩爾定律,F(xiàn)PGA在成本不斷降低的同時其容量也有了大幅的提升,現(xiàn)今的FPGA堪稱是一個內(nèi)含百萬級門柵,集成有嵌入式處理器和外設(shè)元件,具有可執(zhí)行整個數(shù)字系統(tǒng)工作能力的設(shè)計平臺,其成本卻已不再是上百美元,而是下降到了僅僅數(shù)十美元的水平。 現(xiàn)在市場上已有很多此種類型的FPGA,但是為什么工程技術(shù)人員沒有急于將這些部件應(yīng)用于設(shè)計當(dāng)中呢?原因很簡單—沒有合適的設(shè)計工具和設(shè)計策略。
絕大多數(shù)傳統(tǒng)的FPGA設(shè)計方法是,采用某種形式的硬件描述語言(HDL)在寄存器狀態(tài)下將整個FPGA作為一個單個元件來進(jìn)行設(shè)計。而且,傳統(tǒng)的方法依賴大量的HDL仿真來達(dá)到對設(shè)計的工作狀況進(jìn)行驗證的目的。 在研制FPGA中的組合邏輯塊時,采用這種設(shè)計方法非常有用,但由于必須進(jìn)行寄存器尋址,隨著FPGA容量的增加以及所用邏輯器件的進(jìn)一步增多,寄存器級的復(fù)雜性使得設(shè)計中采用HDL/仿真方法就變得非常煩瑣。只要看一下含有處理器以及高階外設(shè)功能的典型嵌入式應(yīng)用產(chǎn)品就會發(fā)現(xiàn),其電路結(jié)構(gòu)中所特有的復(fù)雜性使得傳統(tǒng)意義上的FPGA 設(shè)計方式不再可行。
雖然這種復(fù)雜度可以在一種程度上通過解決分級構(gòu)造中的問題,搜尋、組合已經(jīng)過預(yù)先測試的IP塊,將基于HDL源代碼的大模塊連在一起以增加層的復(fù)雜性來克服,但由于基于HDL組合邏輯的較大模塊需要許多行代碼,并要知道什么是能集成在設(shè)計中的有效源代碼,工程技術(shù)人員需要對代碼的工作流程有一定的了解。
隨著設(shè)計復(fù)雜度的提高,采用傳統(tǒng)的HDL/仿真方法來進(jìn)行FPGA產(chǎn)品開發(fā)時,其復(fù)雜性所導(dǎo)致的一系列問題就顯現(xiàn)了出來。將FPGA當(dāng)做一種孤立元件進(jìn)行開發(fā)時,行之有效的實施和驗證策略在應(yīng)對系統(tǒng)級集成時受到了嚴(yán)峻的挑戰(zhàn)。要想在FPGA平臺上進(jìn)行高效優(yōu)質(zhì)的系統(tǒng)級設(shè)計,就必須有一種全新的思路和方法。
借鑒線路板設(shè)計的經(jīng)驗
線路板級系統(tǒng)的設(shè)計為我們提供了有用的經(jīng)驗和設(shè)計靈感。通常情況下,為百萬級基本門柵的復(fù)合系統(tǒng)是無需耗用大量仿真周期的。這是因為復(fù)雜的系統(tǒng)已溶入到高階元件設(shè)計之中了,而元件可以很簡單地在一個圖形環(huán)境中連接在一起以便構(gòu)建起整套系統(tǒng)。門柵和寄存器級的復(fù)雜性被元器件有效地掩蓋和回避了,這使得工程技術(shù)人員無需具備任何有關(guān)元件基本結(jié)構(gòu)方面的知識,就可以相對快速且容易地進(jìn)行整個系統(tǒng)的開發(fā)工作。
工程技術(shù)人員在從事線路板級的設(shè)計時,需要有傳統(tǒng)HDL設(shè)計流程所要求的更高抽象概念。他們可將元件放置入原理圖中,并進(jìn)行布線以設(shè)定整個系統(tǒng)的連接性。電路的功能性單元 — 元件 — 被看做是“黑盒子”。
如果將這種方法引入到FPGA的內(nèi)部設(shè)計之中,將FPGA看做是一個通過元件互連來構(gòu)建系統(tǒng)的平臺,而不是簡單地看做是一個獨立的復(fù)合元件,會是一種更大規(guī)模的設(shè)計流程。
Altium Limited公司新近推出的設(shè)計系統(tǒng)(Nexar)正是應(yīng)用了這種方式。 工程技術(shù)人員可將現(xiàn)有的線路板級嵌入式系統(tǒng)設(shè)計知識直接應(yīng)用于可編程部件的開發(fā)之中。Nexar的獨特之處在于它并非試圖將傳統(tǒng)的HDL流程按比例提升到系統(tǒng)級的水平,而是將HDL與基于原理圖的線路板設(shè)計方法相結(jié)合,集二者之優(yōu)勢以實現(xiàn)系統(tǒng)級的設(shè)計開發(fā)。
設(shè)計輸入所要面對的挑戰(zhàn)
一直以來,F(xiàn)PGA都被當(dāng)做是用在較大系統(tǒng)中的單一用途元件,是與其他采用分立、現(xiàn)成元件的主要功能塊如處理器一起工作的。這種單一用途的元件可以用于集合大量的組合邏輯或者膠合邏輯,也可以充當(dāng)一種特殊的元件,如網(wǎng)絡(luò)攝像機(jī)用圖像編碼器,它具備復(fù)雜的大規(guī)模數(shù)據(jù)轉(zhuǎn)換功能。
用途單一的元件設(shè)計通常采用硬件描述語言(HDL)進(jìn)行設(shè)計輸入,這會非常有效,如VHDL或Verilog,但采用原理圖編輯器等圖形工具則差強(qiáng)人意。
然而,在將整個電路中的功能塊連接在一起時,HDL的效能低于圖形工具。要想高效優(yōu)質(zhì)地完成FPGA上嵌入式系統(tǒng)的設(shè)計,一個必要的條件就是能在一個設(shè)計中將HDL和原理圖方法結(jié)合起來使用。
Nexar采用了一種叫做“混合模式”的設(shè)計輸入(design capture)方法來應(yīng)對這種挑戰(zhàn),它支持在一項設(shè)計中應(yīng)用原理圖和HDL兩種設(shè)計方式(采用VHDL語言)。這樣工程技術(shù)人員可根據(jù)工作的特定需要來選用最適當(dāng)?shù)姆椒?。在?gòu)建整個系統(tǒng)設(shè)計并需要對處理器和外部部件進(jìn)行連接時,可采用原理圖輸入(schematic capture)的方式。當(dāng)需要開發(fā)一種用做系統(tǒng)元件的大容量邏輯塊時,則可采用VHDL描述的方法。這種混合模式的輸入方法為在FPGA平臺上同時支持系統(tǒng)和元件級設(shè)計提供了一種理想環(huán)境。
需要使用元件的原理圖
如果擁有一個支持原理圖/HDL混合設(shè)計輸入方式的設(shè)計環(huán)境,但沒有能夠置放于原理圖中的合適現(xiàn)成的FPGA元件,也就沒有多大的意義了。作為一個“FPGA-可即用”元件,其在原理圖上的表示符號必須有一個與之相對應(yīng)的器件型號或內(nèi)核,這個型號或內(nèi)核要能在目標(biāo)FPGA中例證說明。在FPGA和ASIC設(shè)計中,這些可即用的硅晶元件通常被稱為IP內(nèi)核(虛擬元件)。
要設(shè)計一個元件分離的嵌入式系統(tǒng),工程技術(shù)人員采用分銷商可隨時供貨的現(xiàn)成元件就可以了。 但要設(shè)計并運(yùn)行一個FPGA平臺上開發(fā)的嵌入式系統(tǒng),搜尋具有相應(yīng)功能的元件會是很困難的。IP內(nèi)核是可集成入整個系統(tǒng)設(shè)計的HDL源文件。然而要找到、購買并獲得這類IP的專利使用權(quán)是非常耗費時間且困難的事情。而且,以HDL形式提供的IP必須作為整體設(shè)計的一部分進(jìn)行合成并加以驗證。由于要花時間將IP寫入系統(tǒng)HDL描述中去,因而會進(jìn)一步拖長開發(fā)的時間。
立即可用的 IP元件庫
若干個IP元件庫作為整個系統(tǒng)的一個組成部分集合在Nexar中,以作為原理圖輸入過程中所需的部件被隨時調(diào)用。這些元件并非像其他許多基于方框圖的FPGA設(shè)計工具所提供的,只是一些簡單的低階布爾門柵。另外還有很多不同的復(fù)雜處理器內(nèi)核和高階外部器件,如:CAN控制器、VGA 控制器、計時器以及存儲元件等。這些元件庫再配合一套全面的原理圖輸入環(huán)境,可為在FPGA上進(jìn)行基于處理器的系統(tǒng)設(shè)計提供很大的便利。
所提供的庫元件并非源級HDL,而更多的是好多種不同目標(biāo)FPGA架構(gòu)進(jìn)行預(yù)先合成和驗證的。進(jìn)行系統(tǒng)合成時,合適指標(biāo)的低階元件排線表列被當(dāng)做黑盒子通過合成引擎,并同系統(tǒng)連接信息一起傳給FPGA廠商的布局及布線工具以便進(jìn)行FPGA內(nèi)部整合。由于只需要對元件塊和用HDL格式生成的各種膠合邏輯功能的連接狀況進(jìn)行安排,系統(tǒng)級的合成工作可以很快地開始進(jìn)行。而且,由于設(shè)計的主要部分 — 內(nèi)含IP元件已經(jīng)通過了驗證,因而沒有必要再進(jìn)行大量的HDL級仿真來對電路功能的運(yùn)作狀況進(jìn)行驗證。
將各種處理器內(nèi)核和外設(shè)部件封裝入預(yù)先合成的模塊之中,不僅能夠降低系統(tǒng)集成工作的復(fù)雜程度,而且還提供了一種能直觀反映與工程技術(shù)人員目前所采用的基于元件的設(shè)計方式相類似的設(shè)計流程。這種IP提供方式還使系統(tǒng)元件可適用于不同的FPGA部件架構(gòu),這讓Nexar系統(tǒng)設(shè)計可在各種零部件和任何一家FPGA廠商的產(chǎn)品之間輕松實現(xiàn)轉(zhuǎn)移。
嵌入式軟件開發(fā)
所有以處理器為主體的電子設(shè)計都需要配備軟件來實現(xiàn)其相應(yīng)的功能。而要開發(fā)這類軟件,工程技術(shù)人員必須有一種可與處理器相匹配的編譯器。
采用嵌入式代碼的產(chǎn)品一般都需要在實時環(huán)境中工作,且硬件資源通常都很有限 (包括存儲器),在這種情況下,嵌入式開發(fā)工具就必須能夠提供高質(zhì)量、小體積的代碼,且有必要針對處理器進(jìn)行優(yōu)化配置,并能支持交互式的調(diào)試工作。
為滿足嵌入式軟件設(shè)計工具的這些基本需要,Nexar集成了多個嵌入式編譯器和調(diào)試器(基于Altium公司的TASKING嵌入式軟件開發(fā)技術(shù))以用于所供IP元件處理器內(nèi)核的開發(fā)。不僅如此,Nexar還包含了一套全面集成硬件開發(fā)環(huán)境的完整軟件開發(fā)系統(tǒng),以便用于構(gòu)建整個系統(tǒng)的軟硬件能夠同步開發(fā)。
運(yùn)用Nexus嵌入式處理器調(diào)試接口標(biāo)準(zhǔn)(IEEE-ISTO 5001-1999),可實現(xiàn)與嵌入到FPGA中的處理器進(jìn)行通信。由Nexar提供的所有處理器內(nèi)核都針對這一標(biāo)準(zhǔn)而專門設(shè)計,并且可提供廣泛的片上調(diào)試功能。這為在系統(tǒng)中運(yùn)作的處理器內(nèi)核實現(xiàn)全面的源級調(diào)試提供了可能。Nexar提供的各種編譯器都以Altium公司最尖端的Viper編譯器的框架為基礎(chǔ)構(gòu)建,并針對預(yù)先備好的內(nèi)核進(jìn)行了特別的優(yōu)化配置,以確??商峁└哔|(zhì)量的代碼。
設(shè)計驗證
工程技術(shù)人員在設(shè)計嵌入式系統(tǒng)時,采用的都是一些分立的、基本沒有進(jìn)行過系統(tǒng)仿真的現(xiàn)成元件。他們寧愿通過構(gòu)建一個試制的原型來調(diào)試系統(tǒng),并交替使用嵌入式軟件調(diào)試工具和測試儀器來進(jìn)行測試,比如邏輯分析儀。然而一旦嵌入式系統(tǒng)元件集成入FPGA之中,要想用實際的儀器探查和監(jiān)測電路就不再可能了。
對FPGA設(shè)計進(jìn)行原型試制已不是什么新概念,目前市面上已有很多種這樣的FPGA開發(fā)線路板件。但是要想借助一個較大型設(shè)計的試制原型,在FPGA開發(fā)線路板上對電路的運(yùn)行狀況進(jìn)行測試是根本不可能的。 傳統(tǒng)的FPGA開發(fā)板件只是用于將FPGA上用途單一的元器件看做是獨立于系統(tǒng)而進(jìn)行設(shè)計和測試的, 而并非用做對嵌入式系統(tǒng)進(jìn)行整體測試的。
要想獲得一個能夠?qū)φ麄€基于系統(tǒng)的微處理器進(jìn)行設(shè)計、調(diào)試的FPGA開發(fā)系統(tǒng),工程技術(shù)人員需要一個真正的執(zhí)行平臺,而不僅僅是一個開發(fā)線路板。Nexar中最重要的組成部分就是一個名為NanoBoard的硅晶元件電路實驗板, 它可讓工程技術(shù)人員在產(chǎn)品開發(fā)期間以交互的方式進(jìn)行真正的物理設(shè)計,并為實現(xiàn)交互式的系統(tǒng)級調(diào)試和驗證提供了便利。 由于與Nexar軟件環(huán)境保持了一致性,工程技術(shù)人員能夠在NanoBoard開發(fā)與試驗環(huán)境下,在目標(biāo)FPGA中集成并運(yùn)行基于處理器的嵌入式系統(tǒng), 實現(xiàn)硬件和嵌入式代碼的交互式編譯、下載和調(diào)試。
這種“burn & learn”的方法可提高設(shè)計的迭代周期,并加快設(shè)計驗證的步伐,同時由于這是軟件實際應(yīng)用于硬件中執(zhí)行工作的,工程技術(shù)人員能夠非常肯定地證實設(shè)計確實可以工作,而不是應(yīng)用仿真的方法看看設(shè)計是否應(yīng)該可以工作。
要想將這種“burn & learn”的方法付諸于工作當(dāng)中,工程技術(shù)人員需要能夠知道到底在FPGA中會出什么問題。Nexar內(nèi)含一組可在原理圖狀態(tài)下放置入設(shè)計的“虛擬儀器”,這使得可以掌握一切。一旦設(shè)計在NanoBoard上進(jìn)行,工程技術(shù)人員就可以通過Nexar環(huán)境與這些虛擬儀器進(jìn)行通信,以達(dá)到測試和監(jiān)測電路性能的目的。
這些虛擬儀器不僅能夠模擬并提供與其實現(xiàn)設(shè)備一樣的功能,而且可以用交互的方法對在FPGA中工作的電路進(jìn)行測試。采用JTAG邊界掃描技術(shù)的這種儀器可提供一個FPGA內(nèi)部實時視圖, 在一步步進(jìn)行電路運(yùn)行時,可對信號狀態(tài)進(jìn)行觀測。與儀器的通信和設(shè)計的調(diào)試工作都可采用Nexus調(diào)試協(xié)議來進(jìn)行。
Nexar還可以借助邊界掃描提供一個反映電路運(yùn)作期間,F(xiàn)PGA各接腳的信號狀態(tài)的瞬態(tài)圖。通過邊界掃描獲得的數(shù)值又可映射到原來的原理圖中,以便顯示調(diào)試過程中任一階段各個信號線的狀況或總線的數(shù)值。
虛擬儀器和部件邊界掃描的配合使用不僅能夠獲得電路運(yùn)行的各項綜合性信息,而且還為在系統(tǒng)級狀態(tài)下實現(xiàn)軟硬件的交互式調(diào)試提供了方便。
一套完整的 LiveDesign平臺
每一位設(shè)計過基于處理器的數(shù)字系統(tǒng)的工程技術(shù)人員,都對整個系統(tǒng)調(diào)試的困難性有非常深刻的印象。工程技術(shù)人員首先必須盡快做好硬件的首次修訂,以便為嵌入式軟件開發(fā)者留出足夠的開發(fā)空間。一旦到了這個階段,設(shè)計工作就變得不好把握了,需要捕捉硬件設(shè)計的各種問題,采用代價更為昂貴的PCB板修訂來解決,亦或是試圖通過軟件來回避。
Nexar不但具備有在FPGA上進(jìn)行全部嵌入式系統(tǒng)設(shè)計所需的各種功能,并且還將這些功能和工具以一種方便工程技術(shù)人員應(yīng)用的方式集合在一起,讓他們將精力集中在高階設(shè)計流程的開發(fā)改進(jìn)上,而不是把時間浪費在低級別的瑣碎事務(wù)上,如:在不同工具間調(diào)用設(shè)計數(shù)據(jù)、在不同設(shè)計環(huán)境中工作、應(yīng)對如何實現(xiàn)設(shè)計工具與正開發(fā)的硬件對接等。
一旦軟硬件設(shè)計進(jìn)入到首次原型試制的階段,設(shè)計的工作便可轉(zhuǎn)入NanoBoard上來進(jìn)行了,而不必制造出一個真實的物理原型來。工程技術(shù)人員可在NanoBoard中獲得設(shè)計所需要的各種虛擬儀器,探查FPGA接腳的狀態(tài),調(diào)試、重新編譯并重新下載更新的代碼-所有的工作都可通過一個Nexar應(yīng)用接口來完成。由于整個設(shè)計迭代的周期只需幾分鐘的時間,因而可以快速地探測出軟硬件的不同執(zhí)行情況。
所有的設(shè)計工作都可通過Nexar的一個接口來控制。工程技術(shù)人員可借助這個接口進(jìn)行軟硬件設(shè)計的編譯,針對FPGA布局和布線的需要進(jìn)行合成,通過FPGA廠商工具實施遠(yuǎn)程布局和布線工藝,而且還可將設(shè)計下載至NanoBoard之中, 所有工作都可在短短的幾分鐘之內(nèi)完成。
Nexar環(huán)境中的軟硬件設(shè)計和調(diào)試流程如圖1所示,其交互式特性讓工程技術(shù)人員獲得了一種從事設(shè)計的全新方法-工程技術(shù)人員可在整個設(shè)計周期中與在實際硬件中運(yùn)行的真正軟件實現(xiàn)交互。Altium將這種方式稱之為LiveDesign,這便是Nexar以及其所構(gòu)建的平臺所具有的優(yōu)勢所在。
結(jié)語
Nexar引入了一種新型的元件級、立即可用的IP交付使用機(jī)制,以方便將系統(tǒng)級設(shè)計中基于原理圖的設(shè)計輸入方式應(yīng)用于FPGA平臺之中。其內(nèi)含的NanoBoard-可重新配置的系統(tǒng)工具平臺-可讓工程設(shè)計人員以一種交互的方式對整個工藝進(jìn)行設(shè)計和驗證, 從而消除了由于采用耗時費力且難度極高的系統(tǒng)級仿真所帶來的種種設(shè)計障礙。
將NanoBoard與虛擬儀器和邊界掃描配合使用,便成為了一套完備的LiveDesign開發(fā)環(huán)境,它不但能夠降低在FPGA中實現(xiàn)整套嵌入式系統(tǒng)運(yùn)作的復(fù)雜性,而且還為應(yīng)用最新一代大容量、低成本FPGA部件實現(xiàn)整套系統(tǒng)的運(yùn)作提供了無限的潛能?!?/P>
評論