【问题标题】:Modelling a Flash or Non-Volatile Memory Activity in SIMULINK model在 SIMULINK 模型中对闪存或非易失性内存活动进行建模
【发布时间】:2026-02-09 05:20:02
【问题描述】:

我试图在系统启动后检索两个 1 位值(即它们以前的值),或者如果环境发生变化,在正常操作期间写入它。当我说“系统启动”时,我想明确表示这是一个位于非常大系统内的子系统。

这个想法是,如果我断开这个子系统,系统的其余部分不受影响。我将根据它们最后的已知状态保留两个 1 位值。在子系统再次启动时,根据我的处理,这些 1 位值将被保留或被新值覆盖。出于保密原因,我无法比现有的更深入。

我目前的方法

附件是执行此内存读/写的子系统部分的 SIMULINK 图。我相信这会奏效。但是,我并不完全确定。有人能想到更好的方法吗?我知道一个明显的答案是说“尝试从工作区保存和加载”,但我有一个只允许从 Flash/E2PROM 加载的规范。不幸的是,我不知道 SIMULINK 中有什么可以做到这一点。如果有人知道一些不同的东西,我很高兴接受充分的教育:)

谢谢。

【问题讨论】:

    标签: models simulink read-write non-volatile


    【解决方案1】:

    你基本上需要一个记忆。可能有多种方法可以做到这一点。

    1. 延迟是一种记忆。您可以为启动值设置其初始条件。您可以将延迟放在启用的子系统中以写入新值,也可以使用多路复用器从延迟的输出写入新值或先前的值。
    2. 您可以使用 MATLAB Function 模块并在其中声明一个持久变量。您可以在“is empty(persistent_var_name)”检查中对其进行初始化,然后对其进行读取或写入。

    另一种方法是原始问题如何使用“数据存储”实现它。

    【讨论】:

    • 嗯! +1 让我说“这到底是怎么回事”......啊......所以我所做的就是垃圾,不是吗?
    • 不,不是。我应该在我的回答中提到,你的方法是另一种方式。