Если у вас не запрограммировано начальное состояние, оно будет более или менее случайным. Хотя это может отличаться в зависимости от реализации SRAM. Вы также говорите «пустым». Кто-то может подумать, что random более «пустой», чем все 0.
Память SRAM сохраняет память на инверторах друг за другом.
Это формирует бистабильную систему (два очень устойчивых состояния с метастабильностью, разделяющей их). Таким образом, при включении инверторы на короткое время становятся метастабильными.
Это происходит потому, что по мере увеличения напряжения (от включения) и NMOS, и PMOS инверторов с обратной связью будут «одинаково» включены, удерживая оба битовых узла на половине напряжения питания (это метастабильное состояние). В конечном счете, некоторый тепловой шум (или любой процесс, который вносит изменения) толкает или понижает это значение немного или немного выше. В этот момент битовые узлы переходят в одно из своих бистабильных состояний.
- В качестве примера рассмотримQ = Q'= Vs u p p l y2
- Затем, некоторый тепловой шум на Q увеличивает напряжение доВs u p p l y2+ δ
- Теперь NMOS кормление Q 'включается немного больше. И PMOS, питающий Q ', отключается чуть больше. Так что Q 'тянет вниз от до .Вs u p p l y2Вs u p p l y2- δ
- Далее, поскольку напряжение на затворе управляющего узла Q полевого транзистора уменьшается, PMOS включается немного больше (и NMOS выключается больше). Это приводит к дальнейшему увеличению Q к подаче. И это быстро привязывает Q 'к 0 и Q к 1.
Фактически, есть даже статья «Состояние SRAM при включении питания как идентификационный отпечаток пальца и источник истинных случайных чисел»
Один очень полезный сюжет, содержащийся в статье, приведен ниже. Пунктирная линия показывает увеличение напряжения питания:
- С левой стороны все ровно. В этом случае случайное изменение из-за температуры или другого числа факторов приводит битовый узел в одно или другое состояние.
- На правой стороне есть битовый узел, который наклонен (целенаправленно или иным образом) для большей вероятности инициализации в определенном состоянии.
В зависимости от того, как был изготовлен каждый битовый узел в SRAM, который вы используете в настоящее время, у вас будет более или менее одна из двух вышеописанных ситуаций. В обоих случаях, если вы не намеренно исказили SRAM, начальные результаты будут выглядеть более или менее случайными. В левой ситуации каждое последующее включение будет генерировать больше случайных паттернов. В правой ситуации первоначальный запуск будет казаться случайным. Но дальнейшее усиление приведет к тому, что SRAM будет стремиться к дальнейшему определенным состояниям.