MSP430FR57 - Pierwszy na świecie mikrokontroler z FRAM!

Firma Texas Instruments wprowadziła do oferty pierwszy na świecie mikrokontroler, w którym ten sam rodzaj pamięci (FRAM) jest używany jako pamięć operacyjna, danych i programu. Dzięki temu można ją w trakcie tworzenia i działania programu dzielić na partycje o takich wielkościach, jakie są potrzebne. Aby dobrze zrozumieć tę rewolucyjną ideę warto przeczytać dalszą cześć informacji.

Było dla mnie dużym zaskoczeniem, gdy odebrałem zaproszenie od firmy Texas Instruments na konferencję prasową, która miała się odbyć 2 maja 2011 poświęconą li tylko nowemu mikrokontrolerowi MSP430FR. Pomyślałem sobie, że przecież MSP są dobrze znane od wielu lat i dlaczego firma robi aż takie wielkie „halo” z faktu, że przybył jeden członek tej wielkiej rodziny? Jeden w tą, jeden w tamtą, co za różnica? Okazało się, że nic bardziej mylącego. Może nie tyle mikrokontrolerowi, ile pomysłowi firmy Texas Instruments warto poświęcić szczególną uwagę, ponieważ zrywa on z dotychczasowymi zwyczajami przy doborze mikrokontrolera.
Aby zrozumieć, na czym polega ta nowa idea trzeba sięgnąć do doświadczeń ze swojej praktyki, jako konstruktor – elektronik lub programista. Jeśli masz już trochę doświadczenia w zawodzie, to dobrze wiesz, że wiele razy musiałeś zmienić mikrokontroler tylko dlatego, że na przykład dotychczas stosowany nie miał pamięci EEPROM zdolnej przechować pewne nastawy lub po prostu zabrakło pamięci operacyjnej na zmienne. A z drugiej strony, program zajął niewiele ponad 80% wielkości pamięci FLASH i zostało jeszcze sporo miejsca. Niestety, tego miejsca przeważnie nie dało się użyć do przechowywania nastaw edytowanych przez użytkownika. Pół biedy, jeśli ten sam producent ma w ofercie mikrokontroler z wymaganym EEPROM-em, bo jeśli nie, to przypuszczalnie musiałeś zmienić programator, jego oprogramowanie i co najgorsze – zdobyć na nowo doświadczenie oraz zmienić nawyki. Albo inaczej – jeśli kiedykolwiek poszukiwałeś mikrokontrolera o pamięci RAM o pewnej, wymaganej wielkości, to prawie na zdarzyło Ci się zapłacić też za pamięć FLASH, której nie potrzebujesz, bo po prostu nie było wyboru. Zazwyczaj mikrokontrolery z dużą pamięcią RAM są przeznaczone do uruchamiania na nich systemów operacyjnych lub programów napisanych w językach wysokiego poziomu, więc – im więcej RAM-u, tym więcej pamięci FLASH. Pomysł firmy TI jest zupełnie inny.
Konstruktorzy z firmy TI zadali sobie pytanie: a co gdyby wyposażyć mikrokontroler w taki rodzaj pamięci, który mógłbym pełnić rolę pamięci FLASH, RAM i danych? Niech użytkownik sam podzieli sobie ją na partycje zgodnie z własnymi potrzebami.
Wbrew pozorom taki rodzaj pamięci jest znany od przeszło 20 lat i dostępny w handlu od około 15 lat. Jest to pamięć FRAM. To, co udało się inżynierom z firmy TI, to umieszczenie takiej pamięci na jednym kawałku krzemu z CPU oraz około dwukrotne zmniejszenie komórek ją tworzących.

Czym są pamięci FRAM?

FRAM jest rodzajem pamięci RAM, w której wykorzystano efekt ferroelektryczny do zapamiętywania stanu bitów słowa danych. Efekt ten, być może znany niektórym studentom politechnik z ćwiczeń w laboratorium fizyki, występuje w niektórych materiałach krystalicznych i jest zdolnością materiału do przechowywania polaryzacji elektrycznej również w przypadku ustąpienia pola elektrycznego, które tę polaryzację wywołało.
Komórka pamięci jest tworzona poprzez nałożenie materiału ferroelektrycznego w postaci krystalicznej pomiędzy dwa doprowadzenia płaskich elektrod w taki sposób, aby został utworzony kondensator z materiałem ferroelektrycznym jako dielektrykiem. Konstrukcja tego kondensatora jest zbliżona do typowej konstrukcji komórki pamięci DRAM z tym, że zamiast przechowywać informację w postaci ładunku elektrycznego (naładowanego kondensatora), bit jest przechowywany w postaci polaryzacji ładunków w obrębie struktury krystalicznej. W ten sposób – poprzez zmianę polaryzacji ładunków za pomocą pola elektrycznego wewnątrz kondensatora, można tworzyć i zapamiętać dwa stabilne stany. Stany te umownie mogą odpowiadać wartościom logicznym bitów, to jest „zeru” i „jedynce”.
Prosta zasada działania, niemalże identyczna z tą stosowaną w pamięciach RAM, umożliwia konstrukcję obwodów zapisu i odczytu komórek pamięci. Jak wspomniano, materiał ferroelektryczny zachowuje polaryzację dipoli utworzonych z ładunków pomimo zaniku pola elektrycznego i w związku tym, nie tak jak w pamięciach RAM, dane mogą być przechowywane w sposób nieulotny. Taka komórka pamięci nie wymaga też okresowego odświeżania.
Pamięć FRAM jest odporna na działania zewnętrznego pola magnetycznego. Jej zasada działania, nie ma nic wspólnego z ferromagnetyzmem. Podobny jest jedynie opis zjawiska fizycznego: w przypadku materiałów ferroelektrycznych polaryzacji ulegają ładunki, natomiast w przypadku materiałów ferromagnetycznych – domeny magnetyczne.

