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.
Jawaban:
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.
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.
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:
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.
sumber
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.
sumber
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.
sumber