除非您已编程了初始状态,否则它将或多或少是随机的。尽管这可能因不同的SRAM实现而异。您还说“空白”。有人可能会认为随机数比所有0都“空白”。
SRAM存储器将存储器存储在背对背的逆变器中。
这形成了一个双稳态系统(两个非常稳定的状态,亚稳态将它们分开)。因此,加电后,背靠背的逆变器将短暂地处于亚稳态。
发生这种情况的原因是,随着电压的升高(从接通),背对背反相器的NMOS和PMOS都将“相等”地接通,将两个位节点保持在电源电压的一半(这是亚稳态)。最终,一些热噪声(或任何引入变化的过程)会将此值推低或拉高一点。此时,位节点会陷入其双稳态状态之一。
- 作为一个例子,考虑Q = Q′= V小号ü p p 升ÿ2
- 接着,Q上一些热噪声增加电压至V小号ü p p 升ÿ2+ δ
- 现在,馈送Q'的NMOS仅打开了一点。馈送Q'的PMOS关闭了一点点。所以Q”从拉下到V小号û p p 升ÿV小号ü p p 升ÿ2。V小号ü p p 升ÿ2- δ
- 接下来,由于FET的驱动Q节点的栅极电压降低,因此PMOS导通更多(NMOS关断更多)。这导致Q进一步增加到电源。这样可以快速将Q'捕捉为0,将Q捕捉为1。
实际上,甚至有一篇论文“上电SRAM状态作为识别指纹和真实随机数的来源”
本文中包含的一个非常有用的情节如下。虚线表示电源电压上升:
- 在左边,一切都是平等的。在这种情况下,由于温度或其他多种因素导致的随机变化会使位节点进入一种状态或另一种状态。
- 在右侧,有一个位节点,它有偏斜(故意或其他方式倾斜),以更有可能在特定状态下初始化。
根据当前使用的SRAM中每个位节点的制造方式,您最终会或多或少地遇到上述两种情况之一。在这两种情况下,除非您有意使SRAM倾斜,否则初始输出看起来或多或少是随机的。在左侧情况下,每次后续加电将生成更多随机模式。在正确的情况下,初始启动似乎是随机的。但是进一步的加电将导致SRAM趋向于处于某些特定状态。