版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-摘要随着人们生活水平的不断提高,大家也对生活的快捷化、简单化、智能化和人性化提出了更高的要求,而嵌入式系统正是实现人们这一需求的重要推手。当今的嵌入式设备多采用32位的RISC处理器作为核心部件,而基于ARM的嵌入式处理器在32位的RISC嵌入式处理器领域占据了高达75%的市场份额。但是,嵌入式系统并没有得到像单片机一样受欢迎,这既在于嵌入式系统学习难度高,也在于搭建一个嵌入式系统需要一定的资金投入。本课题是基于ARM7的仿真实验系统设计,全文详细讲解了ARM7的体系结构和硬件结构,重点设计了主系统界面和主要的外围电路仿真。主系统界面就是将各个外围电路仿真图链接到用VB设计的窗体控件上,通过点击控件就可以直接打开相关的电路仿真图。外围电路仿真不但全面介绍了相关寄存器,而且用Proteus软件设计了电路仿真图,还用Keil软件编写了相关的实验代码。每一个实验都配有流程图,同时做了相关的说明,使人看了一目了然。基于ARM7的仿真实验系统设计,既可以帮助大家快速学习ARM7的原理,也可以节约一定的开支,同时学会相关软件的使用。关键词:Keil;Proteus;VB;ARM7;仿真系统AbstractWiththecontinuousimprovementoflivingstandards,peoplearequick,humanization,intelligentandsimpleoflifeputforwardhigherrequirements,andembeddedsystemisimportanttoachievetheneedsof.Embeddedequipmenttodayuses32bitsRISCprocessorasthecorecomponent,andembeddedprocessorbasedonARMinRISCembeddedprocessor32tooccupythemarketshareashighas75%.However,embeddedsystemshasnotbeenaspopularasthemicrocontroller,whichliesintheembeddedsystemlearningdifficulty,alsoistobuildanembeddedsystemneedssomemoney.ThistopicisthedesignofsimulationexperimentsystembasedonARM7,thetextexplainindetailthesystemstructureandthehardwarestructureofARM7,focusedonthedesignofthemaininterfaceofthesystemandthemaincircuitsimulation.ThemaininterfaceofthesystemistheperipheralcircuitsimulationmaplinktodesignwithVBformscontrols,byclickingonacontrolcanbedirectlyrelatedtoopencircuitsimulationdiagram.Theperipheralcircuitsimulationisnotonlyacomprehensiveintroductiontotherelevantregister,anduseProteussoftwaretodesignthecircuitsimulationmap,alsowrittenusingtheKeilsoftware.Experimentalcodecorrelation.Eachexperimentareequippedwithflowchart,atthesametimetodotherelevantinstructions,makepeopleseestickoutamile.DesignofsimulationexperimentsystembasedonARM7,whichcanhelpyouquicklylearnARM7,canalsosavemoney,useatthesametimetolearntheassociatedsoftware.Keywords:Keil;Proteus;VB;ARM7;Simulationsystem目录1绪论 11.1嵌入式系统概念 11.2国内外研究现状和发展趋势 11.3课题研究的目的和意义 21.4软件简介 21.4.1Keil简介 21.4.2Proteus简介 31.5论文研究的内容 32ARM7的体系结构 42.1ARM7处理器结构 42.1.1ARM处理器结构概述和流水线结构 42.2存储器 42.3处理器 42.4内部寄存器 52.4.1各模式可访问寄存器 52.4.2通用寄存器 52.5程序状态寄存器CPSR 72.5.1条件代码标志 82.5.2控制位 92.6异常 92.6.1进入异常 92.6.2退出异常 92.6.3快速中断请求 102.6.4中断请求 102.6.5中止 102.6.6软件中断指令 112.6.7未定义的指令 112.7复位 112.8存储器及存储器映射I/O 112.8.1地址空间 122.8.2存储器格式 122.9寻址方式 132.10ARM7指令集 133ARM7的硬件结构 143.1LPC2138简介 143.1.1结构 143.2存储器寻址 153.2.1存储器映射 153.2.2LPC2138存储器重新映射和BootBlock 153.3系统控制模块 173.3.1晶体振荡器 173.3.2外部中断输入 173.3.3存储器映射控制 173.3.4PLL 183.3.5功率控制 183.3.6复位 193.3.7VPB分频器 193.3.8唤醒定时器 193.4存储器加速模块 203.5中断控制器 213.6引脚连接模块 224基于ARM7的仿真实验系统设计 234.1系统界面设计 234.2各实验项目设计 244.2.1 GPIO实验 244.2.2外部中断输入实验 284.2.3定时器实验 334.2.4UART实验 364.2.5A/D转换器实验 394.2.6看门狗定时器实验 43结论 47致谢 48参考文献 49附录A英文原文 50附录B中文翻译 601绪论1.1嵌入式系统概念根据IEEE的定义,嵌入式系统是“控制、监视或者辅助设备、机器和车间运行的装置”,这主要是从应用上加以定义的。目前的普遍定义是:以应用为中心、以计算机技术为基础,软硬件可裁剪,适于应用系统对功能、成本、体积、功耗等严格要求的专用计算机系统。总体上来说,嵌入式系统可以划分为硬件和软件两部分,硬件一般由高性能的微处理器和外围接口电路组成,软件一般由实时操作系统和其上运行的应用软件构成,软件和硬件之间由所谓的中间层连接。一般而言,嵌入式系统的架构可以分成4个部分:处理器、存储器、输入输出和软件。ARM是全球领先的16/32位RISC微处理器的知识产权设计供应商,ARM公司通过转让高性能、低成本、低功耗的RISC微处理器、外围和系统芯片设计技术给合作伙伴,使他们能用这些技术来生产各具特色的芯片。目前应用较多的是ARM7系列、ARM9系列、ARM9E系列、ARM10、ARM11系列和Intel的StrongARM、XScale系列。ARM7TDMI基于ARM的体系结构V4版本,是目前低端的ARM核,具有广泛的应用,最显著地是数字移动电话。本论文选择的就是基于飞利浦公司的ARM7版本的LPC2138芯片。1.2国内外研究现状和发展趋势从20世纪七十年代单片机的出现到各式各样的嵌入式微处理器,微控制器的大规模应用,嵌入式系统已经有了近40年的发展历史。嵌入式系统的出现最初是基于单片机的,它被用在一般的电子产品中。在进入了21世纪后,由于移动通信设备的爆炸式增长,因此基于ARM的处理器也得到了广泛的应用。到目前为止,ARM处理器在手机、平板、路由器、车载以及其他电子领域都占据了主要地位。正因为它的巨大的市场前景,人们对基于ARM处理器的研究开发越来越重视。目前国内外对于基于ARM7的开发技术已经成熟,各种基于ARM7的实验板也可以在网上轻松买到。在国内的实验板大多是基于Philips公司的LPC2000系列,各种资料和软件都可以很容易找到。目前通过软件仿真这一方法来开发基于ARM处理器的各种设备并未得到广泛采用,随着人们认识的提高和对于资源节约的要求,通过软件仿真形式来设计和开发各种电子设备将会成为主流。1.3课题研究的目的和意义虽然嵌入式系统在人们生活中已经非常普遍,但是嵌入式系统并没有得到足够的重视。本文通过对ARM7的体系结构、外围接口电路和相关原理进行深入研究,使得大家能够对ARM7的真实面目有一个更加全面的认识。同时,在介绍实验项目的时候,有相关的寄存器介绍、程序代码和电路原理图,这样大家能够更快速直观的了解ARM7的相关原理。由于本文是采用仿真设计,因此在学习ARM7的原理过程中,也学会了相软件(Keil,Proteus)的使用。1.4软件简介1.4.1Keil简介Keil公司是嵌入式开发工具专业制造商。Keil软件公司的产品包括C编译器、宏汇编器、实时内核、调试器、模拟器、集成开发环境以及、ARM7/ARM9/Cortex-X、8051、251等系列微控制器仿真开发装置。UV3平台的人机交互界面非常人性化,且编译器性能优异,编译出代码的大小及执行速率,系统运行稳定度均领先于市场上同类产品。2009年2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁和高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。1.4.2Proteus简介Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真微处理器及外围器件。它是目前最好的仿真微处理器及外围器件的工具。虽然目前国内推广刚起步,但已受到爱好者、从事教学的教师和致力于嵌入式系统开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到处理器与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。ISIS是Proteus系统的中心,它的功能有良好的用户界面、自动走线、层次设计、总线支持、元件库、可视封装工具、复合元件和报告等。1.5论文研究的内容本文的具体结构如下:第一章:绪论。从应用角度出发论述嵌入式系统概述、嵌入式系统研究现状及发展趋势、本课题的研究目的和意义及相关软件介绍。第二章:ARM7的体系结构。详细的介绍了ARM7的体系结构。第三章:ARM7的硬件结构。全面介绍了ARM7的特征,其中包括存储器寻址、系统控制模块、存储器加速模块、中断控制模块和引脚连接模块。第四章:基于ARM7的仿真实验系统设计。设计了相关的系统界面和多个实验项目。通过对外设的介绍,也设计了相关原理图,编写了相关代码,以便大家能够更好的理解ARM7的各个外设。结论:对本文做结论性概括。2ARM7的体系结构2.1ARM7处理器结构2.1.1ARM处理器结构概述和流水线结构ARM是一种精简指令集计算机,它具有体积小、低功耗和高性能等特点。它的数据处理操作只针对寄存器的内容,而不直接对存储器进行操作。由寄存器内容和指令域共同决定简单的寻址模式,每一条数据处理指令都对算术逻辑单元和移位器控制,以实现对算术逻辑单元和移位器的最大利用,地址自动增减和自动减少的寻址模式实现了程序循环的优化。ARM处理器通过使用流水线结构来增加处理器指令流的速度,这样可以使得几个操作同时进行。ARM7处理器采用了三级流水线的结构:即取指、译码和执行。2.2存储器ARM处理器的指令和数据共用一条32位总线。只有装载、存储和交换指令可以对存储器中的数据进行访问。数据可以是8位字节、16位半字或者32位字。ARM存储器的接口设计可以使潜在的性能得到实现,这样减少了存储器的使用。对速度有严格要求的控制信号使用流水线,这些控制信号使许多片内和片外存储器技术所支持的快速突发访问模式得到应用。2.3处理器ARM处理器内核结构包括32位ARM指令集和16位Thumb指令集,它具有两种操作状态。ARM状态和Thumb状态之间的转换是使用BX指令来切换。LPC3128支持7种处理器模式:用户模式、系统模式、管理模式、中止模式、未定义模式、中断模式和快中断模式。除用户模式外,其他的均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许在特权模式下访问。特权模式之间可以自由的切换,但是用户模式不能直接切换到别的模式。表2.1处理器模式处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式快中断(fiq)高速数据传输及通道处理FIQ异常响应时,进入此模式中断(irq)用于通用中断处理IRQ异常响应时,进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和存储器保护在ARM7TDMI中没有用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常时进入此模式系统(sys)用于支持操作系统的特权任务等与用户类似,但可直接切换到其它模式其中除了用户模式和系统模式外的其它模式都称为异常模式。异常模式除了可以通过程序切换进入外,也可由特定的异常进入。每种模式都有特定的寄存器,以避免异常退出时,用户模式不可靠。2.4内部寄存器2.4.1各模式可访问寄存器ARM处理器内部有37个用户可见的寄存器:(1)31个通用32位寄存器,分别是R0~R15、R13_svc、R14_svc、R13_abt、R14_abt、R13_und、R14_und、R13_irq、R14_irq、R8_fiq~R14_fiq。(2)6个状态寄存器,分别为CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq。各模式下的寄存器如表2.2为ARM状态各模式下的寄存器。2.4.2通用寄存器数据或地址保存寄存器寄存器R0~R13为保存数据或地址的通用寄存器,其中寄存器R0~R7为未分组的寄存器。这意味着对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。表2.2ARM状态各模式下的寄存器寄存器类别寄存器在汇编中的名称各模式实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR14_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2、分组寄存器寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式。几乎所有允许使用通用寄存器的指令都允许使用分组寄存器。寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器(R8~R12),另一个用于FIQ模式。FIQ所使用的这些寄存器可实现快速的中断处理。3、堆栈指针R13寄存器R13通常作为堆栈指针SP。每个异常模式都有其自身的R13分组版本,它通常指向由异常模式所专用的堆栈。在入口处,异常处理程序通常将其他要使用的寄存器值保存到这个堆栈。通过返回时将这些值重装到寄存器中,异常处理程序可确保异常发生时的程序状态不会被破坏。4、链接寄存器寄存器R14在结构上有两种功能。在每种模式下,模式自身的R14版本用于保存子程序返回地址。当使用BL或者BLX指令调用子程序时,R14设置为子程序返回地址。子程序返回通过将R14复制到程序计数器来实现。通常通过执行下列指令的两种方式:MOVPC,LRBXLR5、程序计数器程序计数器(PC)总是指向正在取指的指令。由于流水线的结构,PC指向正在执行指令的下下一条指令。在顺序执行程序时,PC自动加上ARM指令集长度(4个字节)或Thumb指令集长度(2个字节)。2.5程序状态寄存器CPSR所有模式共享一个程序状态寄存器。在异常模式中,另外一个寄存器程序状态保存寄存器SPSR可以被访问。每种异常都有自己的SPSR,在进入异常时,它保存CPSR的当前值;在异常退出时,可通过它恢复CPSR。ARMTDMI内核包含一个CPSR和5个供异常处理程序使用的SPSR。ARM7TDMI内核所有处理器状态都保存在CPSR中。当前的操作处理器状态位于CPSR当中。CPSR包含:(1)4个条件代码标志(负N、零Z、进位C和溢出V);(2)2个中断禁止位,分别用于一种类型的中断;(3)5个对当前处理器模式进行编码的位;(4)1个用于指示当前执行指令(是ARM还是Thumb)的位。每个异常模式还带有一个程序状态保存寄存器,它用于保存任务在异常发生之前CPSR,其CPSR和SPSR通过特殊指令进行访问。2.5.1条件代码标志大多数数值处理指令可以选择是否修改条件代码标志。一般来说,如果指令带S后缀,则指令会修改条件代码标志,但有一些指令总是改变条件代码标志。N、Z、C和V位都是条件代码标志。可以通过算术和逻辑来设置这些位。这些标志还可通过MSR和LDM指令进行设置。ARM7TDMI处理器对这些位进行测试以决定是否执行一条指令。在ARM状态中,所有指令都可按条件来执行。在Thumb状态中,只有分支指令可条件执行。图2.1CPSR寄存器格式2.5.2控制位CPSR的最低8位为控制位。它们分别是中断禁止位、T位、模式位。当发生异常时,控制位改变。当处理器在一个特权模式下操作时,可用软件操作这些位。2.6异常只要正常的程序被暂时中止,处理器就进入异常模式。当有一个异常时,在处理异常之前,ARM7TDMI内核保存当前处理器的状态,当处理完异常后,再恢复原来的程序。2.6.1进入异常当处理异常时,ARM7TDMI内核会在适当的LR中保存下一条指令的地址。当异常入口来自于ARM状态下,将下一条指令的地址复制到LR中(当前PC+4还是+8取决于偏移量)。不管是ARM还是在Thumb状态下,过程都是一样的。(1)将CPSR复制到适当的SPSR;(2)根据异常将CPSR模式强制设为某一值;(3)强制PC从相关的异常向量取指。ARM7TDMI内核在中断异常时,总是置位中断禁止标志,这样可以防止不受控制的中断嵌套。异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,将向量地址装到PC后切换到ARM状态执行。2.6.2退出异常当异常结束时,异常处理程序应当:(1)将LR中的值减去偏移量后移入PC;(2)将SPSR的值复制回CPSR;(3)清零在入口处置位的中断禁止标志。2.6.3快速中断请求在ARM状态中,快中断模式有8个专用的寄存器,可用来满足寄存器保护的需要,将FIQ信号拉低可实现外部产生FIQ。不管异常来自于ARM还是Thumb,都会通过这样的方式返回:SUBSPC,R14_fiq,#4 2.6.4中断请求中断请求IRQ异常是一个由输入端的低电平所产生的正常中断。IRQ的优先级低于FIQ,对于FIQ序列它是被屏蔽的。从中断返回:SUBSPC,R14_irq,#42.6.5中止中止表示对当前存储器的访问不能完成,这是通过外部ABORT输入指示的。有两种类型的中止:预取中止和数据中止。预取中止当发生预取中止时,ARM7TDMI内核将预取的指令标志为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,则中止将不会发生。处理程序的指令如下:SUBSPC,R14_abt,#4数据中止发生在数据中止时,根据指令的类型产生不同的动作:(1)数据转移指令LDR、STR回写到被修改的基址寄存器。(2)交换指令SWP中止好像没有被执行过一样。(3)块数据转移指令LDM、STM完成回写被设置时,基址寄存器被更新。中止的机制使指令分页的虚拟存储器系统能够实现。在这样的一个系统中,处理器允许产生仲裁地址。当某一地址的数据无法访问时,存储器管理单元MMU通知产生了中止。2.6.6软件中断指令软件中断SWI用于进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序返回时执行下面指令:MOVSPC,R14_svc2.6.7未定义的指令当ARM7TDMI处理器遇到一条自己和系统内任何协处理器都无法处理的指令时,ARM7内核执行未定义指令异常。MOVSPC,R14_und2.7复位当复位信号被拉低时,ARM7TDMI处理器放弃正在执行的指令。当处理器再次变为高电平时,ARM处理器执行下列操作:(1)强制M[4:0]变为b10011(管理模式);(2)置位CPSR中的I和F位;(3)清零CPSR中的T位;(4)强制PC从地址0x00处开始取指;(5)返回到ARM状态并恢复执行。在复位后,除了PC和SPSR之外的所有寄存器值都不确定。2.8存储器及存储器映射I/OARM7TDMI处理器采用冯·诺依曼结构,指令和数据共用一条32位数据总线。只有装载、保存和交换指令能访问存储器中的数据。ARM7的规范仅定义了处理器核与存储器系统之间的信号及时序,而现实的芯片一般在外部总线与处理器核的局部总线之间有一个存储器管理部件将局部总线的信号和时序装换为现实的外部总线和时序。ARM7TDMI处理器可以将存储器中的字以大端格式或小端格式存储。2.8.1地址空间ARM结构使用单个平面的8位字节地址空间。字节地址按照无符号数排列,0到-1。地址计算通常通过普通的整数指令来实现。这意味着如果地址向上或向下溢出地址空间,通常都会发生翻转,也就是说计算的结果以为模。2.8.2存储器格式存储器使用下列两种映射机制中的一种:小端格式存储系统在小端格式中,一个字当中最低地址的字节被看作是最低位字节,最高地址字节被看作是最高位字节。因此,存储器系统字节0连接到数据线0~7。大端格式存储系统在大端格式中,ARM7TDMI处理器将最高位字节保存在最低地址字节,最低位字节保存在最高地址字节。因此,存储器系统字节0连接到数据线24~31。一个具体基于ARM的芯片可能只支持小端存储器系统,也可能只支持大存储器系统,还有可能两者都支持。ARM指令集不包含任何直接选择大小端的指令。但是一个同时支持大小端的基于ARM的芯片可以在硬件上配置,以匹配存储器系统所使用的规则。2.9寻址方式寻址方式是处理器执行指令时寻找真实操作数地址的方式。ARM处理器支持9种寻址方式。其中包括寄存器寻址、立即寻址、寄存器移位寻址、寄存器间接寻址、基址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址。2.10ARM7指令集ARM7TDMI有两种指令集:32位ARM指令集和16位Thumb指令集。每种都有自己的优缺点和使用范围。其中ARM指令集可分为5大类指令:分支指令、数据处理指令、加载和存储指令、协处理器指令和杂项指令。而Thumb指令集包括分支指令、数据处理指令、寄存器加载与存储指令和异常指令。16位结构比32位结构具有更高的代码密度,并且超多32位结果50%的性能。Thumb非常适用于那些只有有限的存储器带宽并且代码密度很高的嵌入式应用。3ARM7的硬件结构3.1LPC2138简介LPC2138是基于一个支持实时仿真和跟踪的32位ARM7TDMI的CPU微控制器,并带有512KB高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用1个16位Thumb模式将代码规模降低30%以上,而性能的损失却很小。较小的封装和极低的功耗使LPC2138可理想地用于小型系统中,如访问控制和POS机。宽范围的串行通信接口和片内32KB的SRAM,使LPC2138非常适用于通信网关、协议转换器、软Modem等,可为它们提供巨大的缓冲区间和强大的处理能力。4个32位定时器、1个10位8路ADC、1个10位DAC、6个PWM通道、多达47个GPIO、9个边沿或电平触发的外部中断、看门狗和UART等,使它们非常适合于工业控制和医疗系统。3.1.1结构LPC2138包含一个支持仿真的ARM7TDMI-SCPU与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线AHB和连接片内外设功能的VLSI外设总线VPB。AHB和VPB通过桥相连,LPC2138外设功能都连接到VPB总线。片内外设与器件引脚的连接由引脚连接模块控制,以符合外设功能与引脚在特定应用中的需求。片内Flash程序存储器LPC2138集成了一个512KB的Flash存储器系统。该存储器系统可用作代码和数据的存储。对Flash存储器的编程可通过几种方法来实现:通过内置的串行JTAG接口,或者在应用编程的应用程序,也可以在应用程序运行时对Flash进行擦除或编程,这样就为数据存储和现场固件的升级都带来了极大的灵活性。片内静态RAMLPC2138含有32KB的静态RAM,可用作代码和数据的存储。SRAM支持8位、16位和32位的访问。LPC2138的SRAM是一个字节寻址的存储器。对存储器进行字和半字访问时,将忽略地址对准,访问被寻址的自然对准值。因此,有效的读/写操作要求半字数据访问的地址线0为0;字数据访问的地址线0和1都为0。SRAM控制器包含一个回写缓冲区,用于防止CPU在连续操作时停止运行。回写缓冲区总是保存着软件发送到SRAM的最后一字节。该数据只有在软件请求下一次写操作时才写入SRAM。如果发生芯片复位,实际的SRAM不会反映最近一次的写请求。通过对一个单元执行两次相同的写操作,可保证复位后数据的写入。3.2存储器寻址3.2.1存储器映射LPC2138基于ARM7TDMI-S核,采用冯·诺依曼结构,数据和指令混合编址,只有加载、存储和交换指令可以访问存储器中的数据,系统包含几个不同的存储器组。外设存储空间的映射包括AHB外设和VPB外设区域,AHB和VPB外设区域都为2MB,可各自分配最多128个外设,每个外设空间的规格都为16KB,这样可简化每个外设的地址译码。3.2.2LPC2138存储器重新映射和BootBlockLPC2138存储器映射的基本概念是每个存储器组在存储器映射中都有一个物理上的位置,它是一个可写入程序代码的地址范围,每一个存储器空间的容量都永久固定在同一个位置,不需要将部分代码设计成在不同的地址范围内运行。中断向量位置位于ARM7处理器上(地址在0x00000000~0x0000001C)。为了在不同的操作模式下使用中断,BootBlock和SRAM空间的一小部分需要重新映射,如表3.1。为了与将来器件相兼容,整个BootBlock都被映射到片内存储器的顶端。在这种方式下,使用较大或较小的Flash模块都不需要改变BootBlock的位置或改变其中断向量的映射。表3.1中断向量表地址异常0x00000000复位0x00000004未定义指令0x00000008软件中断0x0000000C预取指中止0x00000010数据中止0x00000014保留0x00000018IRQ0x0000001CFIQ表3.2操作模式模式激活用途BootLoader模式由任意复位硬件激活在任何复位后BootLoader都会执行,BootBlock中断向量映射到存储器底部以允许处理异常并在Boot加载中使用中断用户Flash模式由Boot代码软件激活当在存储器中一个有效的用户程序标识被识别时并且Boot装载操作未被执行时,由Boot装载程序激活,中断向量没有重新映射,位于Flash存储器底部用户RAM模式由用户程序软件激活由用户程序激活,中断向量重新映射到静态RAM的底部存储器重新映射的部分允许在不同的模式下处理中断,它包括中断向量区和额外的32字节,一共64字节。重新映射的代码位置与地址0x00000000~0x0000003F重叠。包含在SRAM、外部存储器和BootBlock中的向量必须包含跳转到实际中断处理程序的分支或者其他执行跳转到中断处理程序的跳转指令。使用存储器重映射的原因有:(1)使Flash存储器中的FIQ处理程序不必考虑由于重映射所导致的存储器边界问题;(2)用来处理代码空间中边界仲裁的SRAM和BootBlock向量使用大大减少;(3)为超过单字转移指令范围的跳转提供空间来保存常量。 3.3系统控制模块系统控制模块包括晶体振荡器、复位、外部中断输入、存储器映射控制、PLL、VPB分频器、功率控制和唤醒定时器。3.3.1晶体振荡器对于LPC2138,如果是从XTAL1脚输入占空比因数为50-50的时钟信号,则时钟频率在1~50MHz范围内;如果是使用外部晶振,则微控制器的内部振荡电路仅支持1~30MHz的外部晶振。如果需要使用片内PLL系统或引导装载程序(ISP),输入时钟频率被限制在10~25MHz。LPC2138的振荡器可工作在两种模式下:从模式和振荡模式。3.3.2外部中断输入LPC2138有4个外部中断输入,外部中断输入可将处理器从掉电模式中唤醒。外部中断功能具有4个相关的寄存器,分别为EXTAINT、EXTWAKE、EXTMODE和EXTPOLAR。其中EXTINT寄存器包含中断标志;EXTWAKE寄存器包含使能唤醒位,可使能独立的外部中断输入将处理器从掉电模式唤醒;EXTMODE和EXTPOLAR寄存器用来指定引脚使用电平或边沿触发方式。3.3.3存储器映射控制存储器映射控制用于改变从地址0x00000000开始的中断向量,这就允许运行于不同存储器空间的代码对中断进行控制。使用的寄存器是MEMMAP寄存器。存储器映射控制只是选择处理ARM异常必须的是哪个数据源中的一个。例如,每当产生一个软件中断请求,ARM内核就从0x00000008的读取出32位数据。这就意味着:当MAMMAP[1:0]=10时,从0x00000008的读取是对0x40000008单元进行操作;如果MAMMAP[1:0]=01时,从0x00000008的读取是对片内Flash单元0x00000008进行操作;如果MAMMAP[1:0]=00时,从0x00000008的读取是对0x7FFE008单元的数据进行操作。3.3.4PLLPLL仅接受10~25MHz的输入时钟频率,输入频率通过一个电流控制振荡器(CCO)倍增到范围10~60MHz,倍频器可以是从1到32的整数(由于CPU最高频率的限制,LPC2138的倍频值不能高于6)。CCO的操作频率范围为156~320MHz,因此在环中有一个额外的分频器,使PLL提供所需要的输出频率时CCO保持依然在允许频率范围内。输出分频器可设置为2,4,8或16分频。PLL的激活由PLLCON寄存器控制。PLL倍频器和分频器的值由PLLCDG寄存器控制。为了防止PLL参数发生意外改变或PLL失效,对这两个寄存器进行了保护。当PLL提供芯片时钟时,由于芯片的所有操作,包括看门狗定时器都依赖于它,因此PLL设置的意外改变将导致CPU执行不期望的动作。对它们的保护是一个类似于操作看门狗定时器的代码序列实现。PLL在芯片复位和进入掉电模式时被关闭并旁路。PLL只能通过软件使能,程序必须在配置并激活PLL后等待其锁定,然后再连接PLL。其中,PLL包含的寄存器有PLL控制寄存器、PLL配置寄存器、PLLSTAT状态寄存器和PLLFEED馈送寄存器。PLL频率计算需要使用的包括晶振频率(Fosc)、PLL电流控制振荡器的频率(Fcco)、处理器的时钟频率(Fcclk)、PLLCFG寄存器中MSEL位的倍频值(M)、PLLCFG寄存器中PSEL位的分频值(P)。PLL输出频率如下:(3.3.1)CCO频率计算如下:(3.3.2)3.3.5功率控制LPC2138支持两种节电模式:空闲模式和掉电模式。在空闲模式下,指令的执行被挂起直到发生复位或中断为止。外设功能在空闲模式下继续保持并可产生中断使处理器恢复运行。空闲模式下的处理器、存储器系统和相关控制器以及内部总线不再消耗功率。在掉电模式下,振荡器关闭,这样芯片没有内部时钟。处理器状态和寄存器、外设寄存器以及内部SRAM值在掉电模式下被保持。芯片引脚的裸机电平被保持静态。复位或特定的不需要时钟仍能工作的中断可终止掉电模式并使芯片恢复正常运行。由于掉电模式使所有的动态操作都挂起,因此芯片的功耗降低到几乎为零。掉电或空闲模式的进入是与程序执行同步进行的。通过中断唤醒掉电模式不会使指令丢失、不完整或重复。其中,使用的寄存器包括PCON功率控制寄存器和PCONP外设功率控制寄存器。3.3.6复位LPC2138有两个复位源:引脚复位和看门狗复位。复位引脚为施密特触发输入引脚,带有一个额外的干扰滤波器。它可以忽略非常短的外部复位脉冲。它决定了芯片复位所需要的最短时间。外部复位和内部WDT复位有一些小的差别。外部复位使特定引脚被锁定以实现配置,内部WDT则无此功能。当复位后执行BootLoader时,片内BootLoader对P0.14进行检测。3.3.7VPB分频器VPB分频器决定处理器时钟(cclk)与外设时钟之间的关系。它具有两个用途,一个是通过VPB总线为外设提供所需要的pclk时钟,以便外设在合适的频率下工作。另一个用于就是在应用于不需要任何外设全速运行时,使功耗降低。它使用的寄存器是VPBDIV分频器寄存器。3.3.8唤醒定时器唤醒定时器的用途是确保振荡器和芯片所需要的其它模拟电路在处理器开始执行指令之前正确工作。唤醒定时器通过检测晶振是否能可靠地开始代码的执行来对其进行监视。当给芯片加电或某个事件使芯片退出掉电模式,振荡器需要一段时间来产生足够振幅的信号驱动时钟逻辑。一旦检测到一个时钟,则唤醒定时器对4096个时钟计数,在这段时间内,Flash进行初始化。总之,LPC2138唤醒定时器是根据晶振的情况来执行最短时间复位,它在从掉电模式中唤醒或任何复位产生时激活。3.4存储器加速模块存储器加速模块MAM将下一个需要的ARM指令锁存起来,以防止CPU取指暂停。MAM所使用的方法是将Flash存储器分成两组,每一组都可独立进行访问,这两个Flash组都有自己的预取指缓冲区和分支跟踪缓冲区。当一个组的预取指缓冲区和分支跟踪缓冲区不能满足指令取指的需要并且预取指还没有启动时,两个组的分支跟踪缓冲区捕获两个128位的Flash数据行。在MAM启动的预取指周期结束时,每个预取指缓冲区从它自身的Flash组捕获一个128位指令行。若关闭MAM,所有的存储器请求都会直接对Flash操作。每个128位值包括了4个32位ARM指令或8个16位Thumb指令。在连续执行代码时,通常一个Flash组包含当前正在取指的指令和包含该指令的整个Flash行;另一个Flash组则包含正在预取指下一个连续的代码行。当一个代码行传送完最后一条指令时,包含它的Flash组开始对下一行进行取值。结构MAM分为以下几个功能块:为每个存储器组提供Flash地址锁存;两个Flash存储器组;指令锁存,数据锁存,地址比较锁存;等待逻辑。Flash存储器组两个Flash组实现了并行访问并消除了连续访问延时的缺点。Flash编程功能不受存储器加速器模块的控制,而是作为一个独立的功能进行处理。指令锁存和数据锁存指令和数据的访问由存储器加速器模块分别进行处理。每个Flash组有两套128位指令锁存和12位比较地址锁存。其中一套是分支跟踪缓冲区,用于保存最近一次指令丢失后的数据和比较地址;另一套是预取指缓冲区,用于保存预取指的数据和比较地址。Flash编程问题在编程和擦除操作过程中不允许访问Flash存储器。如果在Flash模块忙时,存储器请求访问Flash地址,MAM就会强制CPU等待。为了防止从Flash存储器中读取无效的数据,MAM使锁存在Flash编程或擦除操作开始时自动失效。在Flash操作结束后,任何对Flash地址的读操作将启动新的取指操作。其中MAM具有三种操作模式,MAM关闭、MAM部分使能和MAM全部使能。在复位后,MAM默认为禁止状态,软件可以随时将存储器访问加速打开或关闭。使用的寄存器有MAMCR存储器加速器模块控制寄存器和MAMTIM存储器加速器定时寄存器。3.5中断控制器向量中断控制器具有32个中断请求输入,可将其分为三类:快速中断请求FIQ、向量中断请求IRQ和非向量中断请求IRQ。其中FIQ的优先级最高,其次是向量IRQ,最后才是非向量IRQ。向量IRQ可分配32个请求中的16个。其中任何一个都可分配到16个向量IRQslot中的任意一个,其中slot0具有最高的优先级。如果用于代码片内RAM中运行并且应用程序使用了中断,中断向量必须重新映射到Flash地址0x00000000。这样做是因为所有的异常向量都位于地址0x00000000及上面。通过配置MEMMAP为用户RAM模式来实现这一点。另外,应用程序代码编译链接时应该使用中断向量表装载到地址0x40000000。在中断服务程序执行完毕后,对外设中断标志的清零将会对VIC寄存器当中的对应位产生影响。为了能够服务下次中断,必须在中断返回之前对VICVectAddr寄存器执行一次写操作(一般为0),读写操作将清零内部中断优先级硬件当中的标志。为了禁止VIC中断,需要清零VICIntEnable寄存器中的相应位,这可以通过写该寄存器来完成。如果看门狗在溢出或无效喂狗时产生中断,那么无法清除中断。唯一的方法是通过VICIntClr禁止VIC中断,然后再中断返回。3.6引脚连接模块引脚连接模块使同一个引脚具有多种功能,即引脚复用,通过配置相关寄存器控制多路开关来连接引脚与片内外设。外设在激活和任何相关中断使能之前必须连接到适当的引脚,任何使能的外设功能如果没有映射到相关的引脚,则被认为是无效的。引脚连接模块包含3个可以进行读/写的引脚功能选择寄存器:PINSEL0,PINSEL1和PINSEL2。4基于ARM7的仿真实验系统设计本实验系统主要采用VB、Keil和Proteus软件集成设计,其中包括用VB设计的实验系统主界面模块和各实验项目模块。其中实验项目设计包括相关寄存器简介、Proteus设计的电路仿真模块和用Keil设计的程序模块,系统目前设计了6个实验项目,分别是GPIO实验、外部中断输入实验、定时器实验、UART实验、ADC转换器实验和看门狗定时器实验。4.1系统界面设计(1)系统界面的设计就是通过用VB软件设计一个窗体,将各个实验项目的电路仿真模块分别连接到窗体上。连接好的各个电路仿真图都可以通过点击控件就可以直接打开相关的Proteus图,这样为讲解相关实验时提供了方便,同时也能综合的体现ARM7的主要外设。系统界面设计的步骤如下。打开VB6.0软件,在弹出的窗体中选择“标准EXE”,如下图。图4.1新建工程功能选择图(2)在窗体中放置六个控件CommandButton,放置好了之后,分别修改属性将“Caption”改为相关实验项目的名称,然后双击控件,编写相关的代码。下面的例子是以GPIO的代码为例的。PrivateSubCommand1_Click()IfDir("C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign")<>""ThenOpen"C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign"ForOutputAs#2Shell"C:\WINDOWS\system32\BIN\ISIS.EXE"+""+"C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign"ElseOpen"C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\SAMPLES\GPIO\GPIO.SchematicDesign"ForOutpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理成长指南:护理职业发展
- 术后出院指导
- 护理交接班中的中医科护理
- 气管切开术后营养支持
- 2026高职(数字媒体艺术设计)数字媒体技能资格考试试题及答案
- 吉兰-巴雷综合征免疫治疗专家共识(2026版)
- 2026年幼儿教师一日活动组织培训方案
- 2026年煤矿重大事故隐患判定标准题库(含答案)
- 2026年煤矿事故重大隐患考试题目及答案
- 护理分级与护理纠纷预防
- 2024年中考物理实验操作评分标准
- 2025-2026学年外研版(三起)(2024)小学英语三年级上册教学计划及进度表
- 中国血脂管理指南2025版精要
- 方太电烤箱KQD50F-C2说明书
- DB11∕T 2210-2024 城市综合管廊数据规范
- 2025至2030年中国卡纸包装盒行业投资前景及策略咨询研究报告
- 【公开课】巴西+课件-2024-2025学年七年级地理下学期人教版
- 虚拟仿真实验室施工方案
- DG∕TJ 08-2188-2015 应急避难场所设计规范
- 2025公司登记管理实施新规内容解读课件
- 民族团结先进班集体事迹材料7篇
评论
0/150
提交评论