基于VxWorks嵌入式系统的数据通信章-课件5_第1页
基于VxWorks嵌入式系统的数据通信章-课件5_第2页
基于VxWorks嵌入式系统的数据通信章-课件5_第3页
基于VxWorks嵌入式系统的数据通信章-课件5_第4页
基于VxWorks嵌入式系统的数据通信章-课件5_第5页
已阅读5页,还剩217页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章嵌入式微处理器5.1嵌入式硬件系统基本架构5.2嵌入式微处理器概述5.3ARM嵌入式微处理器5.4PowerPC架构及寄存器概述5.5本章小结本章从嵌入式硬件体系结构入手,介绍了嵌入式微处理器的基本概念,PowerPC微处理器和ARM微处理器,并对S3C2410X微处理器进行了详细介绍。通过本章的学习,我们可以较为完整地理解嵌入式微处理器的基础知识。5.1嵌入式硬件系统基本架构嵌入式系统的硬件可分为核心微处理器、各种存储设备、电源管理模块以及外设与扩展。图5.1所示为一个典型的嵌入式硬件系统的组成。图5.1嵌入式硬件系统的组成

1.嵌入式微处理器嵌入式微处理器是各种面向用户、面向产品、面向应用的嵌入式系统的核心部件,是控制系统运行的硬件单元。嵌入式微处理器种类非常繁多,从4位、8位、16位到32位、64位都有;内存寻址空间也从几千字节(KB)发展到吉字节(GB)以上;处理速度从几兆赫兹(MHz)到吉赫兹(GHz)以上;芯片引脚数目从几十上升到几百。嵌入式微处理器一般有以下几个特点:

(1)体积小、集成度高、价格较低。这一特点与嵌入式系统的有限空间约束和较低的成本价格需求相适应。

(2)对实时多任务有很强的支持能力,能完成多任务并且有较短的中断响应时间,从而使内部的代码和实时内核的执行时间减少到最低限度。

(3)具有很强的存储区保护功能。由于嵌入式系统的软件结构已模块化,为避免在软件模块之间出现错误后的交叉影响,需要设计强大的存储区保护功能,同时也有利于软件诊断。

(4)可扩展的微处理器结构,能迅速地开发出满足各种应用的高性能的嵌入式系统。

(5)功耗低。尤其是用于便携式的无线及移动的计算和通信设备中靠电池供电的嵌入式系统时,要求嵌入式处理器的功耗只有毫瓦(mW)甚至微瓦(μW)级。

2.各种类型存储器嵌入式存储系统由高速缓冲区、主存储器和辅助存储器组成。其中高速缓冲区由一种小型、快速的静态随机存储器(SRAM)组成,它保存部分主存储器内容的拷贝,用来减少微处理器访问主存储器所花的访问时间。主存储器一般采用存储密度较大的同步动态存储器(SDRAM),用来存放即将要被微处理器执行的程序和数据。嵌入式系统中的程序存储器一般使用闪速存储器(Flash),用来存放程序和常数数据。辅助存储器可以根据嵌入式系统的实际需要进行相应配置,如采用CF卡、SD卡等。

3.I/O设备一般而言,嵌入式硬件系统包括丰富的I/O设备和基本硬件单元——电源、时钟和复位电路、访问外设的I/O端口及其他片上或片外单元。常见的物理外设有UART、USB接口、以太网接口、定时器、小键盘、LED显示单元、LCD显示单元、DAC和ADC等。这些设备极大地丰富了嵌入式系统的应用领域。

4.电源管理稳定高效的电源在嵌入式系统中至关重要,一般分为内核电源器和外部电源的硬件设计。考虑到功耗等因素,一般的嵌入式微处理器带有电源管理器,通过操作系统对系统的电源进行管理,这样可提高整个系统的电源效率,并且可以为系统中的每一个外围设备模块提供相应的电源管理。外部电源的硬件设计,则要根据具体芯片的电源输入来确定。5.2嵌入式微处理器概述嵌入式硬件系统以嵌入式微处理器为核心,主要由嵌入式微处理器、总线、存储器、输入/输出接口和外围设备组成。嵌入式微处理器拥有丰富的片内资源,同时提供了扩展接口,还可以根据应用的需要进一步扩展外部接口,实现硬件的剪裁。5.2.1嵌入式微处理器的体系结构目前,嵌入式微处理器体系结构采用冯·诺依曼(VonNeumann)结构或哈佛(Harvard)结构;指令系统采用精简指令集系统(ReducedInstructionSetComputer,RISC)或复杂指令集系统(ComplexInstructionSetComputer,CISC)。此外,嵌入式微处理器也采用了通用微处理器的先进技术来提高CPU性能。

1.微处理器体系结构

1)冯·诺依曼体系结构计算机系统一般由中央处理器(CPU)、存储器系统和输入/输出设备组成。存储器系统负责存储全部数据和指令,并可以根据所给的地址对其进行读/写操作。如图5.2(a)所示,数据和指令存在同一存储器中的计算机称为冯·诺依曼结构计算机。CPU有若干个可以存放内部使用值的内部寄存器,其中典型的寄存器是程序计数器(PC)。CPU根据PC中的内容从存储器中取出指令,然后对指令进行译码、执行。图5.2冯·诺依曼体系结构和哈佛体系结构(a)冯·诺依曼体系结构;(b)哈佛体系结构

2)哈佛体系结构哈佛体系结构的特点是程序存储器和数据存储器分开,程序计数器(PC)只指向程序存储器而不指向数据存储器。这样,即使数据总线被占用,CPU也可以继续从程序内存中取指令执行,直到遇到访问内存的指令才不得不停下来等待DMA结束。这样就在CPU的操作和外设DMA的操作之间引入某种并行度,从而可以提高系统的效率。独立的程序存储器和数据存储器提高了数字处理的性能,让两个存储器有不同的端口,可提供较大的存储器宽度。于是,数据和程序不必再竞争同一个端口,加快了机器的运行时间。图5.2(b)给出了这种体系结构。

2.指令系统传统的CISC结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系结构会越来越复杂。然而,在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%;而余下的80%的指令却不经常使用,在程序设计中只占20%,显然,这种结构是不太合理的。基于以上的不合理性,美国加州大学伯克利分校在1979年提出了RISC的概念。RISC并非只是简单地减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。RISC结构的特点包括:优先选取使用频率最高的简单指令,避免复杂指令;简易的译码指令格式;将指令长度固定,指令格式和寻址方式种类减少;在单周期内完成指令等。

CISC微处理器和RISC微处理器的差异见表5.1。表5.1CISC和RISC微处理器的对比

