SRAM上电时不空白,这正常吗?

电器工程 数字逻辑 记忆 重置 急速 z80
2022-01-16 15:30:00

我终于完成了我的 Z80 内存板,但我很失望地看到它工作不正常(地址线连接到一些 LED 的简单 NOP 测试),因为计数器迅速失控而不是按应有的递增。但是,我不是一个要放弃的人,经过大约 30 分钟的连续性测试以发现没有短路和所有正确的连接,我终于想到检查 SRAM 芯片是否在存储所有 0 的情况下通电。我很清楚 SRAM(除非是非易失性的,我的特定芯片不​​是)在断电时会丢失所有内容,但我一直认为当它恢复时它会被 0 填充(即“空”)力量。每次电源重置时,我使用的 SRAM 似乎随机填充 1 和 0。它永远不会记住任何数据,但它不是空的。这不是一个真正的问题,因为我可以简单地在 ROM 中编写一个小程序,以便在上电时将所有 0 加载到 RAM 中,尽管我仍然想知道 SRAM 是否应该这样工作。谢谢!

编辑:我忘了提到在使用 ROM 将 0 加载到 SRAM 后,系统工作正常,所以这确实是问题所在。

3个回答

除非您对初始状态进行了编程,否则它将或多或少是随机的。尽管这可能因不同的 SRAM 实现而异。你也说“空白”。有些人可能认为 random 比全 0 更“空白”。

SRAM 存储器将存储器存储在背靠背反相器上。

简单的sram

这形成了一个双稳态系统(两个非常稳定的状态,亚稳态将它们分开)。因此,在加电后,背靠背逆变器会短暂地亚稳态。

发生这种情况是因为随着电压上升(从开启),背靠背反相器的 NMOS 和 PMOS 都将“平等”开启,将两个位节点保持在电源电压的一半(这是亚稳态)。最终,一些热噪声(或任何引入变化的过程)会将这个值推低或拉高一点。在这一点上,位节点迅速进入它们的一种双稳态。

  • 例如,考虑 \$ Q=Q'=\frac{V_{supply}}{2} \$
  • 接下来,Q 上的一些热噪声将电压增加到 \$ \frac{V_{supply}}{2} + \delta \$
  • 现在,供给 Q' 的 NMOS 被打开了一点点。并且 PMOS 馈送 Q' 被关闭了一点点。所以 Q' 从 \$ \frac{V_{supply}}{2}\$ 下拉到 \$ \frac{V_{supply}}{2} - \delta \$。
  • 接下来,由于 FET 的驱动 Q 节点的栅极电压降低,PMOS 会稍微开启(而 NMOS 会关闭更多)。这导致 Q 进一步增加供应。这很快将 Q' 捕捉到 0 并将 Q 捕捉到 1。

事实上,甚至还有一篇论文《Power-Up SRAM State as an Identification Fingerprint and Source of True Random Numbers》

论文中包含的一个非常有用的图如下。虚线表示电源电压上升:

上电亚稳态

  • 在左侧,一切都是平等的。在这种情况下,由于温度或其他数量的因素导致的随机变化会使位节点进入一种状态或另一种状态。
  • 在右侧,有一个位节点(有意或无意地)倾斜,以便更有可能在特定状态下初始化。

根据您当前使用的 SRAM 中每个位节点的制造方式,您最终会或多或少地遇到上述两种情况之一。在这两种情况下,除非您故意倾斜 SRAM,否则初始输出看起来或多或少是随机的。在左边的情况下,每个后续的上电都会产生更多的随机模式。在右边的情况下,最初的启动似乎是随机的。但是进一步的上电会导致 SRAM 倾向于进一步的某些状态。

与 SRAM 合作多年,我可以告诉你,它会以看似随机的内容启动,尽管我见过每次启动时几乎相同的随机内容的设备。如果断电周期足够短(取决于电源特性和旁路电容器的数量和值),以前写入的数据的大片段可能会在通电周期后留在 SRAM 中 - 尽管内容会被破坏。

单个位存储在 6 个或更多晶体管的电路中的 SRAM 中。如果您想为 SRAM 定义上电复位行为,则每个 RAM 单元仅需要 6 个以上的晶体管。所需的芯片面积将大大增加,而 SRAM 芯片将更昂贵。这是同时对所有位进行并行上电复位。串行复位需要振荡器、地址计数器和上电期间足够的时间来顺序复位所有 RAM 位或字节。如果处理器在串行上电复位完成之前访问 SRAM,则可能会发生错误并且数据可能会丢失或更改。

微处理器的编程环境具有多个 RAM 区域的详细内存映射。您可以根据应用程序的需要定义一个带或不带上电复位的区域。同一个 SRAM 中的几个不同区域是可能的。程序启动时并不总是需要重置整个 SRAM。