Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Izolowana galwanicznie przejściówka USB -> JTAG & UART

DVDM14 25 Jun 2019 22:26 3024 11
  • Izolowana galwanicznie przejściówka USB -> JTAG & UART

    Witam serdecznie!

    Pragnę zaprezentować dość proste ale bardzo użyteczne narzędzie jakim jest uniwersalny programator JTAG z dodatkowym interfejsem UART. Układ ten powstał w związku z przeniesieniem prac na FPGA serii Artix 7 z zestawów ewaluacyjnych na własne PCB co w oczywisty sposób wymaga posiadania niezależnego programatora JTAG, jednakże fabryczne rozwiązania potrafią być bardzo drogie, zwłaszcza w wersjach izolowanych - np. ISO-HS2 osiąga cenę dwustu dolarów. Oczywiście wyprodukowanie takiej przejściówki we własnym zakresie jest znacznie tańsze. :)

    Dlaczego jednak stosować izolację galwaniczną? Są dwa powody. Po pierwsze, na urządzeniach do których programowania używam przejściówki często implementuję delikatne obwody analogowe, więc nadprogramowe połączenie galwaniczne z komputerem bardzo łatwo może wprowadzić silne zakłócenia fałszujące wyniki testów. Izolacja eliminuje ten problem nie wymagając ciągłego odłączania programatora przyśpieszając szybkie sprawdzanie poprawek w konfiguracji FPGA.
    Po drugie, w układach prototypowych łatwo o wywołanie pętli masy, lub zwarcie sporego potencjału pochodzącego z połączeń programowanego układu z urządzeniami zewnętrznymi, potencjalnie prowadząc do rozległych uszkodzeń zarówno prototypu, jak i nawet komputera. Izolator w oczywisty sposób eliminuje takie ryzyko.

    Przejściówka została oparta na układzie FT2232H i może być użyta z dowolnym oprogramowaniem wspierającym ten chip. Oznacza to że dzięki ożyciu np. OpenOCD można używaj jej do programowania niemal dowolnych układów posiadających port JTAG.

    Również liczne "fabryczne" programatory oparte są na tym chipie, w przypadku gdy potrzebujemy takiego programatora możemy się pod niego "podszyć" poprzez wgranie odpowiedniej konfiguracji i uzyskać pełne wsparcie w środowisku producenta. Ze względu jednak na ogromną ilość możliwych konfiguracji nie będę jednak opisywał w jaki sposób to zrobić, jako że dokładna metoda będzie zależna od układu który chcemy programować. Należy również pamiętać, że takie podszywanie może naruszać licencję producenta programatora.

    Dodatkowy port UART działa jako standardowy port COM i może być wykorzystywany do dowolnych zastosowań komunikacyjnych. Programator posiada również wyprowadzone wyjście zasilania 3.3V 400mA, nie jest ono jednak izolowane galwanicznie od komputera.

    Zastosowane domyślnie izolatory (użyte, jako że miałem ich zapas) mogą działać jedynie z napięciem 3.3V, jednak zastąpienie ich układami ADUM151N0BRZ dodaje nam możliwość pracy z urządzaniem o poziomach logicznych od 1.8 do 5V znacznie zwiększając uniwersalność przejściówki. Zamienne izolatory posiadają taką samą obudowę i wyprowadzeni, zamiana jest więc bardzo łatwa.

    Osobiście testowałem programator z FPGA Artix 7 oraz Spartan 6 - w obu przypadkach udało się nakłonić środowisko producenta do współpracy i bezproblemowo używać pełnej funkcjonalności.

    Montaż PCB został wykonany całkowicie odręcznie, najmniejsze użyte elementy są w rozmiarze 0402. Załącznik zawiera schemat urządzenia.

    Cool? Ranking DIY
    About Author
    DVDM14
    Level 35  
    Offline 
  • #3
    DVDM14
    Level 35  
    piotr_go wrote:
    DVDM14 wrote:
    Montaż PCB został wykonany całkowicie odręcznie

    Nieźle wyszło. Szablon i pasta?


    Dzięki za pochwałę. :)
    Lutowanie kolbą i gorącym powietrzem - jak dla mnie zabawa z sitem i pastą jest wolniejszą i bardziej uciążliwą metodą. ;)
  • #4
    Armadon
    Level 16  
    DVDM14 wrote:
    Osobiście testowałem programator z FPGA Artix 7 oraz Spartan 6 - w obu przypadkach udało się nakłonić środowisko producenta do współpracy i bezproblemowo używać pełnej funkcjonalności.


    No i to jest bardzo istotna dla mnie informacja bo już chciałem kupić HS3, ale chyba wolę sobie zrobić coś takiego. Izolacja galwaniczna od USB to jest jednak fajna sprawa.
  • #5
    DVDM14
    Level 35  
    Armadon wrote:
    DVDM14 wrote:
    Osobiście testowałem programator z FPGA Artix 7 oraz Spartan 6 - w obu przypadkach udało się nakłonić środowisko producenta do współpracy i bezproblemowo używać pełnej funkcjonalności.


    No i to jest bardzo istotna dla mnie informacja bo już chciałem kupić HS3, ale chyba wolę sobie zrobić coś takiego. Izolacja galwaniczna od USB to jest jednak fajna sprawa.


    Zostało mi jeszcze kilka PCB, możesz napisać na PW jeżeli jesteś zainteresowany. :)
  • #6
    Armadon
    Level 16  
    DVDM14 wrote:
    Armadon wrote:
    DVDM14 wrote:
    Osobiście testowałem programator z FPGA Artix 7 oraz Spartan 6 - w obu przypadkach udało się nakłonić środowisko producenta do współpracy i bezproblemowo używać pełnej funkcjonalności.


    No i to jest bardzo istotna dla mnie informacja bo już chciałem kupić HS3, ale chyba wolę sobie zrobić coś takiego. Izolacja galwaniczna od USB to jest jednak fajna sprawa.


    Zostało mi jeszcze kilka PCB, możesz napisać na PW jeżeli jesteś zainteresowany. :)


    Jak dla mnie za duże :) Ja mam niestety paskudną skłonność do miniaturyzacji i chcę sobie to zaprojektować po swojemu.
    Dwa spostrzeżenia (zaznaczam że w żadnym wypadku nie jest to krytyka):
    - nie za bardzo widzę zastosowanie dla złącza zewnętrznego zasilania (aux power header)
    - fajna przetwornica impulsowa (ADP2108), ale myślę że AP3401 była by tu wystarczająca, a jest jakieś 20x tańsza
  • #7
    piotr_go
    DIY electronics designer
    Ja bym dał zwykły stabilizator liniowy.
    Nie jest to urządzenie zasilane bateryjnie i wstawianie tam przetwornicy impulsowej wydaje się zbędnym luksusem.

    Armadon wrote:
    Jak dla mnie za duże :) Ja mam niestety paskudną skłonność do miniaturyzacji i chcę sobie to zaprojektować po swojemu.

    Skąd ja to znam :D
  • #8
    DVDM14
    Level 35  
    Armadon wrote:
    Jak dla mnie za duże :) Ja mam niestety paskudną skłonność do miniaturyzacji i chcę sobie to zaprojektować po swojemu.


    Doceniam skłonność do miniaturyzacji. ;) Ogólnie, płytka była projektowana na szybko - zamawiałem akurat inne PCB i stwierdziłem, że przyda się programator. Jest więc jeszcze miejsce na optymalizację.

    Armadon wrote:
    - nie za bardzo widzę zastosowanie dla złącza zewnętrznego zasilania (aux power header)


    To złącze było dodatkiem na zasadzie "może się przydać", jednak zaskakująco często używam UART-u z drobiazgami zasilanymi z 3.3V - w tedy zasilam je od razu z przejściówki, bez ciągnięcia kolejnego przewodu/zasilacza.

    Armadon wrote:
    - fajna przetwornica impulsowa (ADP2108), ale myślę że AP3401 była by tu wystarczająca, a jest jakieś 20x tańsza

    piotr_go wrote:
    Ja bym dał zwykły stabilizator liniowy.
    Nie jest to urządzenie zasilane bateryjnie i wstawianie tam przetwornicy impulsowej wydaje się zbędnym luksusem.


    Szczerze to mam tych scalaków duży zapas, więc go prostu powoli pożytkuję zamiast pozwalać się im kurzyć... ;)
  • #10
    DVDM14
    Level 35  
    fotomh-s wrote:
    A czy układy na FTDI są wspierane przez soft Altera/Intel, czy tylko Xilinx?


    Natywnie nie, ale nasi wschodni sąsiedzi napisali sterownik który dodaje pełne wsparcie do Quartusa. Nie testowałem osobiście, ale sporo osób pisze że działa poprawnie.
    W sumie miałem gdzieś płytkę z Cyclone IV, mógłbym przetestować w wolnej chwili...

    fotomh-s wrote:
    Jakie wyszły koszty całości?


    Wrzucenie na szybko BOM-u do Mousera daje niecałe 150zł licząc VAT, aczkolwiek najdroższe komponenty miałem w zapasach.
  • #11
    fotomh-s
    Level 24  
    A czy można wykorzystać popularne na ali płytki za kilka zł z układami FTDI do tego celu? Mam na myśli prosty JTAG bez izolacji?
    Jeśli tak to niepotrzebnie kupowałem USB blastera (który tak na dobrą sprawę jeszcze nie dotarł). Będzie chyba trzeba kupić FTDI za kilka zł i sprzedać blastera. Rozumiem że FTDI natywnie daje poziom 3V3 na swoich pinach?

    Generalnie to wybrałem układ Altera ze względu na tanie programatory. Teraz okazuje się że byłem...
    ...Głupcem ;-)

    ZTCP to Xilinx ma distributed RAM, do tego w nowszych układach LUTy mają chyba 6 bitów. XC6SLX16 by był chyba dla mnie dobry.
  • #12
    DVDM14
    Level 35  
    fotomh-s wrote:
    A czy można wykorzystać popularne na ali płytki za kilka zł z układami FTDI do tego celu? Mam na myśli prosty JTAG bez izolacji?


    Tak, o ile nie trafisz na płytkę z podrobionym FTDI, a z tym bywa różnie... :)

    fotomh-s wrote:
    Rozumiem że FTDI natywnie daje poziom 3V3 na swoich pinach?


    Tak.

    fotomh-s wrote:
    Generalnie to wybrałem układ Altera ze względu na tanie programatory. Teraz okazuje się że byłem...
    ...Głupcem ;-)


    Oj ja też się zraziłem do altery gdy zaczęły wychodzić ich ukryte koszty... ;) Nie wspomnę nawet o fakcie, że wiele IP Core które u Xilinx-a są darmowe, u Altery kosztują krocie....

    Chociaż problemem Xilinxa jest brak sensownych FGPA niższej póki. Są spartany 6 i starsze, ale nie są wspierane przez Vivado a jedynie antyczne ISE... W którym bardzo nieprzyjemnie mi się pracuje.

    Na szczęście najmniejsze Spartany-7 nie są drogie, co prawda są dostępne jedynie w BGA, ale w 2019 roku to nie problem. ;)