图4: 一个展示微处理器/嵌入式处理器不同元素的图
微控制器提供引脚访问,允许程序轻松监控传感器,设置执行器,并与其他设备传输数据。提供专门的指令可以提高嵌入式系统应用程序的性能; 因此,微控制器在某种程度上可以被认为是 asip。
特殊的微控制器通常被称为嵌入式处理器。微控制器和嵌入式处理器之间的区别并不清楚,但是具有快速处理、快速上下文切换和原子 ALU 操作的大型结构的处理器被许多厂商标榜为嵌入式处理器。嵌入式处理器的例子有 ARM 7,INTEL i960,AMD 29050
ASIP/DSPs
ASIP 是为具有通用特性的特定类型的应用而设计的,如数字信号处理、通信、嵌入式控制等专用指令集处理器。在嵌入式系统中使用 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 布局设计和制作
· 固件开发-调试和测试
· 系统集成
· 测试-功能、环境
· 如果需要证书的话
· 文件
设计嵌入式系统有不同的设计周期方法。
瀑布模型
瀑布模型是一种开发模型,在这种模型中,开发可以在需求分析、设计、实现、测试、集成和维护的各个阶段中稳定地进行。由于清晰的里程碑,它允许良好的进度跟踪,但缺点是缺乏灵活性(对变化的需求作出响应)。
自上而下与自下而上
在自顶向下模型中,最初考虑的是系统的总体功能,而不涉及需求的更细微的方面。进一步的分析将会越来越深入到更多的细节中。
自底向上模型遵循相反的方法。首先,它非常详细地定义了系统的各个部分。然后,各个子系统被集成,形成更大的系统,最终形成整个系统。
螺旋模型
螺旋模型是现代设计实践中常用的一种模型。它同时使用自顶向下和自底向上的方法。首先确定目标、方案和约束条件。然后开始迭代以消除主要的风险。然后计算出每个子系统的更详细的细节。
甘特图
甘特图/计划评审技术图表显示了各种计划活动之间的关系,有助于监测项目的进展情况。