連貫統(tǒng)一的嵌入式設(shè)計(jì)方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
連貫統(tǒng)一的嵌入式設(shè)計(jì)方法
沒(méi)有哪一類設(shè)計(jì)工程師比軟件開(kāi)發(fā)人員更熟悉高層次的抽象設(shè)計(jì)了。無(wú)論是開(kāi)發(fā)PC軟件、用于電子設(shè)備的嵌入式應(yīng)用、Web服務(wù)還是開(kāi)發(fā)數(shù)據(jù)庫(kù)系統(tǒng),都可使用高層次開(kāi)發(fā)系統(tǒng)與相關(guān)語(yǔ)言來(lái)避免與本地代碼打交道的麻煩。
軟件設(shè)計(jì)經(jīng)歷了漫長(zhǎng)的編程語(yǔ)言和系統(tǒng)發(fā)展道路,歸根結(jié)底都是為了使開(kāi)發(fā)人員避免與匯編語(yǔ)言的糾纏。使用現(xiàn)在常見(jiàn)的編程接口、代碼語(yǔ)法和編譯器的實(shí)現(xiàn)方式,軟件開(kāi)發(fā)通過(guò)廣泛的編程語(yǔ)言(從Pascal直到面向?qū)ο蟮恼Z(yǔ)言和C++)實(shí)現(xiàn)了高層次抽象。作為PC應(yīng)用軟件的“小弟”,用于電子設(shè)備的嵌入式軟件的開(kāi)發(fā)也大體運(yùn)用同樣的原則和系統(tǒng)。
實(shí)際上,用于開(kāi)發(fā)電子設(shè)計(jì)中的硬件和軟件的抽象系統(tǒng)如此常見(jiàn),以致它們被認(rèn)為是正常而非抽象的工作方式。軟件工程師由此獲得的明顯好處是降低了設(shè)計(jì)復(fù)雜性并提高了開(kāi)發(fā)速度。用于嵌入式固件的C語(yǔ)言的使用,使與寄存器堆?;虼罅糠庋b的順序代碼打交道的工作成為了歷史。
雖然這些概念在電子設(shè)計(jì)中是普遍的,但它們只是在臨時(shí)(ad-hoc)的基礎(chǔ)上存在,而且通常是在具體設(shè)計(jì)領(lǐng)域之內(nèi)。隨著電子產(chǎn)品設(shè)計(jì)復(fù)雜性的增加、開(kāi)發(fā)時(shí)間的縮短和嵌入式開(kāi)發(fā)方式的流行,軟件開(kāi)發(fā)人員需要能夠進(jìn)入使用高層次設(shè)計(jì)系統(tǒng)的其他領(lǐng)域。
抽象的硬件描述語(yǔ)言(HDL)
電子產(chǎn)品設(shè)計(jì)流程帶來(lái)的一個(gè)新挑戰(zhàn)是隨著電子產(chǎn)品開(kāi)發(fā)流程中可編程硬件設(shè)備的引入而出現(xiàn)的。在這種情況下,軟件被用來(lái)定義硬件或者作為膠合邏輯的一大部分,但更重要的是作為整個(gè)SoC的設(shè)計(jì)。
在高層次設(shè)計(jì)方面,可編程邏輯還處于其設(shè)計(jì)抽象演變的早期階段。硬件描述語(yǔ)言用于描述在寄存器層次的設(shè)計(jì),寄存器在最后合成后達(dá)到門電路層次,用于實(shí)現(xiàn)選定的設(shè)備傳統(tǒng)上是采用ASIC,現(xiàn)在更常見(jiàn)的是FPGA。但是,HDL晦澀難懂的性質(zhì)使其在復(fù)雜性上常常堪比于匯編語(yǔ)言,因此對(duì)于非HDL專家的人而言,開(kāi)發(fā)嵌入式硬件的任務(wù)令人望而生畏。
因此,各種設(shè)計(jì)抽象系統(tǒng)相繼被開(kāi)發(fā)出來(lái)以幫助緩解這一問(wèn)題。這些系統(tǒng)在方法 論 上存在很大區(qū)別,但通常都是基于示意圖的系統(tǒng)、圖形式流程圖方案或者C語(yǔ)言的變體和擴(kuò)展形式。它們?cè)试S更多開(kāi)發(fā)者(如軟件工程師)通過(guò)運(yùn)用及提高其現(xiàn)有能力來(lái)創(chuàng)造嵌入式硬件。像其他設(shè)計(jì)領(lǐng)域(硬件和應(yīng)用軟件)一樣,實(shí)現(xiàn)高層次設(shè)計(jì)系統(tǒng)以降低復(fù)雜性已經(jīng)成為公認(rèn)的方式,并應(yīng)用于FPGA開(kāi)發(fā)領(lǐng)域。
以基于C語(yǔ)言變體的高層次嵌入式設(shè)計(jì)系統(tǒng)為例,這種系統(tǒng)使具有硬件設(shè)計(jì)知識(shí)的軟件工程師有可能使用熟悉的語(yǔ)言和方法來(lái)設(shè)計(jì)嵌入式硬件。該過(guò)程傾向于反映軟件的順序性質(zhì),但它并非硬件的平行概念,且大多用于設(shè)計(jì)的各個(gè)部分或者用作轉(zhuǎn)化的軟件算法,采用SoC設(shè)計(jì)方案則是另一回事。
無(wú)論軟件工程師使用哪一種高層次系統(tǒng)(流程圖、示意圖或C語(yǔ)言轉(zhuǎn)化)來(lái)設(shè)計(jì)嵌入式硬件,他們都有機(jī)會(huì)創(chuàng)造相對(duì)復(fù)雜的大型“軟”硬件系統(tǒng)來(lái)支持其自己的軟件例程和功能,甚至可能在最后創(chuàng)造出完整的產(chǎn)品設(shè)計(jì)。
特別要注意的是,用于提高可編程邏輯設(shè)計(jì)的抽象層次的常用系統(tǒng)采用了各不相同、互不相關(guān)的方法 論,這與整體SoC設(shè)計(jì)過(guò)程相互關(guān)聯(lián)的性質(zhì)并不一致。由于可編程硬件的出現(xiàn),各設(shè)計(jì)領(lǐng)域之間的相互依存性被放大,可編程硬件通常是應(yīng)用軟件(可能是處理器、內(nèi)存等)的“宿主”,而它本身的“宿主”則是設(shè)計(jì)的物理硬件。FPGA結(jié)構(gòu)是硬件和軟件“三明治”的夾心層。
連貫統(tǒng)一的方案
為將設(shè)計(jì)抽象概念提高到新的水平,我們需要一個(gè)產(chǎn)品開(kāi)發(fā)系統(tǒng),可以將各個(gè)設(shè)計(jì)領(lǐng)域整合為使用單一設(shè)計(jì)數(shù)據(jù)模型的統(tǒng)一應(yīng)用系統(tǒng),這樣嵌入式軟件、可編程硬件和物理硬件可共用一個(gè)跨越所有設(shè)計(jì)領(lǐng)域的設(shè)計(jì)界面和設(shè)計(jì)數(shù)據(jù)模型,使產(chǎn)品開(kāi)發(fā)成為統(tǒng)一、連貫的任務(wù)。
然后,嵌入式硬件設(shè)計(jì)即可成為設(shè)計(jì)流程的一部分,進(jìn)入硬件與應(yīng)用軟件領(lǐng)域。任何設(shè)計(jì)領(lǐng)域的變動(dòng)都將引起單一數(shù)據(jù)集合的改動(dòng),并可立即用于其他領(lǐng)域,且任何高層次設(shè)計(jì)流程都可被設(shè)計(jì)系統(tǒng)的其余部分自然而然地“理解”。嵌入式硬件開(kāi)發(fā)領(lǐng)域的設(shè)計(jì)抽象已經(jīng)從位于常規(guī)過(guò)程頂端的一個(gè)簡(jiǎn)單、孤立的層面變?yōu)橐粋€(gè)交互式地滲透到整個(gè)設(shè)計(jì)系統(tǒng)的層面。
使用這樣的系統(tǒng),諸如在某一設(shè)計(jì)中實(shí)現(xiàn)一個(gè)USB 接口的典型任務(wù)即可得到極大簡(jiǎn)化。在這種情況下,USB 接口可能擁有需要被整合進(jìn)所有領(lǐng)域的要素,包括物理空間的連接器和接口硬件、可編程硬件領(lǐng)域的總線接口以及應(yīng)用軟件領(lǐng)域的驅(qū)動(dòng)和協(xié)議層。
包括數(shù)據(jù)庫(kù)構(gòu)成部分在內(nèi)的單一設(shè)計(jì)數(shù)據(jù)池?fù)碛幸粋€(gè)包含所有要素的單一USB區(qū)塊模型。你可以使用基于圖形的高層次捕獲系統(tǒng)簡(jiǎn)單地將該模型整合進(jìn)設(shè)計(jì),在系統(tǒng)中,該模型出現(xiàn)于所有設(shè)計(jì)領(lǐng)域,無(wú)論在哪個(gè)設(shè)計(jì)抽象層次。IP核心或所保存的設(shè)計(jì)可以同樣方式得到使用(和重復(fù)使用)。
使用統(tǒng)一開(kāi)發(fā)環(huán)境中單一設(shè)計(jì)數(shù)據(jù)模型的優(yōu)點(diǎn)貫穿到設(shè)計(jì)的方方面面。高層次設(shè)計(jì)可能性滲透到所有設(shè)計(jì)領(lǐng)域,并支持以軟件為中心的實(shí)用電子系統(tǒng)開(kāi)發(fā)方法。當(dāng)在單一連貫的設(shè)計(jì)環(huán)境中實(shí)現(xiàn)高層次設(shè)計(jì)后,即可將FPGA用作供軟件工程師使用的硬件開(kāi)發(fā)平臺(tái),而非用于存放由HDL專家創(chuàng)造的大量邏輯的硬件容器。
在實(shí)際硬件上的“軟”設(shè)計(jì)
接下來(lái)就是將該系統(tǒng)與低成本FPGA硬件開(kāi)發(fā)平臺(tái)(包括支持硬件、通用I/O系統(tǒng)并具有可以隨意更換的插入式外圍板卡)相結(jié)合。
該硬件平臺(tái)和高層次設(shè)計(jì)軟件之間的智能通信允許開(kāi)發(fā)板卡的所有部分進(jìn)行直接互動(dòng),而不只是提供用于FGPA編程的基本功能。你可以動(dòng)態(tài)更換外圍設(shè)備,而軟件則按照要求自動(dòng)重新配置接口層和配置文件。利用這一設(shè)置,包括物理硬件在內(nèi)的完整開(kāi)發(fā)系統(tǒng)就表現(xiàn)為一個(gè)連貫統(tǒng)一的設(shè)計(jì)環(huán)境。
對(duì)于所有工程師特別是軟件開(kāi)發(fā)人員來(lái)說(shuō),可以使用高層次系統(tǒng)在實(shí)際硬件的基礎(chǔ)上實(shí)時(shí)開(kāi)發(fā)和研究設(shè)計(jì)方案。在一些情況(例如簡(jiǎn)單產(chǎn)品生產(chǎn)過(guò)程)中,該硬件很可能成為成品,這使軟件工程師能迅速開(kāi)發(fā)出完整的產(chǎn)品,或者至少開(kāi)發(fā)出概念證明設(shè)備。此外,你用來(lái)開(kāi)發(fā)和測(cè)試產(chǎn)品的設(shè)計(jì)軟件和硬件開(kāi)發(fā)平臺(tái)可直接支持使用現(xiàn)成硬件。在該環(huán)境中開(kāi)展的設(shè)計(jì)可以直接而平滑地轉(zhuǎn)變?yōu)榛诩嫒軴TS硬件的成品。
采用這種方法,設(shè)計(jì)周期中的關(guān)鍵設(shè)計(jì)決定可以大大推遲,并且可在任何時(shí)候?qū)υO(shè)計(jì)的規(guī)定軟要素進(jìn)行更新,甚至在產(chǎn)品已開(kāi)始實(shí)際使用之后。設(shè)計(jì)過(guò)程的早期階段不再需要立即做出硬件決定,這使軟件設(shè)計(jì)師能夠?qū)⒕杏谠O(shè)計(jì)中定義功能的嵌入式硬件和軟件。硬件選擇可以留到最后以滿足設(shè)計(jì)的“軟”要素的需要,而非采用相反的方式。
這種單一硬件和軟件設(shè)計(jì)環(huán)境提供了在更短時(shí)間內(nèi)和以更低風(fēng)險(xiǎn)來(lái)開(kāi)發(fā)、調(diào)試、原型化和部署創(chuàng)新設(shè)計(jì)所需的基礎(chǔ)架構(gòu)。當(dāng)通過(guò)與所有設(shè)計(jì)領(lǐng)域相連接的高層次FPGA設(shè)計(jì)界面進(jìn)行訪問(wèn)時(shí),軟件開(kāi)發(fā)人員可利用該系統(tǒng)與物理開(kāi)發(fā)硬件的內(nèi)在聯(lián)系來(lái)創(chuàng)造能夠提供獨(dú)特和高價(jià)值用戶體驗(yàn)的創(chuàng)新產(chǎn)品設(shè)計(jì)