3168.pdf

(1351 KB) Pobierz
Dodatkowe materiały >>
Uniwersalny programator
JTAG/ISP
Mimo bogatej oferty na firmowe
programatory przeznaczone zarówno
dla określonej grupy układów, jak
i uniwersalnych, amatorzy nie ustają
w projektowaniu własnych konstrukcji.
Może to jest tak, jak z posiłkiem,
który inaczej smakuje, jak go sami
przygotujemy. Własnoręcznie opracowane
urządzenie powinno spełnić wszelkie
„zachcianki” autora, jeśli tylko możliwe
będzie osiągnięcie kompromisu pomiędzy
ceną i skomplikowaniem układu, a jego
funkcjonalnością.
Rekomendacje:
bardzo przydatne urządzenie dla każdego elektronika zajmującego
się programowaniem różnych typów układów, coraz trudniejszym
do spełnienia warunkiem jest jednak dostęp do komputera z portem
LPT.
Dostępne obecnie na rynku układy logiki pro-
gramowalnej (struktury CPLD i matryce FPGA)
oraz pamięci nieulotne z interfejsem szerego-
wym (np. DataFlash), są wyposażone w jeden
z wielu specjalizowanych interfejsów ISP ( In–
System Programming ), dzięki któremu możliwe
jest ich programowanie w systemie. Cecha ta,
pozwala na stosowanie mechanizmów konfigu-
racji lub programowania wbudowanej w struk-
turę układu scalonego (np. mikrokontrolera) pa-
mięci nieulotnej (typu EEPROM, bądź Flash) już
po umieszczeniu go na płytce drukowanej. Co
więcej, odbywa się to bez konieczności stosowa-
nia drogich i skomplikowanych programatorów
zewnętrznych, czy też demontażu układu. Za-
letami takiego rozwiązania są: skrócenie czasu
uruchomienia pojedynczego układu scalonego
(bądź całego systemu cyfrowego – pakietu),
a na dalszym etapie ułatwiona staje się również
wymiana oprogramowania, skrócenie czasu pro-
totypowania i produkcji urządzenia oraz dostęp
użytkownika do programowania zdalnego (np.
przez port USB lub Internet) bez konieczności
korzystania z autoryzowanego punktu serwiso-
wego.
Typowy interfejs ISP jest szybką, szeregową
i dwukierunkową magistralą, po której odbywa
się komunikacja z programowanym obiektem
– często, jak w przypadku mikrokontrolerów,
korzysta się z dostępnych w układzie scalonym
zasobów komunikacyjnych (np. portów SPI lub
UART). Do zaprogramowania układu za pośred-
nictwem ISP konieczne jest użycie przystawki
programującej, tj. prostego w budowie układu
elektronicznego (określanego, nieco na wy-
rost, programatorem) podłączanego do portu
komputera PC (najczęściej LPT), którego zada-
niem jest pośredniczenie w wymianie danych
z docelowym układem przez odpowiednie do-
AVT-5153
W ofercie AVT:
AVT–5153A – płytka drukowana
PODSTAWOWE PARAMETRY
• Płytka o wymiarach 60x80 mm
• Zasilanie 3...18 VDC (zalecane napięcie
3,3 V)
• Emulacja firmowych interfejsów: Altera By-
teBlaster II, Xilinx Parallel Cable III (DLC 5),
Lattice ispDownload Cable, ARM Wiggler,
TI MSP-FET, Kanda STK 200/300 i innych
• Programowane i konfigurowane układy:
CPLD i FPGA: Xilinx, Altera, Lattice oraz
mikrokontrolery z rdzeniem ARM, MSP430,
AVR, Atmel 8051
• Złącze programujące: IDC10
• Interfejs wyjściowy: JTAG, ISP lub inny
• Wybór interfejsu za pomocą pokrętła
• Podłączany do portu drukarkowego LPT
komputera
PROJEKTY POKREWNE wymienione artykuły są w całości dostępne na CD
Tytuł artykułu
Nr EP/EdW
Kit
Programator procesorów 89CX051
EdW 3/2000 AVT-2502
Programator procesorów AVR
EdW 10/2001 AVT-2550
JuPIC – programator mikrokontrolerów PIC współpracujący z programem MPLAB
EP 3/2003 AVT-5100
UnlProg – uniwersalny programator ISP
EP 1/2004 AVT-560
Uniwersalny programator mikrokontrolerów PIC
EP 5-7/2004 AVT-573
Interfejs JTAG do procesorów AVR
EP 6/2004 AVT-581
Miniprogramator AT89Cx051
EP 11/2004 AVT-540
Programator JTAG dla układów MSP430
EP 3/2005 AVT-1409
Flash z ISP – JTAG
EP 3/2006 AVT-921
Programator ISP/ICP dla mikrokontrolerów ST7
EP 7/2006 AVT-937
Programator JTAG dla mikrokontrolerów STR9
EP 9/2006 AVT-947
Uniwersalny adapter dla programatorów AVR-ISP
EP 2/2008 AVT-1462
Programator AVRISP z interfejsem USB (STK500)
EP 7/2007 AVT-988
Adapter dla programatorów AVR ISP
EP 7/2007 AVT-1452
Ulepszony programator STK200
EdW 2/2008 AVT-2855
Programator USB AVR (STK500)
EP 2/2008 AVT-5125
32
ELEKTRONIKA PRAKTYCZNA 10/2008
951089958.549.png 951089958.660.png 951089958.770.png 951089958.881.png 951089958.001.png 951089958.012.png 951089958.023.png 951089958.034.png 951089958.045.png 951089958.056.png 951089958.067.png 951089958.078.png 951089958.089.png 951089958.100.png 951089958.111.png 951089958.122.png 951089958.133.png 951089958.144.png 951089958.155.png 951089958.166.png 951089958.177.png 951089958.188.png 951089958.199.png 951089958.210.png 951089958.221.png 951089958.232.png 951089958.243.png 951089958.254.png 951089958.265.png 951089958.276.png 951089958.287.png
 
Uniwersalny programator JTAG/ISP
pasowanie napięciowe sygnałów. W praktyce
jednak stosowanie łącza ISP może utrudniać
konstrukcję i prototypowanie urządzeń. Za-
stosowanie w danym projekcie mikrokon-
trolera (lub nierzadko kilku różnych), układu
programowalnego CPLD oraz struktury FPGA,
której plik konfiguracyjny jest przechowywany
w niewielkiej pamięci EEPROM, wymaga od
twórcy systemu wykorzystywania kilku różnych
magistral ISP (najczęściej niekompatybilnych ze
sobą). W konsekwencji nie można się obyć bez
kilku odmiennych w budowie przystawek (pro-
gramatorów). Niedogodność ta wynika z faktu,
iż każdy z producentów współczesnych ukła-
dów cyfrowych opracował i wypromował włas-
ne mechanizmy programowania i dedykowane
im narzędzia. Podobne problemy pojawiają
się także podczas realizacji szeregu projektów,
w których z reguły stosowane są różnego ro-
dzaju mikroprocesory (od prostych 8–bitowych
do złożonych 32–bitowych architektur) oraz
logika programowalna – układy te pochodzą
często z różnych rodzin, a co za tym idzie, wy-
posażone są w odmienne łącza ISP. Niedogod-
ności te są często sporą przeszkodą w praktyce
amatorskiej i półprofesjonalnej, tym bardziej,
że koszt zakupu kilku firmowych programato-
rów ISP jest dość znaczny.
Powyższe uwarunkowania skłoniły autora do
opracowania w miarę uniwersalnego, taniego
i łatwego w rozbudowie programatora – przy-
stawki, który posiadałby funkcje dostępne na
rynku firmowych interfejsów
ISP.
Na marginesie należy wy-
jaśnić istotną różnicę pomię-
dzy pojęciami programowania
i konfiguracji – wbrew pozorom
nie oznaczającymi tego samego.
Konfiguracja (w przypadku ukła-
dów logiki programowalnej) jest
terminem opisującym proces
inicjalizacji zawartości specjalnej
pamięci RAM układu FPGA od-
powiedzialnej za przechowywa-
nie tzw. kontekstu. Stąd matryce
FPGA bazujące na komórkach
RAM są często określane mia-
nem układów rekonfigurowal-
nych. Programowanie natomiast
dotyczy trwałego (nieulotnego)
zapisu informacji w układzie
scalonym – najczęściej za pomo-
cą ładunku elektrycznego (np.
komórek pamięci typu EEPROM,
Flash) lub rzadziej z użyciem
promienia lasera, bądź napięcia
o podwyższonej wartości (np.
komórki pamięciowe zawiera-
jące miniaturowe bezpieczniki).
Dlatego wszystkie układy CPLD
i niektóre FPGA (np. Actel czy
QuickLogic) wymagają właśnie
programowania.
Jako ciekawostkę można dodać, że interfejs
JTAG (tj. standard IEEE1149.1) – obecnie po-
wszechnie stosowany jako szyna programująca
i konfigurująca układy PLD oraz mikrokontro-
lery – został stworzony z myślą o testowaniu
wzajemnych połączeń pomiędzy układami
oraz połączeń pomiędzy układami i elemen-
tami stanowiącymi ich otoczenie. Umożliwiał
on również testowanie zarówno pojedynczych
struktur półprzewodnikowych, jak i złożonych
systemów cyfrowych (testowanie metodą tzw.
ścieżki krawędziowej). Standard ten był przez
wiele lat stosowany wyłącznie do tych celów.
Dopiero później wprowadzono jego rozsze-
rzenie o mechanizmy konfiguracji i progra-
mowania w systemie, co zaowocowało normą
IEEE1532. Szerzej na ten temat można prze-
czytać w [2, 3].
docelowym układem (np. procesorem) wluto-
wanym na płycie PCB w uruchamianym urzą-
dzeniu.
Schemat elektryczny programatora przed-
stawiono na rys. 1 . Dzięki zastosowaniu logiki
programowalnej CPLD firmy Xilinx z mikromo-
cowej rodziny CoolRunner (układ U2) uprosz-
czona została jego budowa wewnętrzna – wy-
korzystuje się tylko niewielką liczbą elementów
do jego konstrukcji. Dodatkowo pobór prądu
urządzenia jest bardzo niski.
Ogólnie rzecz biorąc, układ U2 odpowiada za
sprzętową emulację firmowych interfejsów pro-
gramatorów. Projekt zaszytego w nim układu
logicznego został opracowany w języku opisu
sprzętu VHDL, dzięki czemu możliwa jest łatwa
jego modyfikacja do własnych wymagań.
Do poprawnej pracy układu U2 wymagane
jest napięcie zasilania o wartości 3,3 V. Jest ono
uzyskiwane za pomocą popularnego stabiliza-
tora LDO (U1). Napięcie zasilające programator
(o wartości z zakresu 3...18 V) może być poda-
ne w dwojaki sposób: zewnętrznie – poprzez
złącze J1 lub doprowadzone wprost z obiektu
programowanego, tj. przez linię nr 4 złącza Z1
(zalecane rozwiązanie). Ponieważ układ U1 jest
regulatorem napięcia typu LDO, napięcie zasila-
jące programator może posiadać obniżoną war-
tość z zakresu 3...4 V. Poniżej wartości punktu
stabilizacji 3,3 V układ ten przenosi napięcie
z niewielkim spadkiem (rzędu miliwoltów). Ce-
cha ta pozwala na zasilanie programatora ty-
Opis układu
Moduł służy do programowania w systemie
układów cyfrowych (takich jak mikrokontrolery,
struktury programowalne PLD, pamięci Flash),
które są wyposażone w typowy szeregowy in-
terfejs programujący (np. JTAG, SPI lub I 2 C). Pro-
gramator ten spełnia rolę emulatora firmowej
przystawki (konwertera połączeń elektrycznych)
pomiędzy portem równoległym LPT komputera
PC, na którym jest uruchomione środowisko
projektowe z narzędziami wspierającymi pro-
gramowanie układu w systemie (np. WebPack
Xilinx dla matryc programowalnych PLD), oraz
Rys. 1. Schemat elektryczny programatora
33
ELEKTRONIKA PRAKTYCZNA 10/2008
951089958.308.png 951089958.319.png 951089958.330.png 951089958.341.png 951089958.352.png 951089958.363.png 951089958.374.png 951089958.385.png 951089958.396.png 951089958.407.png 951089958.418.png 951089958.429.png 951089958.440.png 951089958.451.png 951089958.462.png 951089958.473.png 951089958.483.png 951089958.494.png 951089958.505.png 951089958.516.png 951089958.527.png 951089958.538.png 951089958.550.png 951089958.561.png 951089958.572.png 951089958.583.png 951089958.594.png 951089958.605.png 951089958.616.png 951089958.627.png 951089958.638.png 951089958.649.png 951089958.661.png 951089958.672.png 951089958.683.png 951089958.694.png 951089958.705.png 951089958.716.png 951089958.727.png 951089958.738.png 951089958.748.png 951089958.759.png 951089958.771.png 951089958.782.png 951089958.793.png 951089958.804.png 951089958.815.png 951089958.826.png 951089958.837.png 951089958.848.png 951089958.859.png 951089958.870.png 951089958.882.png 951089958.893.png 951089958.904.png 951089958.915.png 951089958.926.png 951089958.937.png 951089958.944.png 951089958.945.png 951089958.946.png 951089958.947.png 951089958.002.png 951089958.003.png 951089958.004.png 951089958.005.png 951089958.006.png 951089958.007.png 951089958.008.png 951089958.009.png 951089958.010.png 951089958.011.png 951089958.013.png 951089958.014.png 951089958.015.png 951089958.016.png 951089958.017.png 951089958.018.png 951089958.019.png 951089958.020.png 951089958.021.png 951089958.022.png 951089958.024.png 951089958.025.png 951089958.026.png 951089958.027.png 951089958.028.png 951089958.029.png 951089958.030.png 951089958.031.png 951089958.032.png 951089958.033.png 951089958.035.png 951089958.036.png 951089958.037.png 951089958.038.png 951089958.039.png 951089958.040.png 951089958.041.png 951089958.042.png 951089958.043.png 951089958.044.png 951089958.046.png 951089958.047.png 951089958.048.png 951089958.049.png 951089958.050.png 951089958.051.png 951089958.052.png 951089958.053.png 951089958.054.png 951089958.055.png 951089958.057.png 951089958.058.png 951089958.059.png 951089958.060.png 951089958.061.png 951089958.062.png 951089958.063.png 951089958.064.png 951089958.065.png 951089958.066.png 951089958.068.png 951089958.069.png 951089958.070.png 951089958.071.png 951089958.072.png 951089958.073.png 951089958.074.png 951089958.075.png 951089958.076.png 951089958.077.png 951089958.079.png 951089958.080.png 951089958.081.png 951089958.082.png 951089958.083.png 951089958.084.png 951089958.085.png 951089958.086.png 951089958.087.png 951089958.088.png 951089958.090.png 951089958.091.png 951089958.092.png 951089958.093.png 951089958.094.png 951089958.095.png 951089958.096.png 951089958.097.png 951089958.098.png 951089958.099.png 951089958.101.png 951089958.102.png 951089958.103.png 951089958.104.png 951089958.105.png 951089958.106.png 951089958.107.png 951089958.108.png 951089958.109.png 951089958.110.png 951089958.112.png 951089958.113.png 951089958.114.png 951089958.115.png 951089958.116.png 951089958.117.png 951089958.118.png 951089958.119.png 951089958.120.png 951089958.121.png 951089958.123.png 951089958.124.png 951089958.125.png 951089958.126.png 951089958.127.png 951089958.128.png 951089958.129.png 951089958.130.png 951089958.131.png 951089958.132.png 951089958.134.png 951089958.135.png 951089958.136.png 951089958.137.png 951089958.138.png 951089958.139.png 951089958.140.png 951089958.141.png 951089958.142.png 951089958.143.png 951089958.145.png 951089958.146.png 951089958.147.png 951089958.148.png 951089958.149.png 951089958.150.png 951089958.151.png 951089958.152.png 951089958.153.png 951089958.154.png 951089958.156.png 951089958.157.png 951089958.158.png 951089958.159.png 951089958.160.png 951089958.161.png 951089958.162.png 951089958.163.png 951089958.164.png 951089958.165.png 951089958.167.png 951089958.168.png 951089958.169.png 951089958.170.png 951089958.171.png 951089958.172.png 951089958.173.png 951089958.174.png 951089958.175.png 951089958.176.png 951089958.178.png 951089958.179.png 951089958.180.png 951089958.181.png 951089958.182.png 951089958.183.png 951089958.184.png 951089958.185.png 951089958.186.png 951089958.187.png 951089958.189.png 951089958.190.png 951089958.191.png 951089958.192.png 951089958.193.png 951089958.194.png 951089958.195.png 951089958.196.png 951089958.197.png 951089958.198.png 951089958.200.png 951089958.201.png 951089958.202.png 951089958.203.png 951089958.204.png 951089958.205.png 951089958.206.png 951089958.207.png 951089958.208.png 951089958.209.png 951089958.211.png 951089958.212.png 951089958.213.png 951089958.214.png 951089958.215.png 951089958.216.png 951089958.217.png 951089958.218.png 951089958.219.png 951089958.220.png 951089958.222.png 951089958.223.png 951089958.224.png 951089958.225.png 951089958.226.png 951089958.227.png 951089958.228.png 951089958.229.png 951089958.230.png 951089958.231.png 951089958.233.png 951089958.234.png 951089958.235.png 951089958.236.png 951089958.237.png 951089958.238.png 951089958.239.png 951089958.240.png 951089958.241.png 951089958.242.png 951089958.244.png 951089958.245.png 951089958.246.png 951089958.247.png 951089958.248.png 951089958.249.png 951089958.250.png 951089958.251.png 951089958.252.png 951089958.253.png 951089958.255.png 951089958.256.png 951089958.257.png 951089958.258.png 951089958.259.png 951089958.260.png 951089958.261.png 951089958.262.png 951089958.263.png 951089958.264.png 951089958.266.png 951089958.267.png 951089958.268.png 951089958.269.png 951089958.270.png 951089958.271.png 951089958.272.png 951089958.273.png 951089958.274.png 951089958.275.png 951089958.277.png 951089958.278.png 951089958.279.png 951089958.280.png 951089958.281.png 951089958.282.png 951089958.283.png 951089958.284.png 951089958.285.png 951089958.286.png 951089958.288.png 951089958.289.png 951089958.290.png 951089958.291.png 951089958.292.png 951089958.293.png 951089958.294.png 951089958.295.png 951089958.296.png 951089958.297.png 951089958.298.png 951089958.299.png 951089958.300.png 951089958.301.png 951089958.302.png 951089958.303.png 951089958.304.png 951089958.305.png 951089958.306.png 951089958.307.png 951089958.309.png 951089958.310.png 951089958.311.png 951089958.312.png 951089958.313.png 951089958.314.png 951089958.315.png 951089958.316.png 951089958.317.png 951089958.318.png 951089958.320.png 951089958.321.png 951089958.322.png 951089958.323.png 951089958.324.png 951089958.325.png 951089958.326.png 951089958.327.png 951089958.328.png 951089958.329.png 951089958.331.png 951089958.332.png 951089958.333.png 951089958.334.png 951089958.335.png 951089958.336.png 951089958.337.png 951089958.338.png 951089958.339.png 951089958.340.png 951089958.342.png 951089958.343.png 951089958.344.png 951089958.345.png 951089958.346.png 951089958.347.png 951089958.348.png 951089958.349.png 951089958.350.png 951089958.351.png 951089958.353.png 951089958.354.png 951089958.355.png 951089958.356.png 951089958.357.png 951089958.358.png 951089958.359.png 951089958.360.png 951089958.361.png 951089958.362.png 951089958.364.png 951089958.365.png 951089958.366.png 951089958.367.png 951089958.368.png 951089958.369.png 951089958.370.png 951089958.371.png 951089958.372.png 951089958.373.png 951089958.375.png 951089958.376.png 951089958.377.png 951089958.378.png 951089958.379.png 951089958.380.png 951089958.381.png 951089958.382.png 951089958.383.png 951089958.384.png 951089958.386.png 951089958.387.png 951089958.388.png 951089958.389.png 951089958.390.png 951089958.391.png 951089958.392.png 951089958.393.png 951089958.394.png 951089958.395.png 951089958.397.png 951089958.398.png 951089958.399.png 951089958.400.png 951089958.401.png 951089958.402.png 951089958.403.png 951089958.404.png 951089958.405.png 951089958.406.png 951089958.408.png 951089958.409.png 951089958.410.png 951089958.411.png 951089958.412.png 951089958.413.png 951089958.414.png 951089958.415.png 951089958.416.png 951089958.417.png 951089958.419.png 951089958.420.png 951089958.421.png 951089958.422.png 951089958.423.png 951089958.424.png 951089958.425.png 951089958.426.png 951089958.427.png 951089958.428.png 951089958.430.png 951089958.431.png 951089958.432.png 951089958.433.png 951089958.434.png 951089958.435.png 951089958.436.png 951089958.437.png 951089958.438.png 951089958.439.png 951089958.441.png 951089958.442.png 951089958.443.png 951089958.444.png 951089958.445.png 951089958.446.png 951089958.447.png 951089958.448.png 951089958.449.png 951089958.450.png 951089958.452.png 951089958.453.png 951089958.454.png 951089958.455.png 951089958.456.png 951089958.457.png 951089958.458.png 951089958.459.png 951089958.460.png 951089958.461.png 951089958.463.png 951089958.464.png 951089958.465.png 951089958.466.png 951089958.467.png 951089958.468.png 951089958.469.png 951089958.470.png 951089958.471.png 951089958.472.png 951089958.474.png 951089958.475.png 951089958.476.png 951089958.477.png 951089958.478.png 951089958.479.png 951089958.480.png 951089958.481.png 951089958.482.png
 
WYKAZ ELEMENTÓW
programator
powym napięciem zasilania układów cyfrowych
o wartości 3,3 V.
Bardzo istotną i pożyteczną właściwością
zastosowanego układu PLD (U2) jest przystoso-
wanie jego linii I/O do współpracy ze standar-
dami napięciowymi 3,3 V i 5 V (tj. LVTTL i TTL)
– układ ten posiada tolerancję napięcia 5 V ( 5V
Tollerant ).
Wybór typu emulowanego interfejsu pro-
gramatora odbywa się za pomocą nastawnika
binarnego (P1), który może wskazywać jedną
z szesnastu pozycji (tym samym można wybrać
jeden z szesnastu różnych programatorów).
Programator jest podłączany do komputera
PC przez złącze drukarkowe (LPT), które jest
najpopularniejszym sposobem komunikacji
pomiędzy środowiskiem projektowym (aplika-
cją) i obiektem docelowym, programowanym
przez złącze ISP.
Wszystkie linie I/O złącza LPT są doprowadzo-
ne do układu PLD, co pozwala na odwzorowanie
struktury logicznej dowolnego programatora
firmowego. Na potrzeby interfejsu ISP przewi-
dziano siedem dwukierunkowych linii, dostęp-
nych na złączu Z1 – linie te odpowiadają za ste-
rowanie programowanym układem. Wszystkie
wyprowadzenia I/O układu U2, pełniące funkcję
sygnałów emulowanych interfejsów, zostały za-
bezpieczone przed ich przypadkowym zwarciem
lub podaniem na nie zbyt wysokiego napięcia.
Osiągnięto to przez włączenie w ich obwód
szeregowych rezystorów (R2...R25). Rezystan-
cja tych elementów została tak dobrana, aby
ograniczyć również negatywny wpływ długości
zewnętrznych połączeń na jakość parametrów
sygnału cyfrowego przy zapewnieniu odpowied-
nio dużej szybkości narastania napięcia w liniach
ISP programatora.
Dioda D1 sygnalizuje obecność napięcia zasi-
lania 3,3 V oraz poprawną pracę programato-
ra. Na górnej stronie płytki PCB programatora
umieszczono tabelkę opisową, zawierającą skró-
cony opis pełnionych funkcji przez wyprowadze-
nia złącza Z1 w zależności od aktualnego poło-
żenia nastawnika P1. Płytka drukowana została
zaprojektowana z jednostronną warstwą ścieżek
i obustronnym obrysem elementów, natomiast
do budowy układu elektrycznego wykorzystano
ogólnie dostępne elementy SMD (z wyjątkiem
złącz), dzięki czemu uzyskano znaczną minia-
turyzację urządzenia, uproszczono jego montaż
i obniżono całkowity koszt wykonania.
ERD216RSZ), 16 położeń
Z1: gniazdo IDC10: proste ZL231–10PG (lub ką-
towe ZL231–10GK), do druku
moduł XJTAG
Rezystory
R1: 220 V , SMD 0805
R2...R13: 100 V , SMD 0805
R14…R25: 10 k V , SMD 0805
Kondensatory
C1, C2: 10 m F/16V, SMD, tantalowy, typ B
C3...C6: 100 nF, SMD 0805
Półprzewodniki
U1: LE33CD, SMD SO8
U2: XCR3064XL–10VQ44C
D1: dioda LED, czerwona, 3 mm
Inne
J1: listwa kołkowa gold–pin, 2x1, raster
2,54 mm
J2: złącze DB25M: DHP8–25M, męskie, kątowe,
do druku
J3: listwa kołkowa gold–pin, 6x1, raster
2,54 mm
P1: zadajnik kodu ERD116RSZ (lub z gałką
Rezystory
R1..R7: 220 V , SMD 0805
R8...R14: 10 k V , SMD 0805
Kondensatory
C1: 10 m F/16 V, SMD, tantalowy, typ B
C2: 100 nF, SMD 0805
Półprzewodniki
D1: BAT43, SMD
D2: dioda LED, czerwona, 3 mm
U1: 74HC125, SMD
Inne
J1: złącze DB25M: DHP8–25M, męskie, kątowe,
do druku
J2: listwa kołkowa gold–pin, 6x1, raster
2,54 mm
wiązka przewodów połączeniowych CAB_A(B)
ną ostrożność, ponieważ posiada on niewielki
raster wyprowadzeń.
Uruchomienie programatora polega na za-
programowaniu układu U2 plikiem w formacie
JEDEC (*.jed), zawierającym obraz docelowej
konfiguracji. W tym celu należy podłączyć przez
łącze J3 (wyprowadzenia magistrali JTAG ukła-
du U2) firmowy programator Xilinx (np. Paral-
lel Cable III ) lub jego funkcjonalny odpowied-
nik – zakupiony, albo wykonany samodzielnie
(w Internecie dostępnych jest wiele amatorskich
konstrukcji, firma Xilinx również udostępnia
schemat swojej oryginalnej konstrukcji). Autor-
skie opracowanie takiej przystawki umieszczono
też w tym artykule jako moduł uruchomieniowy
XJTAG (schemat ideowy oraz montażowy zo-
stały przedstawione na rys. 3 i 4 ). Jest on bar-
dzo prosty w budowie i nie wymaga szerszego
omówienia.
Moduł XJTAG należy podłączyć poprzez złą-
cze LPT do komputera PC, na którym zostało
zainstalowane darmowe środowisko projekto-
we Xilinx ISE WebPack . Program ten umożli-
wia kompilację i implementację projektów dla
układów programowalnych CPLD i FPGA firmy
Xilinx – jest on niezbędny w przypadku, gdy
zaistnieje potrzeba modyfikacji opisu sprzętu
(pliku VHDL) programatora oraz jego kompila-
cji. Darmową wersję pakietu instalacyjnego ISE
WebPack można pobrać ze strony Xilinx.com po
wcześniejszej rejestracji. Autor projektu zaleca
pobranie jednej ze starszych wersji środowiska
(dostępnych w dziale ISE Classics – kategoria
Design Tools ), np. v7.1i z dodatkowym plikiem
poprawek ServicePack 4 (objętość plików insta-
lacyjnych kolejnych wersji znacznie przekracza
0,5 GB – w wersji v9.1i jest to już 1,4 GB!).
W przypadku gdy nie zamierzamy ingerować
w strukturę logiki programowalnej, a jedynie
chcemy zaprogramować układ U2, możemy
zainstalować specjalną, zubożoną i darmową
wersję środowiska ISE WebPack , zawierającą
niezbędne komponenty do programowania
i konfigurowania układów PLD Xilinx w postaci
aplikacji iMPACT . Taka dystrybucja oprogramo-
wania zajmuje w formie instalacyjnej zaledwie
około 40 MB dla wersji v6.3i (niestety, nie są
one obecnie dostępne na stronie WWW produ-
centa, autor artykułu dysponuje wersją v6.3i).
Po zaprogramowaniu układu U2 należy
sprawdzić całkowity pobór prądu, który po-
winien zawierać się w zakresie 5...10 mA. Ele-
menty użyte do budowy są ogólnodostępne.
Oferowane są przez większość witryn interne-
towych zajmujących się dystrybucją elementów
elektronicznych. Nastawnik kodowy P1 wystę-
puje w kilku wersjach – z pokrętłem lub z nacię-
ciem na śrubokręt, a liczba jego pozycji wynosi
10 lub 16 – wyboru właściwego modelu należy
dokonać po ewentualnej modyfikacji projektu
zawartego w układzie PLD programatora.
Eksploatacja
W logice programowalnej programatora
zaszyto kilka najbardziej popularnych obec-
nie firmowych interfejsów wspomagających
uruchamianie układów z wbudowanym łą-
czem ISP, takich jak struktury FPGA czy też
mikrokontrolery. W tab. 1 przedstawiono
zależność położenia przełącznika P1 od ak-
tualnie wybranego interfejsu. Dla ułatwienia
pracy z urządzeniem, na górnej stronie płytki
drukowanej programatora umieszczono ta-
belkę opisową, w której znajduje się krótka
charakterystyka wyprowadzeń złącza Z1 oraz
nastawnika kodowego P1. Połączenia pomię-
dzy obiektem docelowym a programatorem
można wykonać za pomocą wiązki przewo-
dów lub przy użyciu wykonanej we własnym
zakresie 10–żyłowej tasiemki, zakończonej
obustronnie złączami zaciskanymi typu IDC.
Przed przystąpieniem do pracy należy usta-
wić przełącznikiem P1 właściwy tryb, podłączyć
gniazdo J2 (DB25) do portu równoległego LPT
komputera PC przy pomocy przedłużacza (za-
lecane jest, aby długość kabla nie przekraczała
2 m) oraz doprowadzić tasiemką wieloprze-
wodową (o długości nie większej niż 50 cm)
odpowiednie sygnały sterujące złącza IDC10
do programowanego elementu. Działanie pro-
Montaż i uruchomienie
Rozmieszczenie elementów po obu stronach
płytki drukowanej przedstawiono na rys. 2 .
Montaż elementów należy rozpocząć od przylu-
towania elementów biernych. Następnie należy
zamontować złącza oraz dwa mostki (zworki)
na dolnej stronie elementów, oznaczone od-
cinkami i zakończone obustronnie punktami
lutowniczymi. W ostatniej kolejności montowa-
ne powinny być układy scalone. W przypadku
montażu układu U2 należy zachować szczegól-
34
ELEKTRONIKA PRAKTYCZNA 10/2008
951089958.484.png 951089958.485.png
Uniwersalny programator JTAG/ISP
Rys. 2. Schemat montażowy programatora (strona górna i dolna)
:= „0100”;
constant AVR: std_logic_vector(3 downto 0) :=
„0101”;
constant DATAFLASH: std_logic_vector(3 downto
0) := „0110”;
constant I2C: std_logic_vector(3 downto 0) :=
„0111”;
constant UNIVERSAL: std_logic_vector(3 downto
0) := „1000”;
[...]
PROGRAMMER <= not (N8 & N4 & N2 & N1);
[...]
––sterowanie wyjściem LPT13
process(PROGRAMMER, J3, J6, J7, LPT8)
begin
case PROGRAMMER is
when ALTERA =>
LPT13 <= J7;
when XILINX =>
LPT13 <= J3;
when LATTICE =>
LPT13 <= LPT8;
when ARM =>
LPT13 <= ‘1’;
when DATAFLASH =>
LPT13 <= J6;
when I2C =>
LPT13 <= J3;
when others =>
LPT13 <= ‘–’;
end case;
end process;
[...]
gramatora jest sygnalizowane czerwoną diodą
LED (D1).
Programator współpracuje poprawnie z ukła-
dami, których interfejs ISP jest zgodny ze stan-
dardem napięciowym LVTTL (3,3 V) lub TTL
(5 V), a także jest przystosowany do komuni-
kacji z portem równoległym LPT, operującym na
logice 5 V. Dopuszcza się również możliwość
programowania i konfigurowania układów
z magistralą ISP o poziomach logicznych zgod-
nych z LVTTL (2,5 V), np. matryc FPGA firmy Xi-
linx z interfejsem JTAG (układy serii Spartan 3).
W tym przypadku należy na liniach interfejsu
komunikacyjnego dobrać wartość rezystancji
szeregowych, ograniczających płynący przez nie
prąd (zaleca się wartości z zakresu 200...300 V ).
Problem ten został szerzej opisany na łamach EP
w [1].
Schematy logiczne wszystkich emulowa-
nych przez programator interfejsów zostały
zawarte w materiałach dodatkowych, dołą-
czonych na płycie CDEP10/2008B. Schematy
elektryczne interfejsów firmowych można
znaleźć również w Internecie. Jedynie w przy-
padku dwóch magistral ISP umożliwiają-
cych programowanie układów (tj. DataFlash
i I 2 C) opracowano własny schemat logiczny
( rys. 5 ).
Kod źródłowy
Projekt logiki programowalnej urządzenia
został opracowany w języku VHDL. Do mo-
dyfikacji kodu źródłowego (poniżej umiesz-
czono jego fragment) jest wymagana jego
podstawowa znajomość (choć nie jest to ko-
nieczne – na podstawie krótkiej analizy kodu
można wprowadzać w nim dowolne zmiany
bez potrzeby wgłębiania się w szczegóły języ-
ka VHDL). W części deklaracyjnej ciała archi-
tektury zdefiniowano stałe wektory bitowe,
odwzorowujące nastawy zadajnika kodowe-
go P1 oraz sygnał PROGRAMMER, który niesie
informację o trybie pracy układu.
[...]
architecture RTL of UNIPROG is
signal PROGRAMMER: std_logic_vector(3 downto
0);
constant ALTERA: std_logic_vector(3 downto 0)
:= „0000”;
constant XILINX: std_logic_vector(3 downto 0)
:= „0001”;
constant LATTICE: std_logic_vector(3 downto
0) := „0010”;
constant ARM: std_logic_vector(3 downto 0) :=
„0011”;
constant MSP430: std_logic_vector(3 downto 0)
W ciele architektury opisano procesy kom-
binacyjne za pomocą konstrukcji CASE–WHEN ,
Tab. 1. Nastawy przełącznika P1
i odpowiadający mu wybór fir-
mowych programatorów ISP oraz
układów
Usta-
wienie
prze-
łączni-
ka P1
Interfejs
firmowy pro-
gramatora
Wsparcie progra-
mowania układów
Altera ByteBla-
ster II
Altera FPGA
& CPLD
0
Xilinx Parallel
Cable III
1
Xilinx FPGA & CPLD
Lattice ispDow-
nload Cable
Lattice FPGA
& CPLD
2
ARM Wiggler
Interface
Mikrokontrolery
z rdzeniem ARM
3
Texas Instru-
ments MSP–FET
Mikrokontrolery
MSP430
4
Kanda STK
200/300
Mikrokontrolery
ATMEL AVR
5
6
własny
ATMEL DataFlash
7
własny
I 2 C Bus
dla dalszej rozbu-
dowy
8...15
brak
Rys. 3. Schemat elektryczny modułu XJTAG
35
ELEKTRONIKA PRAKTYCZNA 10/2008
951089958.486.png 951089958.487.png 951089958.488.png 951089958.489.png 951089958.490.png 951089958.491.png 951089958.492.png 951089958.493.png 951089958.495.png 951089958.496.png 951089958.497.png 951089958.498.png 951089958.499.png 951089958.500.png 951089958.501.png 951089958.502.png 951089958.503.png 951089958.504.png 951089958.506.png 951089958.507.png 951089958.508.png 951089958.509.png 951089958.510.png 951089958.511.png 951089958.512.png 951089958.513.png 951089958.514.png 951089958.515.png 951089958.517.png 951089958.518.png 951089958.519.png 951089958.520.png 951089958.521.png 951089958.522.png 951089958.523.png 951089958.524.png 951089958.525.png 951089958.526.png 951089958.528.png 951089958.529.png 951089958.530.png 951089958.531.png 951089958.532.png 951089958.533.png 951089958.534.png 951089958.535.png 951089958.536.png 951089958.537.png 951089958.539.png 951089958.540.png 951089958.541.png 951089958.542.png 951089958.543.png 951089958.544.png 951089958.545.png 951089958.546.png 951089958.547.png 951089958.548.png 951089958.551.png 951089958.552.png 951089958.553.png 951089958.554.png 951089958.555.png 951089958.556.png 951089958.557.png 951089958.558.png 951089958.559.png 951089958.560.png 951089958.562.png 951089958.563.png 951089958.564.png 951089958.565.png 951089958.566.png 951089958.567.png 951089958.568.png 951089958.569.png 951089958.570.png 951089958.571.png 951089958.573.png 951089958.574.png 951089958.575.png 951089958.576.png 951089958.577.png 951089958.578.png 951089958.579.png 951089958.580.png 951089958.581.png 951089958.582.png 951089958.584.png 951089958.585.png 951089958.586.png 951089958.587.png 951089958.588.png 951089958.589.png 951089958.590.png 951089958.591.png 951089958.592.png 951089958.593.png 951089958.595.png 951089958.596.png 951089958.597.png 951089958.598.png 951089958.599.png 951089958.600.png 951089958.601.png 951089958.602.png 951089958.603.png 951089958.604.png 951089958.606.png 951089958.607.png 951089958.608.png 951089958.609.png 951089958.610.png 951089958.611.png 951089958.612.png 951089958.613.png 951089958.614.png 951089958.615.png 951089958.617.png 951089958.618.png 951089958.619.png 951089958.620.png 951089958.621.png 951089958.622.png 951089958.623.png 951089958.624.png 951089958.625.png 951089958.626.png 951089958.628.png 951089958.629.png 951089958.630.png 951089958.631.png 951089958.632.png 951089958.633.png 951089958.634.png 951089958.635.png 951089958.636.png 951089958.637.png 951089958.639.png 951089958.640.png 951089958.641.png 951089958.642.png 951089958.643.png 951089958.644.png 951089958.645.png 951089958.646.png 951089958.647.png 951089958.648.png 951089958.650.png 951089958.651.png 951089958.652.png 951089958.653.png 951089958.654.png 951089958.655.png 951089958.656.png 951089958.657.png 951089958.658.png 951089958.659.png 951089958.662.png 951089958.663.png 951089958.664.png 951089958.665.png 951089958.666.png 951089958.667.png 951089958.668.png 951089958.669.png 951089958.670.png 951089958.671.png 951089958.673.png 951089958.674.png 951089958.675.png 951089958.676.png 951089958.677.png 951089958.678.png 951089958.679.png 951089958.680.png 951089958.681.png 951089958.682.png 951089958.684.png 951089958.685.png 951089958.686.png 951089958.687.png 951089958.688.png 951089958.689.png 951089958.690.png 951089958.691.png 951089958.692.png 951089958.693.png 951089958.695.png 951089958.696.png 951089958.697.png 951089958.698.png 951089958.699.png 951089958.700.png 951089958.701.png 951089958.702.png 951089958.703.png 951089958.704.png 951089958.706.png 951089958.707.png 951089958.708.png 951089958.709.png 951089958.710.png 951089958.711.png 951089958.712.png 951089958.713.png 951089958.714.png 951089958.715.png 951089958.717.png 951089958.718.png 951089958.719.png 951089958.720.png 951089958.721.png 951089958.722.png 951089958.723.png 951089958.724.png 951089958.725.png 951089958.726.png 951089958.728.png 951089958.729.png 951089958.730.png 951089958.731.png 951089958.732.png 951089958.733.png 951089958.734.png 951089958.735.png 951089958.736.png 951089958.737.png
 
realizujące właściwy układ logiczny. Taka bu-
dowa kodu źródłowego pozwala w przejrzy-
sty i czytelny sposób opisać strukturę projek-
tu oraz umożliwia jego adaptację do potrzeb
użytkownika. Podczas modyfikacji projektu
należy pamiętać o stosowaniu stanów nie-
określonych (‘–‘), co wydatnie wpłynie na
stopień minimalizacji funkcji logicznych nie-
zbędnych do realizacji struktury logicznej
i przyczyni się do pomyślnego wpasowania
projektu w docelowy układ CPLD.
Szerzej temat programowania i projekto-
wania układów cyfrowych z użyciem układów
PLD oraz języka VHDL został opisany na ła-
mach Elektroniki Praktycznej oraz w literatu-
rze [4, 5, 6, 7].
Rys. 4. Schemat montażowy modułu XJTAG (strona górna i dolna)
Podsumowanie
Autor korzysta z urządzenia od ponad dwóch
lat – spełnia ono swoją funkcję bez zastrzeżeń.
Użytkownik może w dowolny sposób rozbudo-
wywać programator (i korzystać z niego nieko-
niecznie w celu programowania), np. zaadapto-
wać interfejs kart pamięci SD, MMC, SmartCard
lub SIM, podłączyć sieć rozproszoną czujników
(np. termometrów), sterować wyświetlacza-
mi graficznymi LCD. Możliwości funkcjonalne
urządzenia są spore. Pełna lista układów, które
można zaprogramować za pomocą niniejsze-
go programatora, jest dość długa i obejmuje
z pewnością wiele tysięcy pozycji. Jedynym
znaczącym mankamentem korzystania z progra-
matora jest konieczność posiadania komputera
wyposażonego w port LPT, co obecnie niestety
jest coraz rzadsze z powodu zdominowania ryn-
ku PC przez magistralę USB.
Mirosław Folejewski
Literatura:
[1] Zbysiński P.: PicoBlaze: sposoby konfiguracji
układów FPGA z rodziny Spartan–3, Elektronika
Praktyczna, 10–11/2005
[2] Zbysiński P., Pasierbiński J.: Nowoczesne
metody programowania i konfigurowania
układów PLD, Elektronizacja, 7–8/2001
[3] Zbysiński P.: JTAG – światowy standard te-
stowania i programowania układów cyfrowych,
Elektronika Praktyczna, 1–2/1998
Rys. 5. Schemat logiczny zaimplementowanych w programatorze interfejsów pamięci szerego-
wych DataFlash oraz szyny I 2 C
[4] Kalisz J.: Język VHDL w praktyce, WKŁ,
Warszawa 2002
[5] Skahill K.: Język VHDL. Projektowanie
programowalnych układów logicznych, WNT,
Warszawa 2001
[6] Zbysiński P., Pasierbiński J.: Układy progra-
mowalne – pierwsze kroki, Wydawnictwo BTC,
Warszawa 2002
[7] Pasierbiński J., Zbysiński P.: Układy progra-
mowalne w praktyce, WKŁ, Warszawa 2001
[8] A. Dybkowski: ISP Programmer, http://www.
amwaw.edu.pl/~Adybkows/elka/ispprog.zip
R
E
K
L
A
M
A
36
ELEKTRONIKA PRAKTYCZNA 10/2008
951089958.739.png 951089958.740.png 951089958.741.png 951089958.742.png 951089958.743.png 951089958.744.png 951089958.745.png 951089958.746.png 951089958.747.png 951089958.749.png 951089958.750.png 951089958.751.png 951089958.752.png 951089958.753.png 951089958.754.png 951089958.755.png 951089958.756.png 951089958.757.png 951089958.758.png 951089958.760.png 951089958.761.png 951089958.762.png 951089958.763.png 951089958.764.png 951089958.765.png 951089958.766.png 951089958.767.png 951089958.768.png 951089958.769.png 951089958.772.png 951089958.773.png 951089958.774.png 951089958.775.png 951089958.776.png 951089958.777.png 951089958.778.png 951089958.779.png 951089958.780.png 951089958.781.png 951089958.783.png 951089958.784.png 951089958.785.png 951089958.786.png 951089958.787.png 951089958.788.png 951089958.789.png 951089958.790.png 951089958.791.png 951089958.792.png 951089958.794.png 951089958.795.png 951089958.796.png 951089958.797.png 951089958.798.png 951089958.799.png 951089958.800.png 951089958.801.png 951089958.802.png 951089958.803.png 951089958.805.png 951089958.806.png 951089958.807.png 951089958.808.png 951089958.809.png 951089958.810.png 951089958.811.png 951089958.812.png 951089958.813.png 951089958.814.png 951089958.816.png 951089958.817.png 951089958.818.png 951089958.819.png 951089958.820.png 951089958.821.png 951089958.822.png 951089958.823.png 951089958.824.png 951089958.825.png 951089958.827.png 951089958.828.png 951089958.829.png 951089958.830.png 951089958.831.png 951089958.832.png 951089958.833.png 951089958.834.png 951089958.835.png 951089958.836.png 951089958.838.png 951089958.839.png 951089958.840.png 951089958.841.png 951089958.842.png 951089958.843.png 951089958.844.png 951089958.845.png 951089958.846.png 951089958.847.png 951089958.849.png 951089958.850.png 951089958.851.png 951089958.852.png 951089958.853.png 951089958.854.png 951089958.855.png 951089958.856.png 951089958.857.png 951089958.858.png 951089958.860.png 951089958.861.png 951089958.862.png 951089958.863.png 951089958.864.png 951089958.865.png 951089958.866.png 951089958.867.png 951089958.868.png 951089958.869.png 951089958.871.png 951089958.872.png 951089958.873.png 951089958.874.png 951089958.875.png 951089958.876.png 951089958.877.png 951089958.878.png 951089958.879.png 951089958.880.png 951089958.883.png 951089958.884.png 951089958.885.png 951089958.886.png 951089958.887.png 951089958.888.png 951089958.889.png 951089958.890.png 951089958.891.png 951089958.892.png 951089958.894.png 951089958.895.png 951089958.896.png 951089958.897.png 951089958.898.png 951089958.899.png 951089958.900.png 951089958.901.png 951089958.902.png 951089958.903.png 951089958.905.png 951089958.906.png 951089958.907.png 951089958.908.png 951089958.909.png 951089958.910.png 951089958.911.png 951089958.912.png 951089958.913.png 951089958.914.png 951089958.916.png 951089958.917.png 951089958.918.png 951089958.919.png 951089958.920.png 951089958.921.png 951089958.922.png 951089958.923.png 951089958.924.png 951089958.925.png 951089958.927.png 951089958.928.png 951089958.929.png 951089958.930.png 951089958.931.png 951089958.932.png 951089958.933.png 951089958.934.png 951089958.935.png 951089958.936.png 951089958.938.png 951089958.939.png 951089958.940.png 951089958.941.png 951089958.942.png 951089958.943.png
Zgłoś jeśli naruszono regulamin