基本设计流程概念
标准现货微处理器基本上只是一块功能性硅片,需要设计人员进行指令编码,例如在初始设置中配置外设、运行主要功能、与外界连接等。微处理器要在设计人员给予“身份”之后才能开始工作,它既可被编程和现场重编程,也能够进行多次重新定义。
另一方面, FPGA 也是一块功能性硅片,它可能包含一些特殊的功能性模块(如存储器),但同样必须在定义“身份”后才能工作。尽管FPGA在I/O的选择使用上灵活性稍大,而且可并行操作,但它和微处理器一样,都需要设计人员赋予它们“生命”。
虽然嵌入式设计人员很少同时从事FPGA设计,FPGA设计人员一般也不会踏进嵌入式领域,但他们的设计流程其实极为相似。如图1所示,两者在设计器件时都是从零开始,采用某种语言编写、编译或构建代码,然后对器件进行编程和调试。他们都能够设计出出色又独特的实现方案,可能简单如控制一盏灯,也可能复杂似一件艺术品。这些形容简化了编写的内容,同时也意味着设计流程偏向于并行化,而且更具兼容性。
集成嵌入式处理器的FPGA
过去十多年间出现了两类集成处理器的FPGA:带有处理器软核的FPGA和带有处理器硬核的FPGA。它们各有其优缺点,但其中有些FPGA得以幸存,有的却惨遭淘汰。问题在于嵌入式与 FPGA 设计人员的设计流程和相反特性究竟在多大程度上阻碍了这些器件的快速采纳。
带处理器软核的FPGA
带处理器软核的FPGA主要是由FPGA供应商提供的产品或解决方案。它为FPGA设计人员提供了尝试嵌入式设计的机会,不过由于FPGA设计人员在AVR、8051、PIC或 ARM 等标准处理器上往往拥有自己的个人偏好、经验和代码库,因而往往无法超过真正的嵌入式设计人员。多年来,爱特公司一直致力于为航天产品提供处理器软核(如8051和Leon),最近更推出了集成了ARM7、8051和ARM?誖 Cortex TM-M1处理器的快闪FPGA。
处理器软核的优势一般包括:(1)可以根据需要增加外设;(2)在某些无需使用所有功能的情况下,可以简化指令集以减小占用空间;(3)在需要时可以把设计移植到更大的FPGA中。
但是这种方案中仅仅是处理器本身就要使用相当大的硅面积,因而成本高于独立式处理器。外设数量的增加可能导致时序问题,而这超出了嵌入式设计人员的经验范围。此外,SRAM FPGA没有闪存来存储代码和数据,所以必须配置额外的闪存器件,而这也会影响到I/O要求、电路板版图和设计复杂性。
从设计角度来看,进行嵌入式设计的FPGA设计人员首先必须解决FPGA中处理器的硬件版图问题,然后再进行FPGA内部嵌入式应用的调试。如果只有一个设计人员进行产品开发工作,则开发流程基本上是串行化的。如果在设计中存在缺陷或问题,便需要深入剖析许多层面才能找出原因所在(是代码问题、RTL问题,还是硬件时序问题)。所有这些都影响着产品的上市时间和可靠性,最终关系到该项技术的全面采纳。
带嵌入式处理器硬核的FPGA
带处理器硬核的FPGA有多种形式,均为行业标准产品,这一点十分有利于加速产品的推广应用。例如,Triscend公司拥有8051/ARM FPGA,爱特梅尔(Atmel)则推出了基于AVR的FPSLICTM器件。由于Triscend在FPGA和现有FPGA设计流程方面缺乏深厚背景,所以根据器件需要开发出了一个对自己有利的工具流程。这个工具流程能够更加直观地整合各种组件,但缺少一般FPGA用户期望的FPGA详细设计功能。爱特梅尔拥有FPGA技术背景,其设计流基于FPGA/嵌入式并行流程,并可通过配置对话来定义两者间的接口。
这些FPGA都具有一个优点,即采用业界标准处理器。其他优点还包括:由于采用业界标准处理器,能够使用业界领先的编译器(如KeilTM和IAR SystEMS?誖),从而再次进入主流嵌入式领域。处理器硬核的设计流程已被证明对双方都很有利,不过FPGA和微处理器之间接口的调试可能是一大挑战。
一直以来,较高的硅成本都是带有处理器硬核的FPGA的缺点。硬核处理器的成本曾非常接近独立式处理器的成本,而当时FPGA仍然十分昂贵,因此说服那些使用1美元或2美元器件的嵌入式设计人员在成本只有15美元的设备中使用FPGA,还要增加一个额外的外设,对销售人员或工程师来说都不是一个好主意。对于FPGA设计人员而言,这些器件中的FPGA实在太小,无法激起很大兴趣。FPSLIC曾是一个不错的点子,工程师都希望找到这方面的项目,不过一旦进入定价和物流阶段,许多机会都无法满足应用的实际需求。
嵌入式处理器的下一步
由于CMOS工艺的局限性,也因为早期带硬核处理器的 FPGA 属SRAM FPGA,因而并没有集成大量的模拟功能。而利用基于快闪技术的FPGA则有可能增加广泛的模拟电路。此外,只要再增加一个用于代码存储的集成式快闪模块,这类器件看起来就像一个集成了模拟和FPGA的单芯片嵌入式处理器。如果从器件设计流程角度考虑,这就相当于增加了一个新的设计组件。此时,不仅要进行FPGA和嵌入式设计,还需处理模拟设计。于是,这种器件的设计流程需要进行三类设计:FPGA设计、嵌入式设计和模拟设计。这些任务可以由3个、2个甚至1个设计人员来完成,使所有设计人员都必须能够并行进行自己的设计部分,以避免设计周期延长与FPGA中软核处理器的协作问题。
此外,由于FPGA和嵌入式设计人员都是成熟的用户团队,设计流程必须对双方都具有吸引力,并且没有陡峭的学习曲线,而FPGA和嵌入式设计人员都必须能够确信自己的专业技术,因此每一方都必须依赖所做的设计选择,能够根据需要访问模拟数据,图2所示为Actel SmartFusionTM混合信号FPGA,是目前唯一一款集成了FPGA、 ARM Cortex -M3处理器硬核和可编程模拟的FPGA。该器件的架构具有清晰的功能性边界和明确定义的接口,有助于简化这类器件的设计边界。
下面从三类设计工作划分的角度来进行分析:
(1)嵌入式设计人员可以像使用常规微控制器一样,使用带有一套固定硬外设(蓝色部分)的标准ARM Cortex-M3处理器硬核。这称为微控制器子系统(MSS)。这里并无时序不确定性。与模拟或FPGA的任何连接都通过先进外设总线(APB)或先进高性能总线(AHB)接口完成。尽管FPGA的内容可能有很大改变,但由于存储器映射具有简单、自动扩展的特性,它的各个组件可被视为处理器的外设扩展部分。
(2)FPGA设计人员可以选择使用FPGA中完全独立于处理器的部分。由于FPGA带有功能齐全的阵列、SRAM 和 FIFO模块,以及包括 LVDS 的I/O,所以设计人员不受折衷FPGA架构的限制。但是现在FPGA设计人员也能够通过增加先进微控制器总线架构(AMBA)外设来支持嵌入式设计,或利用AMBA接口开发新的功能,以创建设计专用的新的定制外设。
(3)由于模拟设计没有标准的现成设计流程,因此“模拟设计”这个术语对不同人的含义可能也不一样。许多模拟组件是专用标准器件(ASSP),需要定制与处理器的接口。在SmartFusion中,模拟组件与处理器和FPGA集成在一起;在模拟设计中,预定义接口可以实现更高级别的提取。由于它们易于使用并具有直观的图形格式,最终可获得适合于所有设计人员的全新一代的模拟配置对话。
下一代嵌入式处理器设计
假设目前的设计至少有两名设计人员一起工作,设计中需要两个并行设计流程,并采用一种便于两名设计人员相互交流沟通的方法。图3为基本的模块结构。
对于嵌入式设计人员,第一步是查看 MSS配置器 并选择外设,然后安排配置设置以及改变I/O属性。最重要的是,可以根据用户的选择自动生成存储器映射和所选配置需要的全部固件。从这一点出发,嵌入式设计人员便可选择工作在GNU、Keil或IAR等工具的标准处理器设计流程内。实际上,无论使用上述任何哪一种业界标准软件IDE中,都可以提供MSS配置器。
配置外设的驱动器库、系统初始化和启动代码都是自动产生的,这就为设计人员节省了大量的时间,不必花费太多精力用于这部分设计,从而将更多时间用于应用开发。
MSS配置器GUI看起来就像器件架构模块示意图。由于这类工具对嵌入式和FPGA两方设计人员来说都比较新颖,它的图形直观性界面有助于所有设计人员顺利地学习,同时满足每个人的要求。
FPGA设计人员可以自行配置微控制器子系统,也可以引入一个由嵌入式设计人员创建的微控制器子系统。这时,只需采用一种简单的文件格式在设计人员之间传递MSS配置,不必传递整个设计项目。实际上,FPGA设计人员需要了解MSS配置的唯一理由是外设与FPGA架构的连接。FPGA设计人员因此能够增加像SmartDesign IP模块这样的额外设计组件,或者是获得用于与处理器的设计相独立的RTL,并继续进行包含了全面广泛的时序和功率分析的传统FPGA设计流程。
本文关键字:软件工具 DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术