Skocz do zawartości

LVDS w FPGA


piotr96

Pomocna odpowiedź

W ramach pewnego projektu muszę obsłużyć komunikację za pomocą interfejsu LVDS w układzie programowalnym FPGA (lub w zasadzie, w tej chwili, SoC). Interesuje mnie zarówno nadajnik, jak również odbiornik.

Szukam materiałów na ten temat w internecie i w zasadzie jedyne co znalazłem to odpowiednie skonfigurowanie pinów i użycie prymitywów (np. IBUFDS - dla Xilinxa) w kodzie VHDL (tego języka używam). Czy jest jakaś (w miarę prosta) możliwość zastąpienia tych prymitywów własnym kodem? Nie mam pomysłu na napisanie takiego elementu, niewprowadzającego zbędnych opóźnień. Zależy mi na zapewnieniu możliwie jak największej „przenoszalności" kodu. Czy jest możliwość sprawdzenia, co tak naprawdę znajduje się w tych prymitywach (chciałbym zobaczyć, co „siedzi" w środku)? Czy może jest to po prostu fizyczny element, „zaszyty" wewnątrz FPGA? Czy jeżeli opiszę własny komponent, mający dwa wejścia (sygnały różnicowe zanegowany i nie) i jedno wyjście (które będzie po prostu podłączone do wejścia niezanegowanego lub będzie działać według załączonej tabeli zaczerpniętej z dokumentacji Xilinxa), to narzędzie do syntezy „domyśli się", że trzeba wstawić w to miejsce wejściowy bufor różnicowy? Czy nie będzie problemu z przeniesieniem projektu na inny układ (innego producenta)?

Przepraszam za poziom pytań, ale pierwszy raz będę korzystał z transmisji różnicowej i nie wszystko jest dla mnie jasne. Ponadto, nie mam dużego doświadczenia z układami programowalnymi.

tabelaPrawdy.png

Edytowano przez piotr96
Link do komentarza
Share on other sites

2 godziny temu, piotr96 napisał:

Czy może jest to po prostu fizyczny element, „zaszyty" wewnątrz FPGA?

Tak, nadajnik i odbiornik LVDS są fizycznymi elementami zaszytymi w strukturę FPGA. O ile jeszcze można sobie wyobrazić logiczne udawanie takiego nadajnika przez skorzystanie z dwóch odwróconych, "zwykłych" pinów cyfrowych o tyle zrobienie odbiornika czułego na różnicę dwóch napięć (specjalny komparator analogowy w odbiorniku LVDS) za pomocą dwóch osobnych wejść cyfrowych jest nie do zrobienia. Oczywiście w ten spsób zrobione wyjścia także nie zadziałają, bo oprócz logiki potrzeba też trochę fizyki, czyli wielkości napięć, zbalansowanych wydajności prądowych, dopasowania impedancji, kontroli szybkości zboczy itp. Tak więc niestety, w przypadku LVDS - tak samo jak w przypadku fizycznych interfejsów do pamięci DDR, wbudowanych generatorów RC, PLL, czy innych podobnych bloków "wszczepionych sprzętowo" na chip musisz używać prymitywów dostarczanych przez producenta. Syntezer nie ma tu nic do gadania, bo informacja o skorzystaniu z takiego bloku przenosi sie wprost do etapu place&route. To jest właśnie to coś, co wiąże Cię z daną rodziną FPGA i nie jest przenośne. No może w ramach rodziny lub nawet producenta czasem tak, ale już na pewno nie między konkurującymi wytwórcami.

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Cześć,

jest trochę gotowych "IP Core" dla tego problemu. Niestety są to rozwiązania komercyjne (płatne). Może dla niektórych z nich można uruchomić czasową wersję ewaluacyjną.

https://www.design-reuse.com/sip/lvds-c-280/

https://www.logicbricks.com/Products/logiSLVDS_RX.aspx

Na tym pierwszym portalu trzeba założyć darmowe konto.

Odnośnie prymitywów Xilinx'a zobacz ten dokument:

https://www.xilinx.com/support/documentation/application_notes/xapp585-lvds-source-synch-serdes-clock-multiplication.pdf

Pozdrawiam

 

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dziękuję za linki, na pewno się przydadzą, zwłaszcza ostatni. Niestety, wykorzystanie rozwiązań komercyjnych raczej nie wchodzi w grę. Projekt ma charakter edukacyjny i jak najwięcej rzeczy chcę zrobić sam. Dodatkowo, w tej chwili korzystam z Xilinxa, a ostateczna wersja będzie zrealizowana prawdopodobnie na układzie innej firmy, dlatego chciałbym mieć tak przenośny kod, jak to tylko jest możliwe.

Mam jeszcze średnie wyobrażenie o skali problemu - do tej pory myślałem, że po zastosowaniu bloków do zamiany sygnału różnicowego (zewnętrznego) na sygnał asymetryczny (wewnątrz FPGA) zrobię odbiorniki i nadajniki w podobny sposób do prostych, wolnych interfejsów UART, SPI, I2C, wykorzystując również jakiś blok PLL do generacji szybszego zegara. Muszę jeszcze sporo poczytać o tym .

  • Lubię! 1
Link do komentarza
Share on other sites

1 godzinę temu, piotr96 napisał:

Dziękuję za linki, na pewno się przydadzą, zwłaszcza ostatni. Niestety, wykorzystanie rozwiązań komercyjnych raczej nie wchodzi w grę. Projekt ma charakter edukacyjny i jak najwięcej rzeczy chcę zrobić sam.

Cześć,

zdaję sobie z tego sprawę. Dużo komercyjnych ip-core ma możliwość czasowego uruchomienia np. 1 miesiąc. Można się z nich dużo dowiedzieć jak działa takie rozwiązanie.

Akurat jeśli chodzi o firmowe IP-core dla LVDS to Intel/Altera ma wydaje mi się więcej dokumentacji niż Xilinx.

Pozdrawiam

  • Pomogłeś! 1
Link do komentarza
Share on other sites

6 minut temu, FlyingDutch napisał:

zdaję sobie z tego sprawę. Dużo komercyjnych ip-core ma możliwość czasowego uruchomienia np. 1 miesiąc. Można się z nich dużo dowiedzieć jak działa takie rozwiązanie.

Dziękuję raz jeszcze, pewnie skorzystam z możliwości testów, ale najpierw spróbuję sam coś uruchomić.

6 minut temu, FlyingDutch napisał:

Akurat jeśli chodzi o firmowe IP-core dla LVDS to Intel/Altera ma wydaje mi się więcej dokumentacji niż Xilinx.

Akurat, niestety, Intel nie wchodzi w grę.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.