Skocz do zawartości

Layout LPDDR4 w EasyEDA – diff pair, DQ/DQS, impedancja, długości i kolejność prac


Pomocna odpowiedź

Napisano (edytowany)

Cześć 🤗,
pracuję nad własnym PCB z 8 warstwami i przelotkami 0,15 mm (ze względu na układ RK3566 jako CPU). Na płytce mam pamięć LPDDR4 i napotkałem problemy z praktycznym ustawieniem ścieżek w EasyEDA. Większość poradników pokazuje layout w Altium Designer, a ja potrzebuję wskazówek działających w EasyEDA.

Problemy i pytania:

1. Diff pair:

  • Jak ustawić diff pair dla sygnałów DQ i DQS w EasyEDA, jeśli długości DQ muszą być dopasowane do DQS?
  • Czy w EasyEDA można automatycznie dopasować długości do trzeciej linii (np. DQS), a nie tylko w parze?

2. Impedancja:

  • Jak najlepiej ustawić szerokości ścieżek i odstępy w EasyEDA, aby utrzymać właściwe impedancje dla DQ, DQS, CA i CK przy 8-warstwowym PCB?

3. Długości ścieżek i dopasowanie sygnałów:

  • Jak dopasować długości wszystkich sygnałów DQ, DQS, CA i CK względem siebie, aby PCB działało poprawnie?
  • Czy ktoś ma praktyczne wskazówki, checklistę lub przykład layoutu LPDDR4 w EasyEDA, który pokazuje ustawienia diff pair, length tuning i impedancję?

4. Kolejność prac:

  • W jakiej kolejności najlepiej prowadzić layout LPDDR4, żeby się nie pogubić?
  • Które sygnały najlepiej prowadzić jako pierwsze, a które zostawić na później?
  • Czy są sprawdzone praktyki „krok po kroku” dla EasyEDA przy LPDDR4, np. najpierw zasilanie i GND, potem diff pair DQS, potem DQ, CA, CK itd.?

Wrzucam (nieczytelnego 🙂) screena z:
Zrzutekranu2026-01-11173025.thumb.png.901473f285c73149f1f401bf25967450.png

Zależy mi na praktycznych poradach i przykładach, które można zastosować w EasyEDA, tak żeby PCB działało poprawnie z RK3566. Ze względu na gęsto ułożone kulki pod CPU muszę użyć przelotek więc też muszę uważać na ich ilość.
Zapomniałbym, czy z HDMI i USB 3.0 działa to podobnie czy tylko impedancja się zmienia?

Dzięki za pomoc! 😅

 

EDIT:

No chyba, że lepiej przejść na inny program 🙂

Edytowano przez InGraw
(edytowany)
24 minuty temu, InGraw napisał:

Jak najlepiej ustawić szerokości ścieżek i odstępy w EasyEDA, aby utrzymać właściwe impedancje dla DQ, DQS, CA i CK przy 8-warstwowym PCB?

Tak jak podpowiada kalkulator na bazie stackupu od producenta. Tu najlepiej pisać bezpośrednio do fabryki, oni powinni sporo podpowiedzieć 😉 

24 minuty temu, InGraw napisał:

Czy w EasyEDA można automatycznie dopasować długości do trzeciej linii (np. DQS), a nie tylko w parze?

Zależy czy używasz STD czy Pro, w Pro da się zakombinować Net Class, ale wtedy już wolę polecać Altium Designera. EasyEDA to nie jest program do projektowania SBC (chociaż się da).

24 minuty temu, InGraw napisał:

Czy są sprawdzone praktyki „krok po kroku” dla EasyEDA przy LPDDR4, np. najpierw zasilanie i GND, potem diff pair DQS, potem DQ, CA, CK itd.?

Jeżeli chcesz najpierw robić zasilanie to chyba jeden z Twoich pierwszych projektów... Zasilanie jest zawsze najmniej problematyczną częścią i robi się je pod koniec (poza routingiem sygnałów mocy i sprzężenia przetwornicy, który się robi wcześniej by zapobiec zbyt dużym pętlom prądowym).

24 minuty temu, InGraw napisał:

Zapomniałbym, czy z HDMI i USB 3.0 działa to podobnie czy tylko impedancja się zmienia?

Wszystko działa tak samo - jak długość, impedancja single-ended i differential się zgadzają to wszystko działa jak należy. Nie wiem czy zaczynanie od DDR4 i USB3 to dobry pomysł, bo tutaj tolerancje są liczone w nanosekundach.

24 minuty temu, InGraw napisał:

nieczytelnego

Mogłeś chociaż kolorki ustawić dla zasilania i magistrali, wtedy łatwiej doradzić. Przykład poniżej 😉 

4.thumb.png.953cef42b658747c4b6a324eff30de8c.png

24 minuty temu, InGraw napisał:

muszę użyć przelotek więc też muszę uważać na ich ilość.

Nie na ilość tylko na symetryczność i obecność przelotek masowych by skompensować różnice impedancji wynikające ze zmian płaszczyzn referencyjnych (głównie do EMI, ale przy takiej częstotliwości też dla integralności sygnału).

24 minuty temu, InGraw napisał:

No chyba, że lepiej przejść na inny program 🙂

Jak masz status studenta to bierz AD. Inaczej mocno się pomęczysz.

Edit

P.S. To coś powinno dać się upchać na 4 warstwach (na 6 to już na spokojnie).

Edytowano przez H1M4W4R1
  • Lubię! 1
28 minut temu, H1M4W4R1 napisał:

Mogłeś chociaż kolorki ustawić dla zasilania i magistrali

Postarałem się jakoś ustawić jak najdokładniej. 
obraz.thumb.png.9c6c4817abaf55f0d8dbb0fb6c3cd48e.pngobraz.thumb.png.4f89afe8ee7474319bf1a871cfd2b9ec.png

Tutaj wstawiam listę kolorów, ale te ważniejsze opiszę niżej:

obraz.thumb.png.a27cb0721f1be057b5cb25b427d17a4d.pngobraz.thumb.png.c402826b1b967ec0bdabcaa0d6e94c53.png

czerwone - zasilanie | ciemnoszare - masa
DQ*_A - fioletowe | DQ*_B - jasnoniebieskie
DM*_A - jasnoszare | DM*_B - białe
A*_A - niebieskie | A*_B - niebieskie/jasnoniebieskie
CLKN - jasnozielone | CLPK - ciemnozielone
CKE*_A - pomarańczowy | CKE*_B - żółty
CS*N_A - różowy | CS*N_B - łososiowy
RESET - zółty
ODT_A - fioletowy | ODT_B - rózowy
DQS*P - pomarańczowy | DQS*N - ciemnozłoty

 

40 minut temu, H1M4W4R1 napisał:

Jak masz status studenta to bierz AD

Czy muszę mieć ukończone 18 lat aby odebrać AD? Jeśli nie to mogę wsiąść, wydaje mi się że wystarczy sam mail szkolny, tylko też nie wiem jak bardzo będzie się on różnił od Kicada i EasyEDA z których wcześniej korzystałem. 

40 minut temu, H1M4W4R1 napisał:

to chyba jeden z Twoich pierwszych projektów

Masz rację, osobiście styczności z HDI w pcb jeszcze nie miałem, tylko prostsze PCB 2 warstwowe.

43 minuty temu, H1M4W4R1 napisał:

Nie wiem czy zaczynanie od DDR4 i USB3 to dobry pomysł

Zastanawiałem się nad zmianą, ale problem leży po stronie softu. Użycie wolniejszych pamięci będzie lepiej działało na słabszym CPU. Problem w tym, że większość SoC ma słabe wsparcie jeśli chodzi o systemy operacyjne. Dla RK3566 wystarczy zmodyfikować trochę elementów w DTS i parę innych elementów i powinno zagadać. Co prawda USB 3.0 mogę odpuścić, na platformie nadal mam 2x USB 2.0 co powinno wystarczyć szczególnie dla tego procesora. Celem projektu jest uruchomienie stabilnego Linuxa na własnym SBC, a nie maksymalna wydajność. Ja to robię dla edukacji i sprawdzenia siebie :).

1 godzinę temu, H1M4W4R1 napisał:

Zależy czy używasz STD czy Pro

Ja używam wersji PRO. Wydawało mi się, że lepiej wpasuje się w mój projekt. 

1 godzinę temu, H1M4W4R1 napisał:

EasyEDA to nie jest program do projektowania SBC (chociaż się da).

Widziałem jeden projekt na easyeda, który też ma lpddr4 więc jest to możliwe ale nie jest łatwe. 

1 godzinę temu, H1M4W4R1 napisał:

Tak jak podpowiada kalkulator na bazie stackupu od producenta.

Ja będę zamawiał na JLCPCB, co ciekawe taniej w moim wypadku wychodzą płytki 8 warstwowe niż 6 warstwowe. Jeszcze mieszczę się w limicie 50x50mm ale przelotki 0.15mm dobijają ogromną cenę. Trudno jest wyjechać ścieżką za pada bez via, między środkiem jednego a drugiego pada jest 0.4m, z czego sam pad ma 0.22mm.

obraz.thumb.png.9c6669fa8395a8e40268735027c92447.png

 

Jeszcze mogę napisać, że wcześniej miałem wersję z LPDDR4X i tam miałem już rozstawione wszystkie elementy na pcb i porobione część ścieżek. Tylko że to nadal nie jest idealne. nie byłem dumny z tych elementów po prawej stronie. Nie dodałem też jeszcze wypełnionych regionów wszędzie gdzie powinienem tylko na części zasilania.
5.thumb.png.971b1b749ca5b34d042aed157ba64a6c.png

 

33 minuty temu, InGraw napisał:

Dla RK3566 wystarczy zmodyfikować trochę elementów w DTS i parę innych elementów i powinno zagadać.

Łatwiej byś sobie poradził z konfiguracją Sunxi niż z zabawą z routingiem DDR4 😉 Pierwsze co byś musiał zrobić to fanout procesora i dopiero z fanouta jechać z routingiem ścieżek różnicowych. Z tego co pamiętam nie wszystkie musiały być identycznej długości (chyba dane i adresowe mogły być różnej, ale identycznej długości w ramach grupy).

https://linux-sunxi.org/F1C100s

W takim przypadku nie musisz się bawić z wysoce skomplikowanym routingiem. Bo bez doświadczenia nie radzę się zabierać za nic powyżej USB2.0, bo pchasz się w ogromne koszty, gdzie najmniejsze niedopatrzenie powoduje brak funkcjonalności.

Na start dużo lepiej spróbować takiego F1C200S albo ESP32-P4. Oba działają z Linuxem i oba mają wbudowany RAM 😉 A jak chcesz poćwiczyć z pamięcią to zacznij od mikrokontrolerów z DDR2 w BGA.

39 minut temu, InGraw napisał:

czerwone - zasilanie | ciemnoszare - masa
DQ*_A - fioletowe | DQ*_B - jasnoniebieskie
DM*_A - jasnoszare | DM*_B - białe
A*_A - niebieskie | A*_B - niebieskie/jasnoniebieskie
CLKN - jasnozielone | CLPK - ciemnozielone
CKE*_A - pomarańczowy | CKE*_B - żółty
CS*N_A - różowy | CS*N_B - łososiowy
RESET - zółty
ODT_A - fioletowy | ODT_B - rózowy
DQS*P - pomarańczowy | DQS*N - ciemnozłoty

Btw. pary różnicowe grupuje się w jeden kolor 😉 

---

Moim zdaniem zacznij od mikrosów z DDR2, potem spróbuj zrobić huba na USB3, potem coś z FPGA od GOWINa (np. podpiąć tam DDR3, z którym dużo łatwiej pracować). Dopiero możesz kombinować z ciasnym BGA i HDI, bo tak to się szybko zniechęcisz. Ewentualnie coś z wbudowanym RAMem, bo pamięci nie dość, że są drogie to naprawdę cholernie ciężko się to trasuje (już nie wspominając nawet o EMI).

90% pracy przy projektowaniu PCB to jest odpowiednie rozmieszczenie komponentów, które zmniejsza czas pracy z kilkudziesięciu do kilku godzin 😉 

43 minuty temu, InGraw napisał:

Czy muszę mieć ukończone 18 lat aby odebrać AD? Jeśli nie to mogę wsiąść, wydaje mi się że wystarczy sam mail szkolny, tylko też nie wiem jak bardzo będzie się on różnił od Kicada i EasyEDA z których wcześniej korzystałem. 

Ograniczeń wiekowych nie kojarzę, ale znacząco się różni od obu. KiCad jest drewniany, EasyEDA proste, a AD to kombajn. To tak jakbyś porównywał Solidworks, Fusiona 360 i AutoCADa/Inventora (w tej samej kolejności).

  • Lubię! 1
21 godzin temu, H1M4W4R1 napisał:

Łatwiej byś sobie poradził z konfiguracją Sunxi niż z zabawą z routingiem DDR4

Masz rację, może wybrałem zbyt "agresywny" układ jak na pierwszy SBC. 

21 godzin temu, H1M4W4R1 napisał:

Na start dużo lepiej spróbować takiego F1C200S albo ESP32-P4.

Sprawdziłem i F1C200S naprawdę może być dobry na start. Na ten moment nie muszę iść w stronę wydajności, a w sprawdzenie jak dokładnie działają takie SBC dokładniej. Na tym układzie gdy coś pójdzie nie tak łatwiej będzie naprawić problem niż przy 8 warstwowych PCB 😅

21 godzin temu, H1M4W4R1 napisał:

A jak chcesz poćwiczyć z pamięcią to zacznij od mikrokontrolerów z DDR2 w BGA.

To mogę zostawić na następny projekt, gdy powoli zacznę rozumieć jak działają same CPU dokładnie to stopniowo mogę podnosić poprzeczkę.

