英语原文共 257 页,剩余内容已隐藏,支付完成后下载完整资料
1微控制器资源
1.1本章
本章介绍了微控制器的主要子系统,这些子系统被视为资源,按照基本架构之一:冯bull;诺伊曼和哈佛来组织。它还包含对内部CPU寄存器的描述、外围接口的一般结构和中断系统的概述。
1.2单片机架构
单片机是集成在单片机上的一种结构,一定数量的内存和一些外围接口。
中央处理单元(CPU)连接到的其他子系统通过地址和数据总线的方式实现。这取决于CPU访问程序内存,有两种可能的架构微控制器,叫做冯·诺依曼和哈佛。
图1.1展示了冯·诺依曼架构计算机的结构,其中所有资源,包括程序内存、数据内存和I/O寄存器,通过唯一地址和数据总线连接到CPU。
图1.1冯·诺依曼架构框图
一个具有冯·诺依曼架构的典型单片机是68HC11摩托罗拉。在HC11中,所有资源都是通过相同的惟一地址标识的地址空间,可以使用相同的指令访问。例如,以防万一的指令:
LDAA lt;addressgt; ;load accumulator a from lt;addressgt;
由标签lt;addressgt;指示的操作数可以是任何单片机的操作数资源,从I/O端口到ROM常量。这种访问资源的方式是允许的复杂指令的存在:
ASL 35,x ;arithmetic shift left the memory
;location with the address
;obtained by adding 35 to the
;index register X.
因此,冯·诺依曼微控制器往往有一个大的指令集,包括一些非常复杂的指令。这就是为什么计算机有冯·诺依曼架构通常被称为CISC,或复杂指令集电脑。
这种结构的主要缺点是指令越复杂提取、解码、执行和存储结果所需的时间越长。指令在上面的例子中,需要执行6个机器周期,而指令为整数除法,需要不少于41个机器周期来完成。
哈佛的架构是为了提高计算机的总体速度而创建的。在早期,当非常慢的磁芯存储器被用来存储的时候程序。它包括一个额外的、单独的总线来访问程序内存(请参阅图1.2)。
第二条总线的出现使以下事情成为可能:
- 在执行指令时,下一条指令可以来自程序内存。这种技术称为流水线,它带来了计算机速度显著提高。
- 程序内存可以用不同大小的单词来组织,通常大于数据内存。更宽的指令意味着更大的数据流。对CPU来说,因此整体速度更高。
图1.2 哈佛建筑方块图
这样的体系结构,以及减少和优化指令集,意味着大多数指令在单个机器周期中执行。由于哈佛建筑常常伴随着指令集的大小和复杂性的减小,具有这种结构的计算机也被称为缩减指令集计算机(reductionset computers, RISC)。例如,一些PIC单片机的指令集只有35条指令,而HC11则有100多条。速度增长得更快。
程序内存的独立总线使得程序对ROM中常量(如表、字符串等)的访问变得更加复杂和受限。例如,一些PIC微控制器将程序memory组织成14位宽的单词,这使得只有将该常量嵌入到一个特殊的指令中才能定位和访问一个以字节形式表示的常量。为此提供了指令“k”(从寄存器W中的常熟k返回)。
AVR单片机将程序内存组织成16位字,这使得在程序内存中访问常量的任务变得更容易,因为每个常量16位字可以存储两个8位常数。一个特殊的指令LPM(从程序内存)允许访问ROM常量。
1.3内存映射
从程序员的角度来看,微控制器是一组资源。每一个资源由地址空间中的一个或多个地址标识。例如,68HC11E9单片机内部RAM内存组织为512个位置,如果地址在$0000到$01FF之间,ROM内存就会占用这些地址在$D000 - $FFFF(12288个位置)范围内,I/O寄存器块接受地址表格$1000 - $103F(64个地址)。
内存映射是资源如何关联的图形表示使用地址(内存映射的示例见图1.3)。
显然,并非所有地址都与现有资源相关——在某些情况下确实如此可以添加外部内存或I/O设备,我们必须为其分配不同的内存或I/O设备地址空间中的地址。
通常,内存映射是由硬件结构决定的单片机和外部设备(如果有),不能动态
在程序执行过程中修改的。
但是,在某些情况下,通过写入一些特殊的配置注册,用户可以禁用资源(如内部ROM内存,或者可以在地址空间的不同区域重新分配资源。即使在这些情况下,对配置寄存器的访问也受到限制修改在下一次复位后生效。
图1.3和图1.4显示了在单片机工作模式具有更高级的体系结构的存储器映射,以及对更高级的内存映射。
图1.3在单片机模式下存储器映射
图1.4 AT90S8515单片机内存映射
注意,对于AVR单片机,存在三个不同的地址空间,一个用于数据内存和I/O寄存器,另外两个用于程序内存和EEPROM。
8051单片机被认为属于哈佛架构,但它们是CISC,不允许流水线;因此,它们看起来更像冯·诺依曼计算机,具有访问程序内存和数据内存的不同页面的能力。这两个不同的内存页通过相同的物理总线在不同的时刻访问。图1.5显示了8051单片机在单片机模式下的内存映射。这里也有两个地址空间,一个用于程序内存,另一个用于数据内存和特殊功能寄存器
图1.5 8051单片机内存映射
该单片机的一个独特的特点是存在一个RAM区域,位于地址范围$0020 - $002F之间,可以使用特殊指令位寻址。这个技巧允许释放RAM内存,方法是将一些布尔变量分配给该区域的各个位,而不是为每个变量使用整个字节,因为8051在这个资源上很低:变量和堆栈只有80个RAM位置可用。
标准8051微控制器没有内部EEPROM内存
1.4 CPU寄存器
关于CPU寄存器的好处是,它们是CPU的一部分,位于这些寄存器中的操作数可以作为算术和逻辑单元(ALU)的输入立即可用。由于在CPU寄存器中有操作数的指令执行速度更快,为更高速度而设计的微控制器往往有更多的内部寄存器。虽然HC11只有两个累加寄存器,但AVR家族有多达32个这样的寄存器。
1.4.1HC11的CPU寄存器
HC11有7个内部寄存器,加上CPU状态寄存器,称为条件代码寄存器(CCR)。
累加器寄存器A和B是通用的8位寄存器。它们可以连接起来形成一个16位寄存器D,其中a是最有意义的字节,B是最没有意义的字节。这个特性为16位算术运算带来了显著的灵活性。
索引寄存器X和Y为16位寄存器,也可用作存储寄存器、16位计数器;最重要的是,它们可以存储一个16位的值,这个值加上指令本身包含的8位值,在使用索引寻址模式时形成操作数的有效地址。
堆栈指针(SP)寄存器是一个16位寄存器,必须由软件使用RAM内存区域(称为堆栈)的结束地址初始化。SP在每次将字节推入堆栈时自动递减,在从堆栈中提取字节时自动递增。因此,SP总是指向堆栈的第一个空闲位置。堆栈在以下情况下受影响:
- 在指令BSR、JSR(分支或跳转到子例程)的执行过程中,返回地址会自动推送到堆栈中,SP也会相应地进行调整。指令RTS(从子例程返回)从堆栈中提取这个值,并将其重新加载到程序计数器中。
- 在执行推拉类型指令期间,用于将CPU寄存器的内容保存并恢复到堆栈中。
- 在执行中断期间,以及在执行RTI(从中断返回)指令时从中断服务例程返回时。
SP可以通过LDS (load SP)和STS (Store SP)指令直接访问,也可以通过TXS、TYS (transfer X/Y toSP)或TSX、TSY (transfer SP to X/Y)等传输指令间接访问。
程序计数器(PC)寄存器是一个16位寄存器,它包含当前执行的指令后面的指令的地址。
条件码寄存器(CCR)是一个8位寄存器,结构如下:
位C(进位/借位)、V(溢出位)、Z(零位)、N(负位)和H(半进位)是状态位,根据算术和逻辑指令的结果进行设置或清除。有关每个指令如何影响这些位的详细信息,请参阅数据表。
位I(通用中断掩码)、X (XIRQ中断掩码)和S(停止)是用于启用/禁用中断的控制位,或低功耗操作模式。当I = 1时,禁用所有可屏蔽中断。X = 1禁用不可屏蔽的中断XIRQ, S = 1阻塞STOP指令的执行,该指令被视为NOP。
一些CCR位(C, V, I)可以通过指令SEC (Set Carry)、CLC (Clear Carry)、SEV (Set Overflow Bit)、CLV (Clear Overflow Bit)、SEI (Set Interrupt Mask)和CLI (Clear Interrupt Mask)直接控制。整个CCR可以使用指令TPA(将CCR转移到a)和TAP(将a转移到CCR)进行读写。
1.4.2 AVR的CPU寄存器
AVR微控制器的CPU有32个通用寄存器,称为R0-R31。寄存器对R26-R27、R28-R29 R30-R31可以连接形成了X, Y, Z,寄存器,可以用于间接寻址(R26 XL - X的低字节,R27 XH -高字节(X) R28 YL, R29 YH, R30 ZL和R31 ZH型)。寄存器R16-R31可能是直接寻址操作数(如LDI (Load Register immediate)或CPI (Compare immediate))的目的地。与HC11不同,AVR的CPU寄存器在内存映射中具有不同的地址。
程序计数器(PC)的功能类似于HC11的PC寄存器。不同之处在于PC的大小不是16位,而是被限制为寻址程序内存所需的长度(在AT90S8515的情况下,寻址4K的程序内存只需要12位)。重置时清除PC。
栈指针(SP)有16位,它被放置在I/O寄存器地址空间中,这使得程序员只能通过输入和输出指令来访问它,就像两个8位寄存器SPH和SPL一样。
CPU状态寄存器称为SREG,其结构如下:
SREG中位的含义与HC11中位的含义略有不同:
I位—全局中断启用/禁用位—具有相反的操作:当设置为1时,中断被启用。控制该位的指令具有相同的助记符SEI (Set I bit)和CLI (Clear I bit)。
T位复制存储器。该位的状态可以通过指令BST(位存储)和BLD(位负载)进行修改,从而允许程序从通用寄存器保存特定位的状态,或者将该信息从另一个寄存器传输到位。还有一对条件分支指令用于测试这个位:BRTS(如果设置了T位则为分支)和BRTC(如果T位为清除则为分支)。
S - sin位,它是N和V之间的排他性。
SREG (C, Z, N, V, H)中的其他位具有相同的含义HC11。AVR微控制器对每个SREG位都有明确的指令集。
1.4.3 8051的CPU寄存器
累加器A是一个通用的8位寄存器,用于存储操作数或产生超过8051指令集一半的结果。
R0-R7寄存器是8位寄存器,类似于用于AVR微控制器系列的寄存器R0-R31。这种寄存器有四组(或几组),通过在CPU状态寄存器PSW中写入位[RS1:RS0]来选择,如下所述。
在数据存储器的地址空间中,[0000h-0007h]、[0008h-000Fh]、[0010h-0017h]、[0018h-001Fh]四组8个寄存器各占32个地址(见图1.4)。
累加器B是另一个通用的8位寄存器,其功能类似于R0–R7寄存器。此外,在算术指令mul ab和div ab的情况下,使用累加器b来存储其中一个操作数。
数据指针寄存器(DPTR)是一个16位寄存器,用于操作数的间接寻址,类似于AVR的X、Y、Z寄存器。
程序计数器(PC)是一个16位寄存器,类似于HC11的PC。复位时清除PC,因此所有程序从地址0000h开始。
与HC11和AVR相比,堆栈指针(SP)具有以下特点:
- 它是一个8位寄存器,即它可以寻址一个最大256字节的内存区域。8051只能使用栈的内部内存。
- 与HC11和AVR不同,在HC11和AVR中,SP在RAM的末尾用地址初始化,并随着每个字节推入堆栈而递减,而在向堆栈中添加数据时,SP(8051)会递增。
- 对于hc11和avr,sp指向堆栈区域的第一个空闲字节。8051的SP表示堆栈的最后一个占用位置。在重置时,SP自动初始化为07h,因此推送到堆栈的第一个字节将占用地址为08的位置。
处理器状态字(PSW)类似于HC11的CCR或AVR的SREG,其结构如下:
位CY、AC和OV与hc11和AVR的位C、H和V具有类似的功能。
[RS1:RS0] -注册银行选择位
P -奇偶校验位。如果累加器包含奇数个1,P = 1;如果累加器包含偶数个1,P = 0。因此,累加器中的1s数加P总是偶数。位PSW1和PSW5 (F0)未提交,可以用作通用状态标志。
1.5外围接口
微控制器被设计成嵌入到更大的系统中,因此它们必须能够与外部世界进行交互。通过外围接口可以实现这种交互。外围接口的总体
全文共16959字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[1947]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。