3.嵌入式微处理器中采用的先进技术在嵌入式系统中采用如流水线、超标量等先进技术,可以极大地提高CPU性能,更适用于嵌入式系统的开发和要求。

1)流水线技术计算机执行一条指令可以分若干个阶段,每个阶段的操作相对独立,因此常采用流水线(Pipeline)的重叠技术来提高系统的性能。在流水线装满以后,几条指令可以并行执行,这样既可以充分利用现有硬件资源,又提高了CPU的运行效率。不同架构的微处理器,或者同一架构不同系列的微处理器,其流水线的级数也可能不同。流水线极大限度地利用了CPU资源,使每个部件在每个时钟周期都并行工作,大大提高了效率。

2)超标量技术超标量(Superscalar)是指在CPU中有一条以上的流水线,并且每个时钟周期内可以完成一条以上指令,这种设计称为超标量技术。此技术是通过重复设置多条指令执行部件,同时处理并完成多条指令的并行操作,来达到提高处理速度的目的。目前,大多数的嵌入式微处理器都采用单周期指令机,现在也开始朝着每周期能处理多重指令的超标量机发展。但是,超标量微处理器在执行的过程中必须动态地检查指令的相关性,其应用受到一定的限制。

3)总线和总线桥总线用于微处理器与各部件之间的连接。总线桥可用来连接不同度、不同规格的总线。目前流行的有x86系列总线和AMBA(AdvancedMicrocontrollerBusArchitecture)总线等。ARM研发的AMBA总线提供了一种特殊的机制,可将RISC微处理器集成在其他IP芯核和外设中。5.2.2嵌入式处理器的种类通常,根据微处理器功能的不同,嵌入式微处理器可以分成四大类型,如图5.3所示。图5.3嵌入式微处理器的种类

1.嵌入式微处理器嵌入式微处理器(MicroprocessorUnit,MPU)由通用计算机中的CPU演变而来。与通用计算机中的CPU不同的是,在嵌入式应用中,将微处理器装配在专门设计的电路板上,只保留和嵌入式应用紧密相关的功能硬件,去除其他的冗余功能部分,并配上必要的外围扩展电路,从而大幅度减小系统体积和功耗。此外,MPU虽然在功能上和通用CPU基本相同,但为了满足嵌入式应用的特殊要求,嵌入式微处理器在功耗、功能配置、封装形式等方面都做了相应的改进,同时在工作温度、抗电磁干扰、可靠性等方面进行了各种增强。相对而言,由于片内周边电路不足,必须在印制电路板上装备ROM、RAM、总线接口和各种外设接口等器件,因而降低了系统的可靠性和保密性。嵌入式微处理器目前主要有ARM、PowerPC、MIPS、x86、68K等系列。

2.嵌入式微控制器嵌入式微控制器(Microcontroller,MCU)又称单片机。顾名思义,就是将整个计算机系统的主要硬件集成到一块芯片中。MCU一般以某一种微处理器的CPU为核心,芯片内集成了ROM/EPROM/Flash、RAM、总线、总线逻辑、定时/计数器、看门狗、I/O、串行口、脉宽调制输出、A/D、D/A等各种必要的功能和外设。为适应不同的应用需求,一般一个系列的MCU具有多种衍生产品,每种衍生产品的CPU都是一样的,不同的是存储器和外设的配置及封装。这样可以使MCU最大限度地和应用需求相匹配,功能不多不少,从而减少功耗和成本。

3.嵌入式DSP处理器嵌入式DSP(DigitalSignalProcessor)处理器对系统结构和指令进行了特殊设计,系统结构上采用哈佛结构和专用的硬件乘法器,指令为快速DSP指令(属RISC精简指令集),使其适合于对处理器运算速度要求较高的应用领域。典型的应用如数字信号处理领域的数字滤波、快速傅立叶变换、频谱分析等方面;DSP也常常应用于多媒体信号处理方面,例如,移动电话、语音识别、MPEG-1、MPEG-2、MPEG-4等多媒体播放系统。推动嵌入式DSP处理器发展的另一个因素是嵌入式系统的智能化。例如,各种带有智能逻辑的消费类产品,生物特征识别的终端,带有加密解密算法的键盘,虚拟现实显示等,这类算法一般运算量较大,特别是向量运算、指针线性寻址等较多,而这些正是DSP处理器的长处所在。

4.嵌入式片上系统简单地讲,SoC就是从整个系统的功能和性能出发,用软硬件结合的设计和验证方法,利用IP复用及深亚微米技术,将微处理器核、IP核和存储器等集成在单一芯片上。SoC的设计基础是IP复用技术。IP核是一种预先设计好、已经过验证、具有某种确定功能的集成电路、器件或部件。它有三种不同的形式:软核、固核和硬核。在EDA设计工具中,常把这些IP组织在IP元件库中,供用户使用。用户可以通过把不同的IP模块整合在一个硅片上来完成一个完整的系统。5.3ARM嵌入式微处理器在各种类型的嵌入式处理器中,基于ARM内核构建的各种ARM处理器以其高性能、低成本、低功耗和小体积在16位/32位嵌入式领域得到了广泛的应用。5.3.1ARM简介

ARM(AdvancedRISCMachine)公司作为知识产权供应商,专门从事基于RISC技术芯片设计开发和技术授权,通过转让设计许可,由合作公司生产各具特色的芯片。各半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。

(1)工业控制领域:作为32位RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展。ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。

(2)无线通信领域:目前已有超过85%的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。

(3)网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得了广泛支持,也对DSP的应用领域提出了挑战。

(4)消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到了广泛应用。

(5)成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。除此之外,ARM微处理器及技术还应用于许多其他的领域,并会在将来得到更广泛的应用。5.3.2ARM内核体系结构

1. ARM920T的基本结构

ARM920T微处理器基于ARM9TDMI核、ARM9TDMI核提供简单的总线接口,允许用户设计自己的Cache和存储系统,可以作为单独的核嵌入到目标系统。TDMI的基本含义如下:

T——支持16位压缩指令集Thumb。

D——支持片上Debug。

M——内嵌硬件乘法器Multiplier。

I——嵌入式ICE,支持片上断点和调试点。

ARM920T微处理器的结构如图5.4所示。图5.4ARM920T微处理器的结构框图

2. RISC架构

ARM微处理器是典型的RISC微处理器,只有加载/存储(Load/Store)指令可以访问存储器,数据处理指令只对寄存器的内容进行操作。