Praca pamięci FRAM

Na rysunku 1 zaprezentowano poglądowy model kryształu ferroelektrycznego o strukturze perowskitu. Kryształ ma ruchomy atom w środku swojej struktury (oznaczony kolorem żółtym). Przyłożenie pola elektrycznego powoduje, że „mobilny” atom  przesuwa się w kierunku działania sił pola. Odwrócenie polaryzacji pola powoduje przemieszczanie się atomu w kierunku przeciwnym. Pozycje atomy na „górze” i „dole” struktury krystalicznej są stabilne. Atom również pozostaje w jednej z nich w przypadku braku pola elektrycznego. Jako komórka pamięci cyfrowej, taka struktura jest wręcz idealna: ma dwa stany stabilne, potrzebuje bardzo małej mocy do zmiany stanu i zachowuje ten stan nawet pomimo działania różnych czynników zewnętrznych i zaniku pola elektrycznego wywołującego zmianę.

Rysunek 1. Budowa kryształu ferroelektrycznego - perowskitu.

Mimo, iż podstawowym elementem komórki pamięci jest kondensator, to jednak bity nie są zapamiętywane jako ładunek liniowy. Odczyt takiej komórki pamięci wymaga detekcji położenia atomu wewnątrz struktury krystalicznej. Niestety, nie może ono być rozpoznane bezpośrednio i musi tu być używany pewien „zabieg”.
Do kondensatora jest przykładane napięcie. Na skutek tego pomiędzy jego okładzinami pojawia się pole elektryczne. Ruchomy atom przesuwa się zgodnie z kierunkiem działania pola, lub pozostaje w spoczynku, jeśli jego położenie jest z nim zgodne. W środku struktury kryształu występuje stan równowagi, który utrzymuje pozostałe atomy w ściśle określonych położeniach sieci krystalicznej, a natężenie wypadkowego pola elektrycznego jest równe 0. Jeśli ruchomy atom przemieszcza się, to powoduje zaburzenie, co wywołuje impuls energetyczny. Ten impuls dodaje się do ładunku zgromadzonego przez kondensator (pamiętajmy, że opisywane są struktury o rozmiarach kilkunastu atomów!). Na skutek tego jedne kondensatory będą naładowane do wartości ładunku wymuszonej przez pole elektryczne, a inne będą miały ładunek będący kombinacją oddziaływania pola elektrycznego i ruchu atomu. Mimo iż odczyt pamięci wymaga przemieszczenia atomu, to jednak należy pamiętać o tym, że atom przebywa bardzo krótką drogę. Jego położenie zmienia się w czasie 1 nanosekundy (10-9 sekundy), a cała operacja odczytu zajmuje około kilkadziesiąt nanosekund i to głównie ze względu na ograniczenia prędkości układów interfejsowych.
Łatwo na podstawie powyższego opisu wywnioskować, jak będzie wyglądać obwód określający stan bitu – będzie to rodzaj komparatora porównującego ładunek odebrany z komórki pamięci z pewnym poziomem odniesienia. Dobrze, a co ze zmianą polaryzacji dipola? Przecież podczas odczytu atom przemieszcza się wewnątrz struktury. W związku z przyjętą metodą odczytu, każdemu cyklowi dostępu do pamięci towarzyszy rodzaj operacji odświeżania. A co w związku z tym z czasem dostępu do pamięci? Czy nie jest przez to odświeżanie wydłużany? Niestety tak. Wpływ odświeżania na czas odczytu pamięci FRAM jest znaczny, ponieważ zajmuje ono aż około 50 nanosekund.
Operacja zapisu jest bardzo podobna do odczytu. Inaczej niż w innych rodzajach pamięci stałych programowanych elektrycznie, nie wymaga ona użycia wysokiego napięcia czy też długiego czasu zapisu. Wewnętrzny obwód przykłada napięcie do okładzin kondensatora ferroelektrycznego. Powoduje to odpowiednie przemieszczenie ruchomego atomu i polaryzację kryształów. Jeśli jest to potrzebne, nowe dane po prostu zmieniają stan polaryzacji kryształu ferroelektrycznego. Tak jak w przypadku odczytu, zmiana stanu kryształu zajmuje około 1 nanosekundy, podczas, gdy cała operacja zapisu około 70 nanosekund (7×10-8s!). To bardzo krótki czas, jeśli porównamy go z czasem zaprogramowania pojedynczej komórki pamięci FLASH.
Oczywiście, w praktyce, wszystkie opisywane wyżej zjawiska nie będą obchodziły potencjalnego użytkownika układu. Producenci wyposażając układ peryferyjny w interfejs SPI zwalniają konstruktora od pamiętania o fizycznych cechach pamięci. Nieco inaczej jest w przypadku pamięci równoległych – poruszę ten temat w dalszej części artykułu.
Kiedy po raz pierwszy przeczytałem o upowszechnieniu się technologii pamięci FRAM, przed oczyma od razu miałem szerokie spektrum aplikacji. Po pierwsze, ze względu na bardzo dużą szybkość oraz ogromną liczbę cykli zapisu, bardzo zasadne jest użycie tego rodzaju pamięci jako pamięci masowej w komputerach PC, telefonach komórkowych, aparatach fotograficznych i innych urządzeniach elektronicznych. Moim zdaniem pamięci tego rodzaju mogły z powodzeniem zastąpić pamięć FLASH w mikrokontrolerach tworząc wspólny obszar pamięci dla danych oraz programu. Rzec by można, że im mniejszy będzie kod programu użytkownika, tym więcej pamięci RAM będzie miało do dyspozycji CPU mikrokontrolera. To nie wszystko: programy będą mogły dynamicznie modyfikować swój stan podczas pracy mikroprocesora. Moim zdaniem zupełnie zmieni to podejście do programowania oraz sposób tworzenia aplikacji. Niestety, na moment wprowadzenia do sprzedaży takiego mikrokontrolera musiałem czekać blisko 8 lat.

