560 likes | 751 Views
第 3 章 PSoC3/5 存储器系统 Chapter 3 Memory Sub-System of PSoC3/5. 何宾 2010.10. PSoC3/5 存储器系统 -- 前言. 详细介绍了 PSoC3/5 的存储器系统,其中包括静态 存储器 SRAM , Flash 程序存储器, EEPROM 模块和外部 存储器接口 EMIF 。通过本章内容的学习将系统掌握 PSoC 存储器系统的结构、功能、接口特性和访问方法。. PSoC3/5 存储器系统 -- 静态存储器 SRAM. 静态存储器 SRAM 用来暂存数据。 PSoC3 中 SRAM 的容
E N D
第3章 PSoC3/5 存储器系统Chapter 3 Memory Sub-System of PSoC3/5 何宾 2010.10
PSoC3/5 存储器系统--前言 • 详细介绍了PSoC3/5的存储器系统,其中包括静态 存储器SRAM,Flash程序存储器,EEPROM模块和外部 存储器接口EMIF。通过本章内容的学习将系统掌握 PSoC存储器系统的结构、功能、接口特性和访问方法。
PSoC3/5 存储器系统--静态存储器SRAM • 静态存储器SRAM用来暂存数据。PSoC3中SRAM的容 量最大为12kB(3个块),8051 CPU和DMA控制器均可访 问SRAM。 如果访问不同的4kB块,8051和DMA控制器可以同步 访问SRAM。
SRAM(包括4KB跟踪缓冲区) 外设集线器 外设 外设 8051中央处理器 片上调试 PSoC3访问SRAM PSoC3/5 存储器系统--静态存储器SRAM
8051 CPU CPU接口 PHUB 接口 外设集线器PHUB SRAM BANK0 (1KBX32) SRAM BANK1 (1KBX32) SRAM BANK2 (1KBX32) 测试控制器TC CY8C38 SRAM的结构 PSoC3/5 存储器系统--静态存储器SRAM
PSoC3/5 存储器系统--静态存储器SRAM 在调试时,片上调试(Debug on-Chip,DoC)访问 高4kB的空间,作为跟踪缓冲区。 如果跟踪缓冲区没有用于跟踪,那么就可以用于作为 额外的SRAM用于普通的操作。
PSoC3/5 存储器系统--静态存储器SRAM • PSoC5提供最大64KB的SRAM空间。CPU和DMA控制 器都能访问SRAM。 Cortex-M3 CPU和DMA控制器能同时访问两个不同的 32KB块的SRAM空间。
PSoC3/5 存储器系统--静态存储器SRAM 图 PSoC5访问SRAM
PSoC3/5 存储器系统--静态存储器SRAM 图 CY8C55 SRAM的结构
PSoC3/5 存储器系统--静态存储器SRAM 其地址空间位于0x20000000。 这样允许使用c总线(Cortex-M3的I和D总线)或者s总 线(Cortex-M3的系统总线)访问SRAM的所有块。 指令能从低于地址0x20000000的SRAM中执行。
PSoC3/5 存储器系统--静态存储器SRAM PHUB能使用SRAM作为源设备或目标设备。所有到 SRAM的数据通道都是32位宽的(除了8051CPU,它是8 位宽度)。 CPU可以直接连接到SRAM,而不需要通过PHUB。 当出现CPU和DMA访问冲突时,采用下面的规则: 1)PSoC3中,访问SRAM的BANK0和2时,CPU优先级高于 PHUB;而访问SRAM的BANK1时,PHUB优先权高于CPU。 当使用DoC时,CPU和PHUB不允许访问BANK2。 2)PSoC5中大多数情况下,访问SRAM时,Cortex-M3 CPU优 先级高于 PHUB。
PSoC3/5 存储器系统--Flash存储器 • PSoC内的Flash为用户的、用户的配置数据、海量数 据存储和可选择使用的纠错码(Error Correcting Codes, ECC)数据提供非易失性的存储空间。
PSoC3/5 存储器系统--Flash存储器 图 Flash块图
PSoC3/5 存储器系统--Flash存储器 PSoC3/5的Flash存储器具有下面的特点: • 以行为单位构成,每一行有256个数据字节,额外的32字节用于ECC或者数据存储; • 对于PSoC3:64,128,256行构成1块Flash存储器; • 对于PSoC5:128,256行构成1块Flash存储器,或256行构成多个块; • 存储CPU程序,块或非易失性数据; • 对于PSoC5,8,16,32位读访问,PSoC3只有8位读访问; • 有一个可编程的命令/状态寄存器接口。 • 提供四级Flash保护;
PSoC3/5 存储器系统--Flash存储器 • 如果ECC空间没有用于ECC数据,那么可以用来保存 设备配置数据和海量用户数据。用户代码不得运行在 ECC的空间外。ECC能检测两比特错误,纠正一比特错 误;当检测到错误时,产生中断。
PSoC3/5 存储器系统--Flash存储器 • Flash以行为单位进行读操作;每行为9个字节,其中 的8个字节为数据,1个字节为ECC数据。 当读一行时,数据字节复制到一个8字节指令缓冲区。 CPU从该缓冲区加载指令,用于提高CPU的性能。
PSoC3/5 存储器系统--Flash存储器 通过特殊的接口对Flash进行编程,并且不需要在 Flash外执行代码。 Flash编程接口执行Flash的擦除,编程和设置代码保 护级别。 系统内串行Flash系统编程(Flash In System Serial Programming, ISSP)用于产品的编程,可以通过SWD和 JTAG接口实现。 系统内编程用于引导,系统内编程也可使用串行接 口,比如I2C、USB、UART、SPI和其他通信协议。
PSoC3/5 存储器系统--Flash存储器 • PSoC提供了灵活的Flash保护模型,用来阻止访问和 看到片上的Flash存储器。 Flash储器是以分块的形式构成的,每个块包含256 字节的程序/数据,32字节的ECC/配置数据。 在64KB的Flash共有256个块。
PSoC3/5 存储器系统--Flash存储器 • Flash为每行Flash提供了四种保护方式
PSoC3/5 存储器系统--Flash存储器 如果通过引导代码更新程序,使用域更新保护模 式。 PSoC也提供了一种高级的安全特性称为设备保护, 用来永久禁止所有的测试,编程和调试端口,保护用户 程序防止外部访问。
PSoC3/5 存储器系统--EEPROM存储器 • PSoC的EEPROM是字节可寻址的非易失性存储器。 PSoC3有最大2kB的EEPROM空间用于保存用户数据。 对EEPROM的读操作通过随机访问的方式实现,而 对EEPROM的写操作是通过发送写命令到EEPROM的编 程接口实现的。 在EEPROM写操作过程中,CPU能从FLASH继续执行 代码。 EEPROM分成两部分,每部分包含64行,每行16个 字节。由于EEPROM中没有ECC硬件,因此不能在 EEPROM中执行程序。如果需要ECC,则必须在固件中进 行处理。
PSoC3/5 存储器系统--外部存储器接口EMIF • PSoC3/5提供了外部存储器接口(External Memory Interface, EMIF)用来连接外部的存储器设备。 • EMIF与UDB、I/O端口和其它硬件产生外部存储器 地址和控制信号。EMIF支持同步和异步的存储器。 在一个时刻内EMIF只支持一种存储器类型。
PSoC3/5 存储器系统--外部存储器接口EMIF 图 EMIF接口结构
PSoC3/5 存储器系统--外部存储器接口EMIF 图 EMIF和同步SRAM的连接
PSoC3/5 存储器系统--外部存储器接口EMIF 图 EMIF和异步SRAM的连接
PSoC3/5 存储器系统--EMIF接口时序 • 总线时钟驱动EMIF,在EMIF模块内,总线时钟可以 1,2,4分频;输出是到外部存储器的EM_CLOCK信号。 EMIF_STATE寄存器可以用来添加更多的等待状态。 • 一个限制是PSoC3/5的GPIO引脚的最高速度为 33MHz。这就是说EM_CLOCK的频率最高为33MHz。
PSoC3/5 存储器系统--EMIF接口时序 EMIF接口产生的PHUB等待状态
PSoC3/5 存储器系统--EMIF接口时序 EM_CLOCK相对于总线时钟的限制
EMIF接口时序图 PSoC3/5 存储器系统--EMIF接口时序
存储器映射结构--PSoC3存储器映射结构 • PSoC3的存储器映射模式和MCS-51存储器的映射方 式相似。
存储器映射结构--代码空间 • PSoC3的代码空间是64KB。在这个空间只有Flash 设备存在。
存储器映射结构--内部数据空间 • PSoC3的内部数据空间是384个字节,被分配在256 个字节的空间内。 这个空间由256字节的RAM组成,最低32个字节用 于4个Bank空间的R0-R7寄存器。随后的16个字节是位可 寻址的空间。
存储器映射结构--内部数据空间 8051内部的数据空间
存储器映射结构--内部数据空间 • SFR是8051单片机种各功能部件所对应的寄存器, 用来存放相应功能部件的控制命令、状态或数据。PSoC 除了提供8051单片机 标准的寄存器集外,还增加了SFR用 来提供对片上I/O端口的直接访问,以及对CPU时钟的修 改。
存储器映射结构--内部数据空间 SFR的映射空间
存储器映射结构--内部数据空间 1. xData空间访问SFR 8051提供了两个DPTR寄存器用于快速的数据传输 操作。数据指针选择SFR,DPS,选择DPTR0和DPTR1 中的哪个寄存器用于下面的指令: • MOVX @DPTR, A • MOVX A, @DPTR • MOVC A, @A+DPTR • JMP @A+DPTR • INC DPTR • MOV DPTR, #data16
存储器映射结构--内部数据空间 扩展的数据指针SFR,DPX0,DPX1,MXAX和P2AX 用来保存当访问xdata空间时的高位存储地址。这些SFR只 用在MOVX指令。 在MOVX指令,使用DPTR0/DPTR1寄存器,地址的 最高字节与DPX0/DPX1的内容一致。在MOVX指令,使 用R0/R1寄存器,地址的最高字节的MXAX的内容一致, 次高字节与P2AX内容一致。 8051xdata是一个24位(16MB)的空间。这个空间的 绝大部分用于片上的外设。
存储器映射结构--内部数据空间 XDATA空间映射
存储器映射结构--内部数据空间 • 2.I/O端口SFR I/O端口提供了输入感应,输出驱动,引脚中断,模 拟输入和输出的连接,LCD和通过DSI访问外设。 I/O端口通过PHUB连接到CPU,使用SFR允许快速的 访问有限的I/O端口寄存器集,而是用PHUB允许启动配 置和访问所有的I/O端口寄存器。 每个支持SFR的端口提供了三种SFR:
存储器映射结构--内部数据空间 1)SFRPRTxDR:用于设置端口的输出状态(x表示 端口号, 范围0-6,12,15)。 2)SFRPRTxSEL:选择使用PHUB PRTxDR寄存器 /SFRPRTxDR控制端口的输出缓冲区。如果 • SFRPRTxSEL[y]=1,相应的SFRPRTxDR[y]来设置引脚的输出状态; • SFRPRTxSEL[y]=0,相应的PRTxDR[y]来设置引脚的输出状态; 3)SFRPRTxPS:只读寄存器,包含端口引脚的引脚 状态值。
存储器映射结构--内部数据空间 • 3.时钟分频器SFR CPU分频器允许CPU运行在不同的速度下。用户通 过配置用户SFR空间地址为0xA1的CPUCLK_DIV寄存器 来指定CPU的时钟速度。
存储器映射结构--内部数据空间 时钟分频器设置
存储器映射结构--PSoC5存储器映射结构 • Cortex-M3有固定的地址映射,允许使用简单的存储 器访问指令来访问外设。
存储器映射结构--地址映射 地址映射