Saya akan membahas pemrograman memori flash, tetapi banyak materi akan mirip dengan EEPROMs (Electrically Erasable Programmable ROM), karena memori flash berasal dari EEPROMs pada pertengahan 1980-an. Seperti dijelaskan di bawah, dari sudut pandang fisik, status default adalah 1. Tapi yang lebih penting, saya akan menjelaskan mengapa ada adalah suatu keadaan default - Anda tidak bisa hanya sewenang-wenang Program di atas apa yang sudah diprogram dari terakhir kali.
NOR flash hampir selalu dipilih untuk program flash karena antarmuka paling cocok untuk menempatkan data dalam peta memori mikrokontroler - alamat lengkap dan bus data meniru RAM dan memungkinkan akses acak ke lokasi mana pun. Data dapat dibaca satu kata pada suatu waktu, di mana kata didefinisikan sebagai lebar data mikrokontroler, biasanya 8, 16, atau 32-bit. NAND flash, di sisi lain dikembangkan untuk mengganti hard drive dan bekerja secara berurutan.
Namun pemrograman menjadi sedikit lebih rumit. Seperti yang telah disebutkan, status default untuk NOR flash dan memori non-volatil lainnya seperti NAND flash, EEPROMs dan bahkan EPROM adalah logika 1. Anda tidak dapat memprogram 1 ke dalam perangkat ini, Anda hanya dapat memprogram 0. Jadi misalnya jika Anda memiliki byte yang berisi 0x0123 dan Anda ingin mengubahnya ke 0x3210, Anda tidak dapat melakukannya secara langsung seperti menulis lebih dari satu byte dalam RAM.
Sebagai gantinya, bit dalam memori harus dihapus, yang menempatkan mereka ke dalam keadaan default 1 yang telah disebutkan. Ini hanya bisa dilakukan dalam blok, bukan kata-kata. Pada Microchip PIC32, yang paling lama saya gunakan, ukuran blok minimum yang bisa dihapus adalah 4.096 byte. Jadi jika Anda ingin mengubah hanya satu kata (32-bit), Anda harus membaca memori 4K, menghapus blok, kemudian menulis memori 4K kembali ke flash tetapi termasuk nilai 32-bit baru sesuai kebutuhan. Penghapusan ini dapat memakan waktu - bagian yang baik dari sedetik.
Berikut ini adalah gambar sel memori flash. Flash menyimpan data dengan menghapus atau meletakkan elektron di gerbang mengambang. Ketika elektron hadir di gerbang mengambang, tidak ada arus yang mengalir melalui transistor, menunjukkan 0. Ketika elektron dikeluarkan dari gerbang mengambang, transistor mulai melakukan, menunjukkan 1. (Ini adalah dengan konvensi - itu bisa menjadi cara lain tetapi akan membutuhkan inverter di semua jalur data.)
Hapus operasi. Keadaan standar sel memori flash (sel flash NOR tingkat tunggal) adalah 1 karena gerbang mengambang tidak membawa muatan negatif. Menghapus sel memori flash (mengatur ulang ke 1) dicapai dengan menerapkan tegangan di sumber dan gerbang kontrol (baris kata). Tegangannya bisa berkisar antara -9V hingga -12V. Dan juga berlaku sekitar 6V ke sumbernya. Elektron di gerbang mengambang ditarik dan ditransfer ke sumber dengan tunneling kuantum . Dengan kata lain, terowongan elektron dari gerbang mengambang ke sumber dan substrat.
Karena menghapus menggunakan tegangan tinggi, jadi menghapus dalam blok membutuhkan area die yang lebih sedikit. Jadi voltase hanya dapat diterapkan ke seluruh baris transistor pada satu waktu.
Untuk menulis, sel flash NOR dapat diprogram, atau diatur ke 0 dengan prosedur berikut. Saat menulis, tegangan tinggi sekitar 12V diterapkan ke gerbang kontrol (baris kata). Jika tegangan tinggi sekitar 7V diterapkan ke bit Line (terminal drain), 0 disimpan di dalam sel. Saluran sekarang dinyalakan, sehingga elektron dapat mengalir dari sumber ke saluran pembuangan. Arus sumber-pengaliran cukup tinggi untuk menyebabkan beberapa elektron berenergi tinggi melompati lapisan isolasi ke gerbang mengambang melalui proses yang disebut injeksi elektron panas.
Untuk membaca, tegangan sekitar 5V diterapkan ke gerbang kontrol dan sekitar 1V ke saluran pembuangan. Keadaan sel memori dibedakan oleh arus yang mengalir antara selokan dan sumber.
Masa pakai memori non-volatile yang dapat diukur diukur dari siklus hapus. Kerugian dari NOR adalah jumlah siklus erase sekitar 1/10 dari memori NAND. Banyak versi PIC32 hanya memungkinkan memori flash diperbarui 1000 kali, lebih sedikit dari 100.000 siklus erase khas untuk EEPROMs.
Jadi tidak begitu penting jika para perancang membuat keadaan default adalah 1 atau 0 (mereka memilih nilai yang memungkinkan implementasi termudah); yang penting adalah seseorang harus menghapus blok flash terlebih dahulu (yang membutuhkan waktu), dan kemudian memprogram ulang seluruh blok (bahkan jika satu kata sedang diubah (yang membutuhkan sejumlah besar RAM).
Blok yang menghapus perangkat ini akan kembali ke EPROM pertama (Erasmable Programmable ROM), yang memproses EEPROM. Kode ini diprogram dalam chip (seperti 16KB 27128) dan ditempatkan di soket. Keripik ini memiliki jendela kecil di atasnya yang memungkinkan cahaya bersinar pada cetakan. Ketika program harus diubah, chip dimasukkan ke dalam penghapus UV selama 20 menit atau lebih, yang akan menghapus seluruh chip. Maka chip akan diprogram dengan program baru.
Beberapa EEPROM membutuhkan penghapusan blok memori sebelum pemrograman; yang lain mengizinkan penulisan byte pada satu waktu (pengontrol EEPROM sebenarnya menghapus byte pertama dan program-programnya).
0101
untuk1010
, yang harus Anda lakukan dalam urutan ini:0101
-> (menghapus) ->1111
-> (Program 0 ini) ->1010
. Atau pada dasarnya, itu berarti penulisan 1 dan penulisan 0 dilakukan pada granularitas yang berbeda .Dalam memori flash modern, saya tidak tahu alasan untuk memilih yang lebih dari nol sebagai default. Pembacaan dilakukan melalui penguat indera diferensial saat ini, jadi pada prinsipnya Anda bisa mengambil output dari kedua sisi. (EEPROM pertama mungkin memiliki sirkuit baca yang lebih sederhana - saya tidak yakin.)
Ada adalah alasan yang baik untuk tidak menambahkan inverter ekstra - itu akan meningkatkan delay propagasi dari memori ke CPU. Dalam mikrokontroler, flash ke CPU datapath memiliki efek besar pada kinerja sistem secara keseluruhan, karena menentukan berapa lama waktu yang diperlukan untuk mengambil instruksi baru.
Desainer sirkuit digital sering berharap nol berarti jelas / reset / terhapus. Tetapi transistor flash dan sirkuit baca adalah analog. Dari sudut pandang itu, menggambarkan keadaan penghantar transistor flash sebagai yang logis lebih masuk akal. Dan kebetulan bahwa beralih dari satu ke nol jauh, jauh lebih cepat daripada beralih dari nol ke satu, jadi seseorang menjadi keadaan "terhapus" sementara nol menjadi keadaan "terprogram".
Versi singkat: Fisikawan semikonduktor dan perancang sirkuit analog tidak peduli dengan intuisi digital Anda. :-)
sumber
Saya tidak yakin apa yang Anda kutip dari, tetapi pergi dari halaman Wikipedia untuk memori flash, tampaknya merupakan hasil dari perangkat keras di balik memori flash:
Jika Anda menggunakan tipe flash lain, misalnya NAND, status default adalah 1 karena output dari NAND adalah 1 ketika output dari transistor di bawah tegangan ambang batas tinggi / rendahnya.
Permintaan maaf jika saya benar-benar merindukan perahu atas apa yang Anda minta, saya cukup baru untuk semua ini juga.
sumber
ROM dan PROM jalan kembali ketika harus dimanipulasi dengan menambahkan logam di lapisan topeng selama pembuatan atau membakarnya dalam pemrograman dan kedua proses memiliki keadaan tinggi default ketika diproduksi. Memiliki mereka default ke RENDAH akan memerlukan lebih banyak transistor, mengurangi kenyamanan pemrograman atau kecepatan operasi dalam beberapa cara.
Sejak itu menjadi konvensi karena menambahkan inverter di beberapa titik di jalur data hari ini adalah mungkin.
Konvensi mungkin telah dimulai pada hari-hari array memori logika dioda yang memiliki dioda untuk menarik garis data ketika mereka dialamatkan dan kata-kata memori yang tidak digunakan tidak akan memiliki dioda daripada semua dioda. Kebanyakan standar logika digital awal secara aktif ditarik RENDAH dan melayang tinggi jika tidak.
sumber