MSP430FR5 – Pentathlon

W maju bieżącego roku firma TI ogłosiła wprowadzenie na rynek pierwszego mikrokontrolera z wbudowaną pamięcią FRAM. Pomyślałem – żadna rewelacja, przecież ten rodzaj pamięci jest znany już od blisko 20 lat. A jeśli FRAM zastąpił pamięć Flash, to nowy produkt zyskał co najwyżej na szybkości programowania, co może mieć duże znaczenie dla linii produkcyjnych, ale nie dla przeciętnego elektronika. Być może przy tym obniżono wartość napięcia zasilającego oraz pobór energii, ale konkurencja na tym rynku trwa od lat i co rusz jakaś firma prezentuje nowy wyrób. Myliłem się. Firma TI nie tylko zastąpiła pamięcią FRAM tradycyjnie stosowaną pamięć FLASH, ale również wszystkie rodzaje pamięci mikrokontrolera. A więc i pamięć operacyjną, i EEPROM przechowujący dane. Programista na etapie tworzenia programu może sobie dowolnie podzielić pamięć na partycje i używać tak, jak jest mu wygodnie!
Aktualnie firma TI wprowadziła na rynek „sondażową” wersję mikrokontrolerów MSP430FR57x. Literki FR oznaczają, że w nich użyto pamięć FRAM. Nowe układy są wyposażone w stosunkowo niewielką pamięć, bo tylko 16 kB, ale wbrew pozorom to całkiem sporo jak dla wielu aplikacji embedded typu płytki sterujące do sprzętu gospodarstwa domowego, układy do akwizycji danych i wielu innych, których używamy na co dzień nawet ich z przyzwyczajenia nie zauważając. Podczas prezentacji nowego mikrokontrolera oczywiście ktoś poddał w wątpliwość zasadność produkcji układu z tak niewielką pamięcią, ale przedstawiciel TI stwierdził, że na dziś dzień firma jest w stanie wytwarzać układy w konkurencyjnych cenach z pamięciami o wielkości do 256 kB, a w przyszłości (ponieważ prace rozwojowe nadal trwają) większą.
Oprócz możliwości partycjonowania, nowy MSP430FR57x pobiera 250 razy mniej energii, a czas zapisu danych jest rzędu nanosekund. Firma gwarantuje liczbę zapisów przekraczającą 1014, podczas gdy dla pamięci FLASH wynosi ona 104, a dla EEPROM 105. Łatwo zauważyć, że FRAM pracujący jako pamięć operacyjna będzie zużywał się, ale czas do uszkodzenia wyniesie co najmniej 8 lat. Czas ten można wydłużyć stosując pewne, dobrze znane triki w programie.
Moim zdaniem szykuje się kolejna rewolucja na miarę tej spowodowanej przez ARM. Tylko czekać, kiedy kolejne firmy wyprodukują kolejne podobne układy scalone. A i sama firma TI ma ogromny potencjał i olbrzymie portfolio różnych układów (przypomnijmy tylko OMAP stosowane w urządzeniach przenośnych, Stellaris z rdzeniem ARM, procesory DSP, dobrze znane MSP430), więc nawet tylko dzięki jej wyrobom może dokonać się przełom w sposobach programowania i wyboru mikrokontrolerów do aplikacji.