Flash bellek programlamasını tartışacağım, ancak flaş bellek 1980'lerin ortalarında EEPROM'lardan türetildiği için birçok malzeme EEPROM'lara (Elektrikle Silinebilir Programlanabilir ROM) benzer olacaktır. Aşağıda açıklandığı gibi, fiziksel bir bakış açısından, varsayılan durum 1'dir. Ama daha önemlisi, orada niçin gidiyorum olduğu varsayılan bir devlet - yapabilecekleriniz sadece keyfi programı zaten son kez programlanmıştır neyin üstüne.
Arabirim, verileri mikrodenetleyicinin bellek haritasına yerleştirmek için en uygun olan NOR flaşı neredeyse her zaman seçilir - tam adres ve veri yolları RAM'i taklit eder ve herhangi bir konuma rastgele erişime izin verir. Veriler her seferinde bir kelime okunabilir, burada bir kelime mikrodenetleyicinin veri genişliği, tipik olarak 8, 16 veya 32 bit olarak tanımlanır. NAND flash ise sabit disklerin yerini almak üzere geliştirildi ve sırayla çalışıyor.
Ancak programlama biraz daha karmaşık hale gelir. Daha önce de belirtildiği gibi, NOR flaşı ve NAND flaşı, EEPROM'lar ve hatta EPROM'lar gibi diğer kalıcı bellekler için varsayılan durum bir mantık 1'dir. 1'leri bu cihazlara programlayamazsınız, sadece 0'ları programlayabilirsiniz. Örneğin, 0x0123 içeren bir baytınız varsa ve 0x3210 olarak değiştirmek istiyorsanız, bunu doğrudan RAM'deki bir bayt üzerine yazmak gibi yapamazsınız.
Bunun yerine, bellekteki bitler silinmelidir, bu da bunları daha önce belirtilen varsayılan 1 durumuna getirir. Bu sadece bloklar halinde yapılabilir, kelimelerle değil. En son çalıştığım Microchip PIC32'de silinebilecek minimum blok boyutu 4096 bayt. Bu nedenle, yalnızca bir kelimeyi (32 bit) değiştirmek isterseniz, 4K hafızayı okumak, bloğu silmek, ardından 4K hafızayı tekrar flaşa yazmak, ancak gerektiğinde yeni 32 bit değeri dahil etmek gerekir. Bu silme biraz zaman alabilir - bir saniyenin iyi bir kısmı.
Aşağıda bir flash bellek hücresinin resmi görülmektedir. Flash, kayan kapıdaki elektronları çıkararak veya koyarak verileri saklar. Kayan kapıda elektronlar mevcut olduğunda, transistörden 0 akımı gösteren herhangi bir akım akmaz. Elektronlar kayan kapıda çıkarıldığında, transistör iletmeye başlar ve 1'i gösterir. (Bu, konvansiyonla olabilir - aksi halde tüm veri hatlarında inverterler gerektirir.)
Silme işlemi. Flaş bellek hücrelerinin (tek düzeyli NOR flaş hücresi) varsayılan durumu 1'dir, çünkü kayan kapılar negatif yük taşımaz. Bir flash bellek hücresini silme (1'e sıfırlama), kaynak ve kontrol geçidine (kelime satırı) bir voltaj uygulanarak elde edilir. Voltaj -9V ila -12V arasında olabilir. Ve ayrıca kaynağa yaklaşık 6V uygulayın. Yüzen kapıdaki elektronlar çekilir ve kuantum tünelleme ile kaynağa aktarılır . Başka bir deyişle, elektronlar kayan kapıdan kaynağa ve substrata tünel açar.
Silme işlemi yüksek voltaj kullandığından, bloklar halinde silme işlemi daha az kalıp alanı gerektirir. Böylece gerilimler bir seferde sadece transistörlerin tüm sıralarına uygulanabilir.
Yazmak için, bir NOR flaş hücresi programlanabilir veya aşağıdaki prosedürle 0'a ayarlanabilir. Yazarken, kontrol kapısına (kelime satırı) yaklaşık 12 V yüksek voltaj uygulanır. Bit Hattına (boşaltma terminali) 7V civarında yüksek bir voltaj uygulanırsa, hücrede 0 depolanır. Kanal şimdi açıktır, böylece elektronlar kaynaktan tahliyeye akabilir. Kaynak-drenaj akımı, bazı yüksek enerjili elektronların, sıcak elektron enjeksiyonu adı verilen bir işlem yoluyla yalıtım katmanından kayan kapıya atlamasına neden olacak kadar yüksektir.
Okuma için, kontrol kapısına yaklaşık 5V ve gidere 1V civarında bir voltaj uygulanır. Bellek hücresinin durumu, drenaj ve kaynak arasında akan akım ile ayırt edilir.
Kalıcı belleğin kullanılabilir ömrü silme döngüleri cinsinden ölçülür. NOR'un dezavantajı, silme çevrimlerinin sayısının NAND belleğinin yaklaşık 1 / 10'u olmasıdır. PIC32'nin birçok sürümü, flash belleğin yalnızca 1000 kez güncellenmesine izin verir, bu da EEPROM'lar için tipik 100.000 silme çevriminden çok daha azdır.
Bu nedenle, tasarımcıların varsayılan durumu 1 veya 0 yapması çok önemli değildir (en kolay uygulamaya izin veren değeri seçtiler); önemli olan, bir kişinin önce bir flash bloğunu (zaman alır) silmesi ve ardından tüm bloğu yeniden programlamasıdır (tek bir kelime değiştirilse bile (önemli miktarda RAM gerektirir).
Bu blok silme işlemi, EEPROM'lara devam eden ilk EPROM'lara (Silinebilir Programlanabilir ROM) geri döner Kod, çiplere (16KB 27128 gibi) programlanmış ve soketlere yerleştirilmiştir. Bu yongaların üstünde, ışığın kalıpta parlamasına izin veren küçük bir pencere vardı. Programın değiştirilmesi gerektiğinde, talaşlar 20 dakika boyunca bir UV silgisine konuldu ve bu da tüm talaşı sildi. Daha sonra çip yeni programla programlanacaktır.
Bazı EEPROM'lar programlamadan önce bellek bloklarının silinmesini gerektirir; diğerleri bir seferde bir bayt yazılmasına izin verir (EEPROM denetleyicisi ilk önce baytı ve programları programlar).