SRAM tidak kosong pada powerup, apakah ini normal?


19

Saya akhirnya menyelesaikan papan memori Z80 saya, tetapi saya kecewa melihat itu tidak berfungsi dengan baik (tes NOP sederhana dengan jalur alamat terhubung ke beberapa LED) karena penghitung dengan cepat lepas kendali dan bukannya bertambah sebagaimana mestinya. Namun, saya bukan orang yang menyerah dan setelah sekitar tiga puluh menit pengujian kontinuitas untuk mengungkap tidak ada hubungan pendek dan semua koneksi yang tepat, saya akhirnya berpikir untuk memeriksa apakah chip SRAM dihidupkan dengan semua 0s disimpan. Saya sangat menyadari bahwa SRAM (kecuali non-volatile, yang chip khusus saya tidak) akan kehilangan semua isinya karena kehilangan daya, tetapi saya selalu berasumsi bahwa itu akan diisi dengan 0 (yaitu "kosong") ketika ia kembali kekuasaan. SRAM yang saya gunakan tampaknya diisi secara acak dengan 1 dan 0 setiap kali daya diatur ulang. Itu tidak pernah mengingat data apa pun, tapi itu tidak memuat kosong. Ini sebenarnya bukan masalah karena saya hanya bisa menulis sebuah program kecil dalam ROM untuk memuat semua 0 ke dalam RAM pada powerup, meskipun saya masih ingin tahu apakah ini bagaimana SRAM seharusnya berfungsi atau tidak. Terima kasih!

Sunting: Saya lupa menyebutkan bahwa setelah menggunakan ROM untuk memuat 0 ke SRAM sistem bekerja dengan baik, jadi ini memang masalahnya.


7
Anda dapat menggunakan daya SRAM hingga menghasilkan angka acak. Ini umumnya bagaimana kita melakukannya jika kita hanya membutuhkan satu benih acak.
b degnan

6
@bdegnan Once, mungkin. Status power-up SRAM cenderung agak dapat diprediksi untuk setiap bagian tertentu.
duskwuff

Jawaban:


36

Kecuali jika Anda memiliki keadaan awal yang diprogram, itu akan lebih atau kurang acak. Meskipun ini dapat bervariasi dengan implementasi SRAM yang berbeda. Anda juga mengatakan "kosong". Beberapa orang mungkin berpikir bahwa acak "lebih kosong" daripada semua 0.

Memori SRAM menyimpan memori dari belakang ke belakang inverter.

SRAM sederhana

Ini membentuk sistem bi-stable (dua negara yang sangat stabil dengan metastabilitas yang membaginya). Jadi, pada power up back to back inverter secara singkat metastable.

Ini terjadi karena ketika tegangan naik (dari dinyalakan), baik NMOS dan PMOS dari back to back inverter akan 'sama' aktif, memegang kedua bitnodes pada setengah tegangan suplai (ini adalah keadaan metastabil). Akhirnya beberapa noise termal (atau proses apa pun yang memperkenalkan variasi) mendorong atau menarik nilai ini turun atau naik sedikit. Pada titik ini bitnodes masuk ke salah satu dari status bistable mereka.

  • Sebagai contoh, pertimbangkan Q=Q=Vskamuhalhally2
  • Selanjutnya, beberapa noise termal pada Q meningkatkan tegangan hingga Vskamuhalhally2+δ
  • Vskamuhalhally2Vskamuhalhally2-δ
  • Selanjutnya, karena tegangan di gerbang node Q mengemudi FET berkurang, PMOS menyala sedikit lebih (dan NMOS lebih mati). Ini menyebabkan Q meningkat lebih jauh ke pasokan. Dan ini dengan cepat mengambil Q 'ke 0 dan Q ke 1.

Bahkan, bahkan ada kertas "Power-Up SRAM State sebagai Identifikasi Sidik Jari dan Sumber Bilangan Acak Benar"

Salah satu plot yang sangat membantu yang terkandung dalam kertas di bawah ini. Garis putus-putus menunjukkan peningkatan tegangan suplai:

metastability di powerup

  • Di sisi kiri, semuanya sama. Dalam hal ini, variasi acak karena suhu atau sejumlah faktor lain menabrak bitnode menjadi satu keadaan.
  • Di sisi kanan, ada bitnode yang condong (sengaja atau tidak) lebih cenderung menginisialisasi dalam keadaan tertentu.

