“嵌入式体系”这个词规模很广,从数字式电子表到变电站电力检测体系中的PC都可归于这一范畴。大多数状况下,嵌入式体系是一个独立且具有专门用处的体系,它应能在没有技能人员操作的状况下作业。许多嵌入式体系都有某种类型的用户界面,但有一些以“傻瓜型”办法运作,这些体系需求与外界经过传感器、网络等进行沟通。体系智能化能够经过由操作体系操控的微处理器完结,或许体系大部分功用也可由一个独自的专用芯片完结。
不同的嵌入式体系其规划要求相去甚远。假设规划的是手持式设备(如PDA),那么功耗是首要问题;而对机场或电影院售票设备,可靠性和安全将是首要考虑要素。当然,用户界面在上述两种体系中都是首要组成部分,但也有许多嵌入式体系还有必要和传感器和履行器相连,这些体系要求对实践的鼓励做出敏捷反响并生成杂乱输出方法作为呼应,完结这些动作需求处理引擎和体系输入输出端口紧密结合。
让我们来看一下嵌入式体系和外界进行沟通的办法。掌上核算器具有十分简略的用户界面,包含键盘和LCD显示器,它不需求与传感器或通讯总线衔接的接口。而关于一个轿车引擎操控单元,它尽管没有用户界面,可是需求与传感器和履行器进行通讯,而且车辆网络总线也是很重要的部分。当轿车进行维修保养时,技能人员会运用一种设备作为轿车电路的用户界面,对大多数需求这种功用的现代嵌入式体系,用户界面往往像这样经过在设备上添加一个以太网端口,然后作业web服务器作为嵌入式体系功用的一部分来完结。路由器便是这样一种设备,通常以“傻瓜”办法作业,但可经过一个web浏览器对其进行装备。
能够挑选多种办法和器材将智能化功用参加体系中,而且可将这些办法和器材进行混合配对以便以最佳办法到达规划要求。最灵敏的渠道类型是将微处理器和操作体系结合起来,这种架构能够采纳单板机带实时操作体系(RTOS)内核的方法,比如在ATM机或主动售货机中。更杂乱的体系则嵌入一个完好的PC,上面作业Windows或其它操作体系,这样做能够运用现成的网络接口功用衔接到规范打印机上。
关于有的体系而言,PC或单板机或许太大或本钱太高,而且它们或许也不能满意功用需求。这时能够经过将现成的专用集成电路芯片(ASIC)集成到规划中来完结所要求的功用,如用DSP、运算放大器和通讯总线收发器等,这种办法的缺点是项目需求添加板级规划,而假设运用PC渠道,只需求将精力会集在体系级规划上即可。
但假设PC不能满意需求,而且也没有现成部件能够完结体系,那该怎么办呢?这时不只要考虑进行板级规划,而且还包含芯片级规划,需求规划并制作自己的ASIC或许是运用现成的可装备芯片:FPGA。其间一个需承认的要素是终究产品的数量,假设规划的是大批量产品如蜂窝电话,那么为了节省规划和安装本钱最好自行开发ASIC;但假设方针商场很小,则能够经过运用FPGA来削减本钱。FPGA能够在更改体系时不用开发新的ASIC,假设体系需求晋级或修正以便满意特别客户的需求,这样的办法是极为有利的。今日,FPGA已广泛运用在打印机、复印机、丈量设备、消费电子产品和主动操控模块等嵌入式体系中。
丈量和操控用FPGA
FPGA是一种具有可重装备逻辑门的芯片,与供货商供给功用界说的ASIC芯片不同,FPGA可根据每个运用的不同需求而进行装备和重新装备。由于FPGA答应在硬件中完结自界说算法,因而它具有准确时序和同步、快速决议方案及并行使命一起履行等长处。在PC或带有RTOS和微处理器的渠道上,处理器有必要对多个使命进行分时处理,而FPGA则能够装备为多个独立的并行核算资源,简言之,就像芯片上有多个微处理器相同,且这些微处理器都针对特定的使命进行了优化。
FPGA的功用和灵敏性使得它们成为处理输入输出十分有用的技能。假设想核算那些比计数器处理的简略上升或下降沿更风趣的模仿或数字事情,或许要承认一个根据特定事情次序或自界说通讯协议的输入方法,然后在几纳秒后触发一个模仿操作,这时就能够运用FPGA监督输入信号,快速决议并做出反响。别的能够创立一个体系读取脉宽调制信号并敏捷核算占空比,更进一步,还能够对FPGA进行装备以运用自界说数字协议进行通讯,如对输入信息进行解码,然后将信息组合编码作为输出数据包再发送出去,这种快速解码在与非规范编码器衔接时有助于读取宽和读出方位和速度信息。你或许乃至期望一起进行上述一切操作,并使得这些操作相互同步,且和其它输入和输出使命同步。
那么输出的状况是怎样的呢?经过自界说数字协议进行通讯和生成PWM信号是这种类型很好的比如,也能够模仿一个衔接到物理体系的电子器材或传感器。假设是用一个根据软件的体系完结此项作业,即便运用RTOS,输出的功用也或许不必定够。关于主操控算法,或许只需作业在几千赫兹频率上,这会构成CPU资源搁置,而且它仅仅告知输出做什么以及何时做,并没有指明该怎样做。具体来说,假定你的嵌入式体系是一个客户用来测验引擎操控模块的引擎模仿器,对轿车引擎建立了模型而且体系根据该模型进行实时模仿,经过模仿和数字I/O与操控器进行通讯。假设在某个特定测验里模型依照操控器的指示进行操作,引擎开端作业,可是不断实时调整汽缸压力传感器模仿输出以使操控器信任它是与一个实在作业的引擎相连是十分困难的,输出信号有必要在作业过程中构成以便对操控器的指令做出呼应。但假设运用的是FPGA,就能够经过对其进行装备使其生成根据模仿模型的高档输出信号。
面对的应战
将FPGA集成到嵌入式体系最大的应战是怎么装备FPGA的逻辑,以及将传感器输入和操控输出与它衔接起来。许多嵌入式体系规划人员关于在实时操作体系下作业的微处理器上编程十分娴熟,但他们不喜欢在芯片级对硬件进行界说,这需求有规划东西和言语如VHDL方面的常识。当然,唐突进入芯片级范畴还意味着需求规划和构建芯片周边的电路板,尽管这关于一些嵌入式体系规划人员来说现已过期了,但仍然有许多规划人员甘愿尽或许地运用现成的硬件,特别是当硬件有必要准确地丈量出传感器数据并对其作数字化处理时。
现在有许多FPGA装备东西,有些东西需求VHDL或其它言语编码完结硬件界说,有些东西供给了图形装备环境,还有的东西答应你运用了解的东西编写软件,然后将代码下载到FPGA中。在挑选哪种办法合适时需求考虑几个问题,其间一个考虑要素是你的布景。你是否是一个富有经历的硬件开发人员并对FPGA的根本操作有深化的知道?假设是,就能够运用初级东西充分发挥你的经历并深化实地进行装备。或许你不是硬件工程师,但你是一位优异的程序员而且能很简略把握新的编程言语,那么你或许需求挑选一个能够让你充分运用数据结构和程序细节进行编程的东西。别的一个或许是你既不是硬件专家也不是软件专家,但由于你对整个体系内涵的理论或体系所投入的运用十分了解而来规划体系,假设是这种状况,那么应该挑选一个能够让你以自己的言语进行规划的东西,而不用学习杂乱的FPGA或硬件描绘言语。
另一个很重要的考虑要素是你方案规划的体系所要求到达的功用是什么。假设正在规划多个不同类型的体系,或许通用硬件规划东西最为合适。有许多人花费许多时刻成为运用这些东西的专家,你也能够参加其间。假设想将涉及面缩小一些,那么也有东西去处理那些“惯例”业务,而让你专心于能够增值的当地。举个比如,有许多东西能够协助你很快开宣布信号处理体系并将其装备到FPGA中去,也有一些经优化的东西专门用来添加丈量和操控功用。
还需求考虑体系装备期望怎样设置的问题。要有怎样的尺度?与PC衔接吗?有的FPGA开发东西要求你开发FPGA周边一切硬件,另一些则要求运用一种特别的内建有FPGA的电路板。关于后者,许多和板上其它资源如I/O与总线衔接的作业都已做好,这样能够大大加速开发的进展,由于你无须重视比如抗噪性、安稳时刻和串扰之类的事项。关于此类体系,你应该保证与I/O的衔接只要一些简略功用。假设体系需求很多与作业Windows或RTOS的PC衔接,那么应挑选那些能够跨渠道的规划东西。假设用于开发PC端接口的API很有限的话,规划功率将遭到必定的影响。
规划体系
规划一个完好体系的榜首步是承认你的算法哪一部分需求放到FPGA中并履行,有以下几种或许性。榜首,整个运用都能够在FPGA上履行,你无须经过键盘、显示器或鼠标等用户交互办法,在这种状况下,用软件开发就能够完结一切作业。第二,也或许将运用嵌入到FPGA中去,但你想有一个在PC上作业的Windows用户界面,这就意味着需求开发一个在Windows下作业的程序来和FPGA进行通讯。这要看你的开发东西是否依照这种思路开发,或许很扎手,也或许很简略。第三,另一个常见的状况是,你期望在FPGA和一个微处理器渠道如单板机或作业RTOS的嵌入式PC之间分配你的运用程序,在这种状况下或许也需求一个Windows用户界面。
有几个原因你或许无法将整个运用程序嵌入到FPGA中去。运用程序巨细是其间之一,FPGA的逻辑门数量有限,而且终究放入FPGA中的代码因编程人员以及生成代码的主动体系不同而功率或许很高也或许很低,别的FPGA上供用户运用的RAM容量也很有限,而根据PC的渠道一般都带有相对较大的内存和硬盘空间。别的一个需求考虑的问题是FPGA规划常常无法进行浮点运算,市道上有在FPGA上履行浮点运算的东西,但它们或许能够也或许无法与你正在运用的开发东西兼容,假设无法悉数以整型算法作业整个核算,能够放一部分在PC上履行。PC还能够供给一些其它长处,而这些长处在FPGA上无法简略地完结,包含文件I/O、网络操作、打印才能和根据PC的丈量和操控才能,如图形辨认/处理、GPIB/VXI东西操控以及与工业总线如CAN、RS-232和RS-485的接口等。
本文小结
FPGA为嵌入式体系带来了在尺度、本钱和功用上的长处,特别对I/O处理参加智能特性十分有协助,运用FPGA能够完结根据软件且作业RTOS的体系无法完结的时序和同步。你能够经过微处理器和RTOS渠道如嵌入式PC履行大多数运用程序,但需求芯片级处理方案进行信号解码和编码或生成输出信息;相同,你也能够在FPGA上履行大多数运用程序,但需求另一个渠道来完结更高档的使命。运用FPGA有一些应战,但有许多东西能够协助你处理这些问题。最首要的考虑要素是你的技能特色,体系需求完结什么使命以及体系怎么设置。