4.2结构概述
图4-1.
AVR结构的方框图
数据总线8位
节目状态节目Flash计数器与控制
记忆
32 x 8指令一般注册
目的
Registrers
打断Unit指令解码器
看门狗Timer
ALU
控制线
比较
类似物直接寻址
间接寻址
I / O模块1
DataSRAM
I / O模块2
I / O模块n
EEPROM
I / O线
为了获得最高的性能以及并行性,AVR采用了Harvard结构 - 与独立的记忆和公共汽车程序和数据.在程序存储器中的指令是通过一级流水线运行.当一个指令被执行时,下一条指令tion是预取从程序存储器.这个概念实现了指令被执行在每个时钟周期.程序存储器是可以在系统内可编程闪存.
快速访问寄存器文件包括32个8位通用工作寄存器,一个时钟周期的访问时间.这使得单周期算术逻辑单元(ALU)操作.在典型的ALU操作中,两个操作数是从寄存器文件输出,操作执行,并将结果存回寄存器文件 - 在一个时钟周期.
有6个寄存器可以用作3个16位的间接寻址寄存器指针以数据空间寻址 - 实现高效的地址运算.其中一个这些地址指针也可以用来作为地址指针查找表中的Flash程序存储器.这些附加的功能寄存器即为16位的X,Y和Z寄存器,在本节后面介绍.
6
ATtiny25/45/85
7598H–AVR–07/09
ATtiny25/45/85
ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算.单寄存器操作也可以在ALU中执行的.经过算术操作tion,状态寄存器被更新以反映操作结果的信息.
程序流程通过无条件的跳转指令和调用指令,能直接寻址整个地址空间提供.大多数AVR指令为16位宽.有32位指令也.
在中断和调用子程序时返回地址的程序计数器(PC)被存储在堆栈.该协议栈是有效地分配在通用数据SRAM,因此其深度大小仅受限于SRAM的大小和SRAM的使用.所有用户程序必须初始化SP在复位例程(子程序或中断执行之前).堆栈
指针(SP)是读/写在I / O空间.数据SRAM可以很容易地通过在AVR架构支持的五种不同的寻址方式访问.
在AVR架构的内存空间是线性的常规内存映射.
一个灵活的中断模块.控制寄存器中有一个额外的全局的I / O空间在中断状态寄存器使能位.所有的中断都具有独立的中断向量在中断向量表.该中断的优先级与其在中断向量位置化.较低的中断向量地址,优先级越高.
在I / O存储器空间包含64个地址作为CPU外设的控制寄存器
TERS,SPI,以及其他I / O功能.在I / O内存可以直接访问,或作为数据空间位置下面这些寄存器文件,地址0x20 - 0x5F.
4.3ALU - 算术逻辑单元
高性能的AVR ALU与32个通用直接连接
工作寄存器.在一个时钟周期中,通用的算术运算寄存器,寄存器与立即数之间的执行.该ALU操作分为分为三个主要类别 - 算术,逻辑和位操作.一些实现
架构还提供了强大的乘数同时支持有符号/无符号乘法运算和小数格式.详见“指令集”部分进行了详细的描述.
4.4状态寄存器
状态寄存器包含了最近执行的算术指令的结果信息.此信息可用于改变以实现条件操作的程序流程.请注意,状态寄存器的所有ALU运算,如指令集所述的规定.这在许多情况下不再需要使用专门的比较指令,从而导致更快和更紧凑的代码.
进入中断服务程序,并从中断返回时恢复时状态寄存器不会自动存储.这必须由软件来处理.AVR中断寄存器 - SREG - 定义为:
Bit
7I
Read/WriteInitial Value
R/W0
6TR/W0
5HR/W0
4SR/W0
3VR/W0
2NR/W0
1ZR/W0
0CR/W0
SREG
7
7598H–AVR–07/09
?位7 - I:全局中断使能
全局中断使能位必须要启用的中断设置.个体间
中断使能由其他独立的控制寄存器.如果全局中断使能
寄存器清零,没有任何中断都将启用独立的个体中断使能设置.在I位由硬件清零中断发生后,由RETI指令集以使能中断.在I-位也可以设置和清除通过SEI和CLI指令的应用,如在指令集的参考信息.
?位6 - T:位拷贝存储
该位拷贝指令BLD(位负载)和BST(位存储)使用T字位作为源或目的地民族的操作位.从寄存器文件寄存器的位可以通过将拷贝到TBST指令,并在T位可以被复制到一个位的寄存器文件寄存器BLD指令.
?位5 - H:半进位标志
半进位标志H表示半进一些算术运算.此标志对于BCD运算非常有用.请参见“指令集”说明信息.
?位4 - S:符号位,S = N
⊕V
在S-位的异或负数标志N与2的补码之间溢出标志V“指令集”说明信息.?位3 - V:2的补码溢出标志
该二进制补码溢出标志V支持2的补码运算.请参阅“指令集”说明信息.?位2 - N:负标志
负标志N表示阴性结果的算术或逻辑运算.请参见“指令集”说明信息.
?位1 - Z:零标志
零标志Z表示结果为零算术或逻辑运算.请参见“指令设置说明“详细信息.?位0 - C:进位标志
进位标志C表示进位算术或逻辑运算.详见“指令集说明“详细信息.
8
ATtiny25/45/85
7598H–AVR–07/09
ATtiny25/45/854.5通用寄存器文件寄存器文件优化的AVR增强型RISC指令集.为了实现the required performance and flexibility, the following input/output schemes are supported by theRegister File:?一个8-bit输出操作数和一个8位结果输入.? Two 8-bit output operands and one 8-bit resultinput? Two 8-bit output operands and one 16-bit resultinput?一个16-bit输出操作数和一个16位结果输入图4-2图4-2.shows the structure of the 32 general purpose working registers in theCPU.AVR CPU General Purpose Working Registers7R0R1R2…R13GeneralPurposeWorkingRegistersR14R15R16R17…R26R27R28R29R30R310x1A0x1B0x1C0x1D0x1E0x1FX-register Low ByteX-register High ByteY-register Low ByteY-register High ByteZ-register Low ByteZ-register High Byte0x0D0x0E0x0F0x100x110Addr.0x000x010x02大部分的操作寄存器文件的指令都可以直接访问所有的寄存器,而且多数都是单周期指令.如所示Figure 4-2,each register is also assigned a Data memory address, mappingthemdirectly into the first 32 locations of the user Data Space. Although notbeingphysically implemented as SRAM locations, this memory organization provides greatflexibility in access of the registers, as the X-, Y- and Z-pointer registers can be set to index any register in thefile.97598H–AVR–07/094.5.1X寄存器,Y寄存器和Z寄存器
该寄存器R26 .. R31有一些增加的功能到他们的一般用途使用.这些reg-存器是16位的地址指针间接寻址的数据空间.这三个间接地址寄存器X,Y和Z如上述定义的图4-3.图4-3.
在X,Y,Z寄存器
15
XH
XL
0X-register
7
0
7
0
R27 (0x1B)
R26 (0x1A)
15
YH
YL0Y-register
7
0
7
0
R29 (0x1D)R28 (0x1C)
15
ZHZL
0
Z-register
7
0
7
0
R31 (0x1F)
R30 (0x1E)
在不同的寻址模式中,这些地址寄存器可以实现固定偏移量,自动加一和自动减(详见指令集参考).
4.6堆栈指针
协议栈主要用于存储临时数据,存储本地变量和储存中断子程序的返回地址.堆栈指针总是指
向堆栈的顶部.请注意,堆栈是实现从更高的存储单元中成长系统蒸发散,以较低的内存位置.这意味着,栈push命令减少堆栈指针.
堆栈指针指向数据SRAM堆栈区的子程序和中断
栈的位置.在数据堆栈空间必须由程序中的任何子程序调用执行或中断使能之前进行定义.堆栈指针必须设置为上述0x60.堆栈指针减一,当数据被压入堆栈的PUSH指令,它是由两个递减时,返回地址被压入与子程序调用或中断堆栈.堆栈指针加一当数据从与POP指令弹出堆栈,它是由两个加时,数据从堆栈中弹出从子程序返回RET或中断返回RETI.
AVR的堆栈指针实现为两个8位寄存器中的I / O空间.实际上使用的比特数是依赖于实现.请注意,在某些AVR器件的数据区太小,用SPL就足够.在这种情况下,SPH寄存器将不存在.
Bit15141312111098SP15SP14SP13SP12SP11SP10SP9SP8SPHSP7SP6SP5SP4SP3SP2SP1SP0SPL
7
6543210Read/WriteR/WR/WR/WR/WR/WR/WR/WR/WR/W
R/WR/WR/WR/WR/WR/WR/WInitial Value000000001
0
0
1
1
1
1
1
10
ATtiny25/45/85
7598H–AVR–07/09