Compute Module, czyli nie taki SoM straszny (1)

Compute Module, czyli nie taki SoM straszny (1)

Komputerka Raspberry Pi nie trzeba prezentować, znają go wszyscy zainteresowani systemami wbudowanymi. Nieco gorzej wygląda sytuacja z modułem dedykowanym aplikacjom profesjonalnym – Compute Module, pomimo, że jest on dostępny w zasadzie równolegle od pojawienia się maliny...

Raspberry Pi stosowany jest w sporej ilości aplikacji profesjonalnych, chociaż nie został dla nich zaprojektowany. O wyborze klasycznych wersji A+/B+ lub Zero decyduje ich niska cena, dostępność, łatwość implementacji, wsparcie użytkownika oraz sprawdzona w porównaniu z rozwiązaniami konkurencyjnymi stabilność sprzętu. W wielu przypadkach Raspberry Pi wyparło droższe komputery typu box oparte o platformę Intela lub AMD. W związku z oczekiwaniami użytkowników projektujących urządzenia komercyjne lub pracujące w mniej wymagających aplikacjach przemysłowych, fundacja wprowadziła Raspberry Pi w formie modułu SOM (System On Module) i nazywała go Compute Module (CM).

Wersje modułów CM

Moduły z trzech dostępnych generacji są zgodne wyprowadzeniami I/O. W kolejności chronologicznej rozwijały się następująco:

  • CM1 – wprowadzony w kwietniu 2014 (fotografia 1), oparty o SoC Broadcom BCM2835 taktowany zegarem 700 MHz, posiadający 512 MB RAM i 4 GB pamięci eMMC Flash. Pomimo, że jest on w dalszym ciągu dostępny i według zapewnień fundacji sytuacja nie zmieni się co najmniej do stycznia 2023, ekonomiczniej jest zastosować wydajniejsze nowsze moduły,
Fotografia 1. Raspberry Pi Compute Module CM1 (z materiałów www.raspberrypi.org)
  • CM3 – zastępujący CM1, a wprowadzony w styczniu 2017 (fotografia 2), oparty o Soc Broadcom BCM2837 taktowany zegarem 1200 MHz, 1 GB RAM i 4 GB wbudowanej pamięci eMMC Flash. Dostępna jest też wersja CM3Lite, bez wbudowanej pamięci eMMC, który współpracuje z kartą SD, podłączoną do dedykowanych wyprowadzeń modułu SODIMM. Warto wspomnieć, że moduł z wbudowaną pamięcią eMMC nie działa z zewnętrzną kartą SD. Na etapie wyboru nośnika dla systemu należy przemyśleć temat, gdyż zmiany mogą być dosyć kosztowne. Jeżeli mamy możliwość umieszczenia na płytce podstawki pod kartę SD to warto pozostawić możliwość pracy obu typów CM3 i CM3Lite w jednym urządzeniu. Planowana dostępność CM3, CM3Lite określona została na styczeń 2023.
Fotografia 2. Raspberry Pi Compute Module CM3 (z materiałów www.raspberrypi.org)
  • CM3+ – najnowszy, uzupełniający ofertę i w przyszłości zastępujący CM3 wprowadzony w styczniu 2019 (fotografia 3). Nowa wersja oparta jest o Soc Broadcom BCM2837B0 taktowany zegarem 1200 MHz, posiada wbudowane 1 GB RAM. W zależności od wersji, dostępna wbudowana pamięć eMMC ma rozmiar 8/16/32 GB, co spełnia wymogi nawet pełnych wersji instalacyjnych Raspbiana z nakładką graficzną. Wielkość wbudowanej pamięci eMMC oczywiście ma odbicie w cenie modułu wynoszącej odpowiednio 30/35/40 $. Udostępniona jest też wersja CM3+Lite bez wbudowanej Flash i współpracująca z kartą SD podłączoną do dedykowanych wyprowadzeń modułu SODIMM, w cenie 25$. Podobnie jak w przypadku CM3 warto wspomnieć, że moduł z wbudowaną pamięcią eMMC nie współpracuje z zewnętrzną kartą SD. Dla mocno dociekliwych możliwe jest przekonfigurowanie kilku elementów na module, aby taka współpraca była możliwa. Swoją drogą delikatnie irytujące jest wyprowadzenie sygnałów dla karty SD w CM3+Lite poprzez złącze SODIMM, znacznie wygodniejsze było by umieszczenie podstawki pamięci na samym module, w miejscu nie wlutowanej pamięci eMMC, tak jak stosują to inni producenci rozwiązań SOM. Jedyne co przemawia za takim rozwiązaniem to możliwość wyboru formatu kart pamięci pełnej SD i uSD uzależniona od zastosowanej w urządzeniu podstawki. Planowana dostępność CM3+, CM3+Lite określona została na styczeń 2026 i ten moduł można uznać obecnie za wersję preferowaną do nowych urządzeń. CM3+ jest nieznacznie wyższy (radiator z SoC), co nie powinno stanowić problemu przy zamianie z CM3.
Fotografia 3. Raspberry Pi Compute Module CM3+ (z materiałów www.raspberrypi.org)

