- przeznaczony do programowania układów FPGA firmy Lattice,
- zbudowany na bazie układu FT232H,
- komunikacja z komputerem poprzez USB,
- połączenie z układem docelowym poprzez standardowe, 10-pinowe złącze JTAG.
Głównym elementem programatora jest układ FT232H produkowany przez firmę FTDI. Trzeba podkreślić, że FT232H i popularny FT232RL to zupełnie różne układy. Układ FT232H umożliwia konwersję danych przesyłanych poprzez USB na bardzo różne interfejsy cyfrowe, takie jak UART, I²C, SPI i wiele innych, a nas oczywiście interesuje możliwość użycia interfejsu JTAG. Układ scalony jest gotowym black-boxem, który wystarczy podłączyć i od razu działa bez konieczności programowania ani konfigurowania w jakikolwiek sposób.
Na rynku dostępne są trzy wersje układów, które mogą pracować jako JTAG:
- FT232Hx – najprostszy i najtańszy, wyposażony w jeden konwerter,
- FT2232Hx – dwa konwertery w jednym układzie ze wspólnym USB. W systemie prezentuje się jako dwa niezależne urządzenia, które mogą pracować w tym samym czasie niezależnie od siebie. Na przykład jeden z nich może funkcjonować jako przejściówka USB-UART, a drugi może pracować jako JTAG,
- FT4232Hx – cztery konwertery w jednym układzie ze wspólnym USB.
W miejsce znaku x znajduje się litera określająca obudowę układu. Q oznacza obudowę QFN, a L oznacza obudowę LQFP. Płytka programatora została zaprojektowana w taki sposób, aby dało się przylutować układ zarówno w obudowie QFN, jak i LQFP.
Budowa i działanie
Schemat programatora został pokazany na rysunku 1. Jest w dużej mierze kopią aplikacji umieszczonej w dokumentacji układu FT232H. Drobną modyfikacją jest dodanie matrycy diod zabezpieczających przed przepięciami – układu scalonego typu USBLC6-2. W razie braku dostępności tego elementu można wlutować zworki w jego miejsce.
Pamięć typu 93LC56B służy do przechowywania konfiguracji układu FT232H. Do zmiany konfiguracji należy wykorzystać program FT_PROG, który można pobrać ze strony producenta pod adresem https://ftdichip.com/utilities/ – jedną z ciekawszych rzeczy jest możliwość ustawienia nazwy dla naszego urządzenia, która będzie wyświetlana przez Windows w Menedżerze Urządzeń. Inne ustawienia wymagają specjalistycznej wiedzy na temat funkcjonowania USB – zmiana PID, VID czy modyfikacja sterowników może spowodować, że układ FT232H przestanie działać i nie będzie można go już przeprogramować (wtedy trzeba wylutować układ pamięci i wlutować pustą).
Translator napięć
Programator został wyposażony w blok translacji napięć dla sygnałów JTAG. We współczesnej elektronice obserwujemy tendencję do obniżania wartości napięcia zasilania układów cyfrowych. Standard 5 V jest już rzadko stosowany, ale warto, żeby programator umożliwiał współpracę z układami w tym starszym standardzie. Napięcie 3,3 V obecnie wydaje się standardem dla większości układów scalonych, ale coraz częściej spotykamy układy pracujące przy napięciu 2,5 V, 1, 8 V, 1,2 V czy nawet jeszcze niższym. Aby umożliwić komunikację pomiędzy programatorem a układami scalonymi pracującymi przy różnych napięciach, zastosowano translator napięć typu TXB0108PW – umożliwia on podłączenie sygnałów o napięciu od 1,65 V do 5,5 V. W razie braku dostępności tego układu można go pominąć i wlutować rezystory-zworki (0 Ω) w miejsca R20, R21, R22, R23 i R24. W takiej sytuacji programator będzie działał tylko z układami, pracującymi przy napięciu 3,3 V. Kiedy układ TXB0108PW jest zamontowany, tych rezystorów oczywiście nie należy lutować.
Blok zasilania
Przydatną cechą programatora jest możliwość zasilania programowanego układu. W tym celu zastosowano regulowany stabilizator napięcia LM1117-ADJ. Aby z niego skorzystać, należy wetknąć zworkę w miejsce J2 i ustawić żądane napięcie potencjometrem R14.
Możliwe jest ustawienie napięcia w zakresie od 1,25 V do 3,8 V. Jeżeli chcemy zasilać układ napięciem 5 V, wówczas zworkę należy założyć na pozycję J1 i wtedy programowany układ będzie zasilany prosto z USB. Jeżeli nie chcemy dostarczać zasilania do programowanego układu, to nie należy zakładać zworki.
Montaż i uruchomienie
Schemat płytki PCB został pokazany na rysunku 2. Montaż programatora należy wykonać zgodnie z ogólnymi zasadami dotyczącymi montażu elementów SMD. Po zmontowaniu programator należy podłączyć do portu USB. System Windows sam zainstaluje właściwy sterownik do obsługi FT232H. Opcjonalnie można uruchomić aplikację FT_PROG, przetestować układ i zmieniać różne ustawienia według własnego uznania, ale można ten proces pominąć.
Programowany układ należy podłączyć za pomocą przewodu taśmowego ze złączami IDC. Na płytce umieszczono dwa złącza goldpin 2×5 – jedno z rastrem 2,54 mm, a drugie z rastrem 1,27 mm. Pinout obu złączy jest identyczny i zgodny z powszechnie stosowanym standardem konektora JTAG. Dla porządku nazwy poszczególnych sygnałów umieszczono na płytce obok konektorów.
Programator testowano z oprogramowaniem Lattice Diamond. Po uruchomieniu aplikacji Diamond Programmer nasz programator wykrywany jest automatycznie jako HW-USBN-2B (FTDI). Automatycznie są wykrywane także wszystkie układy scalone podłączone do interfejsu JTAG – na rysunku 3 widzimy, że aplikacja rozpoznała układ FPGA MachXO2.
Niewątpliwą zaletą zaprezentowanego rozwiązania jest sumaryczny koszt wszystkich elementów programatora – wynosi około 50 zł.
Dominik Bieczyński
leonow32@gmail.com
- R1…R3, R5, R7…R9, R11: 10 kΩ
- R4: 2 kΩ
- R6: 12 kΩ, 1%
- R10: 4,7 kΩ
- R12: 100 Ω
- R13: 220 Ω
- R14: 500 Ω potencjometr precyzyjny
- R20...R24: 0 Ω (uwagi w tekście)
- C1, C3, C5, C7, C8, C10, C14…C18, C20, C22, C23: 100 nF
- C2, C4, C6, C9: 4,7 μF
- C11: 10 nF
- C12, C13: 10 pF
- C19: 1 μF
- C21: 10 μF
- D10: USBLC6-2
- U1: FT232Hx (QFP lub LQFP)
- U2: TXB0108PW (TSSOP20)
- U3: 93LC56B (SO8)
- U4: LM1117-ADJ
- K1: złącze mikro USB
- K2: złącze IDC10
- K3: goldpin 2×5, 1,27 mm SMD
- X1: 12 MHz
- L1, L2, L3: koralik ferrytowy 600 Ω@100 MHz (SMD0603)
- J1, J2: goldpin 1×2 + jumper
- J3: mikroswitch SMD