AVR XMEGA128A1 CPU部分翻译_第1页
AVR XMEGA128A1 CPU部分翻译_第2页
AVR XMEGA128A1 CPU部分翻译_第3页
AVR XMEGA128A1 CPU部分翻译_第4页
AVR XMEGA128A1 CPU部分翻译_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、3. AVR CPU3.1 特点 8/16位高性能的爱特梅尔(Atmel)AVR单片机精简指令的CPU(中央处理器) 142说明 硬件乘法器 32X8位寄存器直接连接到算数逻辑单元(中央处理器CPU的执行逻辑单元ALU) 堆栈存在随机存取存储器(RAM) 在I/O存储空间访问堆栈指针 直接寻址高达程序存储器和数据存储器的16M 真正的16位/24位访问16位/24位I/O寄存器 支持8、16和32位高效运算 配置更改系统关键的功能3.2 概述所有的Atmel AVR XMEGA系列设备采用8位/16位AVR单片机CPU。CPU的主要功能是执行代码并执行所有的计算。CPU能够访问存储器,执行运算

2、,控制外设,并在闪存中执行程序。中断处理在一个单独的章节描述。 3.3结构概述为了最大限度的提高性能和并行性,AVR CPU采用了独立的哈佛架构和程序和数据的总线和。在程序存储器的指令是利用单级的流水线运行。当一个指令正在执行时,下一条指令从程序存储器预取。这使得指令在每一个周期被执行。图3-1。在AVR CPU架构的框图。算术逻辑单元(ALU)支持寄存器间或者常量与寄存器之间的算术和逻辑运算。单一的寄存器也可以在算术逻辑单元被执行。一种算数运算后,状态寄存器被更新反映运算结果的信息。ALU是直接连接到快速访问寄存器文件。32X8通用工作寄存器都有单一的时钟周期访问寄存器间的或者寄存器与立即数

3、间的单周期算术逻辑单元操作。32个寄存器中的6个可以被用作程序和数据的三个16位地址寻址空间指针,从而实现高效的地址计算。内存空间是线性的,数据存储空间和程序存储空间是两个不同的存储空间。数据存储空间被分为I/O寄存器、SRAM(静态随机存储器)和外部RAM。此外,EEPROM可以被存储器映射到数据存储器。所有的I/O状态和控制寄存器留驻在数据存储器的最低4KB地址,这称为I/O存储器空间。最低的64个地址可以直接访问,或作为数据空间位置从0x00到0x3F,剩下的就是扩展I/O存储空间,从0x0040到0x0FFF。I/O寄存器这里必须使用负载(LD/LDS/LDD)和存储(ST/STS/S

4、TD)指令作为数据空间位置被访问。SRAM存储数据,不支持从SRAM执行代码。它可以很容易地通过五种不同的寻址模式在AVM架构支持访问。SRAM首地址是0X2000。数据地址0x1000到0x1FFF是保存EEPROM存储映射。程序存储器被分为两个部分,应用程序部分和引导程序部分。这两个部分都有专门的锁定位对写和读/写保护。SPM指令用于闪存的自编程程序必须位于引导程序部分,应用程序部分包含有独立锁定位的应用程序表部分对写和读/写保护,应用表格部分可以用于保存程序存储器中的非易失性的数据。3.4 ALU算术逻辑单元算术逻辑单元支持寄存器间或恒值和寄存器间的算术和逻辑运算。单寄存器操作也可以被执

5、行。算术逻辑单元操作直接与所有的32个通用寄存器。通用寄存器间或者寄存器与立即数间的算术运算执行的结果存到寄存器文件中,在算术或逻辑运算后,状态寄存器更新反应运算结果的信息。ALU操作分为三大类算术,逻辑和位功能。8位和16位运算的支持,且指令集可以高效地实现32位运算。硬件乘法器支持有符号和无符号的乘法和小数格式。3.4.1 硬件乘法器乘法器能是两个8位数字相乘输出16位的结果,硬件乘法器支持有符号和无符号的整数和小数不同变化。 无符号整数的乘法 有符号整数的乘法 有符号整数与无符号整数乘法 无符号小数的乘法 有符号小数的乘法 有符号小数与无符号小数的乘法一次乘法需要两个CPU时钟周期。3.

