在一个领域中,如果唯一不变的是变化,那么不需要对电子技术和设计方法的发展变化做多少回顾,就能见证到变化是如何使设计工程师能够创建出下一代创新产品。微处理器得到大规模应用后,价廉物美的新技术为基于软件的革新性电子产品设计打开了大门,这就是一个很好的例子。简言之,把设计的主要元素——在这儿是控制“智能”——转入到软领域后,设计工程师就可以在更短时间内创建出更好、更智能、更廉价的产品。
这个变化意味着嵌入式软件开发人员是当今定义电子产品功能和特性的主要推动者,并且最终将把硬件生产出来。该方法的成功因素在于减少硬件复杂度和把设计的控制元素转变到可编程领域带来的开放灵活性。
今天,大容量、低成本可编程器件的到来给电子产品设计的发展带来了同样的希望,因为在软领域定义系统硬件本身已经成为可能。诸如大容量FPGA这样的大规模器件对满足这一需求十分理想。这些期间一般可用于构建系统外设逻辑功能块的大件部分,包括总线接口、I/O块、甚至内存。把大量逻辑引入FPGA领域对硬件开发具有深远影响,并为‘软’设计的新时代打开了一扇大门,这为设计提供了前所未有的灵活性,同时具有减少板级尺寸和复杂性的无穷潜力。
虽然它具有对电子产品开发过程起到革命性作用的潜力,但多数嵌入式软件开发人员仍像以前一样工作——在设计流程的开始阶段选择分立的硬件处理器、创建物理平台,然后写软件使用该平台。人们在嵌入式系统开发的“软”硬件领域缺乏探索,主要原因在于缺少让C程序员在可编程硬件级发挥技巧的工具。确实,当前多数FPGA设计流主要都来自芯片设计领域,需要非常专业的技巧。
把软设计提升一个水平
要超越FPGA胶合逻辑应用需要更广阔的视野,包括充分利用可编程器件,把尽可能多的硬件引入到软领域中。这包括引入处理器功能本身,今天,FPGA内的软处理器正越来越多地转变成嵌入式平台。从根本上说,改用带FPGA的软处理器会带来结构灵活性、板卡尺寸更小、更简单的优点。但深层次的应用会带来更吸引人的优点。
当利用了FPGA的可编程特性获得处理器顶层的抽象层时,就为嵌入式开发人员打开了无限可能,——不仅在软件中实现抽象级设计,而且在硬件中也实现了。试想这样一个系统:处理器通过可配置硬件(本质上是一个硬件包裹)与其内存和外设连接——这就抽象了处理器的接口。简单地对FPGA重新编程就改变了硬件包裹,系统设计师可以轻易地改变处理器内核,甚至在硬的或软的处理器之间转换,无需修改其他系统硬件。从系统的角度来看,所有处理器都是相似的,这就简化了硬件设计流程。当然,把这延伸到应用软件领域也需要可以在处理器之间提供C级别兼容性的编译器。
这种系统的优点是不需要“事先”对处理器做出选择。系统可能是使用某种处理器开发的,但是开发阶段发现需要更高的性能,又采用了更快的器件。由于包裹层的原因,处理器可以是软的、硬的、甚至是FPGA内部的硬件处理器内核,而不会影响周围的硬件,因为转换层仅仅创建出连接外设的标准接口。实际上外设器件本身的连接可以相同方式抽象。在这个方案中,FPGA为嵌入式系统的所有部件提供通用的连接性,而有效地成为系统互连结构。换言之,它有效地成为标准接口“骨干”,硬件和软件都可以轻松与处理器和外设交流。
最后,在处理器之上引入透明的包裹层会创建出基于FPGA的开发环境,提供真正的处理器独立性。软件和硬件开发速度都提高了,处理器选择可以放到设计流程的后期进行,有效的软件/硬件协同设计成为可能。
软件和硬件间进行转换
在可配置硬件中创建处理器和外设包裹层的想法的扩展就是自动生成应用专用的系统硬件,在硬件中执行软件算法——一种‘自己的’硬件协处理器。
从C代码中直接生成硬件的想法并不新鲜,有几个系统已经实现,到现在为止的想法是希望通过C类语言创建完整的系统硬件。在本质上,这与使用HDL(如VHDL 或Verilog)设计FPGA没有什么不同,需要软件开发人员学习和采用新的设计方法。真正对嵌入式开发人员有用的是使流程透明。设计工具必须要能够处理标准 ANSI C代码的输入,把程序员选择的功能转换为硬件。不仅如此,系统必须要能够生成使用生成硬件所需的所有代码。嵌入式程序员以这种方式把专用算法从处理器卸载到专用硬件上,无需了解底层硬件的任何设计细节。
利用FPGA的全部潜力
很明显,从工具角度来说充分利用可编程器件(如FPGA)带来的机会需要一个提高开发流程抽象级别的系统,这样设计的核心元素可通过类似的设计技术和流程轻松改变。这样的系统必须能够统一整个电子产品开发过程,在单一、一致的环境中将硬件、软件和可编程硬件开发综合在一起。 |