Quad SPI Flash (SPIFI): szybka alternatywa dla standardowych pamięci SPI Flash

  

Nowoczesne mikrokontrolery 32-bitowe są obecnie elementami niezwykle wydajnymi, ale ich duże możliwości są często przyczyną problemów projektantów, którzy z nich korzystają. W związku z rosnącym zapotrzebowaniem na coraz większą liczbę zaawansowanych funkcji, takich jak zapewniających wyższą prędkość obróbki obrazu o coraz większej liczbie szczegółów, lub większą liczbę języków, które mogą być obsługiwane w interfejsie użytkownika, projektanci napotkali ograniczenia związane z relatywnie małą pojemnością typowej, wbudowanej w mikrokontroler pamięci Flash.

Dzisiaj mikrokontrolery (MCU) 32-bitowe są zazwyczaj dostarczane z wbudowaną (on-chip) pamięcią Flash, o pojemności nie większej niż 2 MB. Możliwości zwiększenia pojemności tej pamięci zmieniły się w ostatnich latach. Obecnie rzadkością jest dodawanie zewnętrznej, równoległej pamięci Flash, ponieważ stosunkowo niewiele mikrokontrolerów obsługuje interfejs równoległy pamięci zewnętrznej. Jednym z powodów braku tej obsługi jest to, że liczba pinów równoległej pamięci Flash wymaga 8- lub 16-bitowej magistrali danych oraz 20 lub więcej linii adresowych i sterowania, a to kosztuje i komplikuje projekt płytki drukowanej.

Inną możliwością, jaką może rozważyć projektant, jest zastosowanie pamięci szeregowej SPI NOR Flash, ale ten typ pamięci jest znacznie wolniejszy niż pamięć Flash z magistralą równoległą. Ponadto, zwykle niemożliwe jest wykonywanie kodu programu z pamięci SPI Flash, a jeśli jest to możliwe, to wydajność jest niska.

Aby rozwiązać problem dodania zewnętrznej pamięci Flash firma NXP Semiconductors opracowała nowy, łatwy w obsłudze interfejs pamięci zewnętrznej. Interfejs ten, nazwany SPI Flash Interface (SPIFI), jest przeznaczony do stosowania z popularnym typem pamięci Quad SPI NOR Flash, co jest opłacalne i zapewnia szeroki wybór pojemności pamięci.

Sprzętowy interfejs SPIFI jest już dostępny w serii LPC1800 mikrokontrolerów z rdzeniami ARM Cortex-M3 firmy NXP, oraz w seriach LPC4000 i LPC4300 mikrokontrolerów z rdzeniami ARM Cortex-M4 (w przyszłości więcej mikrokontrolerów firmy NXP będzie obsługiwać interfejs SPIFI). Obsługa SPIFI oznacza, że mikrokontrolery mogą korzystać z pamięci z interfejsem Quad SPI, która jest oferowana m.in. stosowanej w pamięciach szeregowych NOR Flash serii MX25 firmy Macronix. Ich pojemności obejmują zakres od 8 Mb do 512 Mb i nadają się zarówno do szybkiego zapisu danych, jak i bezpośredniego wykonywania kodu programu.

Quad SPI jest zmodyfikowanym interfejsem szeregowym urządzeń peryferyjnych SPI (Serial Peripheral Interface), który umożliwia komunikację za pomocą czterech linii danych, w odróżnieniu od standardowego interfejsu szeregowego SPI używającego tylko jednej linii danych. Takie rozwiązanie zwiększa przepustowość danych prawie czterokrotnie, i sprawia, że wysoce wydajne, bezpośrednie (in place , tj. bez udziału pośredniczącej pamięci RAM) wykonywanie kodu programu jest możliwe. W porównaniu do pamięci równoległej NOR Flash z 16-bitową magistralą danych, pamięć szeregowa Quad SPI NOR Flash może osiągnąć łączną przepustowość prawie dwukrotnie większą, jak pokazano na rysunku 1.

 

 

Rys. 1. Pamięć szeregowa Quad SPI NOR Flash oferuje przepustowość prawie dwukrotnie większą niż pamięć równoległa NOR Flash

 

Tab. 1. Porównanie wydajności różnych pamięci Flash

  Interfejs   Tryb   Czas dostępu [ns] Przepustowość efektywna [Ms/s]
Równoległy 8-bitowy 90 11
16-bitowy 90 22
Szeregowy   Single 12.5* 10
Dual 12.5* 20
Quad 12.5* 40

 

Przepustowość nie jest jedyną zaletą interfejsu szeregowego Quad SPI: przy wymaganiu tylko sześciu połączeń pomiędzy mikrokontrolerem a układem pamięci, trasowanie (routing) jest znacznie mniej złożone niż w rozwiązaniu z pamięcią równoległą Flash, gdzie używa się od 30 do 45 ścieżek.

 

Wybór pamięci Quad SPI Flash z oferty firmy Macronix

Układy pamięci Quad SPI Flash serii MX25 firmy Macronix są dostępne w różnych 8- i 16-pinowych obudowach. Obudowy te typu SPO, USON oraz WSON zajmują bardzo mało miejsca na płytce drukowanej. Firma Macronix zadbała o to, aby różnym układom serii MX25 o różnych pojemnościach pamięci zapewnić tę samą lub kompatybilną zewnętrzną konstrukcję, tak aby producenci OEM mogli migrować z jednej pojemności pamięci do drugiej, bez konieczności dokonywania jakichkolwiek zmian w projekcie płytki drukowanej. Jedynie w przypadku migracji do pojemności pamięci większej niż 128 Mb, projektant musi wprowadzić drobne zmiany w oprogramowaniu, aby zapewnić adresowanie 4-bajtowe.

