新唐MCU技术
直播中

刘辉

8年用户 1161经验值
私信 关注
[问答]

如何保持SRAM的状态,并在芯片复位时不初始化?

如何保持SRAM的状态,并在芯片复位时不初始化?

回帖(1)

发生的方式

2025-8-27 17:47:28

要确保SRAM(静态随机存储器)在芯片复位时保持原有状态而不被初始化,需要结合硬件设计、电源管理和控制逻辑的综合方案。以下是具体实现方法:




核心解决方案




  1. 独立的供电电源域(Always-On Power Domain)



    • 备用电池供电(VBAT)

      • 将SRAM连接到独立的备用电源(如纽扣电池或超级电容)。当主电源(VDD)因复位断开时,备用电源维持SRAM的供电。

      • 关键硬件

      • 电源切换电路:使用PMOS晶体管或专用电源管理IC(如TPS650系列),在检测到主电源掉电时自动切换到备用电源。

      • 稳压器:确保备用电源电压稳定(如1.8V/3.3V)。

      • 设计示例
        // 电源切换逻辑(伪代码)
        assign V_SRAM = (VDD >= 2.7V) ? VDD : VBAT;





  2. 复位信号隔离



    • 门控复位逻辑

      • 在复位信号路径中添加与门(AND Gate),通过控制信号 retain_en 决定是否屏蔽复位。

      • 硬件实现
        wire sram_rst_n = sys_rst_n & retain_en; // retain_en=0时屏蔽复位

      • 触发条件

      • retain_en 由用户固件或硬件事件(如低电中断)控制。





  3. 使用具有复位使能的SRAM宏



    • 专用SRAM IP核

      • 选择支持复位使能引脚(RETAIN)的SRAM编译器(如TSMC 28nm库)。

      • RETAIN=1 时,复位信号无效。
        sram_1rw #(.SIZE(1024)) u_sram (
        .clk(clk),
        .rst_n(sram_rst_n), // 受控复位
        .retain(1'b1),      // 强制保持状态
        .we(we),
        .addr(addr),
        .data(data)
        );







扩展方案




  1. 数据保持模式(低功耗设计)



    • 休眠模式(Sleep Mode)

      • 通过SRAM的 VDDM 引脚降低供电电压至数据保持电压(如0.7V)。

      • 控制逻辑
        // 固件控制(示例)
        PWR->CTRL |= SRAM_RETAIN_MODE;  // 进入保持模式
        NVIC_SystemReset();             // 触发复位(SRAM内容不变)





  2. 非易失性存储备份



    • 掉电前备份至Flash/EEPROM

      • 用硬件比较器检测电压跌落,触发中断后紧急备份SRAM数据。

      • 复位后从非易失性存储恢复。
        void Voltage_Fault_ISR() {
        backup_to_flash(sram_data, SRAM_SIZE);
        while(1); // 等待复位
        }







关键注意事项



  • 时序一致性

    • 复位释放时确保时钟稳定后解除SRAM保留状态。


  • 泄漏电流

    • 漏电控制在100nA以下(例如使用高阈值电压晶体管)。


  • ESD保护
    备用电源路径需添加TVS二极管防静电。

  • 验证方法

    • 通过电源循环测试(如反复复位1000次)验证数据完整性。





示例系统框架


+----------------+     +-------------------+
| Main Power     |     | Backup Battery    |
| (VDD)          +-----+ (VBAT)            |
+-------+--------+     +---------+---------+
        |                        |
        |      +------------+    |
        +----> | Power MUX  |<---+
               +-----+------+
                     |
              +------+-----+
              |  SRAM      |
              | (Always-On)|
              +------+-----+
                     |
              +------+------+
              | Reset Logic |<-- sys_rst_n
              | (Gate Ctrl) |<-- retain_en (from CPU/GPIO)
              +-------------+


注意:具体实现需根据工艺库(如台积电/三星)的SRAM规格调整。通常90nm以下工艺的SRAM IP可直接支持复位隔离功能。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分