早期的嵌入式系統(tǒng)一般是以通用處理器或單片機(jī)為核心,,在外圍電路中加入存儲(chǔ)器,、功率驅(qū)動(dòng)器,、通信接口,、顯示接口,、人機(jī)輸入接口等外圍接口,再加上應(yīng)用軟件,,有些還加上了嵌入式操作系統(tǒng),,從而構(gòu)成完整的系統(tǒng),。
隨著微電子技術(shù)的進(jìn)步,SoC已經(jīng)在很多應(yīng)用中取代了傳統(tǒng)的以單片機(jī)為中心的架構(gòu),,將很多外設(shè)和存儲(chǔ)器集成在一個(gè)芯片中,,使系統(tǒng)的功耗和體積越來(lái)越小,而功能卻越來(lái)越強(qiáng),。
FPGA在嵌入式系統(tǒng)中的應(yīng)用前景
現(xiàn)在的MCU和DSP的功能已經(jīng)非常強(qiáng)了,,但處理能力畢竟還是有限的,廠商在推出一款器件的時(shí)候,,其性能就已經(jīng)固定了,。當(dāng)某一款產(chǎn)品的性能無(wú)法滿(mǎn)足要求時(shí),就必須選用新的處理器,,常常意味著重新進(jìn)行PCB的設(shè)計(jì),,重新進(jìn)行各項(xiàng)軟硬件的驗(yàn)證測(cè)試,,所導(dǎo)致的工程資源的浪費(fèi)是非常驚人的,。
FPGA是通過(guò)邏輯組合來(lái)實(shí)現(xiàn)各種功能的器件,幾乎可以進(jìn)行任何類(lèi)型的處理;對(duì)于常用的數(shù)字信號(hào)處理,,有些FPGA專(zhuān)門(mén)還提供了DSP模塊來(lái)實(shí)現(xiàn)加速;FPGA的并行處理架構(gòu)非常適合圖像處理,、數(shù)字信號(hào)處理等運(yùn)算密集的應(yīng)用;用某款芯片無(wú)法滿(mǎn)足要求時(shí),還可以通過(guò)使用同樣封裝且容量更大的FPGA芯片來(lái)提供更高的處理能力,,這樣就可以保持管腳的兼容性,,從而無(wú)須對(duì)PCB板進(jìn)行修改;FPGA的可編程性使設(shè)計(jì)工程師可以隨時(shí)對(duì)設(shè)計(jì)進(jìn)行修改,即使在產(chǎn)品部署后也能對(duì)設(shè)計(jì)錯(cuò)誤進(jìn)行更正;FPGA不但可以完成MCU和DSP的各種功能,,還可以根據(jù)需要生成新的功能,,或者調(diào)配各項(xiàng)功能之間的資源配比,,使同一個(gè)硬件電路設(shè)計(jì)可以滿(mǎn)足不同的應(yīng)用需求;FPGA還可以利用現(xiàn)成的處理器內(nèi)核,,直接生成軟處理器,并在其上運(yùn)行操作系統(tǒng),。
由于FPGA是通過(guò)邏輯組合來(lái)實(shí)現(xiàn)功能的,,所以其功耗和成本一般高于MCU和DSP。在幾年前,,F(xiàn)PGA給人的印象一直是高高在上的價(jià)格,,除了通信、航天,、軍工,、工業(yè)等少數(shù)行業(yè),F(xiàn)PGA更多地是在扮演原型驗(yàn)證開(kāi)發(fā)的角色,,在消費(fèi)類(lèi)電子等更廣大的市場(chǎng)中遲遲未打開(kāi)局面,。
隨著Xilinx和Altera競(jìng)相采用新的制造工藝,其單位門(mén)電路的價(jià)格下降得比ASIC還要快,,價(jià)格在很多應(yīng)用中已不再是障礙了,。特別是在一些需要特定功能的應(yīng)用中,設(shè)計(jì)師在市場(chǎng)上找不到可以滿(mǎn)足要求的器件,,他們就必須自己開(kāi)發(fā)ASIC芯片,,或者用FPGA進(jìn)行設(shè)計(jì)。但開(kāi)發(fā)ASIC的成本和風(fēng)險(xiǎn)在不斷提高,,甚至超過(guò)了未來(lái)的收益,,用FPGA就成了一個(gè)非常實(shí)際的選擇。
開(kāi)發(fā)流程的演進(jìn)
傳統(tǒng)嵌入式系統(tǒng)的開(kāi)發(fā)流程是一般先做好硬件平臺(tái),,再在硬件平臺(tái)上面應(yīng)用嵌入式系統(tǒng)開(kāi)發(fā)工具進(jìn)行軟件開(kāi)發(fā),。這樣做的結(jié)果是軟件開(kāi)發(fā)人員必須在硬件設(shè)計(jì)完成后才能工作,或者是用各種仿真工具在虛擬的硬件平臺(tái)上進(jìn)行開(kāi)發(fā),。
在用FPGA進(jìn)行開(kāi)發(fā)時(shí),,開(kāi)發(fā)人員首先要設(shè)計(jì)輸入(FPGA廠商專(zhuān)用工具+語(yǔ)言/原理圖+IP CORE),然后編譯仿真(FPGA廠商工具+仿真工具),,再進(jìn)行板級(jí)調(diào)試(測(cè)試板制作+邏輯分析儀),,如果發(fā)現(xiàn)問(wèn)題,再循環(huán)進(jìn)行上面的環(huán)節(jié),。
這種設(shè)計(jì)模式存在諸多問(wèn)題:設(shè)計(jì)可移植性差,,語(yǔ)言的不足及IP CORE的費(fèi)用昂貴,系統(tǒng)仿真的可靠性及速度瓶頸,,需要制作專(zhuān)用測(cè)試板,,外接測(cè)試儀器的局限性,測(cè)試板的重復(fù)制作導(dǎo)致開(kāi)發(fā)周期延長(zhǎng),。
此外,,從原理圖設(shè)計(jì)、邏輯驗(yàn)證和仿真,、電路板設(shè)計(jì),、嵌入式軟件的開(kāi)發(fā)和調(diào)試,到最后的綜合調(diào)試,,在整個(gè)過(guò)程中要用到多個(gè)廠商的不同工具,,不但需要開(kāi)發(fā)人員掌握各個(gè)軟件的使用方法和技巧,僅僅從資本投入上就是一筆不小的開(kāi)支,。而且,,各個(gè)軟件之間還經(jīng)常要互相調(diào)用文件,盡管各個(gè)廠商都宣稱(chēng)自己的軟件可保證兼容性,,但軟件日益復(fù)雜的功能和不斷增長(zhǎng)的代碼讓人難以對(duì)兼容性完全放心,。
有沒(méi)有一個(gè)能完成整個(gè)FPGA嵌入式系統(tǒng)設(shè)計(jì)的一體化開(kāi)發(fā)環(huán)境呢?有,,這就是Altium Designer6.0,該軟件的前身就是被電子工程師所廣為熟知的Protel,,直到現(xiàn)在,,還有大量的工程師在用Protel進(jìn)行PCB板設(shè)計(jì)。Altium Designer由三部分組成:Foundation是電子產(chǎn)品設(shè)計(jì)前端,包含了原理圖輸入、電路仿真和驗(yàn)證,、PCB及CAM文檔資料瀏覽功能;Board Implementation可實(shí)現(xiàn)傳統(tǒng)板級(jí)電路設(shè)計(jì)、驗(yàn)證及CAM文檔編輯功能;Embedded Intelligence Implementation是基于大規(guī)??删幊踢壿嬈骷?FPGA/CPLD)的數(shù)字電路設(shè)計(jì)、片上可編程嵌入式系統(tǒng)軟件開(kāi)發(fā)和數(shù)字電路實(shí)時(shí)驗(yàn)證功能,。
Altium Designer拓寬了板級(jí)設(shè)計(jì)的傳統(tǒng)界限,,將FPGA與PCB設(shè)計(jì)集成在一起,同時(shí)支持原理圖輸入和HDL硬件描述輸入模式;同時(shí)支持基于VHDL的設(shè)計(jì)仿真,,混合信號(hào)電路仿真,、布局前/后信號(hào)完整性分析。PCB版圖設(shè)計(jì)中的布局布線(xiàn)采用完全規(guī)則驅(qū)動(dòng)模式,,并且在PCB布線(xiàn)中采用了無(wú)網(wǎng)格的Situs拓?fù)溥壿嬜詣?dòng)布線(xiàn)功能;同時(shí),,將完整的CAM輸出功能的編輯結(jié)合在一起,。
Altium Designer支持PCB與FPGA引腳的雙向同步,,提供完善的混合信號(hào)仿真、布線(xiàn)前后的信號(hào)完整性分析功能,,提供了對(duì)高密度封裝(如BGA)的交互布線(xiàn)功能,。
在原理圖部分,Altium Designer新增的特性包括:文件管理功能,,多層次,、多通道的原理設(shè)計(jì),可自動(dòng)標(biāo)注元器件,,F(xiàn)PGA引腳配置導(dǎo)入,,原理圖環(huán)境中的PCB規(guī)則定義,豐富的集成庫(kù),,改善的編輯,、查詢(xún)和可視化。
FPGA引腳配置導(dǎo)入功能允許管腳約束文件,,管腳定義可以直接來(lái)源于FPGA器件商的引腳約束文件,,同時(shí)提供對(duì)引腳名稱(chēng)和電氣類(lèi)型定義的支持;不再?gòu)?qiáng)調(diào)必須在Altium Designer環(huán)境下完成包括FPGA內(nèi)部邏輯電路設(shè)計(jì)在內(nèi)的一體化系統(tǒng)設(shè)計(jì)。
在PCB部分提供了完整的由規(guī)則驅(qū)動(dòng)的PCB設(shè)計(jì)環(huán)境;支持高速設(shè)計(jì),,具有成熟的布線(xiàn)后信號(hào)完整性分析工具;支持差分對(duì)布線(xiàn);支持BGA封裝器件的逃溢式扇出功能;支持漢字輸入;支持任意可配置引腳定義器件的網(wǎng)絡(luò)優(yōu)化功能;Orcad,、PADS,、AutoCAD和其他軟件的文件導(dǎo)入和導(dǎo)出功能;完整的ODB++/Gerber CAM-系統(tǒng)使得用戶(hù)可以重新設(shè)計(jì)原有的設(shè)計(jì),彌補(bǔ)設(shè)計(jì)和制造之間的差異,。PCB部分還支持布局優(yōu)化,、布線(xiàn)功能優(yōu)化、PCB板的3D顯示,、FPGA的全面協(xié)同,、CAM輸出。
Altium Desigenr內(nèi)嵌的仿真軟件兼容XSPICE/PSPICE電路仿真模型,,它能將仿真結(jié)果以波形的方式顯示,,可進(jìn)行混合電路仿真和仿真波形顯示,支持多種仿真模型,。在信號(hào)完整性分析部分,,提供了消除反射和串?dāng)_分析功能,
在Altium Designer中,,用戶(hù)可以用圖形化的方式來(lái)完成整個(gè)設(shè)計(jì)流程,,系統(tǒng)自動(dòng)調(diào)用FPGA廠商提供的工具進(jìn)行布局布線(xiàn),設(shè)計(jì)環(huán)境中的集中過(guò)程控制和監(jiān)測(cè)功能使得信息能夠得到及時(shí)反饋從而實(shí)現(xiàn)交互式設(shè)計(jì)與調(diào)試,。
使用“虛擬儀器”元件,,工程師可以在原理圖級(jí)將“虛擬儀器”連入設(shè)計(jì);FPGA編程后,可以從外部控制;可以實(shí)時(shí)觀察FPGA發(fā)生的情況;調(diào)試時(shí)使用JTAG邊界掃描檢驗(yàn)FPGA的信號(hào);用Nexus協(xié)議和虛擬儀器進(jìn)行通信并對(duì)設(shè)計(jì)進(jìn)行調(diào)試,。
Altium Designer還提供了大量通用的預(yù)驗(yàn)證的IP Core,,支持通用IP Core 的設(shè)計(jì),并且支持第三方提供的IP Core ,。通過(guò)與Nanoboard NB1系統(tǒng)驗(yàn)證板的結(jié)合,,可進(jìn)行實(shí)時(shí)設(shè)計(jì),從而實(shí)現(xiàn)獨(dú)立于目標(biāo)器件的FPGA設(shè)計(jì),。
Altium公司的這種設(shè)計(jì)方法,,將硬件、軟件和可編程硬件等領(lǐng)域均被統(tǒng)一在單一的開(kāi)發(fā)系統(tǒng)內(nèi),,可以完全控制和同步從概念構(gòu)想到完成實(shí)施的整個(gè)設(shè)計(jì)流程,。
這種一體化開(kāi)發(fā)流程的缺點(diǎn)是,盡管非常方便易用,,但軟件的各個(gè)部分在性能和功能上無(wú)法全部做到領(lǐng)先,,在驗(yàn)證、功能設(shè)計(jì),、PCB設(shè)計(jì)等方面要弱于一些專(zhuān)業(yè)性的或FPGA廠商自己的軟件,,在需要針對(duì)器件進(jìn)行非常細(xì)致的優(yōu)化以取得最佳性能時(shí),Altium Designer就未必是最佳選擇了。定位不同的硬件開(kāi)發(fā)板同軟件定位不同一樣,,目前眾多的硬件開(kāi)發(fā)電路板的市場(chǎng)定位也是不同的,。主流的FPGA廠商均推出了自己的開(kāi)發(fā)板,為了市場(chǎng)推廣和銷(xiāo)售的需要,,他們也和一些大的經(jīng)銷(xiāo)商合作推出開(kāi)發(fā)板,,更容易利用經(jīng)銷(xiāo)商在價(jià)格和渠道上的優(yōu)勢(shì)。
Xilinx公司的主要經(jīng)銷(xiāo)商安富利公司開(kāi)發(fā)了很多FPGA開(kāi)發(fā)板,,在功能上更加豐富,,在定價(jià)和促銷(xiāo)上也更靈活。如,,安富利推出的Virtex-4 FX PCI Express開(kāi)發(fā)工具套件和Virtex-5 LX開(kāi)發(fā)工具套件,。
圖 Virtex-4 FX PCI Express開(kāi)發(fā)套件
找到精確滿(mǎn)足開(kāi)發(fā)人員需求的FPGA開(kāi)發(fā)基板是非常困難的,,在基板上添加子板是一個(gè)不錯(cuò)的方法,。安富利推出的EXP擴(kuò)展標(biāo)準(zhǔn)使設(shè)計(jì)人員在原型設(shè)計(jì)時(shí)候可以通過(guò)子卡添加多種功能,滿(mǎn)足FPGA開(kāi)發(fā)板的不同要求,,免費(fèi)提供給設(shè)計(jì)工程師用于定制基本板和擴(kuò)展模塊,。使用EXP模塊的好處是成本低、靈活性高,、易于制作原型,。在結(jié)構(gòu)上,半長(zhǎng)EXP模塊可提供84個(gè)用戶(hù)I/O,、32個(gè)單端信號(hào),、22個(gè)差分信號(hào)、單端時(shí)鐘輸入和輸出,、差分時(shí)鐘輸入和輸出,,單端和差分信號(hào)的最高頻率分別是200MHz和700MHz,。
安富利提供的EXP模塊包括:視頻預(yù)處理模塊,、高速ADC模塊、高速DAC模塊,、ADI公司的EXP適配器模塊,。有全長(zhǎng)(126mm×80mm)和半長(zhǎng)(108mm×80mm)兩種尺寸,采用Samtec公司高性能的QTE/QSE連接器,。
視頻預(yù)處理模塊的輸入兼容DVI,、VGA、S-Video,,輸出支持DVI,、VGA、LCD,具有圖像傳感器,、音頻輸入和輸出,。高速ADC EXP模塊采用TI的12位、50MS/s ADC,,帶有14位的LVDS接口,,用兩塊卡可以支持雙通道。高速DAC模塊采用TI的雙通道,、16位分辨率,、采樣率為1GS/s、帶16位LVDS接口的DAC,。還有支持ADI公司器件的EXP適配器模塊,,可以很方便地連接到90多種ADC*估板上,支持LVDS和并行接口*估板,,可連到Virtex-4,、Virtex-5和Spartan-DSP基板上。
Altium公司的NanoBoard開(kāi)發(fā)板支持的范圍更廣,,包括Xilinx,、Altera、Actel等公司的眾多FPGA型號(hào),,與FPGA組成了可重新配置的系統(tǒng)設(shè)計(jì)驗(yàn)證平臺(tái);NanoBoard通過(guò)打印電纜接口與用戶(hù)PC進(jìn)行通信,,支持硬件設(shè)計(jì)的下載和實(shí)現(xiàn)Live設(shè)計(jì)驗(yàn)證功能。NanoBoard還支持可插拔的FPGA子板,,可以通過(guò)更換子板來(lái)調(diào)試不同的FPGA,。
圖 NanoBoard-NB2開(kāi)發(fā)板
NanoBoard的板上資源包括:CAN總線(xiàn)接口、串行口,、VGA接口,、顯示鏈輸入輸出、外部存儲(chǔ)器,、I2C接口,、連接用戶(hù)開(kāi)發(fā)板接口、連接FPGA子板的插座,、系統(tǒng)時(shí)鐘,、JTAG接口、PS2鍵盤(pán)和鼠標(biāo)鼠標(biāo)接口,、多用戶(hù)I /O接口,。用戶(hù)在一塊板子上就可以完成整個(gè)系統(tǒng)的開(kāi)發(fā)和驗(yàn)證,通過(guò)更換子卡,,可以試用各廠商的不同器件,,找到性?xún)r(jià)比最佳的器件,,而不必重復(fù)購(gòu)買(mǎi)開(kāi)發(fā)板。