嵌入式系统概述

第1章 嵌入式系统概述 本章介绍嵌入式系统的一些基本知识,包括嵌入式系统的概念、发展、特点、组成、分类、嵌入式微处理器系列和嵌入式系统中信息表示与运算基础等。通过本章的学习,读者将建立起对嵌入式系统的初步的宏观认识,为今后的深入学习和研究打下基础。 1.1 嵌入式系统的发展 1.1.1 嵌入式系统的概念 什么是嵌入式系统?随着嵌入式系统在人们实际生活中的应用越来越广泛,这个基本问题的确切定义引发了许多争论。 嵌入式系统本身是一个相对模糊的定义。人们很少会意识到他们往往随身携带了好几个嵌入式系统——MP3、手机或者智能卡,而且他们在与汽车、电梯、厨房设备、电视、录像机以及娱乐系统的嵌入式系统交互时也往往对此毫无察觉。嵌入式系统早期主要应用于军事和航空、航天等领域,以后逐步广泛地应用于工业控制、仪器仪表、汽车电子、通信和家用消费类等领域。正是“看不见”这一特性将嵌入式计算机与通用PC计算机区分 开来。 目前存在多种嵌入式系统的定义,有的是从嵌入式系统的应用定义的,有的是从嵌入式系统的组成定义的,也有的是从其他方面进行定义的,下面给出两种比较常见的定义。 第一种,根据IEEE(国际电气和电子工程师协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(原文为devices used to control, monitor, or assist the operation of equipment, machinery or plants)。 可以看出此定义是从应用上考虑的,嵌入式系统是软件和硬件的综合体,还可以涵盖机电等附属装置。 第二种定义:嵌入式系统是以应用为中心、以计算机技术为基础、软/硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。广而言之,可以认为凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。嵌入式系统采用“量体裁衣”的方式把所需的功能嵌入到各种应用系统中,它融合了计算机软/硬件技术、通信技术和半导体微电子技术,是信息技术IT(Information Technology)的最终产品。 1.1.2 嵌入式系统的发展史 嵌入式系统从出现至今已历经30多年的时间,发展历史悠久。早在电子数字计算机出现之前就有了把计算装置嵌入在系统和设备之中的嵌入式系统,如把计算机嵌入到导弹等武器和航天器中。但是直到20世纪60年代末(集成电路化的第三代计算机时期),随着微电子技术的发展,嵌入式计算机才逐步兴起。近几年来,随着计算机、通信、消费电子的一体化趋势日益明显,嵌入式技术已成为一个研究热点。纵观嵌入式技术的发展过程,大致经历4个阶段。 第一阶段是以单芯片为核心的可编程控制器形式的系统,具有与监测、伺服、指示设备相配合的功能。这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,通过汇编语言编程对系统进行直接控制。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单、价格低,以前在国内工业领域应用较为普遍,但是已经远远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。 第二阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。主要特点是:CPU种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。 第三阶段是以嵌入式操作系统为标志的嵌入式系统。主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具有文件和目录管理、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口API,开发应用程序较简单;嵌入式应用软件丰富。 第四阶段是以Internet为标志的嵌入式系统。这是一个正在迅速发展的阶段。目前大多数嵌入式系统还孤立于Internet之外,但随着Internet的发展以及Internet技术与信息家电、工业控制技术结合日益密切,嵌入式设备与Internet的结合将代表嵌入式系统的未来。 综上所述,嵌入式系统技术日益完善,32位微处理器在该系统中占主导地位,嵌入式操作系统已经从简单走向成熟,它与网络、Internet结合日益密切,因而,嵌入式系统应用将日益广泛。 1.1.3 嵌入式系统的特点 与通用型计算机系统相比,嵌入式计算机系统具有以下特点:  1. 嵌入式系统通常是面向特定应用的。嵌入式CPU与通用型的最大不同之处就是嵌入式CPU大多工作在为特定用户群设计的系统中,它通常都具有低功耗、体积小、集成度高等特点,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,与网络的耦合也越来越紧密。 2. 嵌入式系统是将计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物,是一门综合技术学科。由于空间和各种资源相对不足,嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。 3. 嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行的,因此嵌入式系统产品一旦进入市场,就具有较长的生命周期。 4. 为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘等载体中。 5. 嵌入式系统本身不具备自举开发能力,即使设计完成以后用户通常也不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行开发。 1.2 嵌入式系统的分类 根据不同的分类标准,嵌入式系统有不同的分类方法。这里根据嵌入式系统的复杂程度,可以将嵌入式系统分为以下4类。 1.单个微处理器 这类系统一般由单片嵌入式处理器组成,嵌入式处理器上集成了存储器I/O设备、接口设备(如A/D转换器)等,嵌入式处理器加上简单的元件如电源、时钟元件等就可以工作。单个微处理器这类系统可以在小型设备中(如温度传感器、烟雾和气体探测器及断路器)找到。这类设备是供应商根据设备的用途来设计的。 常用的嵌入式处理器如Philips公司的89LPCxxx公司系列,Motorola公司的MC68HC05、08系列等。 2.嵌入式处理器可扩展的系统 这类嵌入式系统使用的处理器根据需要,可以扩展存储器,也可以使用片上的存储器,处理器一般容量在64KB左右,字长为8位或16位。在处理器上扩充少量的存储器和外部接口,以构成嵌入式系统。这类系统可在过程控制、信号放大器、位置传感器及阀门传动器等中找到。 3.复杂的嵌入式系统 组成这样的嵌入式系统的嵌入式处理器一般是16位、32位等,用于大规模的应用,由于软件量大,因此需要扩展存储器。扩展存储器一般在1MB以上,外部设备接口一般仍然集成在处理器上,常用的嵌入式处理器有ARM系列、Motorola公司的PowerPC系列、Coldfire系列等。 这类系统可见于开关装置、控制器、电话交换机、电梯、数据采集系统、医药监视系统、诊断及实时控制系统等。它们是一个大系统的局部组件,由它们的传感器收集数据并传递给该系统。这种组件可同计算机一起操作,并可包括某种数据库(如事件数据库)。 4.在制造或过程控制中使用的计算机系统 对于这类系统,计算机与仪器、机械及设备相连来控制这些装置的工作。这类系统包括自动仓储系统和自动发货系统。在这些系统中,计算机用于总体控制和监视,而不是对单个设备直接控制。过程控制系统可与业务系统连接(如根据销售额和库存量来决定订单或产品量)。在许多种情况下,两个功能独立的子系统可在一个主系统操作下一同运行。如控制系统和安全系统:控制子系统控制处理过程,以使系统中的不同设备能正确地操作和相互作用于生产产品;而安全子系统则用来降低那些会影响人身安全或危害环境的误操作风险。 1.3 嵌入式处理器 嵌入式处理器是嵌入式系统的核心。 目前据不完全统计,全世界嵌入式处理器的品种总量已经超过1000种,流行体系结构有30几个系列,其中8051体系的占有多半。生产8051单片机的半导体厂家有20多个,超过了350种衍生产品,仅Philips就有近100种。现在几乎每个半导体制造商都生产嵌入式处理器,越来越多的公司有自己的处理器设计部门。嵌入式处理器的寻址空间一般为64KB~16MB,处理速度为0.1 MIPS~2000 MIPS,常用封装为8~144个引脚。根据其现状,嵌入式处理器可以分成嵌入式微控制器(EMCU)、嵌入式DSP处理器(EDSP)、嵌入式微处理器(EMPU)、嵌入式片上系统(ESoC)4类(如图1-1所示)。 图1-1 嵌入式处理器分类 1. 嵌入式微处理器(Embedded Microprocessor Unit, EMPU) 嵌入式微处理器的基础是通用计算机中的CPU。在应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度地减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。 和工业控制计算机相比,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点,但是在电路板上必须包括ROM、RAM、总线接口、各种外设等器件,从而降低了系统的可靠性,技术保密性也较差。嵌入式微处理器及其存储器、总线、外设等安装在一块电路板上,称为单板计算机,如STD-BUS、PC104等。近年来,德国、日本的一些公司又开发出了类似“火柴盒”式名片大小的嵌入式计算机系列OEM产品。 嵌入式处理器目前主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM系列等。 2. 嵌入式微控制器(Embedded Microcontroller Unit, EMCU) 嵌入式微控制器又称单片机,顾名思义,就是将整个计算机系统集成到一块芯片中。嵌入式微控制器一般以某一种微处理器内核为核心,芯片内部集成ROM/EPROM、RAM、总线、总线逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A、Flash RAM、EEPROM等各种必要的功能和外设。为适应不同的应用需求,一般一个系列的单片机具有多种衍生产品,每种衍生产品的处理器内核都是一样的,不同的是存储器和外设的配置及封装。这样可以使单片机最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。 和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制器。 嵌入式微控制器目前的品种和数量最多,比较有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。另外还有许多半通用系列,如支持USB接口的MCU 8XC930/931、C540、C541;支持IIC、CAN-Bus、LCD及众多专用MCU和兼容系列。目前MCU占嵌入式系统约70%的市场份额。 特别值得注意的是近年来提供X86微处理器的著名厂商AMD公司,将Am186CC/CH/CU等嵌入式处理器称之为Microcontroller,Motorola公司把以Power PC为基础的PPC505和PPC555亦列入单片机行列。TI公司亦将其TMS320C2XXX系列DSP作为MCU进行推广。 3. 嵌入式DSP处理器(Embedded Digital Signal Processor,EDSP) DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP功能,过渡到采用嵌入式DSP处理器。嵌入式DSP处理器有两个发展来源:一是DSP处理器经过单片化、EMC改造、增加片上外设成为嵌入式DSP处理器,TI的TMS320C2000 /C5000等属于此范畴;二是在通用单片机或SOC中增加DSP协处理器,例如Intel的MCS-296和Infineon(Siemens)的TriCore。 推动嵌入式DSP处理器发展的另一个因素是嵌入式系统的智能化,例如各种带有智能逻辑的消费类产品,生物信息识别终端,带有加解密算法的键盘, ADSL 接入、实时语音压解系统,虚拟现实显示等。这类智能化算法一般都是运算量较大,特别是向量运算、指针线性寻址等较多,而这些正是DSP 处理器的长处所在。 嵌入式DSP处理器比较有代表性的产品是Texas Instruments的TMS320系列和Motorola的DSP56000 系列。 TMS320系列处理器包括用于控制的 C2000系列,移动通信的C5000系列,以及性能更高的C6000和C8000系列。DSP56000目前已经发展成为DSP56000,DSP56100,DSP56200和DSP56300等几个不同系列的处理器。另外Philips公司今年也推出了基于可重置嵌入式DSP结构低成本、低功耗技术上制造的R. E. A. L DSP处理器,特点是具备双Harvard结构和双乘/累加单元,应用目标是大批量消费类产品。 4. 嵌入式片上系统(Embedded System on Chip,ESoC) 随着EDI的推广和VLSI设计的普及化,以及半导体工艺的迅速发展,在一个硅片上实现一个更为复杂的系统的时代已来临,这就是SoC。各种通用处理器内核将作为SoC设计公司的标准库,和许多其他嵌入式系统外设一样,成为 VLSI设计中一种标准的器件,用标准的VHDL等语言描述,存储在器件库中。用户只需定义出其整个应用系统,仿真通过后就可以将设计图交给半导体工厂制作样品。这样除个别无法集成的器件以外,整个嵌入式系统大部分均可集成到一块或几块芯片中去,应用系统电路板将变得很简洁,对于减小体积和功耗、提高可靠性非常有利。 SoC可以分为通用和专用两类。通用系列包括Infineon的TriCore,Motorola的M-Core,某些ARM系列器件,Echelon和Motorola联合研制的Neuron芯片等。专用SoC一般专用于某个或某类系统中,不为一般用户所知。一个有代表性的产品是Philips的Smart XA,它将XA单片机内核和支持超过2048 位复杂RSA算法的CCU单元制作在一块硅片上,形成一个可加载Java或C语言的专用的SoC,可用于公众互联网,如Internet安全方面。 1.4 嵌入式系统的组成 在1.1.3小节中介绍过,嵌入式系统是面向特定应用的。实际应用中,绝大多数嵌入式系统是用户针对特定任务定制的,但就其组成而言,它们一般都是由嵌入式系统的硬件、嵌入式系统的软件,开发工具和开发系统这3部分组成的。 1.嵌入式系统的硬件 嵌入式系统的硬件主要包括以下几个模块,如图1-2所示。  嵌入式核心芯片,嵌入式微处理器、嵌入式微控制器、嵌入式数字信号处理器、嵌入式片上系统。  用以保存固件的ROM(非挥发性只读存储器)。  用以保存程序数据的RAM(挥发性的随机访问存储器)。  连接微控制器和开关、按钮、传感器、模/数转化器、控制器、LED(发光二极管)和显示器的I/O端口。 图1-2 嵌入式系统的硬件组成 2.嵌入式系统的软件 嵌入式系统软件由嵌入式操作系统和相应的各种应用程序构成。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。 嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式操作系统具有通用操作系统的基本特点,如能够有效地管理越来越复杂的系统资源;能够把硬件虚拟化,使得开发人员从繁忙的驱动程序移植和维护中解脱出来;能够提供库函数、驱动程序、工具集以及应用程序。此外,与通用操作系统相比较,嵌入式操作系统还具有以下特点。  编码体积小:适合在嵌入式系统的有限存储空间中运行。  面向应用,可裁剪和移植:系统功能可根据需求裁剪、调整和生成,以满足最终产品的设计需求,可进一步缩小编码体积,有效地运行。  实时性强:软件要求固态存储,以提高速度。软件代码要求高质量、高可靠性和实时性。  可靠性高:嵌入式系统可无须人工干预独立运行,并处理各类事件和故障。  专用性强,嵌入式操作系统和硬件的结合非常紧密,一般要针对硬件进行系统的移植。 3.嵌入式系统的开发工具和开发系统 嵌入式系统的硬件和软件位于嵌入式系统产品本身,开发工具则独立于嵌入式系统产品之外。开发工具一般用于开发主机,包括语言编译器、连接定位器、调试器等,这些工具一起构成了嵌入式系统的开发系统和开发工具。 1.5 嵌入式系统中信息表示与运算基础 1.5.1 进位计数制与转换 人们常用的是十进制数制,但计算机中为便于存储及物理实现,采用了二进制数制。二进制数的基数为2,只有0和1两个数码。为了书写和阅读的方便,一般使用十六进制数来表示二进制数,十六进制数的基数为16,数码有:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E和F。本书中,通常用数字后面跟一个英文字母来表示该数的数制。十进制数用D(Decimal)或省略,二进制数用B(Binary),十六进制数用H(Hexadecimal)来表示。二进制数、十进制数、十六进制数之间的数码转换如表1-1所示。 表1-1 二进制数、十进制数、十六进制数之间的数码转换表 二进制数 十进制数 十六进制数 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 续表 二进制数 十进制数 十六进制数 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F 10000 16 10 1.5.2 计算机中数的表示 计算机中的数是用二进制数来表示的,在某些情况下,要处理的数全是正数,此时就没有符号问题,如表示地址的数,为无符号数。8位无符号数的表示的数的范围是0~255,16位无符号数的表示的数的范围是0~65 535。 带符号数与无符号数的处理是有差别的,数的符号也是用二进制表示的,一般用最高有效位来表示数的符号,正数用0表示,负数用1来表示。为了运算方便常用原码、补码和反码表示机器中的数。8位二进制原码表示的数的范围是-127~+127,16位二进制原码表示的数的范围是-32 767~+32 767。原码表示的数比较直观,与真实值转换方便。 正数的反码表示与原码相同,负数的反码表示为该数的原码除符号位外按位取反。补码表示法中,一个正数的补码仍与原码相同,即数的最高有效位为0表示为正数,其余几位则表示该数的数值。一个负数的补码,最高有效位为1,其余几位按原码各位求反,最末位加1。例如,一个十进制数+98(十六进制62H)用八位字长表示的二进制原码为01100010B,其反码和补码也均为01100010B。而-98的二进制原码为11100010B,反码是10011101B,补码为10011110B。 1.5.3 非数值数据编码 嵌入式系统不仅能够对数值数据进行处理,还能够对文本和其他的非数值数据信息进行处理。非数值数据是指不能进行算术运算的数据。除字符之外,非数值数据还包括汉字、声音等。 1.字符表示 字符包括大小写英文字母、数字、运算符、标点符号等,这些字符在机器里必须用二进制数来表示,目前计算机中最常用的是ASCII码(American Standard Code for Information Interchange,美国信息交换标准代码)。这种代码用一个字节(实际为7位二进制码)来表示一个字符,共有128个字符。 2.汉字编码 一个英文字符集,共有85个字符(52个英文大小写字母、10个数字字符、23个标点等图符),要输入它们只需要50个键左右的英文键盘即可。但是汉字是一种象形字,其数量多,是任何一种文字没有的。根据对我国汉字使用频度的研究,可把汉字分为:高频字,约100个;常用字,约3000个;次常用字,约4000个;罕见字,约8000个;死字,约4500个。 即正在使用的汉字字种有一万五千多个。根据我国1981年公布的《通信用汉字字符集(基本集)及其交换码标准》GB2312-80方案,把高频字、常用字和次常用字归纳为汉字基本字符集,共6763个字。按出现的频度分为:一级汉字3755个,二级汉字3008个,还有西文字母、数字、图形符号等682个,再加上专用汉字和符号,共7445个,这么多的汉字,其输入成为人们必须花大力气研究的课题,研究输入设备从4个方面展开: (1)整字大键盘输入 整字大键盘是仿照旧式中文打印机,把汉字按部阵或习惯排列起来,用光笔选字的输入设备。它比较直观,但由于尺寸所限,所列出的汉字量只有一级汉字。同时在输入中英文混写的文件时,输入速度很慢。 (2)手写输入 手写输入是正在开发的一种输入方法,当汉字笔画很少时,速度较快;当笔画较多时,速度也很慢,并且要求书写要工整。 (3)语音输入 这是目前正在开发中的一种输入方法,它适合于联想及按惯用的修辞方式所表达的意思完整的句子。诗词、人名、地名以及单个字的输入比较困难,而且由于每个人的发音的特殊性,说话的音调、速度、情绪等都会影响输入的准确性。 (4)小键盘输入 小键盘输入,即是用标准英文键盘输入,这是目前人们已经花费了大量精力研究的一种输入方法。目前已提出的小键盘输入方法有2000种左右,但总体上可分为如下几种:  汉字拼音输入码,如全拼码、双拼码等。  汉字字形编码,如五笔字型码、首尾码、101码等。  汉字音形编码。  汉字数字编码,如区位码、电报码等。 小键盘输入的基本原理是:内码与字符一一对应,而外码(输入码)与内码具有多对一的关系。即对于内码可以有不同的输入方法,或者说,每一种汉字输入程序的基本功能,都是将输入码转换成内码。汉字的内码是计算机内部处理和存储汉字时使用的代码,内码有许多种,但以我国制定推行的GB2312-80国家标准信息交换用汉字编码(简称国标码)为最好。国标码采用两个字节7位汉字编码方式表示一个汉字,每个字节只使用后7位。这种设计虽使得汉字与英文字符完全兼容,但当英文字符与汉字混合存储时,容易发生冲突。所以只能把国标码的两个字节的最高位(最左端一位)置1,或者把其中一个字节的最高位置1后,作为汉字的内码使用。如此,汉字的内码既兼容英文ASCII码,又不会与ASCII码产生二义性,同时汉字与国标码具有很简单的一一对应关系。 当某一种输入码输入一个汉字到计算机之后,汉字管理模块立刻将它转换成2字节长的GB2312-80国标码,同时将国标码的每个字节的最高位置为1,作为汉字的标识符,即将国标码转换为机器内部的代码——汉字内部码。 如:“啊”的国标码是 0011 0000 0001 0010(3012H) 生成的汉字内码为1011 0000 1001 0010(B0A2H) 除此之外,使用较多的内码还有HZ码(国标码的变形)和大五码(Big-5)等。 无论用哪一种输入码输入汉字,在计算机内部存储时,都采用机内码,这也就是用一种汉字输入法输入的文档,也可以用另一种输入法对其修改的原因。 3.语音编码 语音信号是模拟信号,而计算机中的信息是用二进制表示的,语音的编解码就是将语音的模拟信号转换为二进制数字信号在计算机中处理、传输,到了接收端,再将数字信号还原为模拟语音。在语音编码方面,需要了解和解决的问题有: (1)音调、音强和音色 声音是通过声波改变空气的疏密度,引起鼓膜振动而作用于人的听觉的。从听觉的角度,音调、音强和音色称为声音的三要素。  音调决定于声波的频率,声波的频率高,声音的音调就高;声波的频率低,声音的音调就低。人的听觉范围为20Hz~20kHz。  音强又称响度,决定于声波的振幅。声波的振幅大,则声音强,声波的振幅小,声音弱。  音色决定于声波的形状。混入音波基波中的泛音不同,将得到不同的音色。 (2)波形采样量化 任何用符号表示的数字都是不连续的。波形的数字化过程是将连续的波形用离散的(不连续的)点近似代替的过程。在原波形上取点,称为采样。用一定的标尺确定各采样点的值(样本),称为量化。量化之后,很容易就将它们转换为二进制码。 (3)采样量化的技术参数 一个数字声音的质量,决定于以下技术参数: ① 采样频率 采样频率,即一秒内的采样次数,它反映了采样点之间的间隔大小。间隔越小,丢失的信息越少,数字声音就越逼真细腻,要求的存储量也就越大。由于计算机的工作速度和存储容量有限,而且人耳的听觉上限为20kHz,所以采样频率不可能,也不需要太高。根据奈奎斯特采样定律,只要采样频率高于信号中的最高频率的两倍,就可以从采样中恢复原始的波形。因此,40kHz以上的采样频率足以使人满意。目前多媒体计算机的采样频率有3个:44.1kHz、22.05kHz和11.025kHz。CD唱片采用的是44.1kHz。 ② 测量精度 测量精度是样本在纵向方向的精度,是样本的量化等级,它通过对波形纵向方向的等分而实现。由于数字化最终要用二进制表示,所以常用二进制数的位数表示样本的量化等级。若每个样本用八位二进制数表示,则共有8个量级。若每个样本用十六位二进制数表示,则共有16个量级。量级越多,采样越接近原始波形;数字声音质量越高,要求的存储也越大。目前多媒体计算机的标准采样量级有八位和十六位两种。 ③ 声道数 声音记录只产生一个波形,称为单声道。声音记录只产生两个波形,称为立体声双道。立体声双道比单声道声音丰满、空间感强,但需两倍的存储空间。 1.5.4 差错控制编码 在数据通信方面,嵌入式系统与通用型计算机系统一样,要求信息传输具有高度的可靠性,即要求误码率足够低。然而,不管是模拟通信系统还是数字通信系统,都存在干扰和信道传输特性不好而对信号造成的不良影响,致使数据信号在传输过程中不可避免地会发生差错。为满足通信要求,尽可能减少和避免误码出现,一方面要提高硬件的质量,另一方面可以采用抗干扰编码(或差错控制编码)。 差错控制编码的基本思想是:在发送端被传送的信息码序列的基础上,按照一定的规则加入若干“监督码元”后进行传输,这些加入的码元与原来的信息码序列之间存在着某种确定的约束关系。在接收数据时,检验信息码元与监督码元之间的既定的约束关系,如该关系遭到破坏,则在接收端可以发现传输中的错误,乃至纠正错误。当然,用纠(检)错来控制差错的方法来提高数据通信的可靠性是用信息量的冗余和降低系统的效率为代价来换取的。 1.差错控制编码的分类 差错控制码从不同的角度出发,有不同的分类方法。 1)根据码组的功能,可分为检错码和纠错码两类。一般地说,检错码是指能自动发现差错的码。纠错码是指不仅能发现差错而且能自动纠正差错的码。 2)按照信息码元与监督码元的约束关系,又可分为分组码和卷积码两类。 3)按码组中监督码元与信息码元之间的关系可分为线性码和非线性码两类。 2.几种常用的差错控制编码 下面介绍几种常用的差错控制编码,它们都属于分组码一类,而且是行之有效的。 1)奇偶校验码 这是一种简单的检错码,其编码规则是先将所要传输的数据码元分组,在分组数据后面附加一位监督位,使得该组码连同监督位在内的码组中的“1”的个数为偶数(称为偶校验)或奇数(称为奇校验),在接收端按同样的规律检查,如发现不符就说明产生了差错,但是不能确定差错的具体位置,即不能纠错。 奇偶校验码的这种监督关系可以用公式表示。设码组长度为n,表示为(an-1,an-2,an-3,…,a0),其中前n-1位为信息码元,第n位为监督位a0。 在偶校验时有 a0⊕a1⊕…⊕an-1=0 其中⊕表示模2和,监督位a0可由下式产生 a0= a1⊕a2⊕…⊕an-1 在奇校验时有 a0⊕a1⊕…⊕an-1=1 监督位a0可由下式产生 a0= a1⊕a2⊕…⊕an-1⊕1 这种奇偶校验只能发现单个或奇数个错误,而不能检测出偶数个错误,因而它的检错能力不高。 如:信息码1110011000按照偶监督规则插入监督位应为 a0=1⊕1⊕1⊕0⊕0⊕1⊕1⊕0⊕0⊕0=1 信息位 监督位 1110011000 1 2)海明码 海明码是1950年由美国贝尔实验室提出来的,是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。 (1)校验位的位数 在前面讨论奇偶校验时,如按偶监督,由于使用了一位监督位a0,故它能和信息位an-1,an-2,an-3,…,a1一起构成一个代数式,a0⊕a1⊕…⊕an-1=0。在接收端解码时,实际上就是在计算 S= a0⊕a1⊕…⊕an-1 当S=0,就认为无错;若S=2,就认为有错。上式称为监督关系式,S称为校正子。由于校正子S的取值只有这两种,所以它只能代表有错和无错这两种信息,而不能指出错码的位置。可以推出,如果监督位增加一位,即变成两位,则能增加一个类似上式的监督关系式。两个校正子有4种可能的组合:00、01、10、11,能表示4种不同信息。若用一种表示无错,则其余3种就有可能用来表示一位错码的3种不同位置。同理,r个监督关系式能指示一位错码的(2r-1)个可能位置。 一般说来,若信息长为n,信息位数为k,则监督位数r = n-k。如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求 2r-1≥n或2r≥k+r+1 推导并使用信息长度为k位的码字的海明码,所需步骤如下: ① 确定最小的校验位数r,将它们记成P1、P2、…、Pr,每个校验位符合不同的奇偶测试规定。 ② 原有信息和r个校验位一起编成长为k+r位的新码字。选择r校验位(0或1)以满足必要的奇偶条件。 ③ 对所接收的信息作所需的r个奇偶检查。 ④ 如果所有的奇偶检查结果均为正确的,则认为信息无错误。 如果发现有一个或多个错了,则错误的位由这些检查的结果来惟一地确定。 (2)码字格式 从理论上讲,校验位可放在任何位置,但习惯上校验位被安排在1、2、4、8、…的位置上。当k=4,r=3时,信息位和校验位的分布情况如表1-2所示(其中,P1、P2、P3为校验位,D1、D2、…、D4为信息位)。 表1-2 海明码中校验位和信息位的定位 码字位置 B1 B2 B3 B4 B5 B6 B7 校验位 x x x 信息位 x x x x 复合码字 P1 P2 D1 P3 D2 D3 D4 (3)校验位的确定 r个校验位是通过对k+r位复合码字进行奇偶校验而确定的。其中: P1负责校验海明码的第1、3、5、7、…(P1、D1、D2、D4、…)位,(包括P1自己) P2负责校验海明码的第2、3、6、7、…(P2、D1、D3、D4、…)位,(包括P2自己) P3负责校验海明码的第4、5、6、7、…(P3、D2、D3、D4、…)位,(包括P3自己) 如对k=4,r=3的码字进行海明码编码,校验位采用偶校验,则需r=3次偶检查。这里3次检查分别以(以R1、R2、R3表示)在表1-3所示各位的位置上进行。 表1-3 校验位测试 测试条件 码字位置 1 2 3 4 5 6 7 R1 x x x x R2 x x x x R3 x x x x 可得到3个校验方程及确定校验位的3个公式(B1、B2、…、B7表示码字): R1=B1⊕B3⊕B5⊕B7=0 得P1=D1⊕D2⊕D4 R2=B2⊕B3⊕B6⊕B7=0 得P2=D1⊕D3⊕D4 R3=B4⊕B5⊕B6⊕B7=0 得P3=D2⊕D3⊕D4 若有4位信息码1011,求3个校验位P1、P2、P3值并生成海明码编码,则可用上面3个公式解出(如表1-4所示)。 表1-4 4位信息码的海明编码 码字位置 B1 B2 B3 B4 B5 B6 B7 码位类型 P1 P2 D1 P3 D2 D3 D4 信息码 1 0 1 1 校验位 0 1 0 编码后的海明码 0 1 1 0 0 1 1 以上是发送方的处理过程,在接收方也可根据这3个校验方程对接收到的信息进行同样的奇偶测试: A=B1⊕B3⊕B5⊕B7=0 B=B2⊕B3⊕B6⊕B7=0 C=B4⊕B5⊕B5⊕B7=0 若3个校验方程都成立,即方程式右边都等于0,则说明没有错。若不成立即方程式右边不等于0,说明有错。从3个方程式右边的值,可以判断哪一位出错。例如,如果第3位数字反了,则C=0(此方程没有B3),A=B=1(这两个方程有B3)。可构成二进数CBA,以A为最低有效位,则错误位置就可简单地用二进数CBA=011指出。 同理,若3个方程式右边的值为001,说明第1位出错。若3个方程式右边的值为100,说明第4位出错。 3)循环冗余校验码 循环冗余校验码(Cyclic Redundancy Check,简称CRC循环码),是一种能力非常强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。 循环冗余校验码(CRC)的基本原理是:在k位信息码后再拼接r位的校验码,整个编码长度为n位,因此,这种编码又叫(n,k)码。对于一个给定的(n,k)码,可以证明存在一个最高次幂为n-k=r的多项式g(x),根据g(x)可以生成k位信息的校验码,而g(x)叫做这个CRC码的生成多项式。 (1)几个基本概念 ① 多项式与二进制数码 为了便于用代数理论来研究CRC码,把长为n的码组(二进制数)与n-1次多项式建立一一对应的关系,即把二进制数的各位当作是一个多项式的系数,二进制数的最高位对应x的最高幂次,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。 多项式包括生成多项式g(x)和信息多项式C(x)。 如多项式为A(x)=x5+x4+x2+1,可转换为二进制码组110101。 ② 生成多项式 生成多项式g(x)是接收端和发送端的一个约定,也对应一个二进制数,在整个传输过程中,这个数始终保持不变。 生成多项式应满足以下条件:  生成多项式的最高位和最低位必须为1。  当被传送信息(CRC码)任何一位发生错误时,被生成多项式作模2除后应该使余数不为0。  不同位发生错误时,应该使余数不同。  对余数继续作模2除,应使余数循环。 常用的生成多项式: CRC(12位)= X12+X11+X3+ X2+ X +1 CRC(16位)= X16+X15+X2+1 CRC(CCITT)= X16+X12+X5+1 ③ 模2除 模2除做法与算术除法类似,但每一位除(减)的结果不影响其他位,即不向上一位借位,所以实际上就是异或。然后再移位作下一位的模2减。步骤如下:  用除数对被除数最高几位作模2减,没有借位。  除数右移一位,若余数最高位为1,商为1,并对余数作模2减。若余数最高位为0,商为0,除数继续右移一位。  一直做到余数的位数小于除数时,该余数就是最终余数。 (2)FCS帧检验列 我们将信息位后添加的r位校验码,称为信息的FCS帧检验列(Frame Check Sequence)。FCS帧检验列可由下列方法求得:假设发送信息用信息多项式C(x)表示,将C(x)左移r位,则可表示成C(x)*2r,这样C(x)的右边就会空出r位,这就是校验码的位置。通过C(x)*2r除以生成多项式g(x)得到的余数就是校验码。 例如:当信息码为11100110时,采用CRC进行差错检测,如用的生成多项式为11001,则求出FCS的产生过程。 解:此题生成多项式11001有5位(r+1),因此要把原始报文C(x)即11100110左移4(r)位变成111001100000,在信息尾加4个“0”,就等于信息码乘以24,然后被生成多项式模2除。 所以4位余数0110即为所求的FCS。 (3)CRC码的编码方法 编码是在已知信息位的条件下求得循环码的码组,码组前k位为信息位,后r=n-k位是监督位。因此,要首先根据给定的(n,k)值选定生成多项式g(x),即选定一个r(n-k)次多项式作为g(x)。因为CRC的理论很复杂,本书主要介绍生成多项式后计算校验码的方法。结合前面FCS帧检验列的产生过程,可得CRC码的生成步骤如下: ① 将x的最高幂次为r的生成多项式g(x)转换成对应的r+1位二进制数。 ② 将信息码左移r位,相当于对应的信息多项式C(x)*2r。 ③ 用生成多项式(二进制数)对信息码作模2除,得到r位的余数——FCS帧校验列。 ④ 将余数拼到信息码左移后空出的位置,得到完整的CRC码。 例:如上题所举例,信息11100110的CRC码为11001100110。 (4)CRC码的解码方法 在发送方,CRC码对应的发送码组多项式A(x)应能被生成多项式g(x)整除,所以在接收端可以将接收到的编码多项式R(x)用原生成多项式g(x)去作模2除。当传输中未发生错误时,接收码组与发送码组相同,即R(x)= A(x),故接收码组R(x)必定能被g(x)整除;若码组在传输中发生错误,则R(x)≠A(x),R(x)被g(x)除时可能除不尽而有余项。因此,我们就以余项是否为零来判别码组中有无错码。 (5)CRC码的检错纠错原理 若有一位出错,则余数不为0,而且不同位出错,其余数也不同。如果循环码有一位出错,用G(x)作模2除将得到一个不为0的余数。如果对余数补0继续除下去,将发现一个有趣的结果:各次余数将按表1-5顺序循环。例如第一位出错,余数将为001,补0后再除(补0后若最高位为1,则用除数作模2减取余;若最高位为0,则其最低3位就是余数),得到第二次余数为010。以后继续补0作模2除,依次得到余数为100,011,…,反复循环,这就是“循环码”名称的由来。这是一个有价值的特点。如果在求出余数不为0后,一边对余数补0继续作模2除,同时让被检测的校验码字循环左移。表1-5说明,当出现余数(101)时,出错位也移到A7位置。可通过异或门将它纠正后在下一次移位时送回A1。 表1-5 (7,4)CRC码的出错模式(G(x)=1011) 收到的CRC码字 余数 出错位 码位 A7 A6 A5 A4 A3 A2 A1 正确 1 0 1 0 0 1 1 000 无 错误 1 0 1 0 0 1 0 001 1 1 0 1 0 0 0 1 010 2 1 0 1 0 1 1 1 100 3 1 0 1 1 0 1 1 011 4 1 0 0 0 0 1 1 110 5 1 1 1 0 0 1 1 111 6 0 0 1 0 0 1 1 101 7 例:CRC码(g(x)=1011),若接收端收到的码字为1010111,用g(x)=1011作模2除得到一个不为0的余数100,说明传输有错。将此余数继续补0用g(x)=1011作模2除,同时让码字循环左移1010111。作了4次后,得到余数为101,这时码字也循环左移4位,变成1111010,说明出错位已移到最高位A7,将最高位1取反后变成0111010。再将它循环左移3位,补足7次,出错位回到A3位,就成为一个正确的码字1010011。 1.6 评估嵌入式系统处理器的主要指标 嵌入式领域中有许多用来分析处理器性能的标准,例如测量处理器执行一段指定程序的速度。目前,一般消费者能够使用的测试向量非常多,问题是如何正确选择最为接近目标应用的测试向量。换句话说,要先明确预期最终应用程序在待选平台上的运行情况和测试目的,然后再挑选符合要求的特定测试向量。 1. MIPS测试基准 测试方法是计算在单位时间内各类指令的平均执行条数,即根据各种指令的使用频度和执行时间来计算。其单位是每秒百万条指令,表示为MIPS。MIPS开始是定义在VAX 11/70小型计算机上的,它是第一台以MIPS速度运行的机器。但许多专业人士认为MIPS测试结果说明不了什么问题。因为指令只是性能度量空间中的一维而已,当把它扩展到不同体系结构上时,其工作方式完全不同。除非是用VAX系列的机器进行对比,否则MIPS并没什么意义。 2. Dhrystone Dhrystone测试基准是个简单的C语言程序,它可以被编译成大约2000条汇编代码,并且它不使用操作系统提供的服务功能。Dhrystone测试基准也符合古老的VAX系列标准。目前,Dhrystone是市面上最普遍适用的测试向量,但EEMBC验证实验室(EEMBC Certification Labs,ECL)的最新研究指出,Dhrystone不仅不适于作为嵌入式系统的测试向量,甚至在其他大多数场合下都不适合进行应用。Dhrystone有许多漏洞,例如:易被非法利用、人为痕迹明显、代码长度太短、缺乏验证及标准的运行规则等。 3. EEMBC EEMBC测试向量是现在新兴流行的被认为比Dhrystone和MIPS更具有实际价值的测试基准。不同于Dhrystone测试基准,EEMBC由其技术委员会开发,表示实际应用中能用来测量处理器能力的算法。EEMBC(Embedded Microprocessor Benchmark Consortium)是一个非营利性组织,致力于帮助设计人员快速有效地选择处理器。该组织到目前为止共发布了46个性能测试向量,分别应用于电信、网络、消费性产品、办公室设备和汽车电子这5大领域。EEMBC测试基于每秒钟算法执行的次数和编译代码大小的统计结果。因为编译器对代码大小和执行效率会产生巨大的影响,所以每种测试必须包括足够夺得编译器信息并设置不同的优化选项。EEMBC 发展势头很好,并有可能成为嵌入式系统开发人员进行处理器和编译器性能比较的工业标准。 需要说明的是,虽然某些定量指标能够帮助评价不同的嵌入式处理器,但是一次详尽的分析比较仍然非常重要。这些需要仔细衡量的因素包括性能分析、功耗和效率分析、开发工具支持以及价格(必须从设备和系统角度全面考虑)。 1.7 嵌入式系统的应用 嵌入式系统的应用前景非常广泛,人们将会时时处处地接触到嵌入式产品,从家里的洗衣机、电冰箱,到作为交通工具的自行车、小汽车,到办公室里的远程会议系统等。特别是以蓝牙为代表的小范围无线接入协议的出现,使嵌入式无线电的概念悄然兴起。当嵌入式的无线电芯片的价格可被接受时,它的应用可能会无所不在。在家中、办公室、公共场所,人们可能会使用数十片甚至更多这样的嵌入式无线电芯片,将一些电子信息设备甚至电气设备构成无线网络;在车上、旅途中,人们利用这样的嵌入式无线电芯片可以实现远程办公、远程遥控,真正实现把网络随身携带。下面介绍几种具体的应用。 1. 嵌入式移动数据库 所谓的移动数据库是支持移动计算的数据库,有两层含义:(1) 用户在移动的过程中可以联机访问数据库资源。(2)用户可以带着数据库移动。典型的应用场合有:在开着的救护车上查询最近的医院。该系统由前台移动终端、后台同步服务器组成,移动终端上有嵌入式实时操作系统和嵌入式数据库;其他包括手机、PDA、掌上电脑等各种移动设备。用掌上电脑(或PDA)上网,人们可以随时随地获取信息。 2. 嵌入式系统在智能家居网络中的应用 智能家居网络(E-Home)指在一个家居中建立一个通信网络,为家庭信息提供必要的通路;在家庭网络操作系统的控制下,通过相应的硬件和执行机构,实现对所有家庭网络中家电和设备的控制和监测。家用电器将向数字化和网络化发展,电视机、微波炉、电话等都将嵌入计算机并通过家庭控制中心与Internet连接,转变为智能网络家电。其网络结构的组成必然有家庭网关。家庭网关主要实现控制网络和信息网络的信号综合并与外界接口,以便作远程控制和信息交换。不论是网关还是各家电上的控制模块,都需要有嵌入式操作系统。这些操作系统必须具有内嵌式、实时性好、多用户的特点。 3. 嵌入式语音芯片 嵌入式语音芯片基于嵌入式操作系统,采用语音识别和语音合成、语音学层次结构体系和文本处理模型等技术;可以应用在手持设备、智能家电等多个领域,赋予这些设备人性化的交互方式和便利的使用方法;也可应用于玩具中,实现声控玩具、仿真宠物、与人对话的玩具;也能应用于车载通信设备实现人机交流。该芯片应用在移动通信设备中,比如,手机上短消息来时,我们不必费力地去看,而是可以听到声音。 4. 基于小范围无线通信协议的嵌入式产品 以蓝牙为代表的小范围无线接入协议与嵌入式系统的结合,必将推动嵌入式系统的广泛应用。近来,基于这些协议的嵌入式产品层出不穷,包括各种电话系统、无线公文包、各类数字电子设备以及在电子商务中的应用。这些产品以其微型化和低成本的特点为它们在家庭和办公室自动化、电子商务、工业控制、智能化建筑物和各种特殊场合的应用开辟了广阔的前景。 5. 其他工控和仿真领域,嵌入式设备也早已得到广泛应用 我国的工业生产需要完成智能化,数字化改造,智能控制设备、智能仪表、自动控制等为嵌入式系统提供了很大的市场。而工控、仿真、数据采集、军用等领域一般都要求操作系统支持实时。在服务业和交通系统,嵌入式也在发挥着越来越重要的作用。 思考题 1. 什么是嵌入式系统? 2. 与通用型计算机相比,嵌入式系统有哪些特点? 3. 根据嵌入式系统的复杂程度,嵌入式系统可分为哪4类? 4. 举例介绍嵌入式处理器有哪几类? 5. 从硬件系统来看,嵌入式系统由哪几部分组成?画出简图。 6. 嵌入式系统中,非数值数据编码主要包括哪几种? 7. 若在嵌入式系统采用CRC码进行信息传输,接收端收到的码字为1011011,已知生成多项式g(x)=1011,问收到的码字是否正确?出错位是哪一位?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值