Cortex-A9 w Cyclone V SoC: wielordzeniowe „serce” zestawu SoCrates, część 2

Mikroprocesory wbudowane w HPS mają dostęp do zewnętrznych pamięci za pomocą wyspecjalizowanych kontrolerów, których linie I/O są wyprowadzone w sekcji HPS i są przeznaczone wyłącznie do współpracy z pamięciami. Na rysunku 12 pokazano schemat blokowy kontrolera pamięci SDRAM, który może współpracować z pamięciami SDRAM DDR2, DDR3 oraz LPDDR2. Jak wspomniano w pierwszej części artykułu współpraca z pamięciami SDRAM jest wspomagana przez kontroler ECC, który może być wykorzystywany w konfiguracji 16+ECC (8 bitów dodatkowych, słowo 24-bitowe) lub 32+ECC (8 bitów dodatkowych, słowo 40-bitowe). Za pomocą tego interfejsu dostęp do zawartości pamięci SDRAM ma także FPGA, która to matryca może pobierać/przesyłać dane paczkami od 32 do 256 bitów jednorazowo (magistrale Avalon MM lub AXI). W torze zapisu i odczytu danych z do/pamięci zastosowano pamięci FIFO, spełniające rolę buforów danych.

 

Rys. 13. Schemat blokowy kontrolera pamięci NAND Flash

 

Układy Cyclone V SoC wyposażono także w wyspecjalizowane kontrolery pamięci NAND Flash (jego schemat blokowy pokazano na rysunku 13), który jest zgodny ze standardem ONFI1.0 (Open NAND Flash Interface) – automatycznie wykrywa takie pamięci na podstawie identyfikatora typu – oraz pamięciami NAND Flash nie obsługującymi tego protokołu. Współpracujący z tym kontrolerem kanał DMA obsługuje transfery typu burst, przy czym długość paczki danych użytkownik może skonfigurować w zakresie od 1 do 128 słów, a przesyłane dane są weryfikowane i chronione przez kontroler ECC działający zgodnie z algorytmem korekcyjnym BCH (Bose-Chaudhuri Hocquenghem), przy czym funkcja ta działa dla sektorów o rozmiarach 512 B oraz 1024 B. Kontroler pamięci umożliwia wygodny dostęp także do obszarów rezerwowych pamięci Flash, wspomaga także procedury diagnostyczne, które zabezpieczają dane przechowywane w pamięci w przypadku uszkodzenia sektorów lub pojedynczych komórek, co nie jest rzadkim zjawiskiem zwłaszcza w przypadku tanich pamięci NAND Flash MLC (Multi-Level Cell).

 

Rys. 14. Schemat blokowy kontrolera SD/MMC wbudowanego w układy Cyclone V SoC

 

Kolejnym sprzętowym interfejsem zapewniającym wygodny dostęp do zewnętrznej pamięci, w jaki wyposażono układy Cyclone V SoC, jest kontroler SD/MMC. Jego schemat blokowy pokazano na rysunku 14. Interfejs ten jest przystosowany do obsługi pamięci zgodnych ze standardami: SD i eSD do wersji 3.0 włącznie, SDIO i eSDIO, CA-ATA1.1, MMC do wersji 4.41 włącznie. Wyposażono go w pamięć FIFO spełniającą rolę bufora transmisji danych, a także sprzętowy generator-weryfikator sumy kontrolnej CRC7.

 

Tab. 2. Tryby pracy SD obsługiwane przez kontroler wbudowany w układy Cyclone V SoC

 

W tabeli 2 zestawiono możliwe tryby pracy interfejsu podczas współpracy z pamięcią SD oraz uzyskiwane prędkości transmisji dla różnych trybów transmisji danych.

Wydawać by się mogło, ze przedstawione dotychczas kontrolery wyczerpują potrzeby przeciętnej aplikacji, ale twórcy układów Cyclone V SoC wyposażyli je w jeszcze jeden sprzętowy interfejs do obsługi zewnętrznej pamięci – QSPI. Umożliwia on wygodny i bardzo szybki dostęp do pamięci NOR Flash z interfejsem SPI lub QSPI (w trybach 2- lub 4-bitowym). Schemat blokowy tego interfejsu pokazano na rysunku 15.

 

Rys. 15. Schemat blokowy interfejsu QSPI

 

Dużą prędkość transmisji danych zapewnia wysoka częstotliwość taktowania interfejsu (do 108 MHz), możliwość pracy w trybie QSPI (Queued Serial Peripheral Interface), zastosowanie buforów FIFO w torze nadawczym i odbiorczym, a także zintegrowany z interfejsem kontroler transferów DMA. Ze względu na dużą prędkość transmisji rejestr danych interfejsu QSPI jest dołączony bezpośrednio do przełącznika magistral L3 (czyli blisko CPU).

Prezentowany interfejs obsługuje tryb pracy XIP (eXecute In Place), który pozwala uruchamiać programy bezpośrednio z pamięci Flash bez konieczności ich kopiowania do RAM. Walory tego rozwiązania można docenić podczas bootowania z pamięci NOR Flash systemu operacyjnego, które w klasycznych rozwiązaniach (inicjacja bootloadera, kopiowanie programu z Flash do RAM, wykonanie programu itp.) jest czasochłonne.

Ostatnim elementem układów Cyclone V SoC, jakim zajmiemy się w artykule, jest moduł FPGA Manager, który umożliwia zarządzanie oprogramowaniu wykonywanemu przez HPS strukturą FPGA. Oznacza to, że HPS może zmienić całkowicie lub częściowo konfigurację FPGA, może przeprowadzić także rekonfigurację dynamiczną. Schemat blokowy FPGA Managera pokazano na rysunku 16.

 

Rys. 16. Schemat blokowy bloku FPGA Manager

 

Inną przydatną funkcją realizowaną przez FPGA Managera jest możliwość podawania i odbierania z bloku logiki zaimplementowanej w FPGA do 64 sygnałów cyfrowych (po 32 w każdym kierunku). Aplikacja użytkownika za pośrednictwem FPGA Managera może monitorować stan konfiguracji FPGA, przyjmować przerwania zgłaszane przez logikę zaimplementowaną w FPGA, zerować przerzutniki wykorzystane w projekcie zaimplementowanym w FPGA, a dzięki mechanizmowi handshakingu także startować system (bootloader HPS) na żądanie FPGA.

Dane wykorzystywane do konfiguracji FPGA są dostarczane do FPGA Managera poprzez magistralę dołączoną do przełącznika L3, komunikacja z pozostałymi elementami tego bloku odbywa się poprzez magistralę AXI, która jest ulokowana na poziomie L4.

Konfiguracja FPGA przez HPS odbywa się w trybie FPP (Fast Passive Parallel) poprzez magistralę 32-bitową. W przypadku częściowej rekonfiguracji magistrala ma szerokość 16 bitów, w obydwu przypadkach można stosować skompresowany strumień danych, można także stosować do ochrony danych konfiguracyjnych moduł kryptograficzny AES.

Do pobrania

O autorze