4. Pamięci i inne układy o strukturze matrycowej

4.9. Pamięci nieulotne CMOS programowane jednokrotnie

W układach CMOS podstawową komórką pamięci nieulotnych był dotąd pojedynczy tranzystor nMOS (rysunek 4-7). O różnych rodzajach pamięci z takimi komórkami będzie teraz mowa. W ostatnim czasie zaczęły się jednak pojawiać pamięci nieulotne, które wykorzystują jako nośnik informacji cyfrowej spin elektronu (czyli w praktyce stan namagnesowania pewnej warstwy magnetycznej). Będzie o nich mowa w punkcie 4.2.7.

 

Rysunek 4 7. Komórka pamięci nieulotnej CMOS - zasadnicza idea

 

Działanie takiej komórki jest niezwykle proste. Załóżmy, że na linii słowa S panuje stan „1”. Jeśli tranzystor przewodzi, to zwiera linię bitu do zera napięcia zasilania, co oczywiście oznacza stan „0”. Jeśli tranzystor nie przewodzi lub go w ogóle nie ma, na linii bitu jest niezerowe napięcie reprezentujące stan „1”. Widoczny na rysunku 4-7 rezystor R jest symbolem elementu, który doprowadza napięcie ze źródła zasilania do linii bitu. W rzeczywistości jednak rezystorów się nie stosuje, ponieważ użycie zwykłej liniowej rezystancji nie dałoby możliwości uzyskania pamięci o dobrych parametrach. 

Różne rodzaje pamięci nieulotnych różnią się głównie następującymi cechami:

  •     w jaki sposób doprowadzane jest niezerowe napięcie do linii bitu,
  •     w jaki sposób osiąga się stan przewodzenia lub nieprzewodzenia tranzystora stanowiącego komórkę pamięci.

Doprowadzenie niezerowego napięcia do linii bitu można najprościej uzyskać stosując tranzystor pMOS spolaryzowany w taki sposób, by pełnił rolę nieliniowej rezystancji. Połączenie bramki z zerem napięcia zasilania powoduje, że tranzystor pMOS jest zawsze włączony. Ilustruje to rysunek 4-8a. Gdy tranzystor nMOS nie przewodzi, na linii bitu panuje napięcie V_{DD}. Gdy tranzystor nMOS przewodzi, tworzy się dzielnik napięcia - przewodzą oba tranzystory. Dobierając odpowiednio ich wymiary można osiągnąć na linii bitu napięcie dostatecznie niskie, aby odpowiednio zaprojektowany wzmacniacz odczytu (który nie jest pokazany na rysunku 4-8) zinterpretował je jako stan „0”. Ten sposób doprowadzenia napięcia do linii bitu jest bardzo prosty, ale ma istotną wadę: pamięć statycznie pobiera prąd, gdy oba tranzystory przewodzą.  
 

Rysunek 4 8. Doprowadzenie napięcia do linii bitu: (a) statycznie, (b) dynamicznie

 

Lepszym rozwiązaniem jest zastosowanie wstępnego ładowania – rysunek 4-8b. Tu tranzystor pMOS wstępnie ładuje linię bitu (jej pojemność Cb) do napięcia V_{DD}, gdy zegar \Phi  jest w stanie „0”. Po przejściu do stanu „1” tranzystor pMOS zostaje wyłączony. Teraz możliwy jest odczyt. Na linię słowa podawana jest „1”. Jeśli tranzystor nMOS przewodzi, pojemność Cb rozładowuje się i odczytywane jest „0”. W przeciwnym razie napięcie V_{DD}  na pojemności Cb pozostaje i odczytywana jest „1”. Tę zasadę działania już poznaliśmy, gdy omawiane były bramki typu DOMINO.

Omawianie pamięci nieulotnych zaczniemy od pamięci, których zawartość określona jest już podczas produkcji i nie może być potem zmieniona. Takie pamięci bywają też określane jako pamięci programowane maską, bowiem rzeczywiście ich zawartość jest określona przez jedną lub kilka masek fotolitograficznych, na przykład maskę określającą połączenia w warstwie metalu 1. W najprostszym przypadku tam, gdzie ma być zapisana jedynka, może w ogóle nie być tranzystora, lub też może on być odłączony od linii bitu. 

Pamięci programowane maską mają zastosowanie tam, gdzie wiadomo na pewno, że nigdy nie będzie potrzeby zmiany zapisanej w pamięci informacji. Przykładem może być program sterujący działaniem mikroprocesora w prostych urządzeniach powszechnego użytku: kalkulatorach, pralkach, sprzęcie audio i TV. Pamięci programowane maską są najtańszym rodzajem pamięci nieulotnych przy produkcji masowej. Pamięci programowane maską są nieprzydatne, jeśli potrzebna jest mała liczba układów pamięci (bo wykonywanie nowej maski jest kosztowne) lub jeśli przewidujemy, że zawartość pamięci może wymagać zmian. W takim przypadku potrzebne są pamięci, które można zaprogramować – jeden raz lub wielokrotnie.

Jednym ze sposobów programowania pamięci nieulotnych jest przepalanie połączeń. Odłączanie tranzystorów odbywa się poprzez doprowadzenie odpowiedniego sygnału elektrycznego, a nie w procesie produkcyjnym. Połączenie drenu z linią bitu wykonane jest w specjalny sposób (na przykład jest to bardzo wąska ścieżka polikrzemowa). Bramkę tranzystora oraz linię bitu trzeba spolaryzować napięciem znacznie wyższym od normalnego napięcia V_{DD}. Powoduje to przepływ prądu o na tyle dużym natężeniu, że połączenie drenu z linią bitu ulega przepaleniu. Tę zasadę ilustruje rysunek 4-9.
 

Rysunek 4 9. Pamięć jednokrotnie programowalna przez przepalanie połączeń

 

Takie pamięci mogą być oczywiście zaprogramowane tylko jeden raz. Były one swego czasu popularne, ale obecnie są już praktycznie wyparte przez pamięci wielokrotnie programowalne, znane pod ogólną nazwą EPROM (ang. Electrically Programmable ROM).