W trakcie pisania artykułu nie znane były plany fundacji odnośnie wersji CM4, bazującej na SoC z Pi4. Pewnie z biegiem czasu ujrzy on światło dzienne, po usunięciu problemów z „pełnej” wersji Raspberry Pi 4. Można przypuszczać jednak, że pojawią się zmiany podstawki lub standardu wyprowadzeń ze względu na pobieraną moc i dodane szybkie interfejsy komunikacyjne.

Złącze

Wszystkie CM mają formę modułu SODIMM o 200 wyprowadzeniach zgodnego z podstawką DDR2 1,8 V. Pojawiają się niestety drobne szczegóły natury mechanicznej na które należy zwrócić uwagę przy wyborze typu podstawki. Jest to oczywiście tylko zgodność mechaniczna i nie należy pod żadnym pozorem próbować uruchamiać CM w miejscu pamięci DDR2.

Rysunek 1. Wymiary CM3+ (z materiałów www.raspberrypi.org)

Wymiary modułu pokazuje rysunek 1. Z praktycznie sprawdzonych i pasujących złącz mogę polecić TE Connectivity typu 1473005-4 obowiązkowo z dodatkowymi tulejkami M2 w zaznaczonych miejscach. Tylko taki montaż zapewnia stabilność mechaniczną CM. Niestety nie udało mi się dobrać złącza w wersji pionowej, takiego jak np. Attend 121B-150A00, a taki montaż czasem też jest przydatny. Sprawa rozbija się o uchwyty podtrzymujące płytkę w pionie. Niestety w miejscach, gdzie pamięci mają prostą krawędź umożliwiającą podtrzymanie płytki, CM ma slot przeznaczony do łamania po montażu i uchwyty nie mają stabilnego miejsca zaczepienia (fotografia 4).

Fotografia 4. Problem pionowego mocowania CM3+

Dzięki zastosowaniu złącza SODIMM w porównaniu do wersji A/B Raspberry zwiększona mogła zostać liczba wyprowadzeń GPIO (do 48) i dostępnych (niektóre współdzielone z GPIO) dedykowanych interfejsów. CM3+ posiada interfejsy 2×I2C, 2×SPI, 2×UART, 2×SD/SDIO, HDMI 1.3, DPI RGB, 2×CSI (interfejs kamery 1×4 linie 1 GB + 1×2 linie 1 GB), 2×DSI (interfejs szeregowy wyświetlacza 1×4 linie 1 GB + 1×2 linie 1 GB), pamięci NAND SMI. Interfejsy są dostępne w kilku alternatywnych konfiguracjach GPIO (ALT0-5). Umożliwia to wykorzystanie ich w bardziej elastyczny sposób niż w PI A/B. Przykładowo w konfiguracji ALT2 możliwe jest jednoczesne podłączenie taniego wyświetlacza DPI RGB i interfejsu I2S, co z pewnością ucieszy konstruktorów rozwiązań multimedialnych. Pełna lista sygnałów dostępnych na złączu SODIMM pokazana jest w tabeli 1.

Zakres temperatur

Aktualnie na rynku dostępne są trzy rodziny Compute Module dedykowane aplikacjom komercyjnym o określonym przez producenta zakresie temperatury pracy –25...+80°C. Niestety nie jest to pełny zakres przemysłowy –40...+85°C, co zmniejsza zakres zastosowań modułu lub wymaga dodatkowych wentylatorów czy grzałek przewidzianych, co nie zawsze jest akceptowalne w aplikacji. Zawężony zakres temperatur pracy tłumaczony jest ograniczeniami układów eMMC i RAM.

Jeżeli użytkujemy CM3 w wyższych temperaturach należy zapewnić dodatkowe chłodzenie SoC, w przeciwnym wypadku zmniejszy on taktowanie, a co za tym idzie wydajność. Jeżeli CM3 będzie narażony na wibracje, to mocowanie radiatora nie powinno polegać na przyklejeniu go klejem termoprzewodzącym do obudowy SoC, bo w skrajnym przypadku może doprowadzić to do popękania lub zerwania kulek obudowy BGA. Radiator w postaci kawałka blachy aluminiowej może zostać oparty na dystansach i otworach M2 mocujących CM3 do płytki. Kontakt termiczny radiatora z SoC powinien zostać zrealizowany przez elastyczną podkładkę termoprzewodzącą.

Budowa

Budowę modułu pokazuje rysunek 2. W zasadzie ogranicza się do SoC, RAM (i w zależności od wersji, także pamięci eMMC) oraz kilkunastu elementów biernych. Na płytce nie znajdziemy typowych dla rozwiązań konkurencyjnych (SoMLabs, Grinn, Variscite) wbudowanych interfejsów takich jak WiFi, Bluetooth, PHY Ethernet lub przynajmniej dedykowany interfejs MII/RMII lub kontroler PMIC. Obniża to oczywiście koszt samego modułu CM, ale zrzuca część zadań na projektanta urządzenia, a nie do końca o to chodzi przy wykorzystaniu modułów SoM. Sprawa jest o tyle istotna, że zapewnienie jakiejkolwiek komunikacji sieciowej potrzebne jest dzisiaj chyba w 99% urządzeń.

