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