Projekt Pi.MX8 - Układ płyty Część 3

Lukas Henkel
|  Utworzono: czerwiec 21, 2024  |  Zaktualizowano: lipiec 1, 2024
Pi.MX8_Rozdział_V

Rozdziały

1
Introduction and Overview
| Created: January 18, 2024
2
Component placement and layout planning
| Created: February 06, 2024
3
Board Layout Part 1
| Created: February 22, 2024
4
Board Layout Part 2
| Created: March 21, 2024
5
Board Layout Part 3
| Created: June 24, 2024
6
Board Layout Part 4
| Created: July 23, 2024
7
PCB Assembly
| Coming soon

Witamy w nowej odsłonie projektu modułu komputerowego open-source Pi.MX8! W tej serii zagłębiamy się w projektowanie i testowanie modułu system-on-module opartego na procesorze i.MX8M plus od NXP.

W poprzedniej aktualizacji zakończyliśmy przygotowania układu. Obejmowało to tworzenie profili impedancji, dodawanie zasad projektowania zgodnie ze specyfikacjami producenta płyty oraz definiowanie obszarów, gdzie powinny obowiązywać specjalne zasady projektowania. Zakończyliśmy również trasowanie interfejsu LPDDR4, ale na razie bez dostosowywania długości.

Test of button

Zanim zaczniemy dostosowywanie długości interfejsu DRAM, przyjrzymy się trasowaniu pozostałych interfejsów na module Pi.MX8. Na płycie znajduje się wiele magistral o wysokiej i niskiej prędkości, z których niektóre są szerokimi magistralami równoległymi, zajmującymi dużo miejsca na trasowaniu. Aby przydzielić wystarczająco dużo miejsca każdemu interfejsowi, najpierw utworzymy przybliżony plan rozmieszczenia dla każdej warstwy trasowania na module.

Planowanie trasowania

Plan trasowania pomoże nam określić, jak rozdzielić wszystkie interfejsy o wysokiej i niskiej prędkości między dostępne warstwy sygnałowe. Ustalając wstępne wytyczne, możemy upewnić się, że dysponujemy wystarczającą ilością miejsca do trasowania na warstwie, nad którą obecnie pracujemy. Pomaga to również zminimalizować przejścia między warstwami i redukować ilość poprawek do wykonania podczas procesu trasowania.

Istnieje kilka sposobów na przygotowanie planu układu, głównie zależnych od dostępnych narzędzi. Potrzebujemy tylko podstawowego narzędzia do rysowania, które pozwoli nam szkicować na istniejącym obrazie. W tym przykładzie użyjemy Inkscape.

W Inkscape możemy dodać obraz tła, który pokazuje rozmieszczenie komponentów i nieztrasowane interfejsy w formie kolorowych przewodów powietrznych. Zauważ, że sieci zasilające są ukryte na tym zrzucie ekranu, ponieważ skupimy się tylko na sieciach, które będą trasowane na warstwach sygnałowych. W schemacie umieściliśmy dyrektywę klasy sieci na każdej sieci zasilającej, co ułatwia identyfikację, które sieci są trasowane na warstwach płaszczyzn, poprzez po prostu włączenie lub ukrycie powiązanej klasy sieci w edytorze układu.

Do właściwego trasowania po prostu dodajemy linie w Inkscape, aby reprezentować interfejsy, które chcemy trasować na odpowiadającej im warstwie. Możemy dostosować szerokość tych linii, aby reprezentowały ilość sygnałów, które będą trasowane w interfejsie. Kolor linii można wybrać z obrazu tła, aby łatwiej było zidentyfikować, który interfejs jest reprezentowany.

Ponieważ przejścia między warstwami również wymagają przydzielonej przestrzeni na wszystkich warstwach, możemy dodać blok na końcu każdej linii szczegółowo opisujący przejście między warstwami.

Layout planning in Inkscape with an Alum Designer screenshot as a background image

Planowanie układu w Inkscape z zrzutem ekranu Altium Designer jako obrazem tła

Gdy powtórzymy powyższy proces dla każdej warstwy trasowania, możemy przejść do właściwego procesu trasowania.

Trasowanie warstwy górnej

Mając strategię trasowania, zacznijmy od trasowania interfejsów na górnej warstwie. Ponieważ już wykonaliśmy trasowanie wyprowadzeń dla komponentów na górnej warstwie, możemy wykorzystać całą pozostałą przestrzeń na trasowanie sygnałów. Nie zostało wiele miejsca, ale to, co mamy, można nadal wykorzystać, aby ułatwić trasowanie na wewnętrznych warstwach sygnałowych poprzez strategiczne umieszczanie VIA w regionach, które nie będą kolidować z trasowaniem na wewnętrznych warstwach później. Jest to kolejna korzyść z planowania układu z góry, w przeciwnym razie te regiony nie byłyby zdefiniowane na tym etapie.

Top layer routing of the PiMX8 module

Trasowanie górnej warstwy modułu PiMX8

Umieszczając ścieżki na górnej warstwie, powinniśmy również wziąć pod uwagę, że potrzebujemy trochę miejsca na dodanie elementów takich jak fiducjale czy etykiety na górnej warstwie. Kody matrycowe wygrawerowane laserowo mogą również wymagać albo jednolitej powierzchni miedzianej, albo obszaru bez ścieżek, aby zapewnić jednolity kontrast, co oznacza, że te obszary nie mogą być wykorzystane do trasowania.

Trasowanie wewnętrznej warstwy sygnałowej