Rysunek 2. Budowa wewnętrzna CM3+ (z materiałów www.raspberrypi.org)

Niestety producent kompletnie nie wspiera projektantów – brak gotowych i sprawdzonych bloków typowych interfejsów komunikacyjnych. Nie ma też wielkiego wyboru szybkich interfejsów komunikacyjnych, pozostaje aż jeden port USB2.0, który w wersjach z eMMC pełni także rolę interfejsu programowania wbudowanej pamięci. Wymaga to w aplikacji kolejnych elementów niezbędnych do przełączania funkcji tj, sterowanego zewnętrznym sygnałem OTG multipleksera USB2.0 przykładowo typu FSUSB42 lub TS3USB221.

Jeżeli zależy nam na rozmiarze urządzenia i nie możemy zastosować pełnej wersji Pi, konieczne będzie wykorzystanie interfejsu USB2.0 i mostków USB/Ethernet takich jak LAN9512, LAN9514 lub korzystającego z SPI układu ENC28J60 (o ile oczywiście nie mamy zamiaru pisać driverów dla innych nie wspieranych układów). W prostszych aplikacjach, gdy nie wykorzystujemy USB, możliwe jest zastosowanie w roli interfejsu Ethernet popularnych układów RTL8152 lub modułów Wi-Fi/USB typu M08-33 lub M08-50 z układem RT5370N lub RTL8188. Gdy aplikacja wymaga większej liczby portów USB, polecam zastosowanie czteroportowych hubów TUSB2048, GL850, FE1.1 lub USB2412, jeżeli wystarczają nam tylko dwa porty USB. Gdy mamy zamiar wykorzystać zewnętrzny dysk SATA, pozostaje zastosowanie mostka USB/SATA typu GL830.

Przy większej ilości interfejsów ich aplikacja jest dość karkołomna i każdorazowo należy rozpatrzyć, czy dokładać do CM kolejne huby lub mostki USB, czy jednak ekonomiczniej i bardziej niezawodnie wykorzystać moduł SOM z wbudowanymi portami Ethernet, SATA, PCIe i kilkoma portami USB. Tym bardziej, że przy rosnących wymaganiach, co do ilości przesyłanych danych, współdzielone USB2.0 może nie sprostać zadaniu.

Zasilanie

W kwestii zasilania CM, wymagane jest dostarczenie sześciu napięć. Rozdzielone są one na wewnętrzne bloki funkcjonalne:

  • VBAT zasila rdzeń SoC,
  • 3,3 V i 1,8 V zasilają peryferia SoC,
  • VDD_GPIO0...27 i VDD_GPIO28...45 zasila porty GPIO SoC, ułatwia to dopasowanie podobnie jak w FPGA do napięć współpracujących układów, co przy odpowiedniej konstrukcji eliminuje lub zmniejsza liczbę niezbędnych konwerterów poziomów napięć I/O,
  • VDAC zasila przetwornik TV DAC i w przypadku wykorzystania, należy zadbać o jego odpowiednią filtrację.

Wszystkie napięcia muszą być dostarczone do CM, niezależnie od wykorzystania poszczególnych bloków. W minimalnej konfiguracji oznacza to generowanie przez zewnętrzny zasilacz napięć 5 V, 3,3 V, 1,8 V. Pobór mocy dla każdego z napięć określony jest w karcie katalogowej, należy jednak zwrócić uwagę, że wynikowa wydajność zasilacza, musi uwzględniać także pobór mocy podłączonych peryferii.

Można mieć pretensje do rozwiązania zaproponowanego przez fundację. Większość nawet bardziej złożonych SoM, wymaga tylko jednego napięcia zasilania, przeważnie 5 V, pozostałe generowane są wewnętrznie przez kontroler zasilania PMIC, co zdecydowanie ułatwia aplikację. Zintegrowany w SoM układ zarządzania zasilaniem zwalnia nas też z obowiązku zapewnienia odpowiedniej sekwencji załączania i wyłączania napięć zasilających. Nie jest ona w przypadku CM3 jakoś specjalnie skomplikowana, lecz musi zostać zachowana, aby nie uszkodzić SoC.

Zalecane są dwie sekwencje, pierwsza wymaga aby napięcia pojawiały się w kolejności od najwyższego do najniższego, druga dopuszcza, że napięcia pojawiają się jednocześnie, ale musi zostać zachowany warunek, aby nigdy niższe napięcie zasilania nie przekroczyło wartości wyższego napięcia zasilającego.

Podsumowanie

Moduły CM wymagają przemyślanych płytek uruchomieniowych. Bez ich zastosowania rozpoczęcie pracy z CM może się wydłużyć o czas niezbędny na zaprojektowanie, wykonanie i poprawianie własnej płytki. O dostępnych rozwiązaniach opowiem w kolejnej części artykułu.

Adam Tatuś, EP

Artykuł ukazał się w
Maj 2020
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje lipiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich lipiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów