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