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