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

          新聞中心

          開放源碼硬件簡史

          ——
          作者: 時間:2007-10-18 來源:嵌入式在線博客 收藏
          1.1 開放硬件史前時代 

          早在60,70 年代,電子愛好者就開始互相交流電路設(shè)計,PCB版圖, 形成了開放硬件的雛形。 在中國, 這個時期,出現(xiàn)了很多以業(yè)余無線電和電子設(shè)計為主題的書刊,雜志。 

          集成電路出現(xiàn)后,越來越多的功能集成在一個芯片中, 電路越來越復(fù)雜, 設(shè)計制造集成電路的門檻越來越高, 開放和共享集成電路設(shè)計變得越來越困難。 

          ISA(指令集構(gòu)架)的出現(xiàn), 使得電子行業(yè)出現(xiàn)了軟件和硬件大分工, 硬件廠商大規(guī)模生產(chǎn)具有ISA的芯片(如微處理器),以取得芯片生產(chǎn)的規(guī)模效應(yīng), 軟件廠商進(jìn)行軟件開發(fā),以適應(yīng)不同應(yīng)用之間個性化的需要。 

          標(biāo)準(zhǔn)的ISA, 比如X86指令集,加上標(biāo)準(zhǔn)的硬件構(gòu)架, 比如PC,   使得軟件開發(fā)人員可以在同一平臺上互相交流軟件設(shè)計, 這導(dǎo)致了90年代開放軟件的蓬勃發(fā)展。  

          芯片設(shè)計,在80年代90年代, 隨著EDA技術(shù)的日臻完善,硬件設(shè)計越來越自動化,以HDL語言為核心的芯片設(shè)計越來越像軟件設(shè)計。 

          90年代末, 隨著互聯(lián)網(wǎng)以及開放源碼軟件的盛行, 很自然地, 人們就想到,可以利用開放源碼軟件的理念進(jìn)行硬件設(shè)計, 尤其是芯片設(shè)計。 

          由于芯片設(shè)計的復(fù)雜性, 一次設(shè)計一個完整的系統(tǒng)難度是相當(dāng)大的, 因此, 開放源碼硬件社區(qū)通常采用的自底而上的方法進(jìn)行,也就是,先設(shè)計小的功能模塊,(稱為芯核,core, 或者IP),  每個功能模塊都工作正常了,再搭建大的系統(tǒng), 比如片上系統(tǒng)(SOC).   

          1.2 開放源碼硬件的產(chǎn)生
           
          1998年,Delft University of Technology 的一些學(xué)生和老師在互連網(wǎng)上發(fā)起Open Design Circuits Group, 目的是開放電路設(shè)計并把它發(fā)布在網(wǎng)上,盡管這個小組的活動逐漸稀少, 但它啟發(fā)了后來最著名的兩個開放源碼硬件網(wǎng)站的產(chǎn)生:Opencores 和 OpenIPcore.  越來越多的學(xué)校學(xué)生選擇把他們的設(shè)計公布到網(wǎng)上,并把許多功能集成到一起,以期完成很復(fù)雜的功能。 在2000年的時候,OpenIPcore 合并入Opencores. 

          Jamil Khatib是Opencores的中的教父級的人物,1975年出生的他,寫了非常多的奠基性的文檔,探討開放源碼硬件的定義以及商業(yè)模式,參與了最早的F-CPU,gEDA等項目的開發(fā),  2006年他在Brandenburg University大學(xué)念研究生。作為阿拉伯人,他的還專門撰文探討了開放源碼硬件如何對阿拉伯世界的技術(shù)轉(zhuǎn)移產(chǎn)生影響。 他甚至還建議在互聯(lián)網(wǎng)上除了http之外,還需要添加Hardware Computing Resource Protocol ,比如說 ``hcrp://'',專門用來進(jìn)行硬件資源下載.

          隨著芯片設(shè)計越來越大,芯片設(shè)計越來越向SOC方向邁進(jìn),也就是在一個芯片中集成很多現(xiàn)有的IP核,以達(dá)到快速設(shè)計出系統(tǒng)的目的。這時,IP核的可重用性和可更改性就成了最關(guān)鍵的問題。而開放源碼的IP核的無疑在這方面具有先天優(yōu)勢。因此,很多商業(yè)公司也逐漸加入了開放源碼硬件的行列,例如,SUN公司,IBM公司。商業(yè)公司進(jìn)行開放源碼往往是有附加條件的,比如,對于學(xué)術(shù)界免費,但是如果商業(yè)應(yīng)用,仍需要收費。 

          1.3 開放源碼硬件現(xiàn)狀

          目前,開放源碼的硬件中比較著名的項目有:F-CPU是第一個在互連網(wǎng)上設(shè)計的處理器, OpenCores中的OpenRISC項目,試圖開發(fā)一個完全免費的RISC構(gòu)架的處理器以及之上的SOC,    歐洲航天局(ESA)開發(fā)的Sparc兼容的Leon2處理器。 

          與開放源碼軟件的完全免費不同, 開放源碼硬件最終要物理實現(xiàn)才能驗證其設(shè)計是否達(dá)到預(yù)期目的。 可編程邏輯器件(PLD), 特別是現(xiàn)場可編程門陣列(FPGA), 以其快速靈活,初期投入成本低廉, 成為開放源碼硬件最適合的開發(fā)平臺。因此,Opencores的設(shè)計主要都是在FPGA上進(jìn)行。

          為了讓開放源碼社區(qū)的項目易于共同開發(fā)和溝通,通常會提供統(tǒng)一的開發(fā)板使用,例如,Opencores 社區(qū)廣泛使用的Micro FPGABoard和OCRP-1 board這兩款開發(fā)板,就是統(tǒng)一采用Xilinx公司的Vertix系列FPGA設(shè)計的。大名鼎鼎的OpenRisc1000 就是在這塊板上開發(fā)設(shè)計的。 

          近年來,很多開放源碼的處理器及總線基本開發(fā)完成,下一步就是在上面運行操作系統(tǒng),編寫各種設(shè)備驅(qū)動程序, 并配上豐富的應(yīng)用軟件。目前,Leon2 和Openrisc 1200 均可以成功運行Linux系統(tǒng),為開放源碼硬件和開放源碼軟件的社區(qū)融合打下了基礎(chǔ)?!?

          1.4 中國開放源碼硬件發(fā)展?fàn)顩r

          中國有案可查的開放源碼硬件項目是2001年3月啟動的OpenARM項目, OpenARM并不像他的名字所隱含的那樣ARM處理器的設(shè)計相關(guān)。實際上,這個項目只是利用了現(xiàn)成的ARM 芯片,外面加上一塊MEMEC 公司2002年3月(現(xiàn)已被Avenet收購)捐贈的Xilinx FPGA作為外圍擴展的模塊。  FPGA的引入? 使得該設(shè)計可以很容易地用HDL 代碼的形式進(jìn)行管理和跟蹤。該項目后期還充分引入了OpenCores社區(qū)已有的成果,如Wishbone總線?!?

          有趣的是,開放源碼軟件庫sourceforge中也有一個OpenARM, 這個項目的ARM指的是”Application Response Measurement” , 而不是我們所說的ARM 處理器。

          在“中國芯“盛行的幾年里,不少學(xué)校和研究單位參考開放源碼的處理器設(shè)計了自己的微處理器,這個時期,中國利用開放源碼硬件的資源進(jìn)行IC設(shè)計的方法開始悄然流行。

          1.5 開放源碼硬件展望

          擺在開放源碼硬件支持者面前的一個頗有趣的問題是,”如果你要自己做一頓免費的晚餐,那么是否你做飯用米必須是自己種的,做飯用的 鍋碗瓢盆也必須是免費獲得的 ?”.   

          一部分開放源碼的信仰者堅持認(rèn)為上述問題的答案是肯定的。因此,有一些人堅持開發(fā)了例如gEDA 的開放源碼EDA工具。 另一部分人則認(rèn)為, 開放源碼硬件也可以利用商業(yè)工具和商業(yè)原材料, 只要在此基礎(chǔ)上做的系統(tǒng)設(shè)計開放出來就可以了。 

          在利用商業(yè)工具進(jìn)行開放源碼的設(shè)計方面, Xilinx 公司走在了業(yè)界前列, 例如,Xilinx公司開發(fā)的8位軟處理器Picoblaze 是一種開放源碼的8微處理器,而Xilinx公司的32位軟處理器Micoblaze是在Xilinx公司EDK軟件下支持的處理器,Xilinx公司給出了非常多的可供下載的參考設(shè)計,頗具參考價值。 再加上對uclinux的官方支持,可以在Xilinx提供的EDK工具的基礎(chǔ)上,利用Xilinx的參考設(shè)計并加以改進(jìn), 迅速搭建嵌入式系統(tǒng), 并在uclinux的基礎(chǔ)上完成應(yīng)用軟件設(shè)計.  

          在Xilinx 率先宣布65nm 的FPGA量產(chǎn)時, 廣大開放源碼硬件愛好者面臨的是可以容納數(shù)千萬門的可編程邏輯。 傳統(tǒng)的自底而上的設(shè)計很難快速地構(gòu)建如此大的系統(tǒng)。 電子系統(tǒng)級設(shè)計(ESL) 可以用高層次語言來描述系統(tǒng)需求,并自動生成硬件設(shè)計。例如,Xilinx的XtremeDSP方案, 可以在Matlab中,用Simulink這種圖形化的方式搭建復(fù)雜的數(shù)字信號處理系統(tǒng)(例如3G/B3G數(shù)字前端), 

          在開放源碼硬件世界, 也出現(xiàn)了諸如利用SystemC等高層次語言描述的系統(tǒng)(例如SystemCDES).  可以預(yù)計,隨著開放源碼硬件進(jìn)一步普及和成熟,軟件,硬件,系統(tǒng)設(shè)計,算法設(shè)計等會在開放源碼的旗幟下日趨融合,  數(shù)年之后,可下載的硬件設(shè)計 (Downloadable Hardware)可以出現(xiàn)在每個人的掌上。 

          1.6 開放源碼硬件遇到的挑戰(zhàn)

          開放源碼硬件從誕生到現(xiàn)在將近10年了,很多人為它的發(fā)展付出了大量的努力, 但至今采用開放源碼硬件運用在實際應(yīng)用系統(tǒng)中的案例幾乎沒有。究其原因,開放源碼硬件面臨的問題和挑戰(zhàn)主要有:

          1)免費EDA工具的獲取。 

          盡管有Alliance 和 gEDA 等EDA工具可供使用,但它的功能和易用性和商業(yè)EDA軟件相比還是不能相提并論?!τ凇胺峭昝乐髁x”的開放源碼硬件設(shè)計者來說,適當(dāng)采用商業(yè)軟件是一個可以考慮的方案?!≡谏虡I(yè)軟件中,由于FPGA廠商的軟件工具(比如XILINX的ISE, EDK,CHIPSCOPE,SYSTEM GENERATOR等)可以通過大學(xué)計劃獲得捐贈,使得利用強大商業(yè)軟件的支持進(jìn)行開放源碼硬件設(shè)計變得可能。 

          2)板卡制造成本

          自己制作一塊FPGA原型系統(tǒng)板的成本是相當(dāng)可觀的, 

          3)上市時間

          在電子產(chǎn)品數(shù)月就換代的時代,上市時間是電子系統(tǒng)設(shè)計的一個關(guān)鍵因素,即使是采用商業(yè)IP,  都有可能遇到意想不到的整合問題;而 目前開放源碼硬件在文檔完備性,穩(wěn)定性上,技術(shù)支持方面存在的諸多問題,更是使務(wù)實的設(shè)計者望而確步。

          4)軟件豐富性和工具鏈問題

          如果采用開放源碼的處理器,這就意味著從指令集到編譯器到調(diào)試器都是重新開發(fā)的,幾乎所有的軟件都需要移植和重新編譯,這使得開放源碼的處理器的開發(fā)尤其困難。如果設(shè)計實際系統(tǒng),人們更關(guān)心的是如何能解決問題?!∩虡I(yè)處理器更能滿足這種需要。

          5)廠商支持

           Linux得以蓬勃發(fā)展,除了廣大愛好者的奉獻(xiàn)之外,IBM 等大公司的積極推動也起了非常大的作用。 而開放源碼硬件的發(fā)展,也離不開相關(guān)硬件廠商的支持?!?

          正是由于這些挑戰(zhàn)的存在,開放源碼硬件的活動目前更多的集中在大學(xué)和研究機構(gòu)中,尤其在不發(fā)達(dá)國家中,更多得起著硬件設(shè)計知識傳播的作用。


          關(guān)鍵詞: 源碼

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();