您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > PSoC系统中组织结构及内核原理分析
1PSoC系统结构PSoC内部可分为4部分:PSoC内核可编程数字系统可编程模拟系统系统资源2PSoC总体结构图3PSoC内核包括:CPU内核、SRAM、监控ROM(SROM)、Flash存储器、中断控制器、睡眠与看门狗、一组时钟源CPU内核M8C采用哈佛(Harvard)结构全面可配置的内部CPU时钟2KB~32KB的Flash128B~2KB的SRAMCPU内核可对所有用户单元组成的特殊功能寄存器进行存取操作,这一能力使PSoC能对其所有用户模块进行全面重构内核的功能部件可由系统总线通过通用I/O口与外部引脚构成连接每个引脚具有8中不同的驱动模式,不同的驱动模式为外部连接提供了强大的灵活性,引脚上高低电位变化或最近一次读操作时引脚上数据的改变都会触发一次外部中断4可编程数字系统由1~4个数字行组成,1个数字行包含4个基本数字单元4个数字单元包括2个数字基本单元(DBB)和2个数字通信单元(DCB)都可以配置为具有独立功能的数字用户模块,如:定时器、计数器、PWM等多个DBB可以组成一个超过8位的数字用户模块DCB可以配置成主或从SPI模块或全双工UART模块每个DBB或DCB的输入和输出都可以通过行输入总线、行输出总线或行广播总线与其他数字单元相连,也可以经由行输入或输出中线到全局输入或输出总线与通用I/O相连数字单元的输出也可作为模拟RC单元的时钟同步信号5可编程模拟系统模拟阵列按列排列,1、2或4列每一列有3个基本模拟单元每一列的第一个单元被称为连续时间模拟单元(CT),第二、三个单元被称为开关电容模拟单元(SC)每一列都有一个输入时钟多路选择器,可选择系统时钟或来自数字单元的时钟信号,主要用于SC单元,其大致决定了模拟输入信号的带宽每一列还有一个模拟总线和一个比较总线6系统资源包括:数字时钟带32位累加器的乘法器采样抽取器:用于数字信号处理I2C接口:能实现I2C主从设备功能内部参考电压:1.3V开关式升压泵(SMP)模拟多路复用器USB接口:支持5个端点,全速12Mb/S系统复位7PSoC内核系统PSoC内核是系统的核心部件,其总体结构如图所示包括:CPU内核M8C、SROM、Flash存储器、SRAM、中断控制器、通用输入输出、睡眠、看门狗、一组时钟源8M8CCPU内核CPU内核M8C采用哈佛(Harvard)结构处理器时钟频率范围93.7K~24MHz24M时钟下可达4MIPS的运算能力9内部寄存器M8C有5个内部寄存器,用于指令的运行,分别为累加器(Accumulation,A)索引寄存器(Index,X)指令计数器(ProgramCounter,PC)堆栈指针(StarkPointer,SP)标志寄存器(Flags,F)除了指令计数器PC是16位,其余均为8位。10地址空间M8C具有三块地址空间:ROM、RAM、寄存器ROM包含SROM和片上FlashFlash被分配成64Byte的若干小块寄存器地址空间(512Byte)被分配成两组,即Bank0(配置空间)和Bank1(用户空间)。通过设置标志寄存器(F)的XIO位可以实现对两组寄存器区的选择11SRAMM8C是一种8位CPU,8位地址总线用于SRAM和寄存器的寻址,寻址范围仅为256Byte。为提高SRAM的容量,PSoC对其SRAM采用了分页存储结构。这里需要用到3个页指针寄存器和标志寄存器的PgMode字段,由它们共同决定所访问的SRAM页,而由地址总线上的地址决定访问该页的哪个存储单元。12中断控制器中断控制器为PSoC提供了一种程序转移机制,当中断发生时,不用考虑当前正在执行的程序和任务,就可改变流程,跳转到新的地址去执行中断处理程序。中断处理程序结束后,程序又将接着从发生中断的地方往下执行。13中断控制器结构由上图可以看出,一个中断从产生到传递到M8C核的中断请求端,需同时满足以下条件:硬件中断源产生中断,如定时器溢出或GPIO引脚产生中断;INT_CLRx=1(该中断没有被清除),即该中断成为一个提交中断(PostedInterrupt);INT_MSKx=1(该中断没有被屏蔽),即提交中断成为一个挂起中断(PendingInterrupt);GIE=1,即全局中断使能打开。优先级编码器对在所有挂起中断中进行排序,首先送出优先级最高的中断由M8C核响应。14中断处理过程激活中断请求执行完当前指令执行内部中断例程,需要耗时13个周期。在此期间,执行如下操作:1.将PCH(PC[15:8])、PCL(PC[7:0])和CPU_F按顺序压栈;2.将CPU_F清0,此时GIE被置0,因此其他中断被暂时禁止;3.将PCH清0;4.从中断控制器读取中断向量并装入PCL中;此时PC就指向中断向量表中的合适地址,比如,对于GPIO中断,此值为001Ch。执行该中断向量。中断向量表中典型的中断向量就是一条LJMP指令,跳转到用户的中断处理程序(ISR)。执行ISR。ISR中,可以通过设置GIE=1重新开放中断,以实现中断嵌套,但需要注意避免堆栈的溢出。执行中断返回指令RETI返回ISR。ISR将CPU_F、PCL和PCH从堆栈中弹出,恢复这些寄存器原来的值;将CPU_F的GIE重新被置为1,中断再次使能。继续执行下一条指令,即发生中断前指令的下一条。如果没有挂起中断,程序将继续处理这些中断。15中断优先级在同一指令周期内,如果有多个挂起中断发生,那么就要考虑中断的优先级,中断优先级编码器会将优先级最高的中断请求的中断向量送出。PSoC的中断源及其优先级下表所示,0级最高。16中断相关寄存器中断清除寄存器(INT_CLRx)用于清除单个中断源的提交中断,每一位对应一个中断源中断屏蔽寄存器(INT_MSKx)用于产生单个中断源的挂起中断中断向量清除寄存器(INT_VC)17通用输入输出端口(GPIO)GPIO负责将PSoC内部设备与I/O引脚进行连接,为M8C内核与外界提供了数据交换接口,PSoC的数字和模拟系统提供了多种输入输出驱动模式。18GPIO结构与类型GPIO包含输入缓冲器、输出驱动器和配置逻辑,配置逻辑用于将PSoC的数字和模拟系统连接至外部引脚,其配置信息由相关的寄存器位存储。PSoC的输入输出引脚分为8个一组,称为端口(Port),因此每个端口对应8个GPIO。每个GPIO可以配置为以下3大类型:由软件控制的数字输入输出(数字IO)数字可编程模块的输入输出(全局IO)模拟可编程模块的输入(模拟输入)19GPIO驱动模式每个GPIO提供了多种输入输出驱动模式,同时还具有中断能力。所有GPIO都可以作全局IO和数字IO,单只有部分GPIO在内部能与可编程模拟模块相连而作为模拟输入。(详见教材P132)20数字IO可通过读写端口数据寄存器PRTxDR实现对IO端口的读写向PRTxDR写入时,每个GPIO对应1位,GPIO将根据写入的数值和所设置的驱动模式驱动相应的管脚M8C通过读取PRTxDR获得端口值,即当前端口引脚电压值所对应的逻辑值21全局IO通过设置端口选择寄存器PRTxGS和端口驱动模式位寄存器PRTxDMx实现。若设为全局输入:PRTxGS相应位置位,设置PRTxDMx选择高阻抗数字输入模式;若设为全局输出:PRTxGS相应位置位,设置PRTxDMx选择高阻抗数字输入以外的其他模式注:以上配置可通过PSoCDesigner的互联视图中的引脚设置框选择22模拟输入输出模拟输入配置可在PSoCDesigner的互联视图中的引脚设置框选择高阻抗模拟输入模式。模拟输出功能是通过模拟列总线和模拟输出驱动器,而非GPIO实现的。23GPIO中断每个GPIO都可以单独设置中断功能中断触发可以选择引脚高电平触发、低电平触发或引脚电平变化三种触发方式24GPIO中断步骤在端口中断控制寄存器PRTxICx中设置中断模式;在端口中断使能寄存器PRTxIE中设置相应位以开启中断;设置中断屏蔽寄存器INT_MSKx中GPIO相应的中断屏蔽位;设置全局中断使能GIE。以上步骤中前两步可以通过PSoCDesigner的互联视图中的引脚设置框的中断选项设置。所有引脚中断都以线或的方式连接到系统GPIO中断,任何一个引脚中断都将引发GPIO中断。因此当有多个引脚的中断使能都打开时,用户中断处理程序中必须确定哪一个引脚是中断源。25GPIO寄存器PRTxDR(端口数据寄存器)PRTxIE(端口中断使能寄存器)PRTxGS(端口全局选择寄存器)26GPIO寄存器(续)PRTxDMx(端口驱动模式位寄存器)27GPIO寄存器(续)PRTxICx(端口中断控制寄存器)28多时钟源PSoC的多时钟源包括三种振荡器即内部主振荡器(IMO)、内部低速振荡器(ILO)、外部晶体振荡器(ECO)和一个锁相环(PLL),它们的功能如表所示。29睡眠和看门狗定时器略30Thankyou!
本文标题:PSoC系统中组织结构及内核原理分析
链接地址:https://www.777doc.com/doc-842153 .html