17.1 SRAM芯片工作原理
SRAM 速度快、稳定但成本高容量小;DRAM 容量大、便宜但速度慢且需刷新。
SRAM(静态RAM)
- 优点:速度极快(延迟约1~10ns),无需刷新,数据稳定性高,待机功耗低。
- 缺点:每个单元需6个晶体管,集成度低、容量小、成本高。
- 典型用途:CPU 高速缓存(L1/L2/L3 Cache)。
DRAM(动态RAM)
- 优点:结构简单(1晶体管+1电容),集成度高、容量大、成本低。
- 缺点:需定期刷新(否则数据丢失),速度比 SRAM 慢很多。
- 典型用途:计算机主内存(DDR 内存条)、显存。
两者在系统中互补:SRAM 做高速缓存,DRAM 做主存。
常见SRAM内部的block diagram:
和片内RAM不同,SRAM访问一个地址里面存储着16bits。
读写时序:
时序:
trc是一个完整的读取周期。
开发板上使用的就是55ns的型号:
单片机的指令周期=时钟周期✖1.25,片内的SRAM读取通常需要10ns左右。(1~2个指令周期,且120M外部晶振全开)。
17.2 EXMC工作原理
带有EXMC/FSMC外设的ARM单片机拥有存储器映射的功能:
不能驱动DRAM动态保持数据仅针对当前平台GD32F303ZET6,一些高性能的新型号单片机是可以实现的。寻址范围0x6000 0000~0xA000 0000一共1GB的寻址空间,内部还分为了4个bank。
现在重点研究第一个bank:
整个信号链路分为三层:
第一层:系统总线(CPU视角)
- CPU发出的地址信号为HA27~HA0,共28根地址线
- CPU采用字节寻址方式,每个地址对应1个字节
第二层:EXMC外设(地址转换层)
- EXMC_NE(3:0)转换模块:将高位地址HA26、HA27转换为片选信号CS
- 地址直通通道:HA1→EA0→MA0,HA2→EA1→MA1,依次类推直到HA25→EA24→MA24
- UB/LB掩码信号转换模块:将最低位地址HA0转换为字节使能信号UB和LB
第三层:外部SRAM(存储芯片)
- 接收片选CS、地址MA24~MA0、字节掩码UB/LB、数据线D15~D0
读时序:
写时序:
17.3 SRAM保存数据方法1
观察原理图可得,SRAM的片选引脚连接了MCU的EXMC_NE3:
查手册我们知道bank0有4个region(0~3):
NE的序号也是0~3一一对应,那么我们这里就是需要把SRAM映射到bank0的Region3位置。
因此有代码:
#define BANK0_REGON3_ADDR ((uint32_t)(0x6C000000)) // Bank0 Regon3起始地址#define EX_SRAM_BUFFER_SIZE (2 * 512 * 1024) // 外部sram一个存储单元存放16bits,总共512K个存储单元 #define EX_SRAM_BEGIN_ADDR (BANK0_REGON3_ADDR) #define EX_SRAM_END_ADDR (BANK0_REGON3_ADDR + EX_SRAM_BUFFER_SIZE - 1) // 0x6C100000 - 1