<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 連貫統(tǒng)一的嵌入式設計方法

          連貫統(tǒng)一的嵌入式設計方法

          作者: 時間:2010-12-12 來源:網絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/151237.htm

          沒有哪一類工程師比軟件開發(fā)人員更熟悉高層次的抽象了。無論是開發(fā)PC軟件、用于電子設備的應用、Web服務還是開發(fā)數(shù)據庫系統(tǒng),都可使用高層次開發(fā)系統(tǒng)與相關語言來避免與本地代碼打交道的麻煩。

          軟件設計經歷了漫長的編程語言和系統(tǒng)發(fā)展道路,歸根結底都是為了使開發(fā)人員避免與匯編語言的糾纏。使用現(xiàn)在常見的編程接口、代碼語法和編譯器的實現(xiàn)方式,軟件開發(fā)通過廣泛的編程語言(從Pascal直到面向對象的語言和C++)實現(xiàn)了高層次抽象。作為PC應用軟件的“小弟”,用于電子設備的軟件的開發(fā)也大體運用同樣的原則和系統(tǒng)。

          實際上,用于開發(fā)電子設計中的硬件和軟件的抽象系統(tǒng)如此常見,以致它們被認為是正常而非抽象的工作方式。軟件工程師由此獲得的明顯好處是降低了設計復雜性并提高了開發(fā)速度。用于嵌入式固件的C語言的使用,使與寄存器堆棧或大量封裝的順序代碼打交道的工作成為了歷史。

          雖然這些概念在電子設計中是普遍的,但它們只是在臨時(ad-hoc)的基礎上存在,而且通常是在具體設計領域之內。隨著電子產品設計復雜性的增加、開發(fā)時間的縮短和嵌入式開發(fā)方式的流行,軟件開發(fā)人員需要能夠進入使用高層次設計系統(tǒng)的其他領域。

          抽象的硬件描述語言(HDL)

          電子產品設計流程帶來的一個新挑戰(zhàn)是隨著電子產品開發(fā)流程中可編程硬件設備的引入而出現(xiàn)的。在這種情況下,軟件被用來定義硬件或者作為膠合邏輯的一大部分,但更重要的是作為整個SoC的設計。

          在高層次設計方面,可編程邏輯還處于其設計抽象演變的早期階段。硬件描述語言用于描述在寄存器層次的設計,寄存器在最后合成后達到門電路層次,用于實現(xiàn)選定的設備傳統(tǒng)上是采用ASIC,現(xiàn)在更常見的是FPGA。但是,HDL晦澀難懂的性質使其在復雜性上常常堪比于匯編語言,因此對于非HDL專家的人而言,開發(fā)嵌入式硬件的任務令人望而生畏。

          因此,各種設計抽象系統(tǒng)相繼被開發(fā)出來以幫助緩解這一問題。這些系統(tǒng)在 論 上存在很大區(qū)別,但通常都是基于示意圖的系統(tǒng)、圖形式流程圖方案或者C語言的變體和擴展形式。它們允許更多開發(fā)者(如軟件工程師)通過運用及提高其現(xiàn)有能力來創(chuàng)造嵌入式硬件。像其他設計領域(硬件和應用軟件)一樣,實現(xiàn)高層次設計系統(tǒng)以降低復雜性已經成為公認的方式,并應用于FPGA開發(fā)領域。

          以基于C語言變體的高層次嵌入式設計系統(tǒng)為例,這種系統(tǒng)使具有硬件設計知識的軟件工程師有可能使用熟悉的語言和來設計嵌入式硬件。該過程傾向于反映軟件的順序性質,但它并非硬件的平行概念,且大多用于設計的各個部分或者用作轉化的軟件算法,采用SoC設計方案則是另一回事。

          無論軟件工程師使用哪一種高層次系統(tǒng)(流程圖、示意圖或C語言轉化)來設計嵌入式硬件,他們都有機會創(chuàng)造相對復雜的大型“軟”硬件系統(tǒng)來支持其自己的軟件例程和功能,甚至可能在最后創(chuàng)造出完整的產品設計。

          特別要注意的是,用于提高可編程邏輯設計的抽象層次的常用系統(tǒng)采用了各不相同、互不相關的方法 論,這與整體SoC設計過程相互關聯(lián)的性質并不一致。由于可編程硬件的出現(xiàn),各設計領域之間的相互依存性被放大,可編程硬件通常是應用軟件(可能是處理器、內存等)的“宿主”,而它本身的“宿主”則是設計的物理硬件。FPGA結構是硬件和軟件“三明治”的夾心層。

          的方案

          為將設計抽象概念提高到新的水平,我們需要一個產品開發(fā)系統(tǒng),可以將各個設計領域整合為使用單一設計數(shù)據模型的應用系統(tǒng),這樣嵌入式軟件、可編程硬件和物理硬件可共用一個跨越所有設計領域的設計界面和設計數(shù)據模型,使產品開發(fā)成為統(tǒng)一、的任務。

          然后,嵌入式硬件設計即可成為設計流程的一部分,進入硬件與應用軟件領域。任何設計領域的變動都將引起單一數(shù)據集合的改動,并可立即用于其他領域,且任何高層次設計流程都可被設計系統(tǒng)的其余部分自然而然地“理解”。嵌入式硬件開發(fā)領域的設計抽象已經從位于常規(guī)過程頂端的一個簡單、孤立的層面變?yōu)橐粋€交互式地滲透到整個設計系統(tǒng)的層面。

          使用這樣的系統(tǒng),諸如在某一設計中實現(xiàn)一個USB 接口的典型任務即可得到極大簡化。在這種情況下,USB 接口可能擁有需要被整合進所有領域的要素,包括物理空間的連接器和接口硬件、可編程硬件領域的總線接口以及應用軟件領域的驅動和協(xié)議層。

          包括數(shù)據庫構成部分在內的單一設計數(shù)據池擁有一個包含所有要素的單一USB區(qū)塊模型。你可以使用基于圖形的高層次捕獲系統(tǒng)簡單地將該模型整合進設計,在系統(tǒng)中,該模型出現(xiàn)于所有設計領域,無論在哪個設計抽象層次。IP核心或所保存的設計可以同樣方式得到使用(和重復使用)。

          使用統(tǒng)一開發(fā)環(huán)境中單一設計數(shù)據模型的優(yōu)點貫穿到設計的方方面面。高層次設計可能性滲透到所有設計領域,并支持以軟件為中心的實用電子系統(tǒng)開發(fā)方法。當在單一連貫的設計環(huán)境中實現(xiàn)高層次設計后,即可將FPGA用作供軟件工程師使用的硬件開發(fā)平臺,而非用于存放由HDL專家創(chuàng)造的大量邏輯的硬件容器。

          在實際硬件上的“軟”設計

          接下來就是將該系統(tǒng)與低成本FPGA硬件開發(fā)平臺(包括支持硬件、通用I/O系統(tǒng)并具有可以隨意更換的插入式外圍板卡)相結合。

          該硬件平臺和高層次設計軟件之間的智能通信允許開發(fā)板卡的所有部分進行直接互動,而不只是提供用于FGPA編程的基本功能。你可以動態(tài)更換外圍設備,而軟件則按照要求自動重新配置接口層和配置文件。利用這一設置,包括物理硬件在內的完整開發(fā)系統(tǒng)就表現(xiàn)為一個連貫統(tǒng)一的設計環(huán)境。

          對于所有工程師特別是軟件開發(fā)人員來說,可以使用高層次系統(tǒng)在實際硬件的基礎上實時開發(fā)和研究設計方案。在一些情況(例如簡單產品生產過程)中,該硬件很可能成為成品,這使軟件工程師能迅速開發(fā)出完整的產品,或者至少開發(fā)出概念證明設備。此外,你用來開發(fā)和測試產品的設計軟件和硬件開發(fā)平臺可直接支持使用現(xiàn)成硬件。在該環(huán)境中開展的設計可以直接而平滑地轉變?yōu)榛诩嫒軴TS硬件的成品。

          采用這種方法,設計周期中的關鍵設計決定可以大大推遲,并且可在任何時候對設計的規(guī)定軟要素進行更新,甚至在產品已開始實際使用之后。設計過程的早期階段不再需要立即做出硬件決定,這使軟件設計師能夠將精力集中于設計中定義功能的嵌入式硬件和軟件。硬件選擇可以留到最后以滿足設計的“軟”要素的需要,而非采用相反的方式。

          這種單一硬件和軟件設計環(huán)境提供了在更短時間內和以更低風險來開發(fā)、調試、原型化和部署創(chuàng)新設計所需的基礎架構。當通過與所有設計領域相連接的高層次FPGA設計界面進行訪問時,軟件開發(fā)人員可利用該系統(tǒng)與物理開發(fā)硬件的內在聯(lián)系來創(chuàng)造能夠提供獨特和高價值用戶體驗的創(chuàng)新產品設計

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();