第2章PSOC5中央处理器与存储器第1节Cortex-M3内核概述第2节嵌套向量中断控制器第3节高速缓存控制器第4节PHUB和DMAC第5节存储器结构与功能第2章PSOC5中央处理器与存储器第1节Cortex-M3内核概述第2节嵌套向量中断控制器第3节高速缓存控制器第4节PHUB和DMAC第5节存储器结构与功能PSOC5内核特性PSoC5采用ARMCortex-M3内核(低功耗32位CPU),使用哈佛(Harvard)3级流水线核和固定4GB存储器映射。支持16/32位Thumb-2指令集。Cortex-M3结构特性流水性结构寄存器操作模式Systick定时器存储器空间映射异常及处理CORTEX-M3内核特性Cortex-M3特性还包括使用硬件除法指令,低延迟中断服务程序ISR入口和退出特性。还包括其它模块,与CPU紧密连接在一起。嵌套中断控制器(NestedVectorInterruptingController-NVIC),SYSTICK定时器和众多的调试和跟踪模块。CORTEX-M3构成框图CORTEX-M3内核特性3级流水线结构(性能达到1.25DMIPS/MHz),提高指令执行速度和降低功耗。支持Thumb-2指令集:支持16/32位操作;原子比特位的读和写操作;支持非对齐存储器访问操作。改善代码的密度,确保存储器的使用效率。易于使用、编程和调试,易于从8/16位处理器移植。NVIC支持中断和异常,帮助快速地响应中断。扩展的调试支持:串行线调试端口(SWD);断点;Flash修补;代码跟踪。流水线结构与总线接口3级流水线实现:取指-从存储器取指令;译码-产生地址和分支预测;执行-基于地址和分支执行指令。当执行1个指令时,流水线能给出1~2个等待状态。总线基于轻量先进高性能总线(AdvancedHighPerformanceBusLite-AHBLite)先进高性能总线(AdvancedHighPerformanceBus-APB)总线接口总线接口:加载指令的I-Code总线;加载数据的D-Code总线;从存储器器区域0x20000000~0xDFFFFFFF和0xE0100000~0xFFFFFFFF。外部的私有外设总线,用于调试元件。调试访问端口,用来连接调式接口模块。普通寄存器•4种普通寄存器(通用寄存器,堆栈指针,链接寄存器和程序计数器)普通寄存器通用寄存器(R[0:12]):所有指令都可访问R[0:7]。所有32位指令和部分16位指令可以访问R[8:12]。堆栈指针(StackPointer-SP)(R13):2个堆栈指针,每1次只能用1个。SP是32位对齐方式。忽略[1:0]比特位,当作0来处理。链接寄存器(R14):保存程序调用期间返回的程序计数器的值。程序计数器(R15):能写此寄存器来控制程序流(程序执行顺序)。特殊寄存器3种特殊寄存器(程序状态寄存器,中断屏蔽寄存器和控制寄存器)。仅使用特殊指令访问特殊寄存器,不能正常数据处理。程序状态寄存器程序状态寄存器(ProgramStatusRegister-PSR):应用程序状态寄存器(ApplicationPSR-APSR)中断程序状态寄存器(InterruptPSR-IPSR)执行程序状态寄存器(ExecutionPSR-EPSR)PSR提供ALU标志(零/进位),执行状态和当前执行中断数量。使用MSR和MRS指令,能单独或者集体访问3个PSR。作为xPSR时,能对其进行集体访问。中断屏蔽寄存器与控制寄存器中断屏蔽寄存器PRIMASK:用来禁止除不可屏蔽中断NMI和硬故障外的所有中断;FAULTMASK:用来禁止NMI外的所有中断。BASEPRI:用来禁止指定的或者低优先级的中断。NVIC使用这些寄存器来屏蔽中断或异常。控制寄存器控制堆栈指针的选择和处理器的特权级。只有2位:CONTROL[0]:0线程模式的特权;1线程模式的用户状态;CONTROL[1]:0使用默认的堆栈;1使用可替换的堆栈。特权分级2种特权分级特权级(Privileged):代码没有资源限制用户(User):代码有资源限制使用控制寄存器控制特权分级。当代码在用户级时,它不能访问调试资源和某些重要的寄存器,这些限制包括限制访问MSR和MRS指令,不能使用CPS指令。不能访问系统定时器,NVIC或系统控制块。可能限制访问存储器或外设。操作模式2种操作模式线程模式所有正常的应用程序使用线程模式。在线程模式下,使用进程堆栈指针PSP。线程模式能存在于特权级和用户级。管理者模式操作系统内核和异常处理程序使用管理者模式。在此模式下,使用主堆栈指针(MSP)。管理者模式只用于特权级。线程模式切换调整控制寄存器,可从特权级切换到用户级,但是不能通过调整控制寄存器从用户级切换到特权级。发生异常时,系统自动使用特权级;退出异常时,又返回到特权级。只能通过异常处理程序对控制寄存器编程为特权模式,才能恢复到特权级。SYSTICK定时器SysTick定时器集成在NVIC中,产生SYSTICK中断。在实时系统中用于任务管理。片内有1个24位可重加载的寄存器,递减计数器的值。使用Cortex-M3内部时钟或PSoC5时钟。片内有2个寄存器控制时钟源:第1个是Cortex-M3寄存器NVIC_SYSTICK_CTL,选择时钟源来自内部或者外部(默认)。第2个是PSoC5寄存器PANTHER_WAITPIPE,选择内部时钟源;或内部ILO100KHz(默认),或DSI时钟。存储器空间映射存储器空间映射Cortex-M3具有线性32位(4GB)地址空间。包括2个位带别名区域,分别用于SRAM空间和外设空间。访问1个位带别名区域影响相应位带区域内单独的位。2个位带中的地址除可以象普通RAM一样使用外;还可以有自己的位带别名区,位带别名区每个比特膨胀为32位的字。存储器空间映射异常及处理Cortex-M3提供丰富特性的异常结构,支持大量的系统异常和外部中断。中断号1-15的异常用于系统异常,16以上用于外部中断输入。PSoC5结构支持32个外部中断。异常由NVIC处理。大多数的异常都有可编程的优先级,少数有固定的优先级。当前正在运行的异常的值由特殊寄存器IPSR或者来自NVIC的中断控制状态寄存器(VECTACTIVE域)给出。异常及处理中断是异常的一部分。异常和中断的处理方法相同。在中断向量表中保存着每个异常句柄(服务程序)。向量表开始于异常句柄,后面跟着中断服务程序的地址。可动态改变向量表的指针。若向量表在SRAM中,则可动态修改向量。第2章PSOC5中央处理器与存储器第1节Cortex-M3内核概述第2节嵌套向量中断控制器第3节高速缓存控制器第4节PHUB和DMAC第5节存储器结构与功能嵌套向量中断控制器特性嵌入向量中断控制器(NestedVectorInteruptedController-NVIC)是Cortex-M3处理器的组成部分。作为存储器映射设备访问。除用作中断处理控制寄存器和控制逻辑外,还用作SYSTICK定时器和调试控制的控制寄存器。NVIC特性支持32个中断和16个异常;可配置的优先级;动态可重新配置的中断优先级(0~7);支持嵌套的中断;可编程中断向量(固定功能,UDB或DMA);支持尾链(Tailchaining)和迟到的中断。这样能背对背的中断。支持电平触发和脉冲触发。中断控制器的特性中断控制器的特性中断控制器提供1种机制,使得在不需要考虑目前主程序执行任务的情况下,可在新的地址执行程序。提供32个中断线,每个中断线对应1个中断向量和可配置的优先级。每个中断线分配8个优先级中的一个。支持32个中断信号:固定功能模块;DMA通道;UDB;中断线穿过1个多路复用器。用来选择中断源。多路复用器选择:固定功能IRQ(中断请求);UDB的电平IRQ、UDB的边沿IRQ;DMAIRQ使用IDMUX.IRQ_CTL寄存器来选择中断请求IRQ。中断控制器的特性中断使能中断控制器使能或者禁止个别的中断线。使能寄存器SETEN和清除使能寄存器CLREN,分别用来使能和禁止中断线。寄存器的每1位都对应1个中断线,这些寄存器使能和禁止中断,以及读中断的使能状态。设置未处理中断寄存器SETPEND和清除未处理中断寄存器CLRPEND,允许通过软件设置和清除未处理中断比特位。每个比特位对应于1个中断线。可以通过读这些寄存器来查看,未处理中断比特位的状态。中断使能对所有脉冲/电平中断,一旦中断控制器接收到来自CPU的中断入口(IRA)的响应,则立即清除相应未处理中断比特位。对脉冲中断,一旦有新脉冲到来,就可再次设置未处理中断比特位。对电平中断,当中断控制器接收到来自CPU的中断退出(IRC)响应后,则检查中断线的状态。若此时,仍然确认中断线,则设置(复位)处理中断比特位;如果没有确认中断线,则未处理中断比特位保持清除状态。中断使能若硬件请求设置未处理中断比特位,而同时软件请求清除未处理中断比特位,则硬件请求具有更高优先级。当已设置相同的比特位,再设置该位,则只执行一次中断。不管是否设置相应的使能位,总可以更新未处理中断比特位。建议在使能中断以前,查看未处理中断比特位的状态。中断控制器提供中断优先级处理的能力来帮助为每个中断分配不同的优先级。中断优先级可分配(0~7)共8个级别的优先级。0级具有最高优先级,7级具有最低优先级。使用中断优先级寄存器PRI_[x]设置优先级。可以动态的配置中断的优先级。若确认1个中断INTB和正在执行另1个中断INTA,则3种可能:若INTA的优先级比INTB低,则:INTA执行点停止;INTA现场入栈,开始执行INTB;执行完INTB后,INTA继续从中断点上继续执行;中断优先级处理若INTA的优先级比INTB高,则:INTB等待INTA执行完;INTA执行完后,INTB开始执行;若INTA和INTB优先级相同,则:若INTA正在执行,则INTB等待INTA执行完。当INTA执行完后,INTB开始执行;若INTB正在执行,则INTA等待INTB执行完。当INTB执行完后,INTA开始执行。中断优先级处理同时产生中断若INTA优先级低于INTB,则INTB获得仲裁权,开始执行;若INTA优先级高于INTB,则INTA获得仲裁权,开始执行;若INTA和INTB有相同的优先级,则具有低索引值的中断获得仲裁权,开始执行。中断控制器支持电平和脉冲中断。中断控制器包含脉冲检测逻辑,用于检测中断线的上升沿。若检测到上升沿,脉冲检测逻辑设置未处理中断比特位。中断控制器检测任何对中断信号的确认,则按如下执行中断。电平中断与脉冲中断电平中断中断服务程序内清除相应外设寄存器的中断请求比特位。若设置外设寄存器的中断请求位,导致中断信号线上的高电平信号。退出中断时若在外设寄存器中设置中断请求位,将再次设置中断未处理比特位。若使能中断则再次处理中断。脉冲中断在中断线上出现1个脉冲。脉冲的上升沿设置未处理中断比特位,执行相应的中断。若已设置中断未处理比特位,此时产生脉冲,不起任何作用。进入ISR时,自动清除未处理中断位。若中断当前正在处理的时候,产生脉冲,再次设置未处理中断比特位,执行中断。中断执行中断执行中断控制器能控制电平和脉冲中断,执行顺序:执行相应中断信号的中断要求设置中断使能(假设已经编程优先级和中断向量地址);当确认中断信号时,在未处理中断寄存器内设置对应于相应中断号的未处理中断比特位,表示正在等待执行中断。优先级译码单元读取优先级,确定何时执行中断。中断控制器向CPU发送中断请求,以及用于执行的中断向量地址。CPU接收到请求。中断执行中断入口(IRA):CPU