6、5 程序流复位后,CPU开始从闪存存储器最低地址0执行指令,程序计数器(PC)将下一条指令地址取来。程序流通过有条件的和无条件的跳转指令和调用指令直接寻址整个地址空间,大多数指令使用16位字格式,然而少数的使用32位格式。在中断和子程序调用时,返回的PC地址存储在堆栈中,堆栈分配在一般的数据SRAM,因此堆栈的大小受限于SRAM的总大小和SRAM的使用情况。复位后,堆栈指针(SP)指向内部SRAM的最高地址。堆栈指针(SP)在I/O内存空间中是可读写的,使得能够很容易的实现多个堆栈或堆栈区域,数据SRAM能很容易的通过AVR CPU所支持的五种不同的寻址模式访问。3.6 指令执行时间AVR C

7、PU的时钟执行时间是CPU时钟计时,没有内部时钟分频。图3.29 显示了并行指令,和指令的执行是由哈佛架构和快速访问寄存器文件的概念,这是基本的流水线概念,用于获取高达1MIPS/MHz高功率效率特性。图3.29 并行指令和指令的执行 clkCPU1st Instruction Fetch1st Instruction Execute2nd Instruction Fetch2nd Instruction Execute3rd Instruction Fetch3rd Instruction Execute4th Instruction Fetch在一个单一的时钟周期中,使用两个寄存器操作数的

8、ALU操作被执行,并且结果被存储回目标寄存器。图 3.30 单时钟周期ALU操作Total Execution TimeclkCPURegister Operands FetchALU Operation ExecuteResult Write Back3.7 状态寄存器状态寄存器(SREG)包含了最近执行的算术或者逻辑指令的结果信息。这个信息可以用来改变程序流程以便于有条件的操作。注意,在指令集参考规定,状态寄存器在所有ALU操作之后更新的。这会在许多情况下不再需要使用专门的比较指令而导致更快更简洁的代码。进入中断服务程序时,中断返回时状态寄存器不会自动保存,也不会恢复,这必须由软件处理。状

9、态寄存器是在I/O存储器空间访问。3.8 堆栈和堆栈指针堆栈是用于保存中断和子程序返回地址,也可以用于存储临时数据。堆栈指针寄存器总是指向堆栈的顶部,它作为两个8位寄存器在I/O存储空间访问。数据从堆栈中被推和压入用PUSH和POP指令,堆栈从高的存储位置发展到底的存储位置。这意味着,把数据推入堆栈减小SP,从堆栈弹出数据要增加SP。SP复位后自动加载,初始值是内部RSAM的最高地址。如果SP改变时,它必须被设置成指向0x2000上面的地址,并且它必须在任何子程序执行或者中断执行之前被定义。在中断或者子程序调用时返回值地址被自动压入堆栈,返回的地址可以是两个或者三个字节,这取决于设备的程序存储

10、器的大小。对于具有128KB或更少程序存储器的设备,返回地址是2个字节,因此堆栈指针的地址减少/增加2.;对于一个具有高于128KB程序存储器的设备,返回的地址是3个字节,所以SP减少/增加3。当使用RETI中断返回和用RET指令调用子程序时,返回地址被弹出堆栈。当数据被用PUSH指令推入堆栈时,SP减1;当数据被用POP弹出堆栈时,SP递增1为了防止从软件更新时的腐败,写一个SPL将自动禁用中断多大四条指令或直到下一个I/O存储器写。3.9 注册文件寄存器文件包括32个带有单时钟周期访问时间的8位通用工作寄存器,寄存器文件支持下面的输入/输出方案。 一个8位输出操作数和一个8位结果输入 两个