Większość połączeń zostanie umieszczona na dwóch wewnętrznych warstwach sygnałowych, które zdefiniowaliśmy w menedżerze stosu warstw. Zacznijmy od trasowania wszystkich szybkich interfejsów synchronicznych. W naszym przypadku mogą to być interfejsy MIPI-CSI, MIPI-DSI i LVDS. Wszystkie te interfejsy używają niskonapięciowego sygnału różnicowego i posiadają dedykowaną linię zegarową oraz co najmniej dwie linie danych. Wymagają one dużo miejsca do trasowania, ponieważ długość każdej linii danych musi być dopasowana do linii zegarowej w określonym marginesie czasowym. Dopasowanie długości wielu par różnicowych może wymagać dużo miejsca, ponieważ bardzo prawdopodobne jest, że jedna lub więcej par w interfejsie wprowadzi znaczące opóźnienie, które musi być uwzględnione. Trasując te interfejsy jako pierwsze, możemy upewnić się, że później będzie dostępna wystarczająca ilość miejsca na dostrojenie długości.

Umieszczanie VIA powrotnych ścieżek blisko przejść warstw tych szybkich par różnicowych jest również ważne, aby zapewnić integralność sygnału. VIA powrotne ścieżki mogą zajmować miejsce na wielu warstwach, więc te VIA należy umieścić tak szybko, jak tylko zostanie umieszczone przejście sygnału.

Następnie możemy poprowadzić inne interfejsy wysokiej prędkości takie jak PCIe, USB, HDMI i Ethernet. Te interfejsy mają mniej rygorystyczne wymagania dotyczące dopasowania długości między parami, więc nie musimy poświęcać tyle miejsca na dopasowanie długości. Zarządzanie solidną ścieżką powrotną oraz podstawowe podejścia do projektowania wysokich prędkości na tych sygnałach są nadal bardzo ważne, chociaż umieszczamy je na drugim miejscu listy priorytetów trasowania.

Na koniec możemy poprowadzić pozostałe interfejsy o niższej prędkości takie jak SDIO, GPIO, RGMII oraz inne różne magistrale takie jak UART czy I2C i SPI. Te interfejsy nadal działają z wysokimi prędkościami zboczy, co oznacza, że nadal musimy traktować je jako sygnały wysokiej prędkości.

Routing inner signal layer 1

Trasowanie wewnętrznej warstwy sygnałowej 1

Routing inner signal layer 2

Trasowanie wewnętrznej warstwy sygnałowej 2

Trasowanie dolnej warstwy

W przypadku płyty PiMX8 możemy traktować dolną warstwę jako wewnętrzną warstwę trasowania pod względem dostępnej przestrzeni. Większość aktywnych komponentów jest umieszczona na górnej warstwie modułu, pozostawiając tylko kilka regulatorów napięcia i pasywnych komponentów takich jak kondensatory odsprzęgające i rezystory konfiguracyjne na dolnej warstwie.

Priorytet trasowania na dolnej warstwie jest taki sam jak dla warstw wewnętrznych, więc zaczniemy od interfejsów MIPI-CSI, MIPI-DSI i LVDS. W module PiMX8 wysokoprędkościowy multiplekser może wybierać między portami DSI a LVDS. Ten komponent jest umieszczony na dolnej warstwie blisko złącza płyta-płyta. Ze względu na rozmieszczenie wyprowadzeń multipleksera, na jednej z linii sygnałowych połączonych z multiplekserem występuje znaczne opóźnienie. Będziemy musieli przyjrzeć się temu bliżej podczas procesu dopasowywania długości, ale musimy zarezerwować trochę miejsca na dolnej warstwie, aby umożliwić większe opóźnienie.

Multiplexer pinout with one long line in the interface

Rozmieszczenie wyprowadzeń multipleksera z jedną długą linią w interfejsie

Bottom layer routing PiMX8 module

Trasowanie dolnej warstwy modułu PiMX8

W module PiMX8 istnieje kilka scenariuszy, które wymagają szczególnej uwagi podczas strojenia opóźnień. Będziemy szeroko korzystać z sygnałów X, aby pokonać niektóre z tych wyzwań. Co dokładnie stanowią te wyzwania i jak możemy zaimplementować sygnały X, aby zapewnić precyzyjne strojenie opóźnień nad komponentem współdzielonym przez wiele interfejsów, będzie częścią następnej aktualizacji. Bądźcie na bieżąco!

About Author

About Author

Łukasz to zapalony projektant sprzętu z ponad 10-letnim doświadczeniem w branży elektronicznej. Jako współzałożyciel własnej firmy oferującej usługi inżynieryjne, miał przywilej pracować nad wieloma ekscytującymi projektami, podejmując wyzwania począwszy od precyzyjnego projektowania analogowego, przez układy PCB o wysokiej prędkości, po elektronikę mocy.

Jako gorący zwolennik filozofii open-source, Łukasz postawił sobie za cel udostępnienie każdemu zainteresowanemu wgląd w konstrukcję i funkcjonowanie nowoczesnych urządzeń elektronicznych. Kierując się tym celem, założył firmę Open Visions Technology (OV Tech GmbH), której celem jest wprowadzenie na rynek wysoko naprawialnego, w pełni udokumentowanego sprzętu konsumenckiego najnowszej generacji.

Łukasz jest przekonany, że dzięki dzisiejszemu dostępowi online do wiedzy i narzędzi, każdy z pomysłem, determinacją i pasją może stworzyć coś wyjątkowego. Nie może się doczekać, aby być częścią entuzjastycznej społeczności i jest podekscytowany, widząc, jak ludzie realizują swoje pomysły.

Powiązane zasoby

Powiązana dokumentacja techniczna

Powrót do strony głównej
Thank you, you are now subscribed to updates.