21 godzin temu, H1M4W4R1 napisał:

Btw. pary różnicowe grupuje się w jeden kolor 😉 

Zapamiętam na zawsze 🫡

Dzięki za wskazówki, na pewno je wykorzystam 🙂

25 minut temu, InGraw napisał:

Sprawdziłem i F1C200S naprawdę może być dobry na start. Na ten moment nie muszę iść w stronę wydajności, a w sprawdzenie jak dokładnie działają takie SBC dokładniej. Na tym układzie gdy coś pójdzie nie tak łatwiej będzie naprawić problem niż przy 8 warstwowych PCB 😅

F1C200S jest też często używany w tanim sprzęcie pomiarowym (oscyloskopy etc.) 😉 

  • Lubię! 1
  • 3 tygodnie później...
Dnia 12.01.2026 o 18:21, H1M4W4R1 napisał:

F1C200S jest też często używany w tanim sprzęcie pomiarowym (oscyloskopy etc.) 😉 

Dobra, ostatecznie zdecydowałem się na T113-S3 i ukończyłem schemat oraz PCB. Wybór padł dlatego, że nie odstaje poziomem trudności od F1C200S, ale mimo to oferuje trochę większą moc obliczeniową 🙂

Chciałem połączyć moje 2 projekty w jeden. Kiedyś projektowałem konsolę w oparciu o ESP32 (dość prosta) i zamierzałem ją ulepszyć. Dlatego też okaże się to świetnym pierwszym "SBC", bo mam praktycznie wszystkie piny na CPU zużyte. Nie znalazłbym innego zastosowania dla tego układu ze względu na jego ograniczenia, ale tutaj jestem w stanie się czegoś nauczyć i przy okazji stworzyć projekt który będzie funkcjonalny. 

Potrzebowałem jakiegoś układu do ładowania baterii i postawiłem na nietypowe rozwiązanie a mianowicie użycie tych układów:

  1. IP5219 jako ładowarka
  2. BQ27220YZFR do monitorowania poziomu naładowania baterii
  3. XB5606AJ do zabezpieczenia

Nie wiem czy jest to najlepsze rozwiązanie, jednak według datascheetów spełnia on funkcje które potrzebuję. 

Nie będę opisywał całego projektu bo to zajęło by trochę czasu, ale projektując napotkałem jedną sporą przeszkodę.😅
Do projektu dodałem układ WIFI RTL8188ETV w formie gotowego modułu na małej płytce PCB do wlutowania bezpośrednio na płytę z interfejsem USB. Problem pojawił się gdy chciałem dodać antenę, zdaję sobie sprawę, że należy pilnować impedancje na poziomie 50 omów. Ja mam tradycyjną 2 warstwową płytkę PCB FR4 i jedyne rozwiązanie jakie znalazłem (nie wliczając ścieżki 3mm, która nie zmieściła by się na pad) jest użycie GCPW lub CPW, ale nie wiem jak manipulować odległością bocznej wylewki masy przy ścieżce w EasyEda Pro. 


obraz.thumb.png.c4fc74e44045bcebabacc24374d883fe.png
Uproszczony schemat układu WiFi

 

obraz.thumb.png.c1d9d16c9639933f1212a8475e3bce9d.png
Elementy na PCB razem z anteną

Będę naprawdę wdzięczny, jeśli wyjaśnisz w jaki sposób połączyć tą antenę bez większych strat, bo możliwe że się mylę i nie potrzebuję wyliczać impedancji 😊

(edytowany)
25 minut temu, InGraw napisał:

Ja mam tradycyjną 2 warstwową płytkę PCB FR4 i jedyne rozwiązanie jakie znalazłem (nie wliczając ścieżki 3mm, która nie zmieściła by się na pad) jest użycie GCPW lub CPW, ale nie wiem jak manipulować odległością bocznej wylewki masy przy ścieżce w EasyEda Pro. 

Net class, potem przypisujesz ścieżkę do klasy i ustawiasz dedykowany spacing dla tej klasy w DRC 😉 

25 minut temu, InGraw napisał:

Będę naprawdę wdzięczny, jeśli wyjaśnisz w jaki sposób połączyć tą antenę bez większych strat, bo możliwe że się mylę i nie potrzebuję wyliczać impedancji 😊

Do USB2.0HS przy 50 (single) / 90 (diff) używam 10.28mil dla standardowego FR4 2L, ale nie wiem czy się sprawdzi z antenami.

P.S. jeżeli ścieżka ma mniej niż 2cm to nie powinno być żadnych problemów, bo jesteś w obszarze konserwatywnym (i nie musisz się aż tak przejmować impedancją).

Edytowano przez H1M4W4R1
  • Pomogłeś! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...