3. AMBA总线嵌入式系统使用和PC不同的总线技术。ARM微处理器广泛采用高级微控制器总线结构(AMBA),它包括ASB(AdvancedSystemBus)、AHB(AdvancedHigh-performanceBus)和APB(AdvancedPeripheralBus)。AMBA总线支持将多个CPU、存储器和外围设备集成在片上系统中。AHB直接连接到CPU,它是为高速传输而优化设计的,支持流水线技术、突发传输、分离事务和多总线控制器等高性能总线特性,用于连接性能高速的片上外设;APB假定所有外设均工作在主从方式,且不执行流水线操作,以简化外设和总线控制器中所需的逻辑,APB用于连接低速外设。AMBA总线和CPU、存储器以及外围设备的连接如图5.5所示。图5.5AMBA总线和CPU、存储器以及外围设备的连接

4.工作状态

ARM微处理器共有两种工作状态:

(1) ARM状态:32位,执行字对准的ARM指令。

(2) Thumb状态:16位,执行半字对准的Thumb指令。

ARM微处理器在开始执行代码时始终从ARM状态开始执行,可以通过相应的状态切换命令切换两种状态,状态的切换不影响微处理器的模式或寄存器的内容。

5.运行模式

ARM微处理器支持7种运行模式,运行模式可以通过软件控制改变,外部中断或异常处理也可以引起模式发生改变。ARM微处理器的7种运行模式分别如下:

(1)用户模式(User):ARM处理器正常的程序执行状态。

(2)快速中断模式(FIQ):用于高速数据传输或通道处理。

(3)外部中断模式(IRQ):用于通用的中断处理。

(4)管理模式(Supervisor):操作系统使用的保护模式,系统复位后的默认模式。

(5)数据访问中止模式(Abort):实现虚拟存储器和存储器保护。

(6)系统模式(System):运行具有特权的操作系统任务。

(7)未定义指令终止模式(Undefined):支持硬件协处理器的软件仿真。大多数的应用程序运行在用户模式下,当微处理器运行在用户模式下时,某些被保护的资源是不能被访问的。除用户模式外,其余的所有6种模式称为非用户模式或特权模式(PriviledgedModes);其中除用户模式和系统模式以外的5种又称为异常模式(ExceptionModes),常用于处理中断和异常以及需要访问、受保护的系统资源等状况。

6.寄存器组

ARM微处理器共有37个32位寄存器:31个通用寄存器,包括程序计数器(PC);6个状态寄存器。在微处理器的不同状态和运行模式下,可以访问的寄存器不同,但在任何时候,15个通用寄存器(R0~R14)、程序计数器(PC)、一个或者两个状态寄存器都是可以访问的。以下仅讨论ARM状态下的寄存器组。

1)通用寄存器通用寄存器包括R0~R15,可分成3类:未分组寄存器,R0~R7;分组寄存器,R8~R14;程序计数器,PC(R15)。ARM状态下的寄存器组如图5.6所示。图5.6ARM状态下的通用寄存器和程序寄存器未分组寄存器:在所有的微处理器运行模式下,R0~R7都分别指向同一个32位物理寄存器。分组寄存器:R8~R14各自访问的物理寄存器取决于当前的微处理器模式。R8~R12各有两组物理寄存器:一组为快速中断模式,另一组为快速中断模式以外的其他模式。R8~R12没有指定特殊用途。R13、R14各有6个分组的物理寄存器。R13通常用作堆栈指针,R14用作子程序链接寄存器(LinkRegister,LR)。程序计数器PC(R15):在ARM状态下,位[1:0]为0,位[31:2]保存PC。由于ARM体系结构采用了多级流水技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。

2)程序状态寄存器

ARM体系结构包含一个当前程序状态寄存器(CurrentProgramStatusRegister,CPSR)和五个备份的程序状态寄存器(SavedProgramStatusRegister,SPSR)。在任何运行模式下都可以访问CPSR、SPSR用来进行异常处理,其功能包括:

(1)保存ALU中的当前操作信息。

(2)控制允许和禁止中断。

(3)设置微处理器的运行模式。程序状态寄存器的格式如图5.7所示。图5.7程序状态寄存器的格式条件码标志位:N、Z、C、V均为条件码标志位(ConditionCodeFlags)。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的;在Thumb状态下,仅有分支指令是有条件执行的。条件码标志位的具体含义如表5.2所示。表5.2条件码标志位的含义控制位:PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果微处理器运行在特权模式,则这些位也可以由程序修改。中断禁止位I、F:当I位为1时,禁止外部中断;而当F位为1时,禁止快速中断。

T标志位:该位反映微处理器的运行状态。当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。运行模式位M[4:0]:决定了微处理器的运行模式,具体含义如表5.3所示。保留位:PSR中的其余位为保留位(Reserved),当改变PSR中的条件码标志位或者控制位时,保留位不被改变,在程序中也不使用保留位来存储数据。保留位将用于ARM版本的扩展。表5.3运行模式位M[4:0]的含义

7.中断与异常当正常的程序执行流程发生暂时的停止时,称之为异常。ARM体系中的异常,与8位/16 位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。在ARM体系结构中,中断作为一种类型的异常进行响应处理。

1)异常类型如表5.4所示,ARM内核支持7种中断和异常。不同的中断处于不同的处理模式,具有不同的优先级,而且每个中断都有固定的中断入口地址。当一个中断发生时,相应的R14存储中断返回地址,SPSR存储状态寄存器CPSR的值。

2)对异常的响应当一个异常出现以后,ARM微处理器会执行以下几步操作:

(1)将下一条指令的地址存入相应连接寄存器LR,以使程序在处理异常返回时能从正确的位置重新开始执行。从ARM状态进入时,LR寄存器中保存的是下一条指令的地址。

(2)将CRSP复制到相应的SPSR中。

(3)根据异常类型,强制设置CPSR的运行模式位。

(4)强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。表5.4异常类型

3)从异常返回异常处理完毕后,ARM微处理器会执行以下几步操作从异常返回:

(1)将连接寄存器LR的值减去相应的偏移量后送到PC中。

(2) SPSP复制回CPSR中。

(3)若在进入异常处理时设置了中断禁止位,则需在此清除。

8.存储系统

1)地址空间

ARM体系结构采用232个8位字节的单一、线性地址空间,可将地址空间看做由230个32位的字组成。每个字的地址是字对准的,地址低两位为00,故地址可被4整除。字对准地址是A的字由地址为A、A+1、A+2和A+3的4字节组成。

2)存储器格式

ARM体系结构可以用两种方法存储数据,称为大端格式和小端格式。图5.8给出了两种存储格式的具体结构。大端格式较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。小端格式较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。图5.8存储器格式

9.流水线结构

ARM9TDMI采用5级流水线:取指(Fetch)、译码(Decode)、执行(Execute)、访存(Memory)和写回(Write)。取指——根据程序计数器PC中的地址从程序存储器中取出指令,送到指令寄存器。译码——将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如果指令要求操作数,则进行操作数寻址。执行——根据指令译码结果在ALU中进行运算。访存——数据存储器读/写。写回——将指令运算结果写回寄存器组。5.3.3基于ARM9的S3C2410X微处理器

Samsung公司推出的16位/32位RISC微处理器S3C2410X,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。S3C2410X采用ARM920T内核和AMBA总线,并增加了丰富的外围资源,其内部结构图如图5.9所示。其结构包括:

(1) 1个LCD控制器,支持STN、TFT液晶显示屏。

(2) 3个通道的UART。

(3) 4个通道的DMA,支持存储器和I/O口之间的传输。

(4) 4个具有PWM功能的16位定时/计数器和1个16位内部定时器,支持外部时钟源。

(5)外部存储器管理(SDRAM控制器和芯片选择逻辑)。

(6) 8通道的10位ADC,具有10位分辨率。

(7)触摸屏接口。

(8) IIS总线接口。

(9) 2个USB主机接口,1个USB设备接口。

(10) 2个SPI接口。

(11) SD卡接口和MMC卡接口。

(12) 16位看门狗定时器。

(13) 117位通用I/O口和24位外部中断源。

(14) 8通道10位AD控制器。

(15)电源管理。图5.9S3C2410X内部结构图

1.存储控制器

S3C2410X存储控制器为片外存储器提供控制信号,具有以下特点:

(1)支持大端、小端模式(可由编程选择)。

(2)地址空间:每Bank为128MB,分为8Bank(共1GB)。

(3) Bank0~Bank6的起始地址固定,Bank7的起始地址可变;Bank0支持16位/32位数据存取,Bank1~Bank7支持8位/16位/32位数据存取。表5.5给出了Bank6/Bank7的地址空间分配情况。S3C2410X复位后存储器映射如图5.10所示。表5.5Bank6/Bank7的地址空间分配图5.10S3C2410X复位后存储器映射

Bank0的数据总线宽度只能是16位或者32位,由复位时OM[1:0]决定。Bank0作为启动ROMBank(映射地址0x00000000),因此在对ROM进行第一次存取前就必须决定Bank0的总线宽度。

2.NANDFlash控制器

S3C2410X支持外部NANDFlash启动,启动代码存储在NANDFlash上。S3C2410X内部专门配置了一块SRAM缓存用于支持NANDFlash启动,在启动时,NANDFlash中的前4KB代码被加载到SRAM缓存中并被执行。其工作原理如图5.11所示。图5.11NANDFlash工作原理通常,启动代码将NANDFlash中的程序代码拷贝到SDRAM中执行,利用硬件纠错码对NANDFlash中的数据进行有效性检验。图5.12给出了NANDFlash控制器的功能模块结构。当NANDFlash控制器使用自启动模式(AutoBootMode)时,需要完成以下工作:

(1)复位完成。

(2)在自启动模式下,将NANDFlash中的前4KB启动代码拷贝到4KB内部缓存中。

(3)将4KB内部缓存地址映射为Bank0起始地址。

(4)微处理器执行4KB缓存中的启动代码。图5.12NANDFlash控制器功能模块

3.时钟和电源管理

S3C2410X的时钟和电源管理模块包括三个部分:时钟管理逻辑、USB时钟控制和电源管理。

1)时钟管理逻辑时钟管理逻辑产生三种时钟信号:FCLK、HCLK、PCLK。同时时钟管理逻辑还包括两个锁相环:MPLL(用于FCLK、HCLK、PCLK)、UPLL(用于USB)。

(1) FCLK:用于ARM920T。

(2) HCLK:用于AHB总线(ARM920T、内存控制器、中断控制器、LCD控制器、DMA和USB)。

(3) PCLK:用于APB总线(WDT、IIS、I2C、PWMtimer、MMCinterface、ADC、UART、GPIO、RTC、SPI)。时钟源来自外部石英晶体或者外部时钟,时钟发生器包括一个外部晶振和两个能够产生高频时钟信号的锁相环,结构框图如图5.13所示。时钟源选择由复位时OM[3:2]状态决定,具体内容见表5.6。振荡电路可按照表5.6时钟源选择,并根据图5.14进行设计。图5.13时钟和电源管理结构框图表5.6时 钟 源 选 择图5.14振荡电路设计示例

2) USB时钟控制

USB主机和USB设备接口要求48MHz时钟,S3C2410X内部包含了为USB产生48MHz时钟的专用锁相环(UPLL)。

3)电源管理电源管理模块可以通过软件的方式控制系统时钟,从而达到降低功耗的目的,这种机制和锁相环、控制逻辑等相关。图5.15给出了系统时钟分配的控制电路。图5.15时钟分配控制电路

S3C2410X有四种电源模式,下面予以分别介绍。

Normal模式:在该模式下,CPU、基本的控制器和所有外设控制模块正常工作,但图8.15中部分外设模块可以通过软件关闭电源以达到降低功耗的作用。

Slow模式:系统工作在不加PLL的低时钟频率模式下。

Idle模式:停止CPU的时钟,但保持总线控制器、存储器控制器、中断控制器和电源管理器的时钟工作。

Power-Off模式:在该模式下,关闭CPU和内部逻辑模块的电源。这四种模式下的时钟和电源状态关系如表5.7所示。

S3C2410X的四种电源模式之间不允许随意转换,其状态转换如图5.16所示。表5.7S3C2410X四种电源模式图5.16S3C2410X的四种电源模式状态转换图

4.PWM定时器

S3C2410X包括5个16位定时器。定时器0、1、2、3具有PWM(脉冲宽度调制)功能;定时器4仅用于内部定时,没有输出引脚;定时器0含有一个死区发生器。定时器0和1共用一个8位预分频器,定时器2、3和4共用另一个8位预分频器。8位预分频器根据寄存器TCFG0和TCFG1中的值对PCLK进行分频。每个定时器从时钟分频单元接收信号,时钟分频单元本身从相应的8位预分频器接收时钟信号,为定时器提供1/2、1/4、1/8、1/16、TCLK五种分频信号。定时器计数缓存寄存器(TCNTBn)存储向下计数的初始值,这个初始值是在定时器被使能时加载的。定时器比较缓存寄存器(TCMPBn)存储和向下计数值相比较的初始值。TCNTBn和TCMPBn双缓存保证了在频率和占空比发生变化时可以产生稳定的输出。每个定时器都有自己的16位向下计数器,在定时器时钟的驱动下,当计数值为零时,产生时钟中断请求,通知CPU时钟操作完成,同时TCNTBn中的值重新加载到计数器,从而开始新的计数操作。但在定时器计数期间,如果通过清除TCONn定时器使能位使定时器停止计数,则TCNTBn中的值不会被重新加载到计数器中。

