Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów)

TWl 15 Oct 2014 19:20 52002 59
  • Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów)
    Chciałbym przedstawić projekt sterownika do wyświetlaczy LCD/OLED z interfejsem DSI na bazie FPGA Spartan-6 XC6SLX9.

    MIPI DSI to szybki szeregowy interfejs do przesyłania obrazu z GPU do wyświetlacza stosowany w większości smartfonów (Iphone4,5,6, Samsung Galaxy, etc.).

    Możliwości sterownika:
    - obsługa wyświetlaczy z 3/4-liniowym interfejsem DSI
    - rozdzielczość do 1080x1920 przy odświeżaniu 60 Hz
    - konwersja HDMI do DSI, pozwalająca na podłączenie dowolnego wyświetlacza do PC, Raspberry Pi lub innego urządzenia. Konwersja działa do rozdzielczości 720p@60 Hz lub 1080p@48 Hz
    - wbudowany framebufor
    - zasilanie przez port mini-USB
    - wbudowany 32-bitowy soft-CPU, pozwalający uruchamiać dowolne aplikacje napisane w C

    Przykładowe zastosowania:
    - okulary 3D
    - mini-projektor
    - 5-calowy "ekranik" 1920x1080
    - karta graficzna dla mikrokontrolera bez sterownika LCD.

    Urządzenie mieści się na 4-warstwowej płytce w formacie shielda Arduino. Oprócz FPGA, na płytce można znaleźć:
    - adapter poziomów logiki SSTL 1.8 V do DSI (rezystory)
    - uniwersalne złącze wyświetlacza - zwykły pinhead 2x15, ze wszystkimi sygnałami DSI, zasilaniem i kilkoma pinami GPIO. Ponieważ nie istnieje uniwersalny standard złącz do takich LCD, trzeba zrobić oddzielną przejściówkę między złączem adaptera i tasiemką wyświetlacza.
    - 32 MB DDR SDRAM (pamięć framebufora, opcjonalna)
    - wejście HDMI, wykorzystujące wbudowane deserializery FPGA (IOSERDES)
    - interfejs Arduino: 12 pinów podłączonych do złącz IOH/IOL Arduino. Interfejs jeszcze nie jest do końca zdefiniowany (myślę o SPI/8-bitowym równoległym).
    - UART USB (CP2102) do programowania FPGA i jako bootloader.
    - zasilacz (produkuje wszystkie napięcia dla FPGA, wyświetlacza, DDR, podświetlenia i biasu LCD - w sumie z 7 różnych)

    Diwajs przetestowałem z ekranami z Iphone 4, LG Optimus P880 i HTC Droid DNA.

    Bardziej szczegółowy opis jest dostępny tutaj.

    Źródła firmware'u, schematy i projekt PCB są na Githubie: Github.

    Zdjęcia:
    Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów) Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów) Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów) Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów) Adapter HDMI -> MIPI DSI (wyświetlacze ze smartphone'ów)

    Pozdrawiam,
    TWl

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    TWl
    Level 21  
    Offline 
    TWl wrote 307 posts with rating 105, helped 42 times. Live in city Warszawa. Been with us since 2006 year.
  • OptexOptex
  • #2
    piotrva
    VIP Meritorious for electroda.pl
    Świetny projekt, szczęka mi opadła ;)
    Za przetwarzanie odpowiedzialny jest program działający na SOFT CPU, czy jest to wszystko robione czysto sprzętowo?

    Z jaką częstotliwością pracuje CPU i jak taktujesz dekodery HDMI?
  • #3
    TWl
    Level 21  
    piotrva wrote:
    Świetny projekt, szczęka mi opadła ;)

    Dzięki, miło mi :)
    Quote:

    Za przetwarzanie odpowiedzialny jest program działający na SOFT CPU, czy jest to wszystko robione czysto sprzętowo?

    CPU odpowiada za inicjalizację wyświetlacza i obsługę framebufora. Przetwarzanie obrazu jest w sprzęcie.


    Quote:
    Z jaką częstotliwością pracuje CPU i jak taktujesz dekodery HDMI?

    Zależy od typu LCD. W najszybszym przypadku (1080p@48Hz) CPU na 96.875 MHz, PHY DSI na 650 MHz (= 2.6GBit/s) a HDMI na 866.6 MHz. Zegar do deserializera generowany przez wewnętrzny PLL z zegara z wejścia HDMI (x 10).
  • #4
    leon007
    Level 13  
    Na początku sam moderator nie wierzył, że tak wspaniały projekt zawitał w DIY :D ...
    Pewnie liczył na kolejny gniot z dykty i kitu...

    Autorowi gratuluję! Projekt naprawdę zawiesił poprzeczkę DIY elektrody bardzo wysoko.
    Czy dokumentacje sterowanych wyświetlaczy są dostępne? W jaki sposób pisałeś soft? Bazowałeś na dokumentacji czy 'reverse engineering' istniejących urządzeń?
    Super sprzęt dla filmowców potrzebujących wysokiej jakości podglądu wideo.
  • #5
    piotrva
    VIP Meritorious for electroda.pl
    W sumie jeszcze jedno pytanie - jak bardzo krytyczne było prowadzenie ścieżek HDMI z punktu widzenia takich częstotliwości?

    W sumie sam mam w planach zabrać się za dekodowanie HDMI i zrobienie coś na kształt Ambilight...
  • #6
    TWl
    Level 21  
    piotrva wrote:
    W sumie jeszcze jedno pytanie - jak bardzo krytyczne było prowadzenie ścieżek HDMI z punktu widzenia takich częstotliwości?

    Niezbyt krytyczne. W tanich płytkarniach z Chin i tak nie ma możliwości dokładnej kontroli stackupu/impedancji. Wymiary par różnicowych policzyłem dla typowego stackupu 4-wartwowego na FR4. Poza tym - powtarzając za moim dawnym wykładowcą techniki w.cz. - sygnały o częstotliwości < 1 GHz można traktować jak prąd stały (no, prawie stały... ;) )

    Quote:

    W sumie sam mam w planach zabrać się za dekodowanie HDMI i zrobienie coś na kształt Ambilight...

    Xilinx udostępnia gotowy core do HDMI, bardzo łatwy w obsłudze.

    Dodano po 4 [minuty]:

    leon007 wrote:

    Czy dokumentacje sterowanych wyświetlaczy są dostępne?

    Do Iphone 4/5 i HTC są datasheety. W razie braku DS polecam schematy serwisowe telefonów. Wszystkie wyświetlacze MIPI DSI mają taki sam protokół, różnią się tylko złączem i zasilaniem.
    leon007 wrote:

    W jaki sposób pisałeś soft? Bazowałeś na dokumentacji czy 'reverse engineering' istniejących urządzeń?

    Specyfikacj MIPI jest zamknięta. Korzystałem z not aplikacyjnych, datasheetów, źródeł sterowników dla Androida, prezentacji/artykułów dostępnych w necie.
  • OptexOptex
  • #7
    sundayman
    Level 24  
    Ha ! dla takiego DIY warto przeczekać te kolejne zasilacze :)
    Projekt świetny, co już koledzy napisali, ja mam natomiast pytanie (zanim jeszcze się zagłębię w udostępnione materiały);

    Czy (tak w 2 słowach) - ten protokół (MIPI) dałoby się wykorzystać z "mniejszymi" MCU w rodzaju 8 bitowych Atmeli AVR ?
  • #10
    el_koral
    Level 10  
    Projekt po prostu pierwsza klasa. Jaki jest orientacyjny koszt budowy urządzenia?
  • #11
    domints
    Level 13  
    Bardzo fajny projekt :D
    Mam tylko pytanie, czy dałoby się zaimplementować ten DSI na czymś wolniejszym jak ATmega albo Xmega?
    Oczywiście nie mówię o "olbrzymich" wyświetlaczach jak wspomniany wcześniej 1080p, ale coś prostszego i tańszego - np. iPhone 3GS - 320p.
    Ewentualnie czy dałoby się zrobić z tego przejściówkę AVR -> wyświetlacz z własnym VRAM itd. obsługiwaną np. przez SPI?
    Pytam, bo nie znam się w sumie na FPGA, wiem tylko, że potrafią być diabelnie szybkie :)
  • #12
    TWl
    Level 21  
    Quote:

    Czy (tak w 2 słowach) - ten protokół (MIPI) dałoby się wykorzystać z "mniejszymi" MCU w rodzaju 8 bitowych Atmeli AVR ?

    Moim zdaniem - nie, choć może znajdą się jacyś magicy (jak np. gość od USB na AVR) i to zrobią...

    Dodano po 1 [minuty]:

    mattsk wrote:
    Witam, z opisu scalaka do obsługi sprzętowej konwersji HDMI -> RGB888 widze że to jest konwersja w jednym kierunku. Istnieją scalaki do konwersji RGB888 -> HDMI lub RGB888 <-> HDMI?

    Ostatecznie nie użyłem tego scalaka, sam FPGA daje radę (do 48 Hz przy full HD). Istnieją scalaki do konwersji w obie strony, np. od Analog Devices

    Dodano po 2 [minuty]:

    domints wrote:

    Ewentualnie czy dałoby się zrobić z tego przejściówkę AVR -> wyświetlacz z własnym VRAM itd. obsługiwaną np. przez SPI?

    Tak, jest wbudowany framebufor i softCPU, które może po nim rysować (np. ekran z informacją o wyświetlaczu i braku sygnału HDMI widoczny na jednym ze zdjęć). Obecny firmware nie obsługuje sterowania z zewnątrz via SPI, ale wystarczyłoby dopisać slave'a SPI w HDLu i dekodowanie komend SPI w oprogramowaniu softcore'a.

    Dodano po 2 [minuty]:

    el_koral wrote:
    Projekt po prostu pierwsza klasa. Jaki jest orientacyjny koszt budowy urządzenia?

    PCB - 8 EUR (przy 10 sztukach)
    FPGA - 15 EUR
    DDR - wylutowany z modułu DIMM
    Zasilanie - 6 EUR
    Złącza, elementy pasywne, etc. - ok 15 EUR

    W sumie ~ 40 EUR -> ~ 200 zł.
  • #14
    TWl
    Level 21  
    piotrva wrote:
    Koszty produkcji płytek?

    100$ / 10 sztuk (panel 10x10cm) w iteadstudio.com. Trzeba trochę czekać - ok. 3 tygodnie, ale jakość niezła i ceny rewelacyjne.
  • #15
    Hellcube
    Level 9  
    Rewelacja! faktycznie brakuje na rynku takich rozwiązań. Naprawdę profesjonalne wykonanie. Sam szukałem czegoś takiego by podłączyć wyświetlacz z tabletu do raspberry pi. Powinieneś zrobić z tego kickstarter.
  • #16
    TWl
    Level 21  
    Hellcube wrote:
    Powinieneś zrobić z tego kickstarter.

    Kickstarter wymaga czasu i zobowiązań. Pierwszego mam mało, drugiego wystarczająco dużo. Projekt powstawał w bólach i mękach ponad rok...
  • #17
    mongoł2000
    Level 18  
    Interesujący projekt :)
    Zastanawiam się co z kluczami dla HDMI. Czy to, iż Xilinx udostępnia IP Core wystarcza aby nie musieć być posiadaczem licencji za 10k$?
    Czy z układem ADV7611 nie było problemów? Pytam ponieważ spotkałem się z sytuacją kiedy Analog zażądał licencji HDPC przed zakupem tego układu.
    Chodzi o to czy producent urządzenia bazującego na FPGA z HDMI musi posiadać również licencje?
  • #18
    TWl
    Level 21  
    Xilinx udostępnia IP core bez opłat, wystarczy się zarejestrować na ich stronie.

    Nie obsługuję i nie zamierzam obsługiwać HDCP. O ile dobrze pamiętam, ADV7611 nie ma kluczy w środku, więc żadnej licencji nie trzeba - co nie zmienia faktu, że cały HDMI jest zrobiony w FPGA a na płytce znajduje się tylko pusty footprint na zewnętrzny dekoder. W momencie projektowania PCB nie byłem pewien czy core HDMI da radę z 1080p, stąd dodatkowy zewnętrzny scalak do HDMI.

    TW
  • #19
    mongoł2000
    Level 18  
    Rzeczywiście jest model z literką P, który nie zawiera kluczy i który można nabyć bez problemów. A więc jeśli oba dekodery nie posiadają HDPC, to czy są problemy z tym, że nie które urządzenia domowe mogą nie być obsługiwane?? Zamierzam użyć rozwiązania z HDMI w komercyjnym projekcie i zastanawiam się czy jak uniknąć corocznych opłat licencyjnych.
  • #20
    TWl
    Level 21  
    mongoł2000 wrote:
    Rzeczywiście jest model z literką P, który nie zawiera kluczy i który można nabyć bez problemów. A więc jeśli oba dekodery nie posiadają HDPC, to czy są problemy z tym, że nie które urządzenia domowe mogą nie być obsługiwane??

    Nie posiadam niestety żadnego domowego urządzenia, które korzystałoby z HDCP... Więc prawde mówiąc, nie mógłbym nawet przetestować, czy to działa. Parę lat temu ktoś rozczaił jak odszyfrować HDCP w FPGA. Tylko po co skoro są odtwarzacze, które tego badziewia nie używają ;)

    Quote:
    Zamierzam użyć rozwiązania z HDMI w komercyjnym projekcie i zastanawiam się czy jak uniknąć corocznych opłat licencyjnych.

    - Zapytać prawnika
    - Użyć DVI/DisplayPort zamiat HDMI, a klientowi dać przejściówkę...

    TW
  • #21
    ediagauto
    Level 10  
    A ja zacząć temat procków Xilinx ?
    Od czego ty zaczynałeś ?
  • #22
    olinek2
    Level 23  
    Ediagauto, to nie procki, tylko układy programowalne, a to całkiem co innego.
    Zacznij od choćby cyklu artykułów co były w EP na Spratanie 3. Dorzuć sobie książkę jakąś o VHDLu i pomału się wdrożysz. Jedynie co bym jeszcze polecił, to dobrze ogarnąć sobie cyfrówkę, tak by wiedzieć później jak to wszystko działa.
  • #23
    jacynka84
    Level 26  
    Człowieku HDMI by pozwoliło robić własne tablety lub telefony, kwestia rozdzielczości, bo raspberry PI ma HDMI ale chyba nie każdy ma gniazdo czy piny do ekranu RGB/HV, jeśli jakiś w ogóle ma! multum by to kupiło.
  • #24
    Pituś Bajtuś
    Level 28  
    jacynka84 , ale przecież Rasbperry Pi ma wyjście DSI, więc stosowanie tej przejściówki z Raspberry jest trochę absurdalne.
  • #25
    jacynka84
    Level 26  
    No to się nie znam w takim razie, nie pisało nigdzie jasno o możliwości podłączenia LCD jedynie HDMI więc myślałem że trzeba się z tym gimnastykować.
  • #26
    nsvinc
    Level 35  
    A ja na projekcie PCB nie widze wewnętrznych warstw... Miały być 4, na screenshocie są 2 ;]
  • #27
    olinek2
    Level 23  
    Są są, pewnie jedna na zasilanie, a druga na masę :). Widać że niektóre przelotki idą do nich.
  • #28
    Geos9
    Level 15  
    Pytanie do autora. Czy zamierza komercjalizować projekt, w sensie czy będą do kupienia Ew. Możliwość zamówienia partii adaptera.

    Jeśli max rozdzielczość to 1080p to czy dało by sie połączyć trzy wyświetlacze 360p?

    Fajny projekt interaktywnego lustra. Zamiast kupować jeden duży ekran mozna zwiekszyć powierzchnie lustra i wyświetlać pogodę informacje itp na kilku ekranach stad pytanie o możliwość połączenia kilku mniejszych w jeden większy. http://michaelteeuw.nl/tagged/magicmirror
  • #29
    el_koral
    Level 10  
    Quote:
    jacynka84 , ale przecież Rasbperry Pi ma wyjście DSI, więc stosowanie tej przejściówki z Raspberry jest trochę absurdalne.

    z tego co mi wiadomo DSI w raspberry nie jest na tę chwilę obsługiwane więc przedstawione przez autora tematu urządzenie mogło by być hitem.
  • #30
    TWl
    Level 21  
    Pituś Bajtuś wrote:
    jacynka84 , ale przecież Rasbperry Pi ma wyjście DSI, więc stosowanie tej przejściówki z Raspberry jest trochę absurdalne.


    Owszem, ma - bez sterownika (nie wiadomo kiedy będzie) i tylko 2 lane'y wyprowadzone z SoC, co ogranicza rozdzielczość do 800x480.


    jacynka84 wrote:

    Człowieku HDMI by pozwoliło robić własne tablety lub telefony

    Po co robić własny tablet? Poza tym HDMI nie jest za bardzo energooszczędne, dlatego wymyślono DSI.


    nsvinc wrote:

    A ja na projekcie PCB nie widze wewnętrznych warstw... Miały być 4, na screenshocie są 2 ;]

    Kolega produkuje PCB ze screenshotów? :D

    Geos9 wrote:

    Czy zamierza komercjalizować projekt, w sensie czy będą do kupienia Ew. Możliwość zamówienia partii adaptera.

    Nie prowadzę działalności komercyjnej.

    Quote:

    Jeśli max rozdzielczość to 1080p to czy dało by sie połączyć trzy wyświetlacze 360p?

    Jeśli zaprojektujesz nową płytkę ze złączami do trzech wyświetlaczy i zmodyfikujesz firmware, to jak najbardziej.

    TWl