如果我们环顾四周,我们会发现自己被计算机系统所包围。每年,数以百万计的计算机系统都是为台式计算机而建造的
图1: 嵌入式系统的表征图像(个人电脑、工作站、大型机和服务器)但令人惊讶的是,每年都有数十亿计算机系统嵌入到更大的电子设备中,而这些系统仍然没有引起注意。任何使用电力的设备要么已经有了计算系统,要么很快就会有嵌入式计算系统。今天,嵌入式系统被发现在手机、数码相机、摄像机、便携式视频游戏、计算器、个人数字助理、微波炉、应答机、家庭安全系统、洗衣机、照明系统、传真机、复印机、打印机和扫描仪、收银机、报警系统、自动出纳机、变速器控制、巡航控制、燃油喷射、防抱死刹车、主动悬架和许多其他设备/装置。
什么是嵌入式系统?准确定义嵌入式系统并不容易。简单地说,除了通用计算机(带显示器、键盘等)之外,所有计算机系统都是嵌入式系统。系统是一种工作方式,组织或执行一个或多个任务根据一套固定的规则,程序或计划。换句话说,所有单位按照一个程序或计划集合在一起工作的一种安排。嵌入式系统是将软件嵌入到硬件中的系统,它使系统专门用于应用程序或应用程序或产品的特定部分或更大系统的一部分。它处理一组固定的预编程指令来控制机电设备,这些机电设备可能是更大系统的一部分(不是带有键盘、显示器等的计算机)。嵌入式系统的通用定义是,它们是用于控制、监视或协助设备、机械或工厂操作的设备。“嵌入式”反映了它们是系统不可分割的一部分这一事实。在许多情况下,他们的“嵌入性”可能使得他们的存在对于不经意的观察者来说远非显而易见。一个典型的嵌入式系统框图如图所示。
图2: 一个典型的嵌入式系统框图嵌入式系统是一种工程人工制品,包括受到物理约束(反应约束和执行约束)的计算,这些约束是通过计算过程与物理世界的交互作用产生的。反应约束源于行为要求 & 指定最后期限、吞吐量和抖动,而执行约束源于实现要求 & 限制可用处理器的速度、功耗、内存和硬件故障率。嵌入式系统设计的关键是在这两种约束条件下获得所需的功能。
特点 嵌入式系统是特定于应用程序的单功能系统,应用程序是已知的,程序是重复执行的。效率对于嵌入式系统来说是至关重要的。他们优化了能源,代码大小,执行时间,重量和尺寸,和成本。嵌入式系统通常设计为满足实时约束; 实时系统对来自受控对象/操作员的刺激作出反应,时间间隔由环境决定。对于实时系统,正确的答案来得太晚(甚至太早)是错误的。嵌入式系统通常通过传感器和执行器与外部世界进行交互(感知、操作和通信) ,因此是典型的反应式系统; 反应式系统不断与环境进行交互,执行速度由环境决定。他们通常有最小的或没有用户界面。设计指标和体系结构
嵌入式系统的设计指标除了满足嵌入式系统的预期功能外,嵌入式系统设计人员还必须在以下设计指标上进行优化。
这些指标之间相互竞争,增加一个指标可能会影响其他指标。因此,对于嵌入式系统设计人员来说,优化这些指标是一个挑战。
嵌入式系统的要素 硬件 嵌入式系统的核心元素是处理器或计算单元。处理器可以充当系统的大脑。它们可以被编程来执行一项任务。这可以使用多种选项来设计。
通用微处理器通用微处理器是单片半导体器件,是片上计算机,不是完整的计算机。它的 CPU 包含一个算术和逻辑单元(ALU) ,一个程序计数器(PC) ,一个堆栈指针(SP) ,寄存器,一个时钟和单芯片中断电路。要制作一台完整的微型计算机,必须增加存储器通常是 ROM 和 RAM、存储器****、振荡器、一些串口和并口
图3: 通用微处理器结构示意图通用处理器是为了满足大量应用而设计的,因此是批量生产的。在嵌入式系统中使用它会带来各种好处。设计时间很短,因为只需要开发软件,不涉及数字设计。通用处理器的典型特征是成本相对较高,速度较快,功耗较高,体系结构较大,内置闪存和缓存,外部总线接口更大的内存使用。例如: 摩托罗拉的680 × 0,英特尔的 x86
微控制器/嵌入式处理器微控制器是一个功能性的计算机系统单晶片。它包含一个集成处理器,存储器(少量的 RAM,程序存储器,或两者兼有) ,几个外围设备,如定时器,模拟到数字转换器,和串行通信设备都在一个芯片上,导致紧凑和低功耗的 implementations.It 是不可扩展的,因为它没有外部总线接口。例如 PIC 的 DSPIC33/PIC24,摩托罗拉的6811,英特尔的8051微控制器的典型特点是: 低成本、低速度、低功耗、小体系结构、小存储器体积、集成闪存、有限 i/o。
图4: 一个展示微处理器/嵌入式处理器不同元素的图微控制器提供引脚访问,允许程序轻松监控传感器,设置执行器,并与其他设备传输数据。提供专门的指令可以提高嵌入式系统应用程序的性能; 因此,微控制器在某种程度上可以被认为是 asip。特殊的微控制器通常被称为嵌入式处理器。微控制器和嵌入式处理器之间的区别并不清楚,但是具有快速处理、快速上下文切换和原子 ALU 操作的大型结构的处理器被许多厂商标榜为嵌入式处理器。嵌入式处理器的例子有 ARM 7,INTEL i960,AMD 29050
ASIP/DSPsASIP 是为具有通用特性的特定类型的应用而设计的,如数字信号处理、通信、嵌入式控制等专用指令集处理器。在嵌入式系统中使用 ASIP 可以提供灵活性的好处,同时还能获得良好的性能、功耗和体积。然而,这样的处理器可能需要大量的非周期性工程(NRE)成本(如果不存在,则构建处理器和编译器)。数字信号处理器是计算机辅助设计的一种常用类型。DSP 是一种单芯片超大规模集成电路单元,是一种专门为支持高性能、重复、数值密集型任务而设计的处理器,包括乘法、加法、移位和加法等操作。DSP 处理器的典型特性如下1. Harvard架构2. MAC 单元支持多重累积操作在一个周期内。3. 在一个指令周期内完成多次内存访问的能力。4. 一个或多个专用地址生成单元,以加速算法处理。DSP 的例子有: TMS320Cxx、 SHARC 和 Motorola 5600xx。
ASICs集成电路基本上是“芯片”,即硅晶片与晶体管,电阻,电容器制造作为微处理器,放大器,存储器等。专用集成电路(asic)是为特殊应用而设计的。数字音频转换器,直接序列扩频接收器,mpeg2****是 asic 的例子。Asic 提供非常高的性能,但是 NRE 成本非常高。对于 asic,计时闭包是一个问题,特别是对于深亚微米几何图形。可重构性是非常有限的。
FPGA/CPLDs(FPGA)是一种完全可编程的替代定制芯片。它们也被称为可重构处理单元。它是一个由逻辑块和触发器组成的二维数组,用户可以通过它配置逻辑块之间的互连和每个块的功能。FPGA 技术允许您将处理器、 ROM、 RAM、 DSP 和其他任何块嵌入到单个芯片上。这正在取代大量的专用集成电路芯片。FPGA 具有并行硬件的性能优势和软件的灵活性。这在成本、可靠性、知识产权的可重用性和上市时间方面具有重大优势。基于单元之间的相互连接,它们是两种类型的 fpga可重新编程(基于 sram)-Xilinx,LatticeXP2,Altera,Atmel一次性可编程-Actel,Quicklogic复杂可编程逻辑器件(CPLD)与 fpga 略有不同,主要区别在于体系结构。一个 CPLD 由一个或多个可编程产品和逻辑阵列组成,该阵列提供相对较少的时钟寄存器。因此,它们的灵活性较差,因此提供了更多可预测的时间延迟和更高的逻辑互连比的优势。另一方面,FPGA 体系结构以互连为主。这使得它们更加灵活,但是设计起来也更加复杂。而且,fpga 在资源方面通常比其它 cpld 大得多。另一个常见的区别是,cpld 包含嵌入式闪存来存储它们的配置,而 fpga 通常(但并非总是)需要一个外部闪存。
可重构的 SoCs技术的进步,特别是缩小的硅制造几何,使复杂的平台集成在一个单一的系统芯片(SoC)中成为可能。除了专用硬件子系统,现代 SoC 还可以包括一个或多个 CPU 子系统来执行软件和复杂的互连。Nomadik 和 Nexperia 等多媒体平台就是使用数字信号处理器、微控制器和其他可编程处理器的多处理器单片机的例子。Atmel 的 FPSLIC (avr + fpga) ,TI 的 OMAP (ARM Cortex + Custom gpu + TI DSP)也是其中的例子。架构二
软件如果说硬件是嵌入式系统的主体,那么软件就是嵌入式系统的灵魂。该软件为嵌入式系统提供了这种功能。由于嵌入式系统的任务具有多样性,因此出现了多种语言。一种语言可能适合于以控制为主的应用程序,但对于信号处理应用程序可能不太适合。
硬件语言Verilog 和甚高速集成电路硬件描述语言(VHDL)是这一类中最流行的语言。两者都是用结构层次描述系统,用离散事件语义描述模型系统,并允许并发进程按照程序进行描述。Verilog 主要用于模拟数字集成电路,而 VHDL 则更大、更详细,可以处理更广泛的建模和模拟任务。
软件语言软件语言使用指令来描述要执行的序列。软件语言有两种类型: 汇编语言和高级语言。汇编语言程序包含以符号形式编写的指令,由操作码、寻址模式、寄存器和存储器设计。高级语言包括 c,c + + ,RT-Java,ADA 等。它们使用各种结构,如函数、循环、数组、变量、结构等,并且是用易于理解的语言编写的。
数据流语言数据流语言描述了并发运行并通过队列进行通信的过程进程系统。数据流模型由转换数据的节点,和表示数据在这些节点之间传递的弧线组成。它们不方便一般应用,但非常适合信号处理应用。卡恩流程网络就是其中的应用之一。LUSTRE 是同步数据流语言的一个例子。
混合语言这类语言结合了其他语言的思想。Esterel (用于控制支配的反应系统)将抽象的硬件语义(并发性和数字电路的同步性)与典型软件语言的不同结构结合起来。SDL 是为描述通信协议而开发的图形化语言(使用有限状态机)SystemC 提供了类似 vhdl 的同步离散事件仿真模型,但是允许从软件中引入异步执行和交互机制(c + +)。CoCentricTM System Studio 将 kahn 样的数据 ow 与 esterel 样的 FSM 语义相结合,以模拟和合成同样需要控制的数据 ow 应用程序。架构三
与物理世界的接口嵌入式系统通过传感器和执行器与物理世界接口。对于嵌入式系统,传感器起着“感官”的作用,而执行器起着“肢体”的作用。在嵌入式系统中使用了各种传感原理的传感器。光、温度、加速度、速度、质量、距离等是常见的被感知的物理参数。电机是许多系统中使用的驱动器之一。这些传感器通过各种接口与处理器接口:串行通信接口(SCI) : RS-232,RS-422,rs-485等同步串行通信接口: I2C,SPI通用串行总线(USB)网络: 以太网、控制器局域网路/网络(CAN)等离散 IO: 通用输入/输出(GPIO)模拟到数字/数字到模拟转换器(ADC/DAC)
相关的重要概念电脑体系结构两种常见的处理器体系结构是 Neumann Vs Harvard。冯 · 诺依曼体系结构具有相同的程序和数据存储空间,共享地址总线和数据总线。哈佛架构对程序和数据有不同的存储空间。对于每个总线,都提供了单独的数据总线和地址总线。
图5: 纽曼架构与哈佛建筑的比较图集合结构(ISA)作为软件和硬件之间的抽象层。精简指令集和复杂指令集计算机代表了现代计算机体系结构设计中两种不同的竞争理念。RISC 有简单的原始指令和寻址模式。指令长度均匀,在一个时钟周期内执行,并支持流水线。CISC 芯片有大量的可变长度,不同的和复杂的指令,需要比一个时钟周期执行更长的时间。与 RISC 芯片相比,cisc 芯片每条指令的速度相对较慢,但是使用的指令比 RISC 少。因此,RISC 系统通过减少时钟每个指令周期数缩短执行时间,而 CISC 通过减少 MIPS r2000缩短执行时间是纯 RISC 的典型产品,Intel 80386是典型的纯 CISC 芯片。嵌入式系统的设计
嵌入式系统的设计一个嵌入式系统的设计包括以下几个阶段· 需求分析· 定义系统规格为要设计的系统建模——用不同的算法进行实验并对其进行初步评估。将任务分解为较小的子任务,并为它们的交互建模HW-SW 划分(将任务划分为 h/w、 s/w)或协同设计(h/w 和 s/w 设计)在两个进程之间并行进行交互和反馈。联合优化设计指标)· 科技的选择· 资源分析-成本、时间及人力· 组件和开发工具的标识· 电路设计/原理图获取,PCB 布局设计和制作· 固件开发-调试和测试· 系统集成· 测试-功能、环境· 如果需要证书的话· 文件
设计嵌入式系统有不同的设计周期方法。瀑布模型
瀑布模型是一种开发模型,在这种模型中,开发可以在需求分析、设计、实现、测试、集成和维护的各个阶段中稳定地进行。由于清晰的里程碑,它允许良好的进度跟踪,但缺点是缺乏灵活性(对变化的需求作出响应)。自上而下与自下而上在自顶向下模型中,最初考虑的是系统的总体功能,而不涉及需求的更细微的方面。进一步的分析将会越来越深入到更多的细节中。自底向上模型遵循相反的方法。首先,它非常详细地定义了系统的各个部分。然后,各个子系统被集成,形成更大的系统,最终形成整个系统。
螺旋模型螺旋模型是现代设计实践中常用的一种模型。它同时使用自顶向下和自底向上的方法。首先确定目标、方案和约束条件。然后开始迭代以消除主要的风险。然后计算出每个子系统的更详细的细节。
甘特图甘特图/计划评审技术图表显示了各种计划活动之间的关系,有助于监测项目的进展情况。