早期的嵌入式系统一般是以通用处理器或单片机为核心,在外围电路中加入存储器、功率驱动器、通信接口、显示接口、人机输入接口等外围接口,再加上应用软件,有些还加上了嵌入式操作系统,从而构成完整的系统。
随着微电子技术的进步,SoC已经在很多应用中取代了传统的以单片机为中心的架构,将很多外设和存储器集成在一个芯片中,使系统的功耗和体积越来越小,而功能却越来越强。
FPGA在嵌入式系统中的应用前景
现在的MCU和DSP的功能已经非常强了,但处理能力毕竟还是有限的,厂商在推出一款器件的时候,其性能就已经固定了。当某一款产品的性能无法满足要求时,就必须选用新的处理器,常常意味着重新进行PCB的设计,重新进行各项软硬件的验证测试,所导致的工程资源的浪费是非常惊人的。
FPGA是通过逻辑组合来实现各种功能的器件,几乎可以进行任何类型的处理;对于常用的数字信号处理,有些FPGA专门还提供了DSP模块来实现加速;FPGA的并行处理架构非常适合图像处理、数字信号处理等运算密集的应用;用某款芯片无法满足要求时,还可以通过使用同样封装且容量更大的FPGA芯片来提供更高的处理能力,这样就可以保持管脚的兼容性,从而无须对PCB板进行修改;FPGA的可编程性使设计工程师可以随时对设计进行修改,即使在产品部署后也能对设计错误进行更正;FPGA不但可以完成MCU和DSP的各种功能,还可以根据需要生成新的功能,或者调配各项功能之间的资源配比,使同一个硬件电路设计可以满足不同的应用需求;FPGA还可以利用现成的处理器内核,直接生成软处理器,并在其上运行操作系统。
由于FPGA是通过逻辑组合来实现功能的,所以其功耗和成本一般高于MCU和DSP。在几年前,FPGA给人的印象一直是高高在上的价格,除了通信、航天、军工、工业等少数行业,FPGA更多地是在扮演原型验证开发的角色,在消费类电子等更广大的市场中迟迟未打开局面。
随着Xilinx和Altera竞相采用新的制造工艺,其单位门电路的价格下降得比ASIC还要快,价格在很多应用中已不再是障碍了。特别是在一些需要特定功能的应用中,设计师在市场上找不到可以满足要求的器件,他们就必须自己开发ASIC芯片,或者用FPGA进行设计。但开发ASIC的成本和风险在不断提高,甚至超过了未来的收益,用FPGA就成了一个非常实际的选择。
开发流程的演进
传统嵌入式系统的开发流程是一般先做好硬件平台,再在硬件平台上面应用嵌入式系统开发工具进行软件开发。这样做的结果是软件开发人员必须在硬件设计完成后才能工作,或者是用各种仿真工具在虚拟的硬件平台上进行开发。
在用FPGA进行开发时,开发人员首先要设计输入(FPGA厂商专用工具+语言/原理图+IP CORE),然后编译仿真(FPGA厂商工具+仿真工具),再进行板级调试(测试板制作+逻辑分析仪),如果发现问题,再循环进行上面的环节。
这种设计模式存在诸多问题:设计可移植性差,语言的不足及IP CORE的费用昂贵,系统仿真的可靠性及速度瓶颈,需要制作专用测试板,外接测试仪器的局限性,测试板的重复制作导致开发周期延长。
此外,从原理图设计、逻辑验证和仿真、电路板设计、嵌入式软件的开发和调试,到最后的综合调试,在整个过程中要用到多个厂商的不同工具,不但需要开发人员掌握各个软件的使用方法和技巧,仅仅从资本投入上就是一笔不小的开支。而且,各个软件之间还经常要互相调用文件,尽管各个厂商都宣称自己的软件可保证兼容性,但软件日益复杂的功能和不断增长的代码让人难以对兼容性完全放心。
有没有一个能完成整个FPGA嵌入式系统设计的一体化开发环境呢?有,这就是Altium Designer6.0,该软件的前身就是被电子工程师所广为熟知的Protel,直到现在,还有大量的工程师在用Protel进行PCB板设计。Altium Designer由三部分组成:Foundation是电子产品设计前端,包含了原理图输入、电路仿真和验证、PCB及CAM文档资料浏览功能;Board Implementation可实现传统板级电路设计、验证及CAM文档编辑功能;Embedded Intelligence Implementation是基于大规模可编程逻辑器件(FPGA/CPLD)的数字电路设计、片上可编程嵌入式系统软件开发和数字电路实时验证功能。
Altium Designer拓宽了板级设计的传统界限,将FPGA与PCB设计集成在一起,同时支持原理图输入和HDL硬件描述输入模式;同时支持基于VHDL的设计仿真,混合信号电路仿真、布局前/后信号完整性分析。PCB版图设计中的布局布线采用完全规则驱动模式,并且在PCB布线中采用了无网格的Situs拓扑逻辑自动布线功能;同时,将完整的CAM输出功能的编辑结合在一起。
Altium Designer支持PCB与FPGA引脚的双向同步,提供完善的混合信号仿真、布线前后的信号完整性分析功能,提供了对高密度封装(如BGA)的交互布线功能。
在原理图部分,Altium Designer新增的特性包括:文件管理功能,多层次、多通道的原理设计,可自动标注元器件,FPGA引脚配置导入,原理图环境中的PCB规则定义,丰富的集成库,改善的编辑、查询和可视化。
FPGA引脚配置导入功能允许管脚约束文件,管脚定义可以直接来源于FPGA器件商的引脚约束文件,同时提供对引脚名称和电气类型定义的支持;不再强调必须在Altium Designer环境下完成包括FPGA内部逻辑电路设计在内的一体化系统设计。
在PCB部分提供了完整的由规则驱动的PCB设计环境;支持高速设计,具有成熟的布线后信号完整性分析工具;支持差分对布线;支持BGA封装器件的逃溢式扇出功能;支持汉字输入;支持任意可配置引脚定义器件的网络优化功能;Orcad、PADS、AutoCAD和其他软件的文件导入和导出功能;完整的ODB++/Gerber CAM-系统使得用户可以重新设计原有的设计,弥补设计和制造之间的差异。PCB部分还支持布局优化、布线功能优化、PCB板的3D显示、FPGA的全面协同、CAM输出。
Altium Desigenr内嵌的仿真软件兼容XSPICE/PSPICE电路仿真模型,它能将仿真结果以波形的方式显示,可进行混合电路仿真和仿真波形显示,支持多种仿真模型。在信号完整性分析部分,提供了消除反射和串扰分析功能,
在Altium Designer中,用户可以用图形化的方式来完成整个设计流程,系统自动调用FPGA厂商提供的工具进行布局布线,设计环境中的集中过程控制和监测功能使得信息能够得到及时反馈从而实现交互式设计与调试。
使用“虚拟仪器”元件,工程师可以在原理图级将“虚拟仪器”连入设计;FPGA编程后,可以从外部控制;可以实时观察FPGA发生的情况;调试时使用JTAG边界扫描检验FPGA的信号;用Nexus协议和虚拟仪器进行通信并对设计进行调试。
Altium Designer还提供了大量通用的预验证的IP Core,支持通用IP Core 的设计,并且支持第三方提供的IP Core 。通过与Nanoboard NB1系统验证板的结合,可进行实时设计,从而实现独立于目标器件的FPGA设计。
Altium公司的这种设计方法,将硬件、软件和可编程硬件等领域均被统一在单一的开发系统内,可以完全控制和同步从概念构想到完成实施的整个设计流程。
这种一体化开发流程的缺点是,尽管非常方便易用,但软件的各个部分在性能和功能上无法全部做到领先,在验证、功能设计、PCB设计等方面要弱于一些专业性的或FPGA厂商自己的软件,在需要针对器件进行非常细致的优化以取得最佳性能时,Altium Designer就未必是最佳选择了。