<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > 基于C的設計方式簡(jiǎn)化FPGA/協(xié)處理器混合平臺軟硬件協(xié)同設計

基于C的設計方式簡(jiǎn)化FPGA/協(xié)處理器混合平臺軟硬件協(xié)同設計

——
作者:David Pellerin,Impulse Accelerated Technologies公司C 時(shí)間:2005-09-04 來(lái)源:EDN電子設計技術(shù) 收藏
基于C的設計方式簡(jiǎn)化混合平臺軟硬件協(xié)同設計
 
在最近幾年中日益流行在高性能嵌入式應用中使用現場(chǎng)可編程門(mén)陣列(FPGA)。FPGA已經(jīng)被證明有能力處理各種不同的任務(wù),從相對簡(jiǎn)單的控制功能到更加復雜的算法操作。雖然FPGA在某些功能上比設計專(zhuān)用ASIC硬件具有時(shí)間和成本上的優(yōu)勢,但在面向軟件應用中FPGA比傳統處理器和DSP的優(yōu)勢并沒(méi)有體現出來(lái)。這很大程度上是由于過(guò)去割裂了硬件和軟件開(kāi)發(fā)工具和方法之間的關(guān)系。
  然而最近FPGA在面向軟件設計工具方面的發(fā)展,及器件容量的持續增加為軟件開(kāi)發(fā)者創(chuàng )造了新的環(huán)境。在這種環(huán)境下,FPGA可視為軟件編譯器的一個(gè)可能的目標(連同傳統和非傳統處理器架構)?,F在,工具能夠幫助軟件工程師利用FPGA平臺,同時(shí)在結合了傳統處理器(或處理器核)和FPGA的單一目標平臺上,幫助這些開(kāi)發(fā)者利用其所具有的高度算法并行性。
  基于FPGA的計算平臺,尤其是那些具有嵌入式“軟”處理器的平臺,有能力實(shí)現非常高性能的應用,而沒(méi)有建立專(zhuān)用定點(diǎn)功能硬件的前期風(fēng)險。通過(guò)使用最新一代的硬件/軟件協(xié)同設計工具,有可能使用多種面向軟件(圖形和基于語(yǔ)言)設計方式作為FPGA設計過(guò)程的一部分。
  使用基于FPGA的參考平臺
  FPGA中使用嵌入式處理器的優(yōu)勢之一是能夠在單個(gè)可編程器件上建立硬件/軟件開(kāi)發(fā)對象——等效硬件參考平臺,這常常被忽視。即使終端產(chǎn)品不包括嵌入式處理器(將替換外部處理器或其他硬件子系統的接口),快速下載和測試新的軟件/硬件配置(試驗可改變軟件/硬件劃分方案)的能力也能大大地提高設計生產(chǎn)率。通過(guò)使用嵌入式處理器作為測試生成器,單獨的硬件部件(或硬件編譯的軟件過(guò)程)也可以快速地驗證功能。
  這種快速原型平臺的典型例子是Altera公司提供的Nios開(kāi)發(fā)包。Cyclone或Stratix FPGA中都包括這個(gè)工具包,除了高性能的Nios 32位軟核處理器核之外還包括多種硬件和軟件外設接口。在設計過(guò)程中可以選擇這種核,使用Altera SOPC Builder工具配置并下載到相應的FPGA中。板上本身的連接容許直接和各種不同的外部部件連接,從串口(RS232和USB)到Flash存儲器和網(wǎng)絡(luò )接口。
  在開(kāi)發(fā)過(guò)程中使用這種板并結合Altera工具,容許嵌入式系統設計者用應用原型所需的部件(包括嵌入式處理器)組成目標平臺。然后,軟件開(kāi)發(fā)者能夠關(guān)注應用本身,分析和試驗不同的硬件/軟件劃分方案。
  權衡硬件和軟件資源
  在一些高性能嵌入式應用中,從產(chǎn)品構建費用和開(kāi)發(fā)成本考慮最佳的資源使用方案是混合處理器方案。在這種方案中應用非關(guān)鍵性能的部件位于主處理器(它們可能是或不是嵌入式處理器核),而大計算量的部件是一個(gè)或多個(gè)DSP芯片、其它標準硬件或專(zhuān)用ASIC或FPGA硬件。這種的解決方案通常需要硬件設計方式和工具的知識,但是在性能和成本方面上具有最佳的收益。
  對于系統中的每個(gè)處理單元(即標準處理器、DSP、FPGA或ASIC),需要不同水平的專(zhuān)用技能。例如,雖然DSP是軟件可編程的,在工具上的初期投入小,但他們需要在DSP專(zhuān)門(mén)的設計技術(shù)方面有一些專(zhuān)門(mén)經(jīng)驗,通常需要匯編級的編程技能。在另一方面,FPGA在設計和工具經(jīng)驗上需要相對高的投入,在硬件設計語(yǔ)言作為主要的設計輸入方式時(shí)尤其如此。
  然而FPGA和專(zhuān)用ASIC設計所需的經(jīng)驗和工具投入相比,顯然FPGA在開(kāi)發(fā)專(zhuān)用硬件上具有更低的風(fēng)險。的確,相對于專(zhuān)用ASIC方案的簡(jiǎn)單性和低風(fēng)險的設計過(guò)程是為任何產(chǎn)品選擇FPGA的關(guān)鍵因素是。最近基于軟件的FPGA設計工具使這種設計過(guò)程具有甚至獲得更大的生產(chǎn)效率。這反過(guò)來(lái)讓系統設計者和軟件應用開(kāi)發(fā)者在實(shí)際的硬件上能夠更快地嘗試新的算法方式和測試設想,使用迭代方式進(jìn)行設計。
  這種迭代方式重要好處是能夠一次改變一個(gè)單元(例如將關(guān)鍵的算法移至FPGA)的設計。應用最初是完全用軟件進(jìn)行原型設計,并驗證其正確性,然后由FPGA完成特定的功能,這是在每個(gè)步驟都要對系統重新進(jìn)行驗證的硬件過(guò)程。這種方式被證實(shí)能大大地縮短調試時(shí)間,降低引入難以調試的系統錯誤的風(fēng)險。
  你如何在考慮“將應用的哪部分以硬件實(shí)現”上做出最明智的選擇?一個(gè)普遍采用的方式是從用C,Matlab,SystemC或其它一些軟件編程語(yǔ)言的軟件模型開(kāi)始。隨著(zhù)應用模型和部件算法的發(fā)展,設計者確定并發(fā)揮設計中粗略的并行性(或重新設計算法)利用可編程硬件在建立并行結構方面的獨有能力。增加并行度通常轉化為增加硬件資源,它必須在降低大I/O量的算法性能增益上取舍。使用軟件模型驗證假設,建立可重復的測試組,這些測試組可以作為模型,進(jìn)一步提煉為某些可以進(jìn)行軟件和硬件編譯的內容。
  混合軟硬件設計方法
  現今如何開(kāi)發(fā)混合軟件和硬件應用呢?如果應用是軟件驅動(dòng)的(現今越來(lái)越多的設計是這樣),軟件或系統工程師從編寫(xiě)代碼(如上所述)來(lái)建立系統原型。另一種是,工程師用更高級的工具如Simulink(來(lái)自Mathworks),基于UML的工具或其它系統設計環(huán)境開(kāi)始設計。在這個(gè)過(guò)程中,系統設計者或軟件工程師將采用更高級的設計抽象以獲得最大的生產(chǎn)率,但是可能獲得很低的性能結果。因為以這種方式自動(dòng)選用的處理器類(lèi)型是受限的,為性能目標轉換低級代碼的機會(huì )相對更少。有經(jīng)驗的嵌入式開(kāi)發(fā)者可能會(huì )進(jìn)一步用匯編語(yǔ)言?xún)?yōu)化應用的各個(gè)部分,或使用專(zhuān)用處理器(即DSP芯片)來(lái)提高性能。硬件工程師可以參與優(yōu)化面向FPGA和ASIC實(shí)現的設計中的那部分接口。
  初始系統設計和劃分完成之后,應用中需要最高性能的各個(gè)部分可以手工描述出來(lái),交給硬件工程師。這個(gè)工程師為FPGA或ASIC部分編寫(xiě)低層的HDL代碼,他們的設計生產(chǎn)率通常非常低(軟件工程師1/10或更少)。結果是應用速度增加了,但是代碼和最初的軟件代碼無(wú)法對應,設計周期不再一致,系統規格的改變可能很痛苦。
  在這種情況下,系統設計者必須作為硬件/軟件仲裁者,指定硬件/軟件接口,鎖定設計反映設計的前期時(shí)間。一旦硬件開(kāi)發(fā)認真地展開(kāi),可能幾乎沒(méi)有機會(huì )再次從整體上把握應用和它的組成算法。
  基于C的設計和原型工具加速開(kāi)發(fā)
 

  在上述的方式中,最終的軟件/硬件應用是軟件和硬件源文件的組合,一些需要軟件編譯/調試工具流程,其它需要硬件為主的工具流程和專(zhuān)業(yè)知識。然而,隨著(zhù)基于C的FPGA設計工具的出現,使得在大部分的設計中采用熟悉的軟件設計工具和標準C語(yǔ)言成為可能,尤其在那些本身就是算法的硬件部分。后面的性能轉換可能會(huì )引入手工的硬件描述語(yǔ)言(HDL)取代自動(dòng)生成的硬件(正如面向DSP處理器的源代碼通常用匯編重新編寫(xiě)),但是因為設計直接從C代碼編譯成最初的FPGA實(shí)現,硬件工程師要參與性能轉換的時(shí)間會(huì )進(jìn)一步提早至設計階段,系統作為整體可以用更高生產(chǎn)率的軟件設計模式來(lái)設計。


關(guān)鍵詞: FPGA/協(xié)處理器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>