pcie_ddr2_usb30_v5

   Płyta pcie_ddr2_usb30_v5 evaluation board jest to rozwiązanie, które ze względu na charakter umowy zlecenia wykonania projektu może zostać tu opisane bardziej szczegółowo.

Parametry płyty

Parametry płyty

   Projekt ten to 16-sto warstwowa płyta PCB która zawiera trzy układy FPGA firmy Xilinx oraz peryferia które razem tworzą system o następującej konfiguracji:

  • Główny układy FPGA to XC5VFX70T-2FF1136C lub inny w kompatybilnej obudowie 1136 kulkowej. Jest to centralny układ FPGA zapewniający komunikację z otoczeniem i odpowiedzialny za kontrolę pracy układów pomocniczych FPGA
  • Dwie sztuki XC5VLX330-1FFG1760 lub inne w kompatybilnej obudowie 1760 kulkowej. Odpowiedzialne za wykonywanie właściwej akceleracji zadanych obliczeń
  • Interfejsy:

  • USB3.0 Device. Warstwa fizyczna TUSB1310 wspierająca tryby pracy USB Super-Speed (5Gb/s) oraz standardowo HS/FS/LS
  • USB3.0 GTX. Host i Device. Oparte o linie GTX układu FPGA
  • USB2.0 OTG oparte o układ USB3320. Wymiennie używany jako samodzielny moduł USB On-The-Go lub jako składowa uzupełniająca interfejsu USB3.0 opartego o linie GTX
  • USB2.0 Device. Klasyczny układ interfejsu USB CY7C68013A
  • MAC1G. Jedno-gigabitowa ethernetową warstwa fizyczna która wraz z MAC'iem zaimplementowanym w układzie FPGA przekształca płytę w wydajna kartę sieciową
  • SATA. Interfejs szeregowy do wypieranego już interfejsu PATA dysków twardych
  • PCIE x8. Interfejs do magistrali PCI-Express. Płytę zaprojektowano do wspierana standardu 2.0 o szerokości 8 par nitek sygnałowych
  • Connector 4x24. Dedykowany interfejs do podłączenia dodatkowych płyt rozszerzających lub główna magistrala wymiany danych pomiędzy układem FPGA głównym a dodatkowymi
  • Trzy modułu pamięci DDR2 SODIMM o pełnym podpięciu wszystkich linii modułu do układu FPGA. Przepustowość połączeń zaprojektowane do wspierania najszybszych transferów oferowanych przez dostępne na rynku moduły pamięci
  • CLK. System zegarów zapewniający taktowanie układów FPGA i innych peryferii. Zastosowano zestaw konfigurowalnych i stałych zegarów. Dodatkowo na potrzeby PCIE oraz USB3.0 zastosowano tłumiki jitter'a
  • Peripherals. Podstawowe peryferia takie jak DIP-Switch'e, Diody LED i jumpery.
  • Zasilanie. Płytę wyposażono w 12 konwerterów napięć z których najbardziej wydajnym jest 26-amperowy moduł 1,8V.

Przeznaczenie systemu