W mikrokontrolerach firmy NXP interfejs SPIFI jest bezpośrednio połączony z szybką magistralą danych AMBA AHB ( High Performance Bus ) rdzenia ARM, co oznacza, że pamięć Quad SPI Flash jest zmapowana i dostępna dla transferu za pośrednictwem wejść/wyjść (I/O) lub kanałów DMA, jak pokazano na rysunku 2. Podczas bezpośredniego ( in place ) wykonywania programu, instrukcje są ładowane do buforów SPIFI bezpośrednio z pamięci zewnętrznej Flash, bez dodatkowego podprogramu.

Sama pamięć Quad SPI Flash jest sterowana przez pięć rejestrów. Rejestry te ustawiają konfigurację i rozkazy do odczytu i pobierania informacji o stanie, i są jawnie wykorzystywane przez wbudowany sterownik pamięci ROM oraz bibliotekę SPIFI. W razie potrzeby, rejestry mogą być również bezpośrednio dostępne dla aplikacji użytkownika.

Układ SPIFI mikrokontrolera steruje procesem odczytu z pamięci Quad SPI Flash. Jeśli w tej pamięci jest zapisany kod programu, to układ będzie go automatycznie pobierać, zgodnie z ustawieniami rejestru, bez interwencji oprogramowania. Inicjowanie operacji zapisu i usuwania jest sterowane przez ustawienia oprogramowania.

 

Rys. 2. Pamięć Quad Flash SPI jest podłączona bezpośrednio do szyny danych AHB poprzez interfejs SPIFI

 

Instrukcje transferu danych mają taką samą strukturę jak te dla standardowej pamięci SPI Flash; one określają rozkaz, adres oraz dane do odczytu i zapisu, jak pokazano na rysunku 3. W przypadku pamięci Quad SPI Flash, rozkaz jest przesyłany w jednej linii, a adres w czterech liniach. Dane z pamięci Flash są przenoszone czterema liniami. Zastosowanie czterech linii oznacza, że przesyłanie 24-bitowego lub 3-bajtowego adresu wymaga tylko sześć cykli zegara, zamiast 24, jak w przypadku pamięci SPI Flash. Podobnie 1 bajt danych jest odbierany w ciągu dwóch cykli zegara, zamiast ośmiu.

 

 

Rys. 3. Struktura instrukcji dla pamięci Quad SPI Flash jest podobna do struktury standardowej instrukcji dla pamięci SPI Flash

 

Pamięci Flash serii MX25 firmy Macronix mogą pracować z częstotliwością zegara do 104 MHz podczas wszystkich operacji. W przypadku operacji odczytu, przy obliczaniu czasu dostępu wymaganego do pobrania pierwszego bajtu, projektant musi uwzględnić dodatkowe cykle (dummy cycles, tj. cykle nie zmieniające adresu) po przesłaniu adresu. Po pierwszym bajcie, adres będzie automatycznie inkrementowany, a dane będą przesyłane bez dodatkowego czasu dostępu dopóty, dopóki na pinie Select ponownie nie wystąpi stan wysoki. To umożliwia szybką przepustowość danych podczas odczytu danych sekwencyjnych.

Operacje losowego odczytu, jak w przypadku instrukcji rozgałęzienia, wymagają trybu rozszerzonego odczytu ( Enhanced Read Mode ). Tryb ten umożliwia odczyt danych bez wysyłania instrukcji Read (odczyt). Konieczne jest dostarczenie samego adresu, co pozwala zaoszczędzić osiem cykli. Tryb rozszerzonego odczytu jest ustawiany przez przełączenie bitów podczas dodatkowych cykli pierwszej operacji odczytu. Wszystkie kolejne odczyty wymagają jedynie przesłania adresu.

 

Obsługa pamięci Quad SPI Flash przez mikrokontrolery firmy NXP

Niektóre mikrokontrolery ARM Cortex-M firmy NXP nie mają wbudowanej pamięci Flash. Zaliczają się do nich mikrokontrolery LPC1810, LPC1820, LPC1830 oraz LPC1850, a także LPC4310, LPC4320, LPC4330, LPC4350 oraz LPC4370. Wszystkie te układy mogą jednak korzystać z zewnętrznej pamięci Quad SPI Flash, jako jedynej pamięci nieulotnej do przechowywania danych i kodu programu, oraz do bezpośredniego wykonywania programu, która zapewnia wyjątkową wydajność odczytu i zapisu.

Seria pamięci MX25Lxxx35E/F firmy Macronix nadaje się do tego idealnie, oferując pojemności w zakresie od 8 Mb do 512 Mb (64 MB), w 8- lub 16-pinowych obudowach, jak pokazano w tabeli 1. Projektant ma możliwość elastycznej migracji w czasie rozwoju aplikacji, nie będąc przywiązany do jednej pojemności, i jednocześnie czerpiąc korzyści z wysokiej wydajności w połączeniu z bardzo niskim rachunkiem kosztów materiałowych.

Interfejs SPIFI jest zaimplementowany także w mikrokontrolerach LPC, które mają wbudowaną pamięć Flash. W tym przypadku, funkcją pamięci zewnętrznej Quad SPI Flash jest zwiększenie pamięci wbudowanej i zapewnienie dodatkowych możliwości przechowywania danych lub kodu programu.

 

O autorze