TCMPBn中的值用于脉宽调制。当定时器控制逻辑中比较寄存器的值等于计数值时,定时器控制逻辑改变输出电平,比较寄存器决定PWM输出的开关时间。

16位PWM定时器功能框图如图5.17所示。图5.1716位PWM定时器功能框图

1)预分频和分频一个8位的预分频和一个4位分频输出的频率如表5.8所示。

2)基本定时器操作如图5.18所示,一个定时器(定时器通道5除外)包含寄存器TCNTBn、TCNTn、TCMPBn、TCMPn。其中,TCNTn和TCMPn是内部寄存器的名字。当定时器计数为0时,TCNTBn和TCMPBn的值分别加载到TCNTn和TCMPn。当TCNTn中的值为0时将产生中断请求。表5.8PWM定时器预分频和分频图5.18PWM定时器基本时钟操作

3)自动加载和双缓存

S3C2410XPWM定时器的双缓存功能:在不停止当前定时器操作的情况下可以重新加载下次定时器操作的计数初值。定时器的计数初值写入寄存器TCNTBn,当前的计数值则从寄存器TCNTOn读入。尽管读入TCNTBn中的值,但所读的值并不指示计数器的当前状态,而是用于下个计数周期的初始值。当TCNTn中的值为0时,自动加载操作将TCNTBn中的值拷贝到TCNTn中,但如果自动加载位为0,则不进行自动加载操作。双缓存功能的操作实例如图5.19所示。图5.19S3C2410XPWM定时器双缓存功能的操作实例

4)定时器初始化定时器自动加载操作只发生在向下计数器为0时,所以首先必须由用户来定义TCNTn的值,此时需要通过手动更新位来加载初始值。以下是启动定时器的步骤:

(1)向寄存器TCNTBn和TCMPBn写入初始值。

(2)设置相应定时器的手动更新位。

3)设置相应定时器的开始位启动定时器。

5.I/O端口

S3C2410X有117个多用I/O端口引脚,分为以下8类端口:

·PortA(GPA):23位输出端口;

·PortB(GPB):11位输入/输出端口;

·PortC(GPC):16位输入/输出端口;

·PortD(GPD):16位输入/输出端口;

·PortE(GPE):16位输入/输出端口;

·PortF(GPF):8位输入/输出端口;

·PortG(GPG):16位输入/输出端口;

·PortH(GPH):11位输入/输出端口。

1)端口配置每个端口可以通过软件配置为普通I/O口或者复用功能,以满足系统的设计要求。在主程序运行之前所有用到的引脚都必须明确定义。如果引脚没有用于复用功能,则配置为I/O口。

2)端口寄存器

S3C2410X同样采用一组端口寄存器来控制端口的操作。端口数据寄存器(GPADAT~GPHDAT):如果端口配置为输出端口,可以向GPnDAT的相应位写数据;如果端口配置为输入端口,可以从GPnDAT的相应位读数据。端口上拉寄存器(GPBUP~GPHUP):端口上拉寄存器控制每个端口的上拉电阻使能和禁止。相应位为0,表示上拉电阻使能;相应位为1,表示上拉电阻禁止。

I/O端口控制寄存器:表5.9中仅列出端口A的相关寄存器,其他端口的寄存器请读者参考S3C2410X的用户手册。表5.9端口控制寄存器

6.通用异步收发器

S3C2410X的通用异步收发器(UART)提供三路独立的异步串行I/O,可运行在中断模式或者DMA模式,换句话说,UART可以产生中断或DMA请求进行CPU和UART之间的数据传输。UART可以支持高达230.4kb/s的数据速率,如果由外设提供时钟,UART还可以运行在更高的频率下。每个UART通道都包含两个16字节的用于接收/发送数据的FIFO。

S3C2410XUART具有可编程的波特率、1~2位停止位、5~8位的数据宽度和奇偶校验。每个UART包含一个波特率发生器、传送单元、发送单元和控制单元,如图5.20所示。图5.20S3C2410XUART结构框图

1)数据发送发送的数据帧是可编程的,它包含1位开始位,5~8位的数据位,1位可选奇偶校验位和1~2位停止位,这些可通过设置寄存器ULCONn实现。发送器本身也可以产生中止条件,此中止条件强制串行输出为逻辑0状态,该状态表示一帧发送结束。

2)数据接收类似于数据发送,UART接收的数据帧也是可编程的,它包含1位开始位,5~8位数据位,1位可选奇偶校验位和1~2位停止位,这些可通过设置寄存器ULCONn实现。接收器能检测到数据覆盖错误、奇偶错误、帧错误和间隔状态,它们在UART状态寄存器UTRSTATn/UERSTATn中有相应的标志位。数据覆盖错误指新到达的数据覆盖了先前到达但尚未被读取的数据。奇偶校验错误指数据接收器检测到的奇偶状态和发送的数据不一致。帧错误指接收的数据没有有效停止位。传送中止指RxDn输入保持逻辑0状态的时间大于一个帧的发送时间。

3)自动流控制(AFC)

S3C2410XUART0和UART1由信号nRTS和nCTS进行流控制。如果用户准备将UART连接至Modem,可以在寄存器UMCONn中禁止自动流控制和通过软件控制nRTS信号。在AFC模式下,nRTS信号取决于接收端的状态,nCTS信号控制发送端的操作。仅当nCTS有效时(在AFC模式下,nCTS信号表示另一接收端FIFO准备接收数据),UART才会发送FIFO中的数据。在UART接收数据前,只要当接收FIFO有多于两个字节的空间时,nRTS就会被置为有效,而若接收FIFO少于一个字节的空间时,nRTS会被置为无效(在AFC模式下,nRTS信号表示本接收端FIFO准备接收数据)。UART自动流控制接口如图5.21所示。图5.21UART自动流控制接口

4) RS-232C接口如果将UART连接至Modem接口,则需要nRTS、nCTS、nDSR、nDTR、DCD和nRI信号,因为自动流控制不支持RS-232C接口,所以需要通过软件的方式控制I/O信号。

5)中断DMA请求

S3C2410X中的每个UART有七种状态(Tx/Rx/Error)信号:数据覆盖错误、奇偶错误、帧错误、传送中止、接收数据缓冲就绪、发送数据缓冲空以及发送移位器空闲。它们在UART状态寄存器UTRSTATn/UERSTATn中有相应的标志位。若控制寄存器UCONn中的错误状态中断使能位被置为1,则数据覆盖错误、奇偶错误、帧错误和传送中止状态会引起错误状态中断请求。当检验到错误状态中断请求发生时,通过读寄存器UERSTSTn的值可以识别引起中断的信号。

6)波特率发生器每个UART控制器的波特率发生器提供发送器和接收器所用的时钟,波特率发生器的时钟源可以采用S3C2410X内部系统或者UCLK。

7.中断控制器

S3C2410X中断控制器可以接收56个中断源(如:DMA控制器、UART、I2C等)的中断请求。从内部设备和外部中断请求引脚输入的多个中断请求经过中断仲裁后,中断控制器向ARM920T内核发出FIQ或IRQ中断请求。中断仲裁过程依赖于硬件优先级判决逻辑,仲裁结果被写入中断未决寄存器。中断过程如图5.22所示。图5.22中断优先级判决逻辑

1)中断控制器操作程序状态寄存器(PSR)中F位和I位设置:若ARM920T微处理器的程序状态寄存器PSR中的F位置1,则微处理器不接收来自中断控制器的快速中断(FIQ)。同样,若I位置1,则微处理器不接收来自中断控制器的中断请求(IRQ)。因此,必须将F位或I位清0并且将中断屏蔽寄存器INTMSK的相应位清0,微处理器才能正常接收相应的中断请求。中断模式:ARM920T有两种中断模式:FIQ和IRQ。表5.10列出了决定中断模式的中断源。表5.10S3C2410X中断源未决寄存器:S3C2410X有2个未决寄存器,即源未决寄存器(SRCPND)和中断未决寄存器。源未决寄存器SRCPND相应位被置1,经过中断仲裁后中断未决寄存器INTPND的相应位也被置1。如果中断被屏蔽,当中断源请求中断服务时,寄存器SRCPND的相应位被置1,但寄存器INTPND的内容不发生改变。当寄存器INTPND中的位被置位时,无论I标志或F标志是否被清0,中断服务例程都会被执行。寄存器SRCPND和INTPND中的内容可以被读或写,因此服务例程开始执行时应首先清除寄存器SRCPND和INTPND中的未决状态标志。中断屏蔽寄存器(INTMSK):中断屏蔽寄存器指示中断是否被禁止,若INTMSK的相应位为0,则中断会被正常响应;若INTMSK的相应位置1,则中断产生时,源未决寄存器SRCPND相应位被置1。

2)中断源

ARM920T微处理器的中断控制器可支持56个中断源的中断请求,如表5.10所示。

3)中断优先级中断优先级判决逻辑:中断优先级判决逻辑由6个一级仲裁逻辑和1个二级仲裁逻辑组成,如图5.22所示。中断优先级:每个仲裁逻辑可以处理6个中断请求,仲裁方式由仲裁模式控制位(ARB_MODE)和选择控制信号(ARB_SEL)决定。选择控制信号和相应中断优先级的关系见表5.11。表5.11选择控制信号和相应中断优先级的关系任何选择控制信号下,REQ0总保持最高优先级,REQ5总保持最低优先级。通过改变选择控制信号,可以改变REQ1~REQ4的优先级。如果ARB_MODE被清0,则ARB_SEL不会自动改变,此时仲裁逻辑运行在固定的优先级模式,用户可以手动配置ARB_SEL以改变优先级模式。如果ARB_MODE被置1,ARB_SEL将会自动改变,改变规则如表5.12所示。表5.12ARB_SEL改变规则

4)中断控制器的专用寄存器中断控制器包含5个控制寄存器:源未决寄存器、中断模式寄存器、屏蔽寄存器、优先级寄存器和中断未决寄存器。来自中断源的中断请求首先进入源未决寄存器,然后根据中断模式寄存器的内容将中断分为两组(FIQ和IRQ),并根据优先级寄存器对多个IRQ进行仲裁。源未决寄存器(SRCPND):源未决寄存器SRCPND是一个32位的寄存器。它指示中断源等待中断请求被响应,其每一位对应一个中断源,当中断源产生中断请求并等候响应时,SRCPND不受中断屏蔽寄存器和判优逻辑的影响。从一个特定的中断服务例程(ISR)返回时,该例程对应的源未决寄存器必须被清0,否则中断控制器会误认为是又一个中断请求等待响应。中断模式寄存器(INTMOD):中断模式寄存器是一个32位的寄存器,其每一位对应一个中断源。若某一位被置1,则相应位对应的中断运行在FIQ模式;否则运行在IRQ模式。注意在FIQ模式下,中断控制器只能响应一个中断源,因此,寄存器INTMOD中只能有一位被置1。中断屏蔽寄存器(INTMSK):中断屏蔽寄存器是一个32位的寄存器,其每一位对应一个中断源。若某一位被置1,则CPU不会响应来自该中断源的中断请求;否则,中断请求被响应。中断未决寄存器(INTPND):中断未决寄存器是一个32位的寄存器,其每一位表示响应中断请求是否有最高优先级。INTPND处于判优逻辑之后,因此同时只能有一位被置1。

8.直接存储器存取

S3C2410X支持4通道的直接存储器存取(DMA)控制器,DMA控制器位于系统总线和外设总线之间。DMA控制器的每个通道可在以下情况以DMA方式传送数据:

(1)源设备和目的设备都在系统总线上。

(2)源设备在系统总线上,目的设备在外设总线上。

(3)源设备在外设总线上,目的设备在系统总线上。

(4)源设备和目的设备都在外设总线上。

DMA的优点是设备间数据的传送无需CPU的干预。

1) DMA请求源如果在寄存器DCON中选择了H/W/DMA请求模式,则DMA控制器的每个通道可以选择4个DMA请求源中的一个。如果选择了S/W请求模式,则DMA请求源无任何意义。表5.13中列出了每个通道的请求源。表中nXDREQ0和nXDREQ1表示外部源(即外设),I2SSDO和I2SSDI分别表示IIS发送和接收。表5.13DMA请求源

2) DMA操作

DMA的操作可以用三个状态的有限状态机来描述。状态1:此状态为初始态,DMAACK和INTREQ为0,DMA控制器等待DMA请求,当DMA请求到达时,进入状态2。状态2:DMAACK为1,计数器(CURR_TC)的值从寄存器DCON[19:0]中加载。注意:DMAACK保持1的状态直到被清除。状态3:在此状态下,处理DMA原子操作的子有限状态机被初始化。子有限状态机从源地址读入数据并写入目的地址。此操作需要考虑传送数据的大小。在全服务模式下这个操作不断重复直到计数器变为0,而在单服务模式下仅执行一次。

3)外部DMA请求/确认(DREQ/DACK)协议

DMA的请求/确认协议有三类模式:

·单服务命令;

·单服务握手;

·全服务握手。每一类都定义了DMA请求/确认信号和协议之间的关系。

9. LCD控制器

S3C2410X内置的LCD控制器由传送LCD图像数据的逻辑组成,LCD控制器的功能是将显示缓存中的图像数据传送到外部LCD驱动电路。