Przeznaczenie systemu

   Ze względu na stopień zaawansowania przedstawiona tu płyta raczej nie nadaje się do użytku przez początkującego użytkownika. O ile średnio doświadczony projektant wirtualnych komponentów jest w stanie uruchomić niektóre z jej interfejsów, to w przypadku najbardziej wydajnej konfiguracji koszt tylko jednego układu FPGA to około 52.000 PLN. Na szczęście układ nadzorujący w wersji minimalnej to wydatek rzędu 6.000 PLN. Z takim układem, ale i z PCB oraz innymi zamontowanymi elementami można obsłużyć prawie wszystkie interfejsy znajdujące się na płycie. Pomijając kwestie finansowe i koncentrując się na projekcie płyty warto przedstawić ten projekt jako bardzo krótki raport z projektowania tego typu urządzeń.

   Aby wykonać tego typu projekt potrzebne jest doświadczenie. Poza doświadczeniem bez którego trudno zaprojektować ta płytę potrzebny jest również odpowiedni komputer oraz oprogramowanie. Niestety nie zostanie tu dostarczony dowód na to, że aby zrealizować taki projekt trzeba wydać 10 tysięcy na sprzęt i 500 tyś na odpowiednie oprogramowanie. Owszem, jeżeli jest potrzeba zrobić to szybko oraz wymagane są dodatkowe analizy potrzebne do masowej produkcji projektu to koszt taki należy ponieść. W tym przypadku w projekcie najważniejsza była wydajność rozwiązania i jego niezawodność. Dlatego też nie koncentrowano się na okrojeniu ilości elementów do minimum, a starano się zapewnić pewien zapas, który powoduje, że wprawdzie koszt jednostkowy płyty wzrasta, jednak nie jest wymagane przeprowadzanie dodatkowych testów wymaganych przy projektowaniu płyt jak najtańszych.

   Projekt został zrealizowany w oparciu o oprogramowanie Protel99SE z 1999 roku i na średniej klasie komputerze PC. Dosiadczonego projektanta może zdziwić ten wybór. Owszem. Dlaczego właśnie tak? Jest to spowodowane kilkoma czynnikami:

  • Projekt musiał być zrealizowany na oprogramowaniu które dostarcza zleceniodawca.
  • Najważniejszy czynnik. Przy bardzo skomplikowanych projektach projektant musi ufać danemu oprogramowaniu, co w praktyce sprowadza się do dogłębnej znajomości oferowanych przez program funkcji ale i znajomości błędów znajdujących się w programie. W tym przypadku ten czynnik okazał się decydujący. Dlatego też, zamiast najnowszej wersji oprogramowania wybrano wersję pewną ale oczywiście pozbawioną wielu przydatnych funkcji oferowanych przez najnowsze oprogramowanie tej firmy

   W wybranym oprogramowaniu nie korzystano z żadnych dostępnych funkcji symulacyjnych, autoplacer'a ani autorouter'a. Z tego to powodu projekt wymagał wykonania ponad 1.500.000 kliknięć na klawiaturze oraz myszy. W skład projektu weszły bowiem wielokrotne routowania tej samej ścieżki ale i dodatkowe prace związane z opracowaniem programów korygujących umożliwiająch zapewnienie Signal Integrity płyty.

Schemat płyty

Proces projektowania

   Rozpoczęcie projektowania płyty sprowadza się do opracowania schematu blokowego z uwzględnieniem co jest niezbędne a co można pominąć. W tym przypadku schemat blokowy miał postać:

   Na tej podstawie rozpoczęto równoczesne opracowywanie schematu ideowego oraz elementów biblioteki SCH i PCB. Równoczesność tego etapu wynika z faktu, że na tym etapie trzeba dokonać największej ilości analiz tego co ma być osiągnięte i jak to wykonać. Analizy te sprowadzają się do:

  • zbilansowania dostępnych wyprowadzeń w układach FPGA
  • zaprojektowania magistral
  • oceny zapotrzebowania na moc
  • określenia dostępności części, również długoterminowo

   Następnie przystępuje się do tworzenia schematu szczegółowego z jednoczesnym tworzeniem elementów biblioteki PCB. W przypadku projektowania systemów opartych o układy FPGA głównym elementem projektowania schematów jest bilansowanie zasobów IO układu FPGA. Po tym etapie powstał zbiór 28 schematów z których jeden został przedstawiony w tym dokumencie:

   
Schematy nie posiadają jeszcze wszystkich kondensatorów blokujących i innych drobnych elementów. Spowodowane to jest tym, że nawet w mało zagęszczonym elementami projekcie wokół każdego interfejsu na PCB jest dostępna jedynie skończona przestrzeń do zagospodarownia przez elementy dodatkowe. Z tego to powodu dopiero w końcowej fazie prac nad PCB dobiera się odpowiednią ilość pojemności blokujących oraz innych elementów poprawiających parametry elektryczne płyty.

Netlista

   
Po wstępnym zakończeniu prac nad schematami można wygenerować netlistę i wprowadzić wszystkie elementy na PCB. W tym projekcie użyto ponad 2000 elementów, których losowe upakowanie na arkuszu A4 ma postać:

   
Jak widać, ilość połączeń pomiędzy elementami jest ogromna. Dlatego też kolejnym etapem realizacji projektu jest rozmieszczenie pogrupowanie elementów w grupy interfejsowe. Jest to etap który rozpoczyna się od zgrubnego pogrupowania elementów, a kończy się na prawie docelowym położeniu większości elementów. Efekt końcowy tego etapu zależy od umiejętności uwzględnienia wszystkich połączeń które będą przebiegać przez analizowany obszar. Konieczne jest aby po tym procesie wszystkie złącza zewnętrzne i gabaryty płyty były ustalone. W porównaniu do losowego rozmieszczenia elementów w którym ilość połączeń wydaje się być nie do ogarnięcia, po końcowym ułożeniu ilość połączeń ulegną na ogół znacznemu usystematyzowaniu.
Poniżej znajduje się fragment tak przygotowanego PCB w obrębie głównego układu FPGA:

Routing

   
Przed przystąpieniem do routowania ścieżek pozostaje zapewnienie mechanizmu spełniającego wymagania czasowe projektu. W tym przypadku na podstawie czasu propagacji ścieżek, czasu przejścia pomiędzy warstwami, zmiennego czasu propagacji sygnału z pinu układu do jego wewnętrznej struktury i wielu innych przygotowano dla wszystkich krytycznych połączeń ścieżki kompensujące zapewniające stałą propagację sygnału dla danego interfejsu. Realizowane jest to w postaci automatycznie generowanych ścieżek widocznych na rysunku poniżej. W tym celu opracowano własny program który ingerował w plik projektu umieszczając w nim ścieżki o odpowiednich parametrach.

   
Jak widać wchodzą one w skład danego NETu jednak nigdy nie mogą zostać zroutowane. Dodatkowo w końcowym etapie projektowania muszą zostać usunięte z projektu.

   
W tak przygotowanym projekcie czas rozpocząć routowanie ścieżek. Po wielu kolejnych przybliżeniach otrzymuje kompletnie połączone elementy których widok dla tej płyty przedstawiono na kolejnych zdjęciach:

   
Routing głównego układu FPGA. Lewą część stanowi SuperSpeed'owy interfejs cyfrowy do układu USB3.0. Wyraźnie widać wyrównania ścieżek w celu zapewnienia zapewnienia właściwego czasu propagacji.

USB3.0

   
Całkowite połączenie USB3.0 do układu FPGA przedstawiono poniżej

   
Widać, że połączenie stanowi szereg spiralnych ścieżek. Ze względów konieczności zapewnienia właściwej impedancji charakterystycznej połączeń konieczne było przyjęcie stosu warstw:

  • ...
  • PowerPlane
  • Signals
  • Signals
  • PowerPlane
  • ...

   
Z tego to powodu doszło kolejne wymaganie polegające na konieczności redukcji przesłuchu pomiędzy sąsiadującymi warstwami. Jest to jeden z głównych powodów dla których w wszystkie ścieżki zostały poprowadzone ręcznie. Dla połączenia USB3.0 z układem FPGA dwie warstwy sygnałowe mają postać:

DDR2

   
Podobnie problem wygląda w przypadku połączenia układu FPGA z pamięciami DDR2 SODIMM. Kompletnie zroutowany układ ma postać:

   
W tym przypadku dwie sąsiadujące warstwy posiadają następujący topologie połączeń:

   
W przypadku DDR2 wymagania co do jakości połączeń powodują, że pojedyncza przelotka na linii sygnałowej wprowadza offset na linii który dla najszybszych pamięci wykracza poza dopuszczalne wartości.

   
Ze względu na inny typ układów dodatkowych FPGA i inną ich obudowę nie było możliwe wykorzystanie wykonanego routowania dla układu podstawowego dla interfejsu DDR2. Konieczne było zaprojektowania topologii ścieżek od nowa. Osiągnięty efekt ma postać:

   
W przypadku wszystkich przedstawionych tu interfejsów DDR2 widać liczne kondensatory blokujące na napięciu zasilania, odniesienia i referencyjnym dla połączenia DDR2-FPGA

PCIE & MAC1G

   
Kolejnym bardzo wymagającym interfejsem płyty jest 8-parowy PCIE. Jego topologia ma postać:

   
Pod układami wyrównania jitter'u i układami zasilania linii GTX układu FPGA widać połączenia różnicowe linii TX i RX interfejsu PCIE. Wyrównanie połaczenia osiągnięto na poziomie mniejszym niż 1mils

   
W przypadku interfejsu MAC1G, poza wyrównaniem ścieżek konieczne było wprowadzenie separacji galwanicznej linii sygnałowych interfejsu Ethernet. Na rysunku dodatkowo widać fragment zasilania +5V w postaci tzw polygon'u. W innych rysunkach w celu większej przejrzystości polygon'y zostały zamaskowane.

Widok warstw płyty

   
Całkowicie połączona płyta ma postać:

Montaż

   
Wydawać się może że na tym etapie proces projektowy się kończy. Na ogół jednak projekt wymaga wykonania PCB i jego stopniowego uruchamiania. W przypadku prototypowego PCB koniecznie należy zmontować na płycie zasilania, wykonać niezbędne pomiary, a dopiero kolejnym krokiem jest montowanie czułych układów scalonych. W tym przypadku montaż rozpoczęto od zamontowania głównego układu FPGA.

   
Kolejnym krokiem było uruchomienie zasilań i montaż pozostałych składowych płyty. Po tym etapie w ręce użytkownika oddana została płyta do które w zależności od potrzeb wlutowane będą wymagane przez odbiorce dodatkowe układy FPGA.

Widok zmontowanej płyty

   
Widok wstępnie zmontowanej płyty. Warstwa Top

   
Warstwa Bottom