开放源码硬件

1.1 开放源码硬件史前时代

早在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 等大公司的积极推动也起了非常大的作用。 而开放源码硬件的发展,也离不开相关硬件厂商的支持。 

正是由于这些挑战的存在,开放源码硬件的活动目前更多的集中在大学和研究机构中,尤其在不发达国家中,更多得起着硬件设计知识传播的作用。