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.

Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

phanick 07 Nov 2021 09:09 1884 7
Altium Designer Computer Controls
  • Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi
    Jest sobie taki mały, zgrabny i tani programator USB Blaster do układów CPLD/FPGA Altery, który spełnia swoją rolę idealnie.
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    Niestety nie umożliwia on podania napięcia zasilającego, co wiąże się z koniecznością zasilania programowalnego układu z zewnętrznego źródła. Różne układy posiadają różne napięcia zasilające (a czasami nawet kilka).

    Np. mój ulubiony CPLD EPM3064 ma jedno napięcie do zasilania rdzenia układu (VCCINT), a drugie do zasilania buforów końcówek I/O (VCCIO), dzięki czemu układ może współpracować w systemie dostosowanym do różnych napięć, np. 3.3 V, 2.5 V.
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    A taki np. EPM240 posiada cztery bloki IOLABS i każdy z tych bloków może posiadać swoje własne napięcie VCCIO.


    Wpadłem więc na pomysł zrobienia małej "przystawki" do wspomnianego programatora, wytwarzającej najpopularniejsze napięcia. Całość koniecznie musiała się zmieścić w istniejącej obudowie, co było dość dużym wyzwaniem. W założeniach miały się pojawić następujące napięcia: +1.8 V, +2.5 V, +3.3 V, +5 V, +12 V.

    W efekcie powstała płytka, dostosowana rozmiarem do istniejącej obudowy, którą lutuje się na płytę główną programatora za pomocą dwóch drucików (do masy i +5 V) tam, gdzie w oryginalnej płytce jest złącze J1. Płytka posiada też dwa otwory, aby przechodziły przez nią diody LED sygnalizujące działanie z oryginalnej płytki. Udało się wszystko upchać na płytce jednowarstwowej, więc płytka może ściśle przylegać do oryginalnej bez jakichkolwiek obaw o zwarcie.
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    Zdecydowałem się na wyprowadzenie wszystkich napięć za pomocą męskiej listwy goldpin, bo w przeciwieństwie do żeńskiej nie zużywa się ona (żeńskie blaszki szybko robią się luźne przy częstym wkładaniu). Aby uchronić się przed przypadkowym zwarciem męskich goldpinów w momencie zetknięcia się z czymś, na szpilki nakładam kapturek (wykonany z żeńskiej wtyczki goldpin)
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    • Napięcia +1.8 V, +2.5 V, +3.3 V pochodzą z dedykowanych stabilizatorów AMS1117
    • Napięcie +5 V pochodzi bezpośrednio ze złącza USB
    • Do napięcia +12 V wykorzystałem przetwornicę MC34063

    Czytelnik może zadać sobie pytanie, po co obecność napięcia +12 V? Otóż konieczność posiadania tego napięcia była w zasadzie powodem powstania opisywanej płytki. Często projektując jakieś urządzenie staramy się dobierać do niego układ tak, aby odpowiadał on potrzebom, ale nie był przesadnie "na wyrost" (czyli np. dysponował wymaganą liczbą końcówek). Zbyt duża ilość oferowanych i niewykorzystanych pinów to nie tylko marnotrawstwo ceny (droższy układ), ale też bardziej skomplikowana PCB (więcej pinów = większa obudowa = zwykle bardziej skomplikowany design płytki).
    Dlatego do wielu potrzeb wystarcza np. wcześniej opisywany prosty układ EPM3064. Układ ten posiada 30 pinów I/O. Jednak często byłem w sytuacji, że brakowało mi tego jednego/dwóch dodatkowych pinów i musiałem uciekać się do dziwnych kombinacji. Okazuje się, że piny programujące JTAG tego układu (TDI/TMS/TCK/TDO) także mogą pełnić funkcje standardowych pinów I/O. Aby je do tego zmusić, należy w środowisku Quartus:
    1. Prawo kliknąć układ, wybrać Device >> Device and Pin Options >> zakładka "General"
    2. Odznaczyć "Enable JTAG BST Support"
    3. Przekompilować projekt
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    Niestety, teraz próba wybrania pliku "POF" do wgrania do układu skończy się zagadkowym komunikatem "JTAG support disabled in file ..."
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    4. Należy więc wejść jeszcze raz, tym razem do zakładki "Programming files" i zaznaczyć "JEDEC STAPL Format File (.jam)" i znów przekompilować projekt.
    Programator USB Blaster - płytka z dodatkowymi napięciami zasilającymi

    Od teraz po każdym skompilowaniu, oprócz standardowego pliku POF będzie się generował plik JAM i to właśnie ten plik należy wybierać przy programowaniu.

    Niestety, aby zaprogramować (albo przeprogramować) wsad z wyłączonymi pinami JTAG potrzeba - wg noty katalogowej - specjalnego programatora wysokonapięciowego. Nic dziwnego, bo jeśli teraz piny JTAG są wykorzystywane jako standardowe końcówki I/O, to skąd układ ma wiedzieć, że chcemy je wykorzystać ponownie do programowania?
    Jest jednak pewien trik (o którym nie ma ani słowa w nocie katalogowej). Jeśli układ EPM3064 w momencie włączenia zobaczy na swoim pinie I/OE1 napięcie +12 V (w obudowie QFP44 jest to pin 38), to piny JTAG znowu staną się aktywne (do momentu ponownego restartu) i będą mogły być wykorzystane do zaprogramowania. Oczywiście korzystając z tego sposobu należy mieć kilka rzeczy w głowie:
    • do pinu I/OE1 podłączamy +12 V na czas programowania KONIECZNIE z jakimś rezystorem zabezpieczającym w szeregu (np. 1kΩ). Nie wiem dokładnie jakiego napięcia wymaga układ, bo po drugiej stronie rezystora jest ok. 8 V.
    • pin I/OE1 powinien być albo w ogóle nie używany w projekcie, albo chociaż zabezpieczony jakąś zworką, która "odcina" go od reszty układu na czas programowania, aby podanie na niego +12 V nie uszkodziło innych układów, podłączonych do niego
    • obecne sygnały na pinach TDI/TMS/TCK/TDO nie powinny zakłócać procesu programowania, czyli np. nie powinny być do nich podłączone wyjścia od innych układów, nad którymi nie mamy kontroli, ewentualnie mogą być one podłączone do wyjść z innych układów, ale przez rezystory zabezpieczające. Idealnie jeśli te piny są wysterowywane wyłącznie przez układ EPM3064 a dla innych układów stanowią one jedynie wejścia.
    • jest to więc sytuacja analogiczna jak np. wykorzystanie pinów MOSI/MISO/SCK z popularnych mikrokontrolerów AVR do swoich celów. Tam pinem przełączającym w tryb programowania jest pin /RESET, który też możemy za pomocą fusebitów wyłączyć i przerobić na pin I/O, ale wtedy też będzie konieczny programator wysokonapięciowy).

    Reasumując
    Zaprojektowana płytka spełnia swoje zadanie idealnie, jedyne co można by jeszcze dodać, to może napięcie 1,2 V, może dałoby się upchać jeszcze jeden regulator AMS1117.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    phanick
    Level 28  
    Offline 
    phanick wrote 2404 posts with rating 2398, helped 54 times. Live in city Warszawa. Been with us since 2007 year.
  • Altium Designer Computer Controls
  • #2
    jackfinch
    Level 16  
    Witam
    Po przeczytaniu twojego postu nie wiem czy dobrze rozumiem. Ma akurat epm3032 z zablokowanym jtagiem tylko w wersji plcc ( I/OE1 jest na pinie 44). Czy twoją metodą 12 V przez rezystor 1kΩ na I/OE1 mogę wrzucić plik pof przez usb blastera?
  • Altium Designer Computer Controls
  • #3
    phanick
    Level 28  
    Hej
    1. Jeśli w aktualnie tworzonym projekcie masz wyłączony JTAG, to musisz wygenerować plik JAM (Quartus nie pozwoli Ci użyć pliku SOF do programowania).
    2. Jeśli obecnie EPM3032 ma wyłączony JTAG (nie jest wykrywany przez USB Blaster przy opcji AutoDetect) lub próbujesz nagrać wsad z projektu z wyłączonym JTAGiem, to na pin I/OE1 musisz podać 12 V przed lub równo z podaniem zasilania do programowanego układu. Gdy EPM3032 jest już włączony, to podanie 12 V nie włączy JTAGa.
  • #4
    jackfinch
    Level 16  
    Dzięki za odzew. Okazało się, że moja Altera to seria 7000s, a dokładnie EPM7032SLC44-10 a nie 3032 jak wcześniej napisałem. Odnośnie USB Blastera, to moja wersja jest troszkę inna: STM32F101C8T6 + 74HC244D. Jak znajdę chwilę czasu, to podłączę to wszystko i spróbuję się pobawić.

    Zrobiłem tak jak opisałeś, podałem 12 V przez rezystor 1kΩ, na pin 44 (INPUT/OE1), podłączyłem USB Blastera pod usb, wygenerowałem krótki program w Quartusie i zaznaczyłem opcje Program/Configure. Wygląda, że jtag jest odblokowany. Załączam screen. Mam jeszcze EPM7128slc84-15, który nie jest wykrywany przez jtag.
  • #5
    jackfinch
    Level 16  
    Witam

    Mam pytanie odnośnie opcji weryfikacji po programowaniu. Na załączonym zdjęciu przez ciebie widać, że układ po zaprogramowaniu nie przechodzi weryfikacji. U mnie jest dokładnie tak samo, jak zaznaczę opcje VERIFY. Nie za bardzo tego ogarniam, czy to jest normalne, czy faktycznie układ się źle zaprogramował?

    Pozdrawiam
  • #6
    phanick
    Level 28  
    Jeśli na pin OE1 jest podłączone +12 V, to układ przejdzie programowanie i weryfikację i będzie SUCCESS.
    Jeśli nie będzie +12 V, to niby programowanie przechodzi, weryfikacji nie przejdzie, ale po restarcie - układ nie będzie działał, czyli tak jakby weryfikacja dopiero coś tam w tym chipie ustawia, że ma on przestawić się na dopiero co nowo wgrany kod.

    W jednym z testowanych przeze mnie układów coś uwaliłem, bo nawet po podłączeniu tego +12 V przez rezystor, weryfikacji też nie przechodzi. Pomiar napięcia na tym rezystorze po drugiej stronie daje +8 V.

    Na innych układach, gdzie weryfikacja przechodzi, pomiar daje po obu stronach rezystora +12 V. Sprawdź może na innym scalaku.
  • #7
    jackfinch
    Level 16  
    Sprawdziłem dzisiaj jakie napięcie wystawia usb blaster do zasilania Altery i wyszło 2.69 V, co chyba jest stanowczo za mało. Podłączyłem zewnętrzne 5 V i wydaje się, że weryfikacja przechodzi na 100%. Mój układ do kasowania podłączony do OE1 za rezystorem 1kΩ ma dokładnie 12 V. Jednak wychodzi, że u mnie problemem było za niskie napięcie zasilania układu. Załączam screen. Przeczytałem w nocie katalogowej, że układy serii 7000 można maksymalnie kasować około 100 razy. Próbowałem tego samego na EPM7128SLC84, ale wychodzi na to, że tym sposobem nie da rady uaktywnić Jtag-a.
  • #8
    phanick
    Level 28  
    USB Blaster nie zasila układu przez tą szarą taśmę, konieczne jest dodatkowe zasilanie lub przeróbka jak w moim opisie.