LCD控制器在灰度LCD上使用基于时间的抖动算法和帧速率控制方法,可支持单色、4级灰度或16级灰度模式;在彩色LCD上,可支持256色和4096色。对于不同的LCD显示屏,其水平像素点、垂直像素点、数据接口宽度、接口时序和刷新率不同,LCD控制器可编程实现支持不同的LCD。

LCD控制器功能框图如图5.23所示。图5.23LCD控制器功能框图其中的外部信号解释如下:

(1) VFRAME/VSYNC/STC:帧同步信号(STN)/垂直同步信号(TFT)/SECTFT信号。

(2) VLINE/HSYNC/CPV:行同步脉冲信号(STN)/水平同步信号(TFT)/SECTFT信号。

(3) VCLK/LCD_HCLK:像素时钟信号(STN/TFT)/SECTFT信号。

(4) VD[23:0]:LCD像素数据输出端口(STN/TFT/SECTFT)。

(5) VM/VDEN/TP:LCD驱动电路AC偏压信号(STN)/数据使能信号(TFT)/SECTFT信号。

(6) LEND/STH:行结束信号(TFT)/SECTFT信号。

(7) LCD_PWREN:LCD显示屏电源使能控制信号。

(8) LCDVF0:SECTFT信号OE。

(9) LCDVF1:SECTFT信号REV。

(10) LCDVF2:SECTFT信号REVB。5.4PowerPC架构及寄存器概述5.4.1处理器简述

603e处理器实现指令集大致可分为三大类,即定点数指令、浮点数指令和分支指令。定点数指令可以操作byte(8位)、halfword(16位)、word(32位)和doubleword(64位)大小的操作数。浮点数指令则可操作单精度和多精度浮点数。基于PowerPC架构的处理器的指令都是4字节长并且32位对齐的。该套指令集提供32个GPRs和32个FPRs与存储设备之间存取操作,操作数的宽度可为byte(8位)、halfword(16位)、word(32位)和doubleword(64位)。有符号整数指令的实现方式有两种。没有直接修改内存的算术指令,如果想使用load/store类指令进行计算修改内存数据,只能把内存中的数据先加载到寄序器中,然后再写回内存。图5.24说明了指令的逻辑过程。图5.25(a)~(g)说明了PowerPC架构的用户态指令集寄存器。图5.24指令的逻辑过程图5.25PowerPC架构的用户态指令集寄存器(a)条件寄存器;(b)连接寄存器;(c)计数寄存器;(d)定点异常寄存器;(e)通用寄存器;(f)浮点寄存器;(g)浮点状态和控制寄存器5.4.2指令的组合和分类每一个指令都是4字节32位对齐的,所以不论指令寻址方式在处理器上是怎样实现的,指令低位的2位都被忽略。同样地,不论处理器怎样发展,指令低位的2位均为0。位0:5为指令opcode的字段,另外也有许多指令有扩展opcode(如XO类指令)。其余的位包括一个或多个字段。下面具体说明指令的几种形式。图5.26(a)~(o)给出了所有指令字段的合法组合。图5.26所有指令段的合法组合(1)图5.26所有指令段的合法组合(2)图5.26所有指令段的合法组合(3)I-Form;(b)B-Form;(c)SC-Form;(d)D-Form;(e)DS-Form;(f)XL-Form;(g)XFX-Form;(h)XFL-Form;(i)XS-Form;(j)XO-Form;(k)MDS-Form;(l)A-Form;(m)X-Form;(n)M-Form;(o)MD-Form

下面介绍各字段的含义。

(1) AA(30)。绝对地址位。此值为0,此字段表示与本条指令有联系的一个地址。对于I-Form的分支指令来讲,跳转目标有效地址的值就是将各字段有符号扩展为64位与跳转指令地址的和。对于B-Form的分支指令来讲,跳转目标有效地址的值就是将BD字段有符号扩展为64位与跳转指令地址的和。此值为1,此字段仍表示一个绝对地址。对于I-Form的分支指令来讲,跳转目标有效地址的值就是将LI字段有符号扩展为64位与跳转指令地址的和。对于B-Form的分支指令来讲,跳转目标有效地址的值就是将BD字段有符号扩展为64位与跳转指令地址的和。

(2) BA(11:15)。此字段表示CR寄存器的1位。

(3) BB(16:20)。此字段表示CR寄存器的1位。

(4) BD(16:29)。此字段为一个14位的临时地址值,并且右连接0B00后,有符号扩展,为一个完整的64位地址。

(5) BF(6:8)。此字段表示CR字段或FPSCR字段的一个字段,被用作目标地址。

(6) BFA(11:13)。此字段表示CR字段或FPSCR字段的一个字段,被用作源地址。

(7) BH(19:20)。此字段表示连接寄存器相关指令和记数寄存器相关指令的分支条件的一个标记。

(8) BI(11:15)。此字段表示CR寄存器的1位,分支跳转指令类指令会用到。

(9) BO(6:10)。此字段表示分支跳转指令类指令特征码。

(10) BT(6:10)。此字段表示CR字段或FPSCR字段的1位,被用作目标地址。

(11) D(16:31)。此字段表示一个16位两个补全的分支位移并且有符号扩展为64位。

(12) DS(16:29)。此字段表示一个14位两个补全的分支位移,右边连接0B00并且有符号扩展,为64位。

(13) FLM(7:14)。此字段掩码以标识被mtfsf指令修改过的FPSCR字段。

(14) FRA(11:15)。此字段表示FPR,被用作源地址。

(15) FRB(16:20)。此字段表示FPR,被用作源地址。

(16) FRC(21:25)。此字段表示FPR,被用作源地址。

(17) FRS(6:10)。此字段表示FPR,被用作源地址。

(18) FRT(6:10)。此字段表示FPR,被用作目标地址。

(19) FXM(12:19)。此字段掩码以标识写操作中被mtcrf和mtfsf指令修改过的CR字段,或读操作中被mfocrfj指令修改过的CR字段。

(20) L(10or15)。此字段表示定点数比较指令比较的是64位数还是32位数,而且经常用作数据缓存的块操作类指令,此字段一般用于操作MSR的指令或TLB的Entry更新类指令。

(21) L(9:10)。此字段用作同步类指令。

(22) LEV(20:26)。此字段用作系统调用类指令。

(23) LI(6:29)。此字段为一个24位的临时地址值,并且右连接0B00后,有符号扩展,为一个完整的64位地址。

(24) LK(31)LINKbit。0:LinkRegister不置位;1:LinkRegister置位。紧跟跳转指令的下一个指令的地址放入LinkRegister。

(25) MB(21:25)andME(26:30)。此字段表示用在M-Form类指令中的一个64位掩码,此掩码由MB+32到ME+32且为1的位组成,其余的位补零。

(26) MB(21:26)。此字段用在MD-Form和MDS-Form类指令中,表示64位掩码的第1位。

(27) ME(21:26)。此字段用在MD-Form和MDS-Form类指令中,表示64位掩码的第1位。

(28) OE(21)。此字段用在XO-Form类指令中,操作XER以使能OV和SO。

(29) RA(11:15)。此字段表示GPR被用作source或target。

(30) RB(16:20)。此字段表示GPR被用作source。

(31) Rc(31)RECORDbit。0:不置ConditionRegister;1:置ConditionRegister字段0或字段1。

(32) RS(6:10)。此字段表示以GPR被用作source。

(33) RT(6:10)。此字段表示以GPR被用作target。

(34) SH(16:20或16:20和30)。此字段表示一个位移操作。

(35) SI(16:31)。此字段表示一个16位的有符号整数。

(36) SPR(11:20)。此字段表示一个用作mtspr和mfspr操作的SPR(SpecialPurposeRegister)。

(37) SR(12:15)。此字段用在操作SR的指令中。

(38) TBR(11:20)。此字段用在从TimeBase移出的指令中。

(39) TH(7:10)。此字段用在dcbt指令中操作数据流变量。

(40) TO(6:10)。此字段说明系统自陷的匹配条件。

(41) U(16:19)。此字段用于数据被放在FPSCR中的一个字段。

(42) UI(16:31)。此字段表示一个16位的无符号整数。

(43) XO(21:29、21:30、22:30、26:30、27:29、27:30或30:31)。这些字段用于扩展opcode字段。指令可以归纳为三类:已定义类指令、非法类指令、保留类指令。指令的类型可以通过检查其opcode和扩展opcode来决定,如果opcode操作码或扩展opcode不属于已定义类指令或保留类指令范围,那么此指令就为非法类指令。

1)已定义类指令总体来讲,现有的所有PowerPC架构都提供了已定义类指令实现方法。惟一的例外就是可选类指令(optionalinstructions),这类指令已经在指令说明中加以阐述。一条已定义类指令可以有更佳的实现方式。

2)非法类指令非法类指令具体描述为:如果一条指令包含全0异常码,那么本条指令可以供未来PowerPC架构扩展。换句话说,未来PowerPC架构版本可以随意定义此指令来实现新功能。以下primaryopcode是非法的:

1,4,5,6,57,60,61以下primaryopcode包含未使用的扩展opcode:

19,30,31,56,58,59,62,63未使用的扩展opcode是非法的。任何执行非法指令的操作都只会产生系统指令错误句柄,而不必担心其他影响。一条指令的机器码如果是全0,则此条指令在当前版本指令集和未来版本中都将是非法的。这就增加了执行数据或初次存储引发系统指令错误句柄产生的可能性。

3)保留类指令保留类指令包含以下类型指令:

(1)指令的primaryopcode为0(不包含指令机器码全为0的情况)且扩展opcode也有相应的要求,执行保留指令也会产生系统指令错误句柄。

(2)操作类指令具体包括以下指令(已定义但没有在具体的架构上采用):指令 pri xop指令 pri xop

Abs

31 360

rlmi 22 -

Clcs

31 531

rrib 31 537

Clf

31 118

sle 31 153注:primaryopcode简写为PRI,extendedopcode简写为XOP。

(3)环境相关指令用于匹配PowerPC架构规范。5.4.3已定义类指令的形式

1.预处理指令形式一些已定义类指令具有预处理指令形式。这些指令在执行的过程中更有效率,其他指令相对来说效率要低一些。有预处理形式的指令如下:

(1)操作ConditionRegister逻辑指令。

(2) Load/Store复合指令。

(3) Load/Store字符串指令。

(4) or立即数指令。

(5)写入ConditionRegister某字段的操作指令。

2.无效指令形式一些已定义类指令可能在译码后产生无效的指令形式。换句话说,指令的一个或多个字段(不包括opcode字段)不正确可以在指令的译码阶段检查出来。总的来说,执行无效指令既可能产生系统指令错误句柄,也可能得到非预期的结果。5.4.4异常异常通常有两种形式,分别由指令的执行和非同步事件引发。异常可能由以下指令的执行直接引起:

(1)任何执行非法指令或者尝试执行特权指令(系统指令错误句柄或者系统特权错误句柄)。

(2)执行已定义指令的错误形式(系统指令错误句柄或者系统特权错误句柄)。

(3)执行当前架构没有实现的可变指令(系统指令错误句柄)。

(4)试图访问不可用的存储空间(系统指令错误句柄或者系统特权错误句柄)。

(5)试图用非法的有效地址对齐方式访问对应的存储空间(系统对齐错误句柄)。

(6)执行系统调用(系统服务程序)。

(7)执行自陷指令(系统自陷句柄)。

(8)执行浮点数指令引发的浮点指令使能异常(系统浮点指令使能错误句柄)。异常也可能由非同步事件引发。引发系统错误句柄的原因通常是精确的,但这种情况除外,如某时刻某系统浮点指令使能错误句柄正在不确定模式下发生着,那么此系统浮点指令使能错误句柄产生的结果将是不可预期的。当系统错误句柄由不确定的因素引起,那么异常指令不会在下一个指令开始前结束(因为异常指令的影响即引发系统错误句柄还没有发生)。5.4.5存储单元的寻址用户程序运行访存类指令、分支跳转类指令或取下一顺序指令都会用到有效地址。

1.存储单元的操作数存储单元都是从地址0按字节连续存储的。访存操作数按bytes、halfwords、words或者doublewords为单位来执行。对于load/store类命令操作的也许是多bytes或多words的序列。操作数的长度对每个指令来讲是隐含的。单寄存器访存类指令拥有“天然”的对齐边界,即等于访存操作数的长度。换句话说,操作数的“自然”地址就是访存操作数的长度。满足以上条件就说存储操作数是对齐的。单寄存器访存类指令的操作数有以下性质:

EA = (rA | 0)

EA = (rA | 0) + offset (包含位移为0的情况)

EA = (rA | 0) + rB对齐的宽度对不同平台概念不是那么严格。例如,存储单元中的一个12字节的数据是word对齐的,一些指令对它的存储单元的操作数宽度有一定的要求,远一步说,对齐会影响指令效率。对单寄存器访存类指令来讲,它的操作数最好是对齐的,这样的指令效率才最佳。PPC的指令一般都是4字节对齐的。

2.有效地址的计算当执行访存类指令时,有效地址是通过芯片计算得出的。下面具体来研

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论