Tryby pracy i podstawowe instrukcje
Wszystkie urządzenia wykorzystujące podczas testowania ścieżkę krawędziową mogą
pracować w dwóch trybach pracy. Pierwszy tzw. nie inwazyjny, oraz drugi nazywany testowym
trybem pracy.
1. Instrukcje nieinwazyjnego trybu pracy
Sterownik TAP i jego wyprowadzenia mogą być obsługiwane asynchronicznie
i
niezależnie
od wewnętrznej logiki układu. Pozwala to na używanie ścieżki krawędziowej
i
sygnałów
Sterownika TAP bez przerywania wykonywania operacji badanego układu scalonego.
Rozkazy wykonujące się w takim trybie pracy opisane są przez Standard IEEE 1149.1.
Należą do nich między innymi 2 obowiązkowe instrukcje (BYPASS i SAMPLE/PRELOAD) oraz 2
opcjonalne instrukcje (IDCODE i USERCODE).
Instrukcja BYPASS
Wymagana instrukcja BYPASS powoduje, że jedno bitowy Rejestr Obejścia zostaje
włączony pomiędzy wyprowadzenia TDI i TDO. Instrukcja BYPASS pozwala na szeregową
transmisje danych przez układ scalony z linii TDI i TDO bez wywołania w nim efektów. Standard
JTAG zakłada, że instrukcja składająca się z samych ‘1’ musi zostać zdekodowana przez Rejestr
Instrukcji jako instrukcja BYPASS.
Gdy instrukcja BYPASS jest wykonywana, Rejestr Obejścia ładowany jest równolegle z
sygnałem niskim na stanie CAPTURE-DR. Ta instrukcja pozwala na testowanie pojedynczego
układu, ustawiając inne urządzenia w trybie bezczynnym (Rys. 15.).
Rys. 15. Instrukcja Bypass
Instrukcja SAMPLE/PRELOAD
Wymagana instrukcja SAMPLE/PRELOAD podczas wykonywania wybiera Rejestr
Brzegowy jako połączenie pomiędzy TDI i TDO.
Gdy ma miejsce
ta instrukcja, to nie następuje
rozłączenie wewnętrznej logiki układu od jego wyprowadzeń (układ pozostaje
w
normalnym trybie
pracy). Kod instrukcji SAMPLE/PRELOAD nie jest zdefiniowany
w
standardzie.
Rozkaz ten ma dwie funkcje, zależące od stanu Sterownika TAP. Pierwsza to funkcja
SAMPLE zdarza się przy przechodzeniu Sterownika TAP przez stan CAPTURE-DR druga to
PRELOAD uaktywnia się w momencie przechodzenia kontrolera przez stan UPDATE-DR.
Funkcja SAMPLE
Wszystkie przerzutniki z części przechwytującej (CAP) załadowują stany z sygnałów z
którymi są połączone. Dane te mogą wtedy zostać przesunięte dalej przez TDO do weryfikacji. W
ten sposób wejścia układu scalonego albo sygnały z logiki wewnętrznej systemu mogą być
obserwowane (Rys. 16.).
Rys. 16. Instrukcja SAMPLE/PRELOAD
Funkcja PRELOAD
Funkcja PRELOAD sprawia, że aktualne dane są przesuwane by nowe dane mogły zostać
ustawione. Przerzutniki z części CAP otrzymują te dane, które następnie są przenoszone do
przerzutników w części UPD w komórce BSC, oczywiście dzieje się to w momencie, gdy
Sterownik TAP ustawi się w pozycji UPDATE-DR (Rys. 16.).
Kiedy sygnał sterujący multipleksera Mode jest ustawiony przez instrukcje testującą,
potrzebującą dostępu do wyprowadzeń (w stanie UPDATE-IR), to multiplekser ustawi się w stan
uaktualnienia źródła danych. Funkcja PRELOAD pozwala nam sprawdzić czy mamy właściwy
zestaw danych zanim to przełączanie będzie miało miejsce.
Instrukcja IDCODE
Rys. 17. Instrukcja IDCODE
Opcjonalna instrukcja IDCODE pozwala układowi scalonemu, pozostać w jego
funkcjonalnym trybie pracy i jednocześnie wskazuje na opcjonalny Rejestr Identyfikacji Urządzenia
(ang. Register Identification Device), włączając go pomiędzy linie TDI i TDO (Rys. 17.). Rejestr
Identyfikacji Urządzenia jest to 32 bitowy rejestr przesuwny zawierający
w
postaci kodu informację
dotyczącą producenta układu scalonego, typu urządzenia i kodu wersji (Rys. 18.). Wartość Rejestru
Identyfikacji Urządzenia jest załadowana podczas przechodzenia maszyny stanów przez stan
CAPTURE-DR. Standard 1149.1 określa, że najmniej znaczący bit takiego kodu musi być ‘1’. Jest
to pierwszy bit, który zostanie przesunięty na wyjście poprzez TDI.
Rys. 18. 32 bitowy Rejestr Identyfikacji Urządzenia
Zauważyć trzeba, że, jeżeli instrukcja IDCODE jest załadowana, a nie ma w urządzeniu
Rejestru Identyfikacji Urządzenia, wtedy instrukcja IDCODE powinna zostać zinterpretowana jak
gdyby to była instrukcja BYPASS. Kod bitowy tej instrukcji jest zdefiniowany przez producenta.
Podczas opisu stanu TEST-LOGIC-RESET zostało powiedziane, że Rejestr Instrukcji,
bezpośrednio po skasowaniu ustawień sterownika, zawiera instrukcję IDCODE, jeśli komponent
zawiera odpowiedni rejestr (por. rozdz. 1.3.5.1.), albo instrukcję BYPASSU, jeśli komponent go nie
zawiera.
Ta sytuacja w rezultacie pozwala sekwencji testującej, przejść bezpośrednio do danych
przesuwających się podczas stanu CAPTURE-DR z jedną z 2 instrukcji. Ponieważ pierwszy
przesunięty bit jest ‘0’ dla BYPASS’u i ‘1’ dla IDCODE jest możliwe, przeprowadzenie ślepego
przesłuchania komponentu albo łańcucha komponentów. Komponent posiadający Rejestr
Identyfikacji Urządzenia, a tym samym instrukcje IDCODE przesuwa jako pierwszy bit ‘1’, która
wskazuje, że następnych 31 bitów jest właściwym kodem identyfikacyjnym urządzenia. Jeśli
pierwszym bitem jest ‘0’ to wskazuje ono, że komponent jest w BYPASS’ie.
Instrukcja USERCODE
Opcjonalna instrukcja USERCODE pozwala układowi scalonemu pozostać w jego
funkcjonalnym trybie pracy i wybiera opcjonalny Rejestr Identyfikacji Urządzenia, włączając go
pomiędzy linie TDI i TDO (Rys. 19.). Podczas wykonywania instrukcji USERCODE, rejestr
przechwytuje informację zdefiniowaną przez użytkownika na temat układu scalonego. Nie
przeszkadza to w jego pracy, a kod rozkazu tej instrukcji jest definiowany przez producenta.
Rys. 19. Instrukcja USERCODE
2. Testowy tryb pracy i jego instrukcje
Instrukcje te charakteryzują się tym, że przełączają sieć multiplekserów komórek BSC
tak, że wyprowadzane na wyjście są dane z przerzutników, z części UPD komórek. Powoduje to
rozłączenie wyprowadzeń zewnętrznych od wewnętrznej logiki układu. W takim trybie pracy
Standard IEEE 1149.1 opisuje jedną obowiązkową instrukcję (EXTEST) i dwie opcjonalne
instrukcje (INTEST i RUNBIST). Dwie nowe opcjonalne instrukcje (CLAMP i HIGHZ) zostały
wprowadzone do standardu w 1993 roku w rozszerzeniu 1149.1a.
Instrukcja EXTEST
Instrukcja EXTEST podczas wykonywania się włącza Rejestr Brzegowy, pomiędzy TDI i
TDO.
Rys. 20. Instrukcja EXTEST
W stanie CAPTURE-DR, wszystkie sygnały wejściowe układów scalonych są
przechwytywane w przyporządkowanych im komórkach BSC. Wyjściowe multipleksery w
komórkach BSC czytają wartości z przerzutników w części UPD, wtedy wszystkie wyjścia układu
scalonego są pod kontrolą Rejestru Brzegowego. W ten sposób, podczas wykonywania EXTEST,
jest możliwe pobranie stanów wejściowych i zarazem ustawienie wyprowadzeń wyjściowych (Rys.
20.).
Przesuwanie danych przez Rejestr Brzegowy, podczas gdy maszyna stanów znajduje się w
pozycji SHIFT-DR pozwala na czytanie stanów schwytanych na wejściach układu scalonego i na
ustawienie nowych wartości, które zostaną wysłane w momencie ustawienia się Sterownika TAP w
pozycji UPDATE-DR. EXTEST pozwala na sprawdzenie połączeń między komórki BSC i jakimiś
innymi punktami dostępu, takimi jak zewnętrzne wyprowadzenie (wtyczka), ścieżka, albo innym
urządzeniem wyposażonym w Rejestr Brzegowy. W ten sposób możemy zweryfikować, czy Rejestr
Brzegowy pracuje poprawnie
i
, czy urządzenie jest sprawne i właściwie zamontowane w układzie
scalonym.
Rys. 21. Instrukcja EXTEST
Ponieważ rozkaz EXTEST łączy bezpośrednio wewnętrzną logikę urządzenia
z
Rejestrem
Brzegowym, testowanie może odbyć się bez uwzględnienia faktycznych wartości przekazywanych
do i z urządzenia. Instrukcja wykorzystuje takie stany Sterownika TAP jak: CAPTURE, SHIFT i
UPDATE. CAPTURE deponuje sygnały wejścia w części przechwytującej komórek BSC.
Następnie stan SHIFT szeregowo przesuwa wartości z BSC na wyjście poprzez linię TDO.
UPDATE natomiast zajmuje się wysyłaniem nowych wartości na wyprowadzenia badanego układu.
EXTEST pozwala również na sprawdzenie połączenia między dwoma urządzeniami
wyposażonymi w logikę testującą, symulując konwencjonalny test rozwarć i zwarć (Rys. 21.). Kod
binarny dla EXTEST nie jest zdefiniowany przez standard, chociaż większość producentów
definiuje go jako ciąg ‘0’.
Instrukcja INTEST
Instrukcja INTEST jest opcjonalna i JTAG nie wyszczególnia kodu binarnego dla niej.
Rozkaz INTEST włącza Rejestr Brzegowy pomiędzy linie TDI i TDO.
Rys. 22. Instrukcja INTEST
Instrukcja INTEST wejścia z logiki wewnętrznej przekazuje pod kontrolę przerzutników
UPD w komórkach BSC. Komórki BSC podłączone do wyjść z wewnętrznej logiki procesora
pobierają z niej dane w momencie, gdy Sterownik TAP jest w CAPTURE-DR. W ten sposób, w
stanie UPDATE-DR, kod binarny testu może zostać załadowany do logiki wewnętrznej, a w stanie
CAPTURE-DR rezultat tego testu zostaje pobrany. Podczas przesuwania danych, rezultaty te
zostają przesunięte i jednocześnie nowy kod kontrolny może zostać załadowany. Kiedy tak się
dzieje, stany przekazywane do wyprowadzeń wyjściowych komponentów są pod kontrolą Rejestru
Brzegowego. Zatem otrzymują one ściśle określone wartości, podczas gdy testowana jest
wewnętrzna logika układu.
Instrukcja RUNBIST
Rys. 23. Instrukcja RUNBIST
Instrukcja RUNBIST tak jak poprzednia jest instrukcją opcjonalną i Standard 1149.1 nie
wyszczególnia kodu binarnego dla niej (Rys. 23.). Rejestr docelowy wskazywany przez komendę
RUNBIST jest rejestrem wskazywanym przez projektanta danego układu. Celem tej instrukcji jest
dostarczenie użytkownikowi układu scalonego dostępu do wbudowanej wewnątrz logiki auto-
testującej używając standardowego dostępu do protokołu.
Kiedy RUNBIST jest w trakcie realizacji, wyprowadzenia układu scalonego są pod kontrolą
Rejestru Brzegowego. RUNBIST jest samo inicjującą się instrukcją tzn. nie wymaga, aby musiały
by być załadowane jakieś początkowe dane do jej wykonania. Rezultat wykonania instrukcji
RUNBIST jest gromadzony w specjalnym docelowym rejestrze i może zostać przesunięty na
wyjście w celu obserwacji. Faktyczne wykonanie auto-testu rozpoczyna się z chwilą, gdy Sterownik
TAP znajdzie się w stanie RUN-TEST-IDLE, a synchronizacja jego może pochodzić z sygnału
zegarowego TCK, od systemowego zegara, lub od obu.
Instrukcja CLAMP
Instrukcja CLAMP jest również instrukcją opcjonalną i Standard 1149.1a nie wyszczególnia
kodu binarnego reprezentującego tą instrukcję (Rys. 24.). CLAMP jest instrukcją, która kieruje
aktualnie wyznaczone wartości na wyjścia urządzenia (uzyskane uprzednio dzięki instrukcji
SAMPLE/PRELOAD), a następnie ustawia Rejestr Obejścia między linie TDI i TDO. CLAMP z
reguły jest używany by ustawić początkowe bezpieczne wartości na urządzeniach tak żeby uniknąć
np. problemów związanych z magistralą do której może być podłączony dany układ.
Rys. 24. Instrukcja CLAMP
Instrukcja HIGHZ
Tak jak wcześniejsza instrukcja CLAMP instrukcja HIGHZ jest instrukcją opcjonalną i
standard nie wyszczególnia kodu dla niej. Rozkaz HIGHZ jest podobny do CLAMP, ale on ustawia
wyprowadzenia urządzenia w stan wysokiej impedancji. Następnie HIGHZ wybiera również tak jak
poprzednia instrukcja Rejestr Obejścia i włącza go pomiędzy linie TDI i TDO. Ustawienie stanów
wysokiej impedancji ma miejsce wówczas, gdy instrukcja HIGIHZ jest załadowana w Rejestrze
Instrukcji i Sterownik TAP ustawi się w stan UPDATE-IR. [6]
Rys. 25. Instrukcja HIGHZ
2.4.3. Instrukcje prywatne
Zauważyć trzeba, że projektant może użyć pewnych kodów, by zaimplementować prywatne
instrukcje są to instrukcje, których funkcje nie są ogłoszone do publicznej wiadomości i z reguły
stanowią tajemnicę handlową producentów. W tych okolicznościach, projektant musi określić, że te
kody są prywatne, żeby użytkownik mógł uniknąć ich załadowywania. W nowych rozwiązaniach
dąży się do tego by wszystkie nieużywane i nie prywatne rozkazy wymuszały załadowanie do
Rejestru Instrukcji rozkazu BYPASS.