開(kāi)放源碼硬件簡(jiǎn)史
——
早在60,70 年代,電子愛(ài)好者就開(kāi)始互相交流電路設(shè)計(jì),PCB版圖, 形成了開(kāi)放源碼硬件的雛形。 在中國(guó), 這個(gè)時(shí)期,出現(xiàn)了很多以業(yè)余無(wú)線電和電子設(shè)計(jì)為主題的書(shū)刊,雜志。
集成電路出現(xiàn)后,越來(lái)越多的功能集成在一個(gè)芯片中, 電路越來(lái)越復(fù)雜, 設(shè)計(jì)制造集成電路的門檻越來(lái)越高, 開(kāi)放和共享集成電路設(shè)計(jì)變得越來(lái)越困難。
ISA(指令集構(gòu)架)的出現(xiàn), 使得電子行業(yè)出現(xiàn)了軟件和硬件大分工, 硬件廠商大規(guī)模生產(chǎn)具有ISA的芯片(如微處理器),以取得芯片生產(chǎn)的規(guī)模效應(yīng), 軟件廠商進(jìn)行軟件開(kāi)發(fā),以適應(yīng)不同應(yīng)用之間個(gè)性化的需要。
標(biāo)準(zhǔn)的ISA, 比如X86指令集,加上標(biāo)準(zhǔn)的硬件構(gòu)架, 比如PC, 使得軟件開(kāi)發(fā)人員可以在同一平臺(tái)上互相交流軟件設(shè)計(jì), 這導(dǎo)致了90年代開(kāi)放源碼軟件的蓬勃發(fā)展。
芯片設(shè)計(jì),在80年代90年代, 隨著EDA技術(shù)的日臻完善,硬件設(shè)計(jì)越來(lái)越自動(dòng)化,以HDL語(yǔ)言為核心的芯片設(shè)計(jì)越來(lái)越像軟件設(shè)計(jì)。
90年代末, 隨著互聯(lián)網(wǎng)以及開(kāi)放源碼軟件的盛行, 很自然地, 人們就想到,可以利用開(kāi)放源碼軟件的理念進(jìn)行硬件設(shè)計(jì), 尤其是芯片設(shè)計(jì)。
由于芯片設(shè)計(jì)的復(fù)雜性, 一次設(shè)計(jì)一個(gè)完整的系統(tǒng)難度是相當(dāng)大的, 因此, 開(kāi)放源碼硬件社區(qū)通常采用的自底而上的方法進(jìn)行,也就是,先設(shè)計(jì)小的功能模塊,(稱為芯核,core, 或者IP), 每個(gè)功能模塊都工作正常了,再搭建大的系統(tǒng), 比如片上系統(tǒng)(SOC).
1.2 開(kāi)放源碼硬件的產(chǎn)生
1998年,Delft University of Technology 的一些學(xué)生和老師在互連網(wǎng)上發(fā)起Open Design Circuits Group, 目的是開(kāi)放電路設(shè)計(jì)并把它發(fā)布在網(wǎng)上,盡管這個(gè)小組的活動(dòng)逐漸稀少, 但它啟發(fā)了后來(lái)最著名的兩個(gè)開(kāi)放源碼硬件網(wǎng)站的產(chǎn)生:Opencores 和 OpenIPcore. 越來(lái)越多的學(xué)校學(xué)生選擇把他們的設(shè)計(jì)公布到網(wǎng)上,并把許多功能集成到一起,以期完成很復(fù)雜的功能。 在2000年的時(shí)候,OpenIPcore 合并入Opencores.
Jamil Khatib是Opencores的中的教父級(jí)的人物,1975年出生的他,寫(xiě)了非常多的奠基性的文檔,探討開(kāi)放源碼硬件的定義以及商業(yè)模式,參與了最早的F-CPU,gEDA等項(xiàng)目的開(kāi)發(fā), 2006年他在Brandenburg University大學(xué)念研究生。作為阿拉伯人,他的還專門撰文探討了開(kāi)放源碼硬件如何對(duì)阿拉伯世界的技術(shù)轉(zhuǎn)移產(chǎn)生影響?!∷踔吝€建議在互聯(lián)網(wǎng)上除了http之外,還需要添加Hardware Computing Resource Protocol ,比如說(shuō) ``hcrp://'',專門用來(lái)進(jìn)行硬件資源下載.
隨著芯片設(shè)計(jì)越來(lái)越大,芯片設(shè)計(jì)越來(lái)越向SOC方向邁進(jìn),也就是在一個(gè)芯片中集成很多現(xiàn)有的IP核,以達(dá)到快速設(shè)計(jì)出系統(tǒng)的目的。這時(shí),IP核的可重用性和可更改性就成了最關(guān)鍵的問(wèn)題。而開(kāi)放源碼的IP核的無(wú)疑在這方面具有先天優(yōu)勢(shì)。因此,很多商業(yè)公司也逐漸加入了開(kāi)放源碼硬件的行列,例如,SUN公司,IBM公司。商業(yè)公司進(jìn)行開(kāi)放源碼往往是有附加條件的,比如,對(duì)于學(xué)術(shù)界免費(fèi),但是如果商業(yè)應(yīng)用,仍需要收費(fèi)?!?
1.3 開(kāi)放源碼硬件現(xiàn)狀
目前,開(kāi)放源碼的硬件中比較著名的項(xiàng)目有:F-CPU是第一個(gè)在互連網(wǎng)上設(shè)計(jì)的處理器, OpenCores中的OpenRISC項(xiàng)目,試圖開(kāi)發(fā)一個(gè)完全免費(fèi)的RISC構(gòu)架的處理器以及之上的SOC, 歐洲航天局(ESA)開(kāi)發(fā)的Sparc兼容的Leon2處理器。
與開(kāi)放源碼軟件的完全免費(fèi)不同, 開(kāi)放源碼硬件最終要物理實(shí)現(xiàn)才能驗(yàn)證其設(shè)計(jì)是否達(dá)到預(yù)期目的。 可編程邏輯器件(PLD), 特別是現(xiàn)場(chǎng)可編程門陣列(FPGA), 以其快速靈活,初期投入成本低廉, 成為開(kāi)放源碼硬件最適合的開(kāi)發(fā)平臺(tái)。因此,Opencores的設(shè)計(jì)主要都是在FPGA上進(jìn)行。
為了讓開(kāi)放源碼社區(qū)的項(xiàng)目易于共同開(kāi)發(fā)和溝通,通常會(huì)提供統(tǒng)一的開(kāi)發(fā)板使用,例如,Opencores 社區(qū)廣泛使用的Micro FPGABoard和OCRP-1 board這兩款開(kāi)發(fā)板,就是統(tǒng)一采用Xilinx公司的Vertix系列FPGA設(shè)計(jì)的。大名鼎鼎的OpenRisc1000 就是在這塊板上開(kāi)發(fā)設(shè)計(jì)的?!?
近年來(lái),很多開(kāi)放源碼的處理器及總線基本開(kāi)發(fā)完成,下一步就是在上面運(yùn)行操作系統(tǒng),編寫(xiě)各種設(shè)備驅(qū)動(dòng)程序, 并配上豐富的應(yīng)用軟件。目前,Leon2 和Openrisc 1200 均可以成功運(yùn)行Linux系統(tǒng),為開(kāi)放源碼硬件和開(kāi)放源碼軟件的社區(qū)融合打下了基礎(chǔ)?!?
1.4 中國(guó)開(kāi)放源碼硬件發(fā)展?fàn)顩r
中國(guó)有案可查的開(kāi)放源碼硬件項(xiàng)目是2001年3月啟動(dòng)的OpenARM項(xiàng)目, OpenARM并不像他的名字所隱含的那樣ARM處理器的設(shè)計(jì)相關(guān)。實(shí)際上,這個(gè)項(xiàng)目只是利用了現(xiàn)成的ARM 芯片,外面加上一塊MEMEC 公司2002年3月(現(xiàn)已被Avenet收購(gòu))捐贈(zèng)的Xilinx FPGA作為外圍擴(kuò)展的模塊。 FPGA的引入? 使得該設(shè)計(jì)可以很容易地用HDL 代碼的形式進(jìn)行管理和跟蹤。該項(xiàng)目后期還充分引入了OpenCores社區(qū)已有的成果,如Wishbone總線?!?
有趣的是,開(kāi)放源碼軟件庫(kù)sourceforge中也有一個(gè)OpenARM, 這個(gè)項(xiàng)目的ARM指的是”Application Response Measurement” , 而不是我們所說(shuō)的ARM 處理器。
在“中國(guó)芯“盛行的幾年里,不少學(xué)校和研究單位參考開(kāi)放源碼的處理器設(shè)計(jì)了自己的微處理器,這個(gè)時(shí)期,中國(guó)利用開(kāi)放源碼硬件的資源進(jìn)行IC設(shè)計(jì)的方法開(kāi)始悄然流行。
1.5 開(kāi)放源碼硬件展望
擺在開(kāi)放源碼硬件支持者面前的一個(gè)頗有趣的問(wèn)題是,”如果你要自己做一頓免費(fèi)的晚餐,那么是否你做飯用米必須是自己種的,做飯用的 鍋碗瓢盆也必須是免費(fèi)獲得的 ?”.
一部分開(kāi)放源碼的信仰者堅(jiān)持認(rèn)為上述問(wèn)題的答案是肯定的。因此,有一些人堅(jiān)持開(kāi)發(fā)了例如gEDA 的開(kāi)放源碼EDA工具?!×硪徊糠秩藙t認(rèn)為, 開(kāi)放源碼硬件也可以利用商業(yè)工具和商業(yè)原材料, 只要在此基礎(chǔ)上做的系統(tǒng)設(shè)計(jì)開(kāi)放出來(lái)就可以了。
在利用商業(yè)工具進(jìn)行開(kāi)放源碼的設(shè)計(jì)方面, Xilinx 公司走在了業(yè)界前列, 例如,Xilinx公司開(kāi)發(fā)的8位軟處理器Picoblaze 是一種開(kāi)放源碼的8微處理器,而Xilinx公司的32位軟處理器Micoblaze是在Xilinx公司EDK軟件下支持的處理器,Xilinx公司給出了非常多的可供下載的參考設(shè)計(jì),頗具參考價(jià)值。 再加上對(duì)uclinux的官方支持,可以在Xilinx提供的EDK工具的基礎(chǔ)上,利用Xilinx的參考設(shè)計(jì)并加以改進(jìn), 迅速搭建嵌入式系統(tǒng), 并在uclinux的基礎(chǔ)上完成應(yīng)用軟件設(shè)計(jì).
在Xilinx 率先宣布65nm 的FPGA量產(chǎn)時(shí), 廣大開(kāi)放源碼硬件愛(ài)好者面臨的是可以容納數(shù)千萬(wàn)門的可編程邏輯。 傳統(tǒng)的自底而上的設(shè)計(jì)很難快速地構(gòu)建如此大的系統(tǒng)。 電子系統(tǒng)級(jí)設(shè)計(jì)(ESL) 可以用高層次語(yǔ)言來(lái)描述系統(tǒng)需求,并自動(dòng)生成硬件設(shè)計(jì)。例如,Xilinx的XtremeDSP方案, 可以在Matlab中,用Simulink這種圖形化的方式搭建復(fù)雜的數(shù)字信號(hào)處理系統(tǒng)(例如3G/B3G數(shù)字前端),
在開(kāi)放源碼硬件世界, 也出現(xiàn)了諸如利用SystemC等高層次語(yǔ)言描述的系統(tǒng)(例如SystemCDES). 可以預(yù)計(jì),隨著開(kāi)放源碼硬件進(jìn)一步普及和成熟,軟件,硬件,系統(tǒng)設(shè)計(jì),算法設(shè)計(jì)等會(huì)在開(kāi)放源碼的旗幟下日趨融合, 數(shù)年之后,可下載的硬件設(shè)計(jì) (Downloadable Hardware)可以出現(xiàn)在每個(gè)人的掌上。
1.6 開(kāi)放源碼硬件遇到的挑戰(zhàn)
開(kāi)放源碼硬件從誕生到現(xiàn)在將近10年了,很多人為它的發(fā)展付出了大量的努力, 但至今采用開(kāi)放源碼硬件運(yùn)用在實(shí)際應(yīng)用系統(tǒng)中的案例幾乎沒(méi)有。究其原因,開(kāi)放源碼硬件面臨的問(wèn)題和挑戰(zhàn)主要有:
1)免費(fèi)EDA工具的獲取?!?
盡管有Alliance 和 gEDA 等EDA工具可供使用,但它的功能和易用性和商業(yè)EDA軟件相比還是不能相提并論?!?duì)于“非完美主義”的開(kāi)放源碼硬件設(shè)計(jì)者來(lái)說(shuō),適當(dāng)采用商業(yè)軟件是一個(gè)可以考慮的方案?!≡谏虡I(yè)軟件中,由于FPGA廠商的軟件工具(比如XILINX的ISE, EDK,CHIPSCOPE,SYSTEM GENERATOR等)可以通過(guò)大學(xué)計(jì)劃獲得捐贈(zèng),使得利用強(qiáng)大商業(yè)軟件的支持進(jìn)行開(kāi)放源碼硬件設(shè)計(jì)變得可能?!?
2)板卡制造成本
自己制作一塊FPGA原型系統(tǒng)板的成本是相當(dāng)可觀的,
3)上市時(shí)間
在電子產(chǎn)品數(shù)月就換代的時(shí)代,上市時(shí)間是電子系統(tǒng)設(shè)計(jì)的一個(gè)關(guān)鍵因素,即使是采用商業(yè)IP, 都有可能遇到意想不到的整合問(wèn)題;而 目前開(kāi)放源碼硬件在文檔完備性,穩(wěn)定性上,技術(shù)支持方面存在的諸多問(wèn)題,更是使務(wù)實(shí)的設(shè)計(jì)者望而確步。
4)軟件豐富性和工具鏈問(wèn)題
如果采用開(kāi)放源碼的處理器,這就意味著從指令集到編譯器到調(diào)試器都是重新開(kāi)發(fā)的,幾乎所有的軟件都需要移植和重新編譯,這使得開(kāi)放源碼的處理器的開(kāi)發(fā)尤其困難。如果設(shè)計(jì)實(shí)際系統(tǒng),人們更關(guān)心的是如何能解決問(wèn)題?!∩虡I(yè)處理器更能滿足這種需要。
5)廠商支持
Linux得以蓬勃發(fā)展,除了廣大愛(ài)好者的奉獻(xiàn)之外,IBM 等大公司的積極推動(dòng)也起了非常大的作用。 而開(kāi)放源碼硬件的發(fā)展,也離不開(kāi)相關(guān)硬件廠商的支持?!?
正是由于這些挑戰(zhàn)的存在,開(kāi)放源碼硬件的活動(dòng)目前更多的集中在大學(xué)和研究機(jī)構(gòu)中,尤其在不發(fā)達(dá)國(guó)家中,更多得起著硬件設(shè)計(jì)知識(shí)傳播的作用。
評(píng)論