Jedním z nejčastějších problémů vývojářů je omezená velikost RAM u mnoha rozšířených mikrokontrolérů. Samozřejmě je většinou možné použít mikrokontrolér s větší pamětí, ale také za vyšší cenu a s řadou funkcí, které v dané aplikaci není možné využít. Mnoho osmibitových mikrokontrolérů neumožňuje použití externí SRAM, ale pouze externí sériové EEPROM, které však mají řadu nevýhod, pokud mají sloužit jako RAM.
Paměti FRAM, jak jste se již mohli dozvědět z předchozích článků, tyto nevýhody odstraňují a mohou sloužít jako statická paměť i jako RAM, ja si popíšeme dále. Navíc je možné paměť EEPROM přímo nahradit pinově kompatibilní pamětí FRAM bez dalších zásahů do zařízení.
Pro sériovou FRAM sloužící jako RAM existujív podstatě tři možné primární aplikace:
- paměť vzorků dat
- vyrovnávací paměť
- kruhová vyrovnávací paměť
Paměť vzorků dat
Charakteristické požadavky každého typu aplikace na paměť jsou různé, např. paměť dat bude intenzivně zapisovat větší množství vzorků (software sbírá data pro další zpracování) a tedy vyžaduje velmi rychlý cyklus zápisu.
Existující EEPROM paměti se pro tyto aplikace nehodí ze dvou hlavních důvodů:
- EEPROM mají životnost pouze 100,000 - 1,000,000 cyklů zápisu
- doba zápisu je kolem 10 ms, což je pro mnoho palikací příliš dlouhá doba
Přístup | Výdrž paměti | |||
Interval | Frekvence | Hloubka Bufferu | ||
256 | 512 | 1K | ||
100ns | 10MHz | 1.212 | 6.211 | 3.111 |
1?S | 1Mhz | 1.211 | 6.2410 | 3.110 |
10?S | 100KHz | 1.210 | 6.249 | 3.19 |
20?s | 50KHz | 6.29 | 3.149 | 1.59 |
40ns | 25KHz | 3.19 | 1.549 | 7.78 |
100ms | 10KHz | 1.29 | 6.248 | 3.18 |
200ms | 5KHz | 6.28 | 3.148 | 1.58 |
1ms | 1KHz | 1.28 | 6.247 | 3.17 |
Data v tabulce se vztahují k provozu 24 hodin denně, 365 dní v roce s nepřetržitou obměnou dat v paměti. Většina aplikací takto paměť nezatěžuje a navíc je v programu často řada čekacích cyklů. Pokud tedy například budeme předpokládat systém pracující 8 hodin denně každý den v roce, zapisující data každých 10ms, vychází nám životnost takového systému kolem 10 let při 110 cyklech zápisu.
Vyrovnávací paměť
Ať již se jedná o běžnou vyrovnávací paměť (buffer), nebo o jakoukoliv paměť na ?odkládání? dat k jakémukoliv účelu, jedná se většinou o náhodné cykly zápisu, kde lze těžko předpokládat dobu životnosti. Proto je pro některé aplikace paměť FRAM více než dostačující, pro některé nikoliv.
Předpokládanou dobu životnosti lze stanovit s uvážením rychlosti mikrokontroléru a požadavků instrukcí na přístup do paměti, jak to ukazuje následující příklad:
V rodině mikrokontrolérů 8051 pracuje v typickém programu s přímými daty (tedy s daty, která mohou být umístěna kdekoliv v RAM) zhruba 10% instrukcí. Naším cílem bude zdvojnásobit kapacitu RAM s pomocí externí FRAM, tedy polovina dat bude uložena v RAM, druhá polovina v FRAM. Z této uvahy vyplývá, že externí data bude vyžadovat přibližně 5% instrukcí.
Při frekvenci 16MHz, připadá na instrukční cyklus 1,33 MHz. Vzhledem k tomu, že mnoho instrukcí vyžaduje více cyklů, či zpoždění, budeme uvažovat zhruba čtvrtinu instrukčního cyklu, tedy 333 KHz. Pokud budou datové instrukce rozloženy rovnoměrně, pak je frekvence přístupu k externím datům asi 16.7 kHz (5% ze 333 kHz).
Jak jsme již napsali, chceme interní paměť RAM zdvojnásobit ? velikost interní RAM většiny 8051 procesorů je 256B, což bude i velikost naší FRAM. Vzhledem k velikosti paměti a vypočítané frekveci přístupu (16,7kHz) nám vyjde průměrná frekvence asi 65 Hz, tedy jednou za 15 ms. Pokud bude procesor pracovat 12 hodin denně, je předpokládaná výdrž pro 1E10 cyklů přibližně deset let.
Kruhová vyrovnávací paměť
V kruhové vyrovnávací paměti software používá každou paměťovou lokaci sekvenčně, dokud nenarazí na konec bloku. Pak proces začíná znovu na počátku adresového prostoru a data přepisuje, tedy opakuje se v kruhu (viz. obrázek).
Koncept kruhové vyrovnávací paměti
Zápis je většinou periodický s fixní velikostí bufferu. Často používáme kruhovou vyrovnávací pamět k ukládání časové historie dat, podle počtu vzorků pak rozlišujeme hloubku bufferu. Hlavním rozdíl oproti klasické vyrovnávací paměti z hlediska výdrže je, že do jednotlivých částí paměti je zapisováno méně často. Je to proto, že aktivní část paměti, do které se zapisuje, se průběžné pohybuje po paměťovém prostoru, namíto neustálého opakovaného zápisu do stejného paměťového místa.
Kruhová vyrovnávací paměť z hlediska adres
Obrázek ilustruje koncept kruhové vyrovnávací paměti z hlediska adres. Je použita 16 kB sériová FRAM, celková velikost paměti je 2 kB. Polovina FRAM je použita jako statická paměť proměnných, jedna čtvrtina uchovává další statická data. To nám ponechává 512B pro kruhovou vyrovnávací paměť, která ukládá 16 bajtové pakety dat a hloubka bufferu je tedy 32 lokací. Dále potřebujeme ukazatel, který bude někde uložen, bude směřovat na aktuální lokaci a po přečtení každého paketu se inkrementuje.
Závěr
Jak již bylo zmíněno, nejjednodušším způsobem, jak rozšířit RAM mikrokontroléru, je nahradit pamět EEPROM pinově kompatibilní pamětí FRAM. Systém je pak ale třeba softwarově přizpůsobit, aby využíval výhod pamětí FRAM, tedy například odstranit přebytečné čekací cykly. Bohužel část mikrokontrolérů neumí přímo obsluhovat sériové paměti, pak je tedy potřeba aby uživatelský software data před použitím přesunul do paměti RAM.
Pokud systém dosud není vybaven pamětí EEPROM, je potřeba si vybrat, jaký interface pro připojení FRAM zvolíme (2-wire, nebo SPI ? viz předchozí články o FRAM). Novější mikrokontroléry naštěstí již tato rozhranní hardwarově podporují, v takovém případě je pouze potřeba interface nakonfigurovat. Jak je vidět, FRAM paměti nepředstavují pouze výkonnější náhradu pamětí EEPROM, ale také pohodlnou možnost, jak rozšířit paměť RAM.
Z anglického originálu Craiga Taylora přeložil :
David Šmíd
smid@ hwg.cz
DOWNLOAD & Odkazy
- Domovská stránka výrobce Ramtron - http://www.ramtron.com/
- Domovská stránka distributora CIT international - http://www.citworld.com/
- Originál článku na Embedded Control Eurep - Using FRAM memory as supplemental RAM in 5V systems