11、8位输出操作数和一个8位结果输入 两个8位输出操作数和一个16位结果输入 一个16位输出操作数和一个16位结果输入32个寄存器中的6个可被用作3个16位地址寄存器为数据空间寻址,实现高效率的地址计算。其中的一个地址指针也可以用来为闪存程序存储器查找表。图3-4。AVR CPU通用工作寄存器寄存器文件位于一个独立的地址空间,所以寄存器是不可访问的数据存储。3.9.1 X、Y和Z寄存器寄存器R26.R31增加了功能,除了其通用的用法。这些寄存器可以形成16位地址指针寻址的数据存储器,这三个地址寄存器被称为X寄存器、Y寄存器和Z寄存器。Z寄存器也可以用来作为地址指针读取或写入闪存存储器,签名行,保险

12、丝,并锁定位。图3-5。X轴,Y轴和Z寄存器。最低寄存器地址保存最低有效位(LSB),且最高的寄存器地址保存最高有效位(MSB)。在不同的寻址模式,这些地址寄存器可以用在固定不变的位移,自动加减。3.10 RAMP和扩展间接寄存器为了访问上述的64KB的程序存储器或数据存储器,地址指针必须大于16位的值,这是通过连接一个寄存器到X、Y或Z寄存器之一进行,这个寄存器然后保存一个最高有效值在24位地址或地址指针。这些寄存器只供外部总线接口和/或大于64KB的程序或数据存储空间的多个设备,对于这些设备,在寄存器中,少数的位需要寻址设备的整个程序和数据存储空间。3.10.1 RAMPX,RAMPY和R

13、AMPZ寄存器RAMPX、RAMPY和RAMPZ寄存器是与X、Y和Z寄存器连在一起的,分别地,间接寻址整个数据存储空间大于64KB且高达16MB。图3-6。组合的AMPX+ X,RAMPY+ Y和RAMPZ+ Z寄存器。当读取(ELPM)和写入(SPM)上述程序存储器的第一128KB程序存储单元,RAMPZ的值与Z寄存器,以形成24位地址。 LPM不受所述RAMPZ设置。3.10.2 RAMPD注册该寄存器与操作数联系一起直接寻址64KB以上的整个数据存储空间,接着,RAMPD和操作数将形成一个24位的地址。图3-7。合并的PD+ K寄存器3.10.3 EIND - 扩展间接寄存器EIND与Z

14、寄存器连接时间接跳转和调用上面的程序存储器的第一个128KB(64K字)的位置。图3-8。合并EIND+ Z寄存器。3.11访问16位寄存器AVR数据总线的宽度位8位,所以访问16位寄存器需要原子操作,这些寄存器必须是用两个读或写操作的字节存取的。16位寄存器连接到8位总线和使用一个16位总线的临时寄存器。对于写操作,16位寄存器低字节必须在高字节之前被写入,低字节被写入临时寄存器中,当16位寄存器的高字节被写入时,临时寄存器被拷贝到16位寄存器中的同一个时钟周期的低字节中。对于读操作,16位寄存器的低字节必须在高字节之前被读取,当低字节寄存器由CPU读取,16位寄存器的高字节被复制到在同一个

15、时钟周期临时寄存器低字节被读取。当高字节被读出,它随后从临时寄存器读出。这保证了16位寄存器的高,低字节总是读取或写入寄存器时,同时访问。如果一个中断触发和在一个原子的16位读/写操作访问相同的寄存器是,中断可能会使时间序列损坏,为了防止这种情况发生,当写入或读取16位寄存器时中断可以禁用。临时寄存器也可以直接读写用户软件。3.11.1 访问24位和32位的寄存器对于24位和32位的寄存器,读出和写入访问完成时相同的方式描述16位寄存器,除了2个24位的临时寄存器和3个32位临时寄存器。当作写入的操作时,最低位有效字节必须首先被写入;当读取操作时,最低位有效值首先被读取。3.12 配置更改保护

16、系统关键的I/O寄存器的设置免受意外的修改,SPM指令免受意外的执行,并且读取保险丝和签名行时LPM指令保护。这是由配置更改保护(CCP)寄存器全球处理。更改受保护的I/O寄存器或位,或执行保护指令,是唯一可能的在CPU写入签名到CCP寄存器后,不同的签名在寄存器中有不同的描述。有两种操作模式:一种用于保护I / O寄存器和一个用于保护指令,SPM/ LPM。3.12.1顺序进行写操作,以保护I / O寄存器1. 应用程序代码编写,使受保护的I / O寄存器的改变中共寄存器签名。2. 在4个指令周期,应用程序代码必须编写相应的数据保护寄存器。最受保护的寄存器中也包含一个可读/可变化位,该位必须

17、写入在同一个操作(OPER-ATION)作为数据写入。,如果CPU执行写操作在I / O寄存器或数据存储器或者SPM,LPM或SLEEP指令执行时,受保护的变化立即被停止。3.12.2顺序执行保护SPM/ LPM的1. 应用程序代码写入签名保护SPM/ LPM执行到CCP寄存器。2. 在4个指令周期,应用程序代码必须执行相应的指令,如果CPU执行写操作到数据存储器,或者如果在SLEEP指令被执行时,受保护的变化被立即停止。一旦正确的签名被写入由CPU,中断将被忽略的配置改变的持续时间启用周期。在CCP时期的任何中断请求(包括非屏蔽中断),将设置相应的中断标志为正常,请求保持待定。中共期间结束后

18、,任何未决的中断是根据其水平和优先执行。DMA请求仍在处理,但不影响该保护配置改变启用周期。写DMA签名被忽略。3.13 保险丝锁对于系统的一些关键特征,这是可编程的熔丝来禁用所有更改相关的I/O控制寄存器,如果这样做,就不可能从用户软件改变寄存器和保险丝只能使用外部编程器重新编程。这个细节在可描述的数据表模块中。3.14 寄存器描述3.14.1 CCP - 配置更改保护寄存器位7:0 - CCP7:0:配置更改保护CPP寄存器必循写入正确的签名,以便保护I/O寄存器的变化或执行的四个CPU指令周期的最长期限的保护指令。在这些周期的所有的中断都将被忽略。这些周期后,中断将自动再由CPU处理,任

19、何中断都会根据自己的等级和优先执行。当被保护的I/O寄存器签名写入时,CCP0将读入一个只要保护功能启用。同样,当受保护的SPM/LPM签名写入时,CPP1会读入一个只要保护功能启用。CCP 7:2总是读为0。表3-1。CPU改变保护模式。3.14.2 RAMPD - 扩展直接寻址寄存器这个寄存器的值与设备上的整个数据存储空间的操作,用于直接寻址(LDS/STS)64KB以上的数据存储器,如果数据寄存器,包括外部内存,小于64KB,该寄存器是不可用的。位7:0 - RAMPD7:0:扩展直接寻址位这些位有RAMPD创建的24位地址的最高有效位和16位运算,为解决现有的数据存储器所需的比特只数为

20、每个设备中实现。未使用的位始终读为零。3.14.3 RAMPX - 扩展X-指针寄存器这个寄存器的值与X寄存器用于在设备上的整个数据存储空间的间接寻址(LD/ LDD/ ST / STD)超过数据存储器的64KB。如果数据存储器,包括外部存储器,小于64KB,该寄存器不可用。位7:0 - RAMPX7:0:扩展X-指针地址位这些位持有RAMPX创建的24位地址的最高位和16位的X的寄存器。为解决现有的数据存储器所需的比特只数为每个设备中实现。未使用的位始终读为零。3.14.4 RAMPY - 扩展Y型指针寄存器该寄存器的值与Y寄存器用于对设备的整个数据存储空间的间接寻址(LD/ LDD/ ST/ STD)以上数据存储器64KB。该寄存器是不可用,如果数据存储器,包括外部存储器,小于64KB。位7:0

温馨提示

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

评论

0/150

提交评论