Bergantung pada bagaimana setiap bitnode dalam SRAM yang Anda gunakan saat ini dibuat, Anda berakhir dengan salah satu dari dua situasi di atas. Dalam kedua kasus, kecuali Anda secara sengaja memiringkan SRAM, output awal akan terlihat kurang lebih acak. Dalam situasi sebelah kiri, setiap powerup berikutnya akan menghasilkan lebih banyak pola acak. Dalam situasi kanan, startup awal akan tampak acak. Tetapi powerups lebih lanjut akan menyebabkan SRAM cenderung memajukan negara-negara tertentu.


Anda tahu saya benar-benar berpikir itu akan menjadi alasan itu dimuat secara acak. Saya telah menggunakan kait NOR sebagai bagian dari rangkaian dan itu akan mengatur ulang secara acak saat power-up. Terima kasih!
KeatonB

Saya pikir Anda bisa mendesain chip SRAM sehingga daya mereka dalam kondisi yang dikenal. Bisakah kamu?
John Dvorak

2
@ JanDvorak: Ya, Anda bisa. Tapi itu tidak berarti itu biasa dilakukan, terutama dalam SRAM yang tidak spesifik aplikasi. Saya pikir harganya lebih mahal dan untuk tujuan apa? Ini jarang akan menjadi kondisi awal yang sama yang dibutuhkan oleh konsumen.
jbord39

@ jbord39 Bisakah ini membantu saya memanggang bootloader ke dalam memori, dan menghindari chip ROM tambahan untuk memuat OS? Apakah akan membantu mengurangi biaya?
John Dvorak

2
@JanDvorak: Untuk aplikasi tertentu bitcell bisa miring atau bias untuk memulai di negara tertentu. Tetapi sungguh biaya tidak sepadan, karena setiap pelanggan akan membutuhkan keadaan awal yang berbeda. Jauh lebih mudah dan hemat biaya hanya dengan menginisialisasi dengan sirkuit eksternal (seperti ROM). Saya kira mereka bisa membangun di beberapa sirkuit yang dapat diprogram untuk memungkinkan Anda untuk membakar dalam keadaan awal yang Anda inginkan, atau skema lainnya. Tapi ini kedengarannya mahal ketika Anda jelas sudah memiliki sirkuit untuk menulis / membaca RAM. Jadi, tulis saja status yang Anda inginkan.
jbord39

5

Setelah bekerja dengan SRAM selama bertahun-tahun, saya dapat memberitahu Anda bahwa itu akan menyala dengan konten yang tampaknya acak, meskipun saya telah melihat perangkat yang menyala dengan konten yang tampak hampir sama setiap kali. Jika siklus pematian cukup pendek (tergantung pada karakteristik catu daya dan jumlah & nilai kapasitor bypass), fragmen besar dari data yang ditulis sebelumnya dapat bertahan dalam SRAM melalui siklus daya - meskipun kontennya akan rusak.


2

Satu bit disimpan dalam SRAM dalam rangkaian 6 atau lebih transistor. Jika Anda menginginkan daya yang ditentukan pada perilaku reset untuk SRAM, setiap sel RAM akan membutuhkan lebih dari 6 transistor saja. Area chip yang dibutuhkan akan jauh lebih besar dan chip SRAM akan lebih mahal. Ini adalah kekuatan paralel untuk mengatur ulang semua bit pada saat yang bersamaan. Reset serial akan membutuhkan oszilator, penghitung alamat, dan waktu yang cukup selama power up untuk mengatur ulang semua bit atau byte RAM secara berurutan. Jika prosesor mengakses SRAM sebelum daya serial pada reset selesai, kesalahan dapat terjadi dan data mungkin hilang atau diubah.

Ada lingkungan pemrograman untuk mikroprosesor dengan pemetaan memori terperinci dari beberapa area RAM. Anda dapat menentukan area dengan atau tanpa daya reset seperti yang diminta oleh aplikasi. Beberapa area berbeda dalam SRAM yang sama dimungkinkan. Tidak selalu perlu mengatur ulang seluruh SRAM saat program dimulai.


3
Membuat beberapa transistor sedikit lebih besar dari yang lain akan condongkan probabilitas satu versus nol. Pada banyak bagian, transistor akan diseimbangkan dalam toleransi manufaktur, yang berarti bahwa beberapa bit akan bias ke nol sedangkan yang lain akan bias ke arah yang lain. Saya ragu perbedaan ukuran harus sangat besar untuk bias perilaku startup sangat dalam satu arah; Pembuat RAM dapat dengan mudah bias hal-hal secara konsisten jika ada alasan untuk melakukannya, tetapi RAM yang tidak seimbang akan mengkonsumsi arus ekstra untuk mengganti sel ke arah yang tidak disukai.
supercat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.