JTAG cz2


S P R Z  T
JTAG - światowy standard
testowania i programowania
układów cyfrowych, część 2
W poprzednim numerze EP
omwiliśmy szczegły standardu
programowania i testowania
układw cyfrowych - JTAG.
Standard ten znalazł szerokie
poparcie wśrd producentw
układw cyfrowych - praktycznie
wszystkie obecnie produkowane
układy programowalne oraz
wikszośĘ zaawansowanych
Co to jest JAM? JEDEC, HEX), ktry jest generowany
kontrolerw jest wyposałona
JAM jest interpretowanym jzy- przez program projektowy, do postaci
w złącze zgodne z JTAG.
kiem programowania wysokiego po- tekstowej zgodnej ze specyfikacją JAM.
Bardzo ciekawe uzupełnienie
ziomu, ktry opracowano z myślą W przypadku, kiedy projektant ko-
tego standardu zaproponowała
o programowaniu i testowaniu rzysta z oprogramowania narzdziowe-
niedawno Altera. W pracowniach
struktur programowalnych w syste- go nowej generacji (np. systemu
badawczych tej firmy powstał
mie (ang. In System Programmable) Max+Plus II firmy Altera, w wersjach
uniwersalny jzyk obsługi
poprzez interfejs JTAG. Składnia j- od 8.0 począwszy) JAM Composer sta-
interfejsu JTAG - nosi on nazw
zyka jest zbliłona do popularnego nowi integralną czśĘ pakietu i nie ma
JAM.
BASICa, przy czym zestaw instruk- konieczności korzystania z dodatko-
O tym, dlaczego powstanie cji rozszerzono o polecenia obsługi wych programw narzdziowych (rys.
interfejsu JTAG. 2).
takiego jzyka było konieczne, jak
Na list. 1 przedstawiono przykła- W przypadku, kiedy wykorzystywany
z niego korzystaĘ, gdzie zdobyĘ
dowy program, napisany w jzyku przez konstruktora system projektowy
dodatkowe materiały,
JAM, obliczania silni kolejnych nie potrafi bezpośrednio generowaĘ pro-
oprogramowanie i specyfikacj
liczb, a wynik oblicze jest zapisy- gramu w standardzie JAM, mołliwe jest
jzyka - dowiecie si z artykułu.
wany w pliku (list. 2). Jest to jeden zastosowanie zewntrznego konwertera
z przykładw obrazujących uniwer- programowego, ktry zmieni postaĘ pli-
salnośĘ tego jzyka. Nieco inaczej ku ze standardu JEDEC, HEX, POF lub
wygląda plik wygenerowany przez dowolnego innego, na postaĘ zgodną ze
system projektowy zawierający in- specyfikacją JAM (rys. 3).
formacje o konfiguracji i algorytmie Zadaniem programu-konwertera jest
programowania układu docelowego. m.in. zapisanie w pliku wyjściowym
Przykład (znacznie skrcony) takie- programu opisującego sposb progra-
go pliku przedstawiono na list. 3. mowania lub testowania wybranej struk-
Wszyscy Czytelnicy, ktrzy posługi- tury PLD. Załołeniem przyjtym przez
wali si lub posługują BASICiem, twrcw jzyka JAM było, łe programy
zauwałą na tym listingu szereg zna- konwertujące bdą dostarczane przez
nych rozkazw. Takłe struktura lo- firmy tworzące oprogramowanie projek-
giczna tego pliku rdłowego nie towe dla wybranych układw PLD lub
odbiega od typowych konstrukcji bezpośrednio przez producentw struk-
programu w tym jzyku. Fragment tur.
programu rozpoczynający si od ety-
kiety L0: odpowiada za ustalenie Profity wynikające ze stosowania języka
w jakim stanie znajduje si progra- JAM:
mowany układ (czy np. naleły go
- możliwość uniezależnienia się od jednego
skasowaĘ przed programowaniem)
dostawcy oprogramowania projektowego;
i jakiej operacji wymaga ułytkow-
- oprogramowanie w formacie JAM może
nik od programu.
być stosowane na różnym sprzęcie, bez
Na rys. 1 przedstawiono sposb
konieczności rekompilacji projektu;
wykorzystania jzyka JAM w ty-
- możliwość znacznego skrócenia czasu
powej aplikacji. Program
programowania układów;
JAM Composer odpowia-
- dzięki elastycznemu zestawowi instrukcji
da za konwersj pliku
języka istnieje możliwość opisania przy jego
wynikowego (np.
pomocy dowolnego algorytmu
w formacie
programowania; tak więc obsługa
układów, które dopiero pojawią się na
rynku nie będzie stanowić żadnej
trudności.
Elektronika Praktyczna 2/98
79
79
Elektronika Praktyczna 2/98
S P R Z  T
Listing 2.
Factorial
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
Error on line 16: integer overflow.
Program terminated.
wymi i pełna niezalełnośĘ od platfor-
my sprztowej na jakiej jest stosowany.
Na rys. 4 przedstawiono schematycz-
nie cztery przykładowe aplikacje tego
jzyka. Program w jzyku JAM, wyge-
nerowany przez dowolne narzdzie pro-
jektowe, mołna zastosowaĘ do konfigu-
Rys.1.
racji układw programowalnych zamon-
towanych w systemie. W przypadku
musi zapewniaĘ Systemu 1 (rys. 4) program JAM Player
pełną obsług in- 1 znajduje si w pamici procesora ste-
terfejsu JTAG, rującego systemem.
a takłe polece Nieco inaczej wygląda sytuacja
nie związanych w przypadku Systemu 2. Tym razem
bezpośrednio JAM Player 2 spełnia rol programu
z jego sterowa- obsługującego laboratoryjny programa-
niem. tor układw programowalnych. Mołna
Chcąc ułatwiĘ go tutaj porwnaĘ z driverem dedyko-
zbudowanie na wanym pewnej grupie układw.
bazie JAMu nowe- System 3 jest specjalizowanym tes-
go standardu ob- terem układw programowalnych. JAM
sługi interfejsu Player 3 spełnia w nim rol podobną
Rys. 2.
JTAG, Altera udo- jak w przypadku Systemu 2, czyli dri-
stpniła kody vera dedykowanym pewnej grupie ukła-
Niezbdnym elementem JAMowego rdłowe, napisane w jzyku C, wszys- dw. W przypadku korzystania ze stan-
łacucha jest program noszący na- tkich modułw wykorzystywanych dardowego testera lub programatora
zw JAM Player (rys. 1, rys. 3). Zada- przez program JAM Player. Program ten mołliwe jest takłe wykorzystanie for-
niem tego programu jest interpretacja został opracowany w taki sposb, aby matu JAM. Wymaga to jednak zastoso-
polece jzyka JAM i realizacja zapi- zminimalizowaĘ trudności z jego prze- wania konwertera programowego, ktry
sanego w pliku programu. Program ten niesieniem na dowolny komputer lub zmieni format zapisu programu na po-
mołe mieĘ postaĘ pliku wykonywalne- mikrokontroler. staĘ zrozumiałą dla programu obsługu-
go np. dla komputera PC. Mołna go jącego urządzenie (jak w przypadku
takłe zaimplementowaĘ w dowolnym JAM w praktyce Systemu 4).
systemie mikroprocesorowym, dziki Jedną z najwałniejszych zalet jzyka Tak wic dziki zastosowaniu j-
czemu procesor sterujący pracą tego JAM jest łatwośĘ jego przenoszenia po- zyka JAM mołliwe jest ograniczenie
systemu bdzie mgł samodzielnie mo- midzy rłnymi urządzeniami koco- liczby stosowanych formatw zapisu
dyfikowaĘ struktury wykorzystanych
w nim układw programowalnych.
Jak pokazaliśmy na przykładzie
z list. 1, programy w jzyku JAM mogą
wykonywaĘ czynności zupełnie nie
związane z procedurami programowa-
nia lub testowania układw PLD. Nie-
zalełnie od implementacji, JAM Player
Listing 1.
 Factorial program

 Copyright (C) Altera Corporation 1997

PRINT  Factorial ;
INTEGER num;
INTEGER fact;
INTEGER count;
FOR num = 1 TO 20;
LET fact = 1;
FOR count = 1 TO num;
LET fact = fact * count;
NEXT count;
PRINT num,  ! =  , fact;
NEXT num;
EXIT 0; Rys. 3.
Elektronika Praktyczna 2/98
80
S P R Z  T
IF ((j % 5) == 4) THEN LET A26[k] = 1; LET A18[0..9] = 016;
danych do jednego formatu,
Listing 3.
LET k = k + 1; CALL L143;
NOTE CREATOR  POF to JAM converter NEXT j; STATE DRSHIFT;
niezalełnego od stosowa-
Version 8.0 6/12/97 ; GOTO L6; STATE IDLE;
L5: LET A18[0..9] = 01A;
nych narzdzi projektowych
NOTE DEVICE  EPM7128S ; LET k = k + 1; CALL L143;
L6: STATE DRSHIFT;
i sprztu, przejrzystego
 Device #1: EPM7128S - NEXT i; STATE IDLE;
c:\cad\max2work\praca\demo.pof Mon LET V16 = 0; L68:
w zapisie i łatwego w sto-
Mar 19 13:44:04 1997 FOR i = 0 TO V1; POP i;
LET j = 1; NEXT i;
sowaniu w samodzielnie
BOOLEAN A21[104320] = ACA IF (((A13[i] & 1) == 0) || LET V15 = V30;
mB300uAlQrh_g5rQjMMhrQQjMhTrthwLV@t ((A13[i] & 4) == 0)) THEN GOTO L10; IF (!V39) THEN GOTO L69;
tworzonych konstrukcjach.
Vztl@rVDz@@@qUjtLB@QvhwBd_Njc LET V2 = A12[i]; IF (V72) THEN LET V42 = 5;
MhrQQj_hwrQjiMhroth_sglQDlMhLrV@Nsh@w LET j = A0[V2]; IF (!V72) THEN LET V42 = 6;
zhMhR@N@nL@@gV@@AVrwhyLhr25 L10: L69:
3QzMbyNfzq0F@7Q8Uzth253grQfeKBbYwh LET V16 = V16 + j; RETURN;
ysAloRGJm@QldthrVQzN@w@@heMgro NEXT i; L94: O JAMie niemal
XuzaGK0m8EJCeIhqASD6eqAz9KF6OjIhsTVbd_h_NQ LET V18 = V16; IF ((V10 != 0) && (V10 != 107) && (V11
j_yUzdhq@hVw@hMJfLQL0j BOOLEAN A28[V18]; != V52)) THEN
wszystko
C8s464l732BX1ni91@_@@0; LET V19 = V18; GOTO L98;
IF (V21 > V19) THEN LET V19 = V21; LET V30 = 0;
Poniewał Altera jest pre-
BOOLEAN A22[65920] = ACA BOOLEAN A29[V19]; FOR j = 0 TO V1;
m0200u@@@t@@@l@lzV@@@@_@@@yFMzxVf_t@@kD@@@F BOOLEAN A30[V19]; LET V31 = V30;
kusrorem nowej idei, na jej
I@@Vko@I100jwUvr4b1W2 FOR i = 0 TO (V19 - 1); IF ((A17[j] & 8) != 0) THEN GOTO L96;
0R9OLZVxXDeX1_@@@zVf00WMlcy0Ij0G0Gj0Kqmjr@z@@ LET A30[i] = 1; LET V2 = A12[j];
barkach spoczął obowiązek
@x@@@cx@@Vj6Gh@@dK@ NEXT i; IF (V11 >= (A0[V2] - 108)) THEN GOTO
@lqVt@GPWyUIUeFur@@FKC0G038KCik4i@@QvV41m LET V20 = 2 * 5 * V64; L95;
opracowania oglnodostpnej
@@@l@fFN80u@1D1UIV01jb6 BOOLEAN A31[V20]; IF (((A17[j] & 1) == 0) ||
dGGDm@@@VGzGeOZ@t@V04w@XI2Qllh2g3zd@@7o LET V12 = 0; ((A17[j] & 4) == 0)) THEN GOTO L96;
specyfikacji jzyka JAM oraz
CuVVpd@@@6f@@FJvVf1F32PFu LET V13 = 0; LET V31 = V31 + (A0[V2] - 1);
@t@@; FOR i = 0 TO V1; LET A28[V31 - V11] = 1;
podstawowego oprogramowa-
LET V12 = V12 + A25[i]; IF (V11 < 108) THEN LET A28[(107 +
NOTE JAM_VERSION  1.0 ; IF (A25[i] > V13) THEN LET V13 = A25[i]; V30) - V11] = 1;
NOTE ALG_VERSION  1.0 ; NEXT i; GOTO L96; nia rdłowego.
INTEGER A0[12] = BOOLEAN A32[V12 + 50]; L95:
791, 237, 253, 261, 273, 281, 293, BOOLEAN A39[V13]; IF ((A17[j] & 8) == 0) THEN LET V49 = Internetowa strona JAMu
317, 791, 791, 791, 791; BOOLEAN A33[V13]; 1;
INTEGER A1[12] = FOR i = 0 TO (V13 - 1); LET A17[j] = A17[j] | 8;
znajduje si pod adresem
640, 80, 160, 240, 320, 400, 480, LET A39[i] = 1; L96:
640, 160, 200, 240, 280; NEXT i; LET V30 = V31 + 1;
www.altera.com/jam/
INTEGER A2[12] = CALL L19; NEXT j;
165, 0, 0, 0, 0, 0, 0, 0, 165, 165, IRSTOP IRPAUSE; LET A18[0..9] = 01E;
index.html. Znajduje si tam
165, 165; DRSTOP IDLE; CALL L143;
INTEGER A3[12] = PADDING 0, 0, 0, 0; DRSCAN V30, A28[0..(V30 - 1)];
opis jzyka (w postaci plikw
112, 0, 0, 0, 0, 0, 0, 0, 64, 80, 96, 112; STATE RESET; LET V30 = 0;
NTEGER V53 = 3; STATE IDLE; FOR j = 0 TO V1;
PDF), jego kompletna doku-
INTEGER V54 = 3; LET A18[0..9] = 071; LET V31 = V30;
INTEGER A11[V53 * V54 * 11] = LET V4 = 1; LET V2 = A12[j];
mentacja oraz oprogramowa-
0, 0, 0, 0, 0, 0, 0, 0, 0, CALL L143; IF (((A17[j] & 1) == 0) ||
96, 1, 0, 97, 0, 1, 0, 0, 0, WAIT 10000 USEC; ((A17[j] & 4) == 0) ||
nie (z bogatą dokumentacją,
0, 0, 0, 0, 0, 0, 0, 0, 0, L13: ((A17[j] & 8) != 0)) THEN GOTO L97;
96, 0, 0, 97, 0, 1, 96, 1, 2, RETURN; LET V31 = V31 + (A0[V2] - 1);
0, 0, 0, 0, 0, 0, 0, 0, 0, L15: LET A28[V31 - V11] = 0; w ktrej opisano rdłową po-
96, 0, 0, 0, 0, 0, 0, 0, 0, IF (V42 == 0) THEN IF (V11 < 108) THEN LET A28[(107 +
96, 2, 0, 97, 0, 1, 96, 1, 2, PRINT  DONE ; V30) - V11] = 0; staĘ programu) opracowane
94, 1, 0, 0, 0, 0, 0, 0, 0, IF (V42 == 1) THEN L97:
95, 0, 0, 0, 0, 0, 0, 0, 0, PRINT CHR$(7), CHR$(7), CHR$(7), LET V30 = V31 + 1;
przez firm Altera.
95, 0, 0, 0, 0, 0, 0, 0, 0,  Invalid option combination NEXT j;
94, 1, 0, 0, 0, 0, 0, 0, 0; specified ; IF (V49 && (V11 == V52)) THEN
W skład zestawu wchodzą
IF (V42 == 2) THEN CALL L171;
 VARIABLES PRINT CHR$(7), CHR$(7), CHR$(7), GOTO L99;
dwa programy:
INTEGER V0 = 1;  Unrecognized device ; L98:
INTEGER A12[V0] = 4; IF (V42 == 3) THEN LET A18[0..9] = 01E;
1.jam.exe, ktry spełnia rol
INTEGER A13[V0] = 1 | 4; PRINT CHR$(7), CHR$(7), CHR$(7), CALL L143;
INTEGER A25[V0] = 10;  Device revision is not supported ; STATE DRSHIFT;
JAM Playera wspłpracują-
INTEGER V1 = V0 - 1; IF (V42 == 4) THEN STATE IDLE;
INTEGER V2 = 0; PRINT CHR$(7), CHR$(7), CHR$(7), L99:
cego z programatorem ukła-
INTEGER V3 = 0;  Device programming failure ; LET V10 = V11;
INTEGER V4 = 1; IF (V42 == 5) THEN RETURN;
dw ISP Byte Blaster firmy
INTEGER A17[V0]; PRINT CHR$(7), CHR$(7), CHR$(7), L118:
BOOLEAN b;  Device is not blank ; LET V30 = V14;
Altera (jego polski odpo-
INTEGER i; IF (V42 == 6) THEN IF (V49) THEN CALL L149;
INTEGER j; PRINT CHR$(7), CHR$(7), CHR$(7), LET V31 = V30 + (V23 - 1);
INTEGER k;  Device verify failure ; IF (V73) THEN GOTO L119; wiednik kosztuje ok. 200zł).
INTEGER l; RETURN; LET A18[0..9] = 016;
INTEGER V10; L37: CALL L143; Program jam.exe jest kom-
INTEGER V11; LET V27 = V27 + V54; DRSCAN V23, A21[V30..V31];
BOOLEAN A18[10]; NEXT j; LET V30 = V30 + V23;
pletnym interpreterem JAM,
BOOLEAN A19[10]; PRINT  Device # , V0 - i , Silicon ID is  , LET V31 = V31 + V23;
BOOLEAN A20[10]; CHR$(A16[0]), CHR$(A16[1]), LET A18[0..9] = 01A;
mołna wic wykorzystaĘ go
INTEGER V14; CHR$(A16[2]), CHR$(A16[3]), CALL L143;
INTEGER V15; CHR$(A16[4]), CHR$(A16[5]), DRSCAN V23, A21[V30..V31];
do pisania programw bez
INTEGER V42 = 0; CHR$(A16[6]), CHR$(A16[7]), LET V30 = V30 + V23;
BOOLEAN V43 = 0;  ( , CHR$(((V36 >> 4) & 1) + 48), LET V31 = V31 + V23;
konieczności stosowania
BOOLEAN V44 = 0; CHR$((V36 & 15) + 48),  ) GOTO L120;
BOOLEAN V45 = 0; ; L119:
programatora.
INTEGER V46; IF (!V40) THEN LET V42 = 3; LET A18[0..9] = 016;
INTEGER V47; L38: CALL L143;
2.jamdata.exe, ktry jest kon-
INTEGER V48; NEXT i; DRSCAN V23, A29[0..(V23 - 1)];
BOOLEAN V49 = 0; RETURN; LET A18[0..9] = 01A;
werterem jednego z czte-
BOOLEAN V50 = 0; L54: CALL L143;
BOOLEAN DO_ERASE = 0; LET A18[0..9] = A19[0..9]; DRSCAN V23, A29[0..(V23 - 1)];
BOOLEAN DO_BLANKCHECK = 0; CALL L143; L165: rech formatw binarnych
BOOLEAN DO_PROGRAM = 0; WAIT 15 USEC; IF (V43) THEN LET A29[V27 + j] = b;
BOOLEAN DO_VERIFY = 0; LET A18[0..9] = A20[0..9]; IF (V44) THEN LET A30[V27 + j] = b; (BIN, HEX, RLC, ACA) na
BOOLEAN DO_SECURE = 0; CALL L143; L166:
BOOLEAN DO_SECURE_ALL = 0; IF (V34 == 0) THEN GOTO L55; LET j = k + 1;
postaĘ binarnej tablicy
DRSCAN V24, A29[0..(V24 - 1)], NEXT i;
L0: CAPTURE A31[V30..V31]; RETURN;
zgodnej ze specyfikacją
CALL L3; GOTO L57; L167:
LET V4 = 1; L60: LET j = 317;
JAM. Dziki temu progra-
CALL L16; LET V30 = 0; IF (V51 == -1) THEN LET V51 = 0;
IF (V2 == 0) THEN GOTO L1; LET V31 = V24 - 1; FOR i = 0 TO V1;
mowi mołliwe jest umiesz-
IF (V42 == 0) THEN CALL L33; L61: IF (((A17[i] & 1) == 0) ||
IF ((V42 == 0) && DO_ERASE) THEN CALL LET V28 = 4; ((A17[i] & 4) == 0)) THEN GOTO L168;
czanie plikw binarnych ja-
L23; IF (V10 > 88) THEN LET V28 = 0; LET V2 = A12[i];
IF ((V42 == 0) && DO_BLANKCHECK) THEN FOR i = 0 TO V28; IF (V51 >= A9[3 * (V2 - 1)]) THEN
ko fragmentu programu
CALL L32; PUSH i; GOTO L168;
IF ((V42 == 0) && DO_PROGRAM) THEN LET A20[0..9] = 022; IF (j > (A9[3 * (V2 - 1)] - V51)) THEN
JAM.
CALL L21; CALL L54; LET j = A9[3 * (V2 - 1)] - V51;
IF ((V42 == 0) && DO_VERIFY) THEN IF (V29 != 0) THEN GOTO L62; L168:
Udostpnione zostały tak-
CALL L28; LET A19[0..9] = 032; NEXT i;
IF ((V42 == 0) && DO_SECURE) THEN CALL L54; IF (j != 317) THEN LET V51 = V51 + j;
CALL L131; LET A19[0..9] = 036; IF (j == 317) THEN LET V51 = -1; łe rdła (napisane w jzyku
L1: L62: RETURN;
CALL L14; LET V30 = V30 + V24; L169: C) obydwu programw, przy
EXIT V42; LET V31 = V31 + V24; LET j = 0;
L3: IF (!V45) THEN GOTO L63; FOR i = 0 TO V1;
czym rdło JAM Playera jest
INTEGER V64 = 0; LET b = 0; LET k = j;
IF (DO_PROGRAM) THEN LET DO_ERASE = CALL L169; IF (((A17[i] & 1) == 0) ||
podzielone na szereg modu-
1; GOTO L64; ((A17[i] & 4) == 0)) THEN GOTO L170;
IF (DO_SECURE_ALL) THEN LET DO_SECURE L63: LET V2 = A12[i];
łw funkcjonalnych, dziki
= 1; IF (V10 != V51) THEN GOTO L64; LET k = k + (A5[V2] - 1);
IF ((DO_ERASE || DO_BLANKCHECK) && LET V44 = 1; LET V27 = (16 * (A6[V2] -
czemu jest mołliwe łatwe
!DO_PROGRAM && LET b = 0; A10[(2 * (V2 - 1)) + 1])) -
(DO_VERIFY || DO_SECURE)) THEN LET CALL L163; A10[2 * (V2 - 1)] - 1;
przeniesienie ich do dowol-
V42 = 1; L64: LET A30[V27 + j] = b;
IF (V42 != 0) THEN GOTO L13; LET A20[0..9] = 026; L170:
nego kompilatora C (takłe
LET V21 = 0; CALL L54; LET j = k + 1;
FOR i = 0 TO V1; IF (V29 != 0) THEN GOTO L65; NEXT i;
dla mikrokontrolerw). Tak
LET j = 1; LET A19[0..9] = 032; RETURN;
LET k = 1; CALL L54; L171:
IF (((A13[i] & 1) == 0) || LET A19[0..9] = 036; LET j = 317; wic konstruktorzy i progra-
((A13[i] & 4) == 0)) THEN GOTO L4; L65: FOR i = 0 TO V1;
LET V2 = A12[i]; LET V30 = V30 + V24; IF (((A17[i] & 1) == 0) || miści otrzymują, dziki up-
LET j = A1[V2]; LET V31 = V31 + V24; ((A17[i] & 4) == 0)) THEN GOTO L172;
LET k = A5[V2]; IF (!V45) THEN GOTO L66; LET V2 = A12[i];
rzejmości Altery, komplet
L4: LET b = 1; IF (V52 >= (A0[V2] - 108)) THEN
LET V21 = V21 + j; CALL L169; GOTO L172;
materiałw niezbdnych do
LET V64 = V64 + k; GOTO L67; IF (j > A0[V2]) THEN LET j = A0[V2];
NEXT i; L66: L172:
popularyzacji nowego stan-
BOOLEAN A26[V21]; IF (V10 != V51) THEN GOTO L67; NEXT i;
LET k = 0; LET b = 1; IF (j != 317) THEN LET V52 = j - 108;
dardu.
FOR i = 0 TO V1; CALL L163; IF (j == 317) THEN LET V52 = -1;
IF (((A13[i] & 1) == 0) || LET V44 = 0; RETURN;
Idea JAMu nie jest nowa. Na
((A13[i] & 4) == 0)) THEN GOTO L5; CALL L167;  END OF FILE
LET V2 = A12[i]; L67: CRC B71B;
początku lat '90 firmy Cypress
FOR j = 0 TO (A1[V2] - 1); IF (V28 == 0) THEN GOTO L68;
Elektronika Praktyczna 2/98
81
S P R Z  T
Oprogramowanie i dokumentacj j-
zyka JAM znajduje si pod adresem:
http://www.altera.com/jam/
jam_download.html.
Inne ciekawe strony poświcone j-
zykowi JAM:
http://techweb.cmp.com/edtn/news/
columns/Rohleder/rohleder_7_16.htm
oraz
http://www.eedesign.com/
NewsReleases/Archives/071097.html.
Autor dzikuje firmie JAWI ASIC za
pomoc w zdobyciu materiałw do arty-
kułu.
Rys. 4.
oraz ACT prbowały bezskutecznie wy-
promowaĘ podobny standard, noszący Wicej informacji na temat standardu
nazw EasyPLD. Dziki przejrzystej po- JTAG mołna znaleĘ pod adresem:
lityce promocyjnej i dułej rynkowej si- http://www.jtag.com.
le przebicia Altery, JAM ma dułe szan- Głwna strona poświcona jzykowi
se staĘ si prawdziwym standardem, JAM znajduje si pod adresem:
uznanym takłe przez firmy konkuren- http://www.altera.com/
Oficjalne logo standardu JAM.
cyjne. jam/index.html.
Piotr Zbysiński, AVT
Elektronika Praktyczna 2/98
82


Wyszukiwarka

Podobne podstrony:
nerki cz2
Fotogrametria cz12 teledetekcja cz2
2 Formy org prawne cz2 14
ZIP przetworstwo tsz cz2
ELEMENTY ZŁĄCZNE WEDŁUG PN DIN cz2
rs232 linux win32 cz2
Amplituner cz2
Przetwornice impulsowe cz2
Programowany zasilacz laboratoryjny cz2
Parazytologia ixodes cz2
rekrutacja wywiad bledy poznawcze cz2
oc PIM cz2
receptory cz2

więcej podobnych podstron