config nazwa_pliku (rozszerzenie bez znaczenia) – powoduje zaprogramowanie ukladu FPGA podanym plikiem konfiguracyjnym *.bit lub *.cfg. Plik *.bit jest generowany przez Xilinx ISE (nalezy ustawic opcje: generate bit file) podczas implementacji projektu i znajduje sie zwykle w katalogu implement/ver1/rev1. Program apsi.exe korzysta jednak tylko z pliku *cfg, który jest automatycznie generowany na podstawie pliku *bit. Plik *.bit zaraz po wykorzystaniu jest mazany dlatego nastepnym razem wykorzystywany bedzie tylko plik *.cfg. Procedura jest nastepujaca: jezeli program apsi.exe nie potrafi znalezc pliku nazwa_pliku.bit to zaklada ze plik nazwa_pliku.cfg juz istnieje i na podstawie tego pliku programuje uklad FPGA. Jezeli jednak program apsi.exe znajdzie nazwa_pliku.bit to zaklada, ze plik nazwa_pliku.cfg nie istnieje lub zawiera starsza wersje. Dalej na podstawie nazwa_pliku.bit generowane sa pliki tymczasowe nazwa_pliku.hex oraz nazwa_pliku.prm a dalej na podstawie tych plików tymczasowych generuje plik ostateczny nazwa_pliku.cfg. Nastepnie program apsi.exe maze pliki: nazwa_pliku.bit, nazwa_pliku.hex i nazwa_pliku.prm. Podsumowujac przy nastepnym uruchomieniu procedury config nazwa_pliku plik nazwa_pliku.bit nie istnieje (zostal uprzednio zmazany) i program automatycznie laduje nazwa_pliku.cfg. Jezeli zmienia sie konfiguracja ukladu FPGA to nalezy tylko przekopiowac plik *.bit, na podstawie którego zostanie utworzony plik *.cfg. Procedura ta zostala zastosowana poniewaz generacja pliku *.cfg na podstawie pliku *.bit zabiera okolo 5s. Alternatywnym rozwiazaniem jest reczna generacja pliku *.cfg, program promgen.exe komenda: promgen -u 0 nazwa_pliku.bit -p hex -s 2048. Nastepnie mozna wygenerowac plik *.cfg przy pomocy komendy programu apsi.exe: fileconv bazwa_pliku.hex nazwa_pliku.cfg.
config nazwa_pliku liczba – podobnie jak poprzednio, ale liczba okresla co ile transferów ma byc sprawdzany stan koncówek w celu wykrycia ewentualnych bledów. Domyslna wartosc liczba=256, w przypadku bledów polecana jest wartosc 1, aby sprawdzenie odbywalo sie po kazdym transferze. Zob. równiez instrukcje ver i eppmode w celu poprawienia bledu w czasie transferu.
writeblock [nazwa_pliku.bin(.hex)] [adr_start (hex)] [adr_stop (hex)]– powoduje zapisanie zawartosci pliku nazwa_pliku od adresu adr_start (w formacie hex) do pamieci, wielkosc transferu jest okreslona rozmiarem pliku lub adresem adr_stop, wybierana jest wartosc mniejsza. Adres moze byc modyfikowany instrukcja baseadr, która okresla adres bazowy danego urzadzenia. Istnieja dwa mozliwe pliki wejsciowe: plik *.hex (niekompatybilny z formatem Intela). W pliku *.hex wystepuja tylko dane (nie ma komend oraz adresów) zapisane po kolei od najnizszego do najwyzszego adresu, analizowane dane powinny zawierac symbole: 0-9 lub a-f (A-F), pozostale symbole sa ignorowane. Alternatywnym formatem jest *.bin – plik binarny, uwaga: kazdy plik z rozszerzeniem roznym od *.hex bedzie traktowany jako plik binarny (np. plik danych obrazu *.raw bedzie równiez traktowany jako plik binarny), nazwa pliku musi zawierac rozszerzenie (a dokladnie kropke, która zaczyna rozszerzenie). Jezeli zostala uzyta komenda fielappend 1 to zapis powoduje dolaczenie odczytanych danych do juz istniejacego pliku. Domyslnie wszystkie pliki sa odczytywane i zapisywane w formacie Big Endian – czyli najstarszy bajt ma adres 0. writeblock adr_start adr_stop - W przypadku pominiecia nazwy pliku, pamiec jest wypelniana wartoscia rejestru statusowego (4-bajtowo) (zob. Instrukcje dzialajace na rejestrze statusowym programu). writeblock nazwa_pliku.bin (.hex) – W przypadku podania tylko nazwy pliku adr_start jest okreslony przez zawartosc pamieci statusowej 0 a adr_stop przez zawartosc pamieci statusowej 1. writeblock – W przypadku wywolania instrukcji writeblock bez parametrów nastepuje zapis do pamieci wartosci rejestru statusowego. Adres poczatkowy jest okreslony przez pamiec statusowa 0, a adres koncowy przez pamiec statusowa 1.
writebyte address data (hex) – powoduje zapisanie danej (maksymalnie 8-bajtowej) zapisanej w hex pod podany adres (hex). Rozmiar zapisu jest okreslony przez liczbe cyfr danej. Rozmiar zapisu nie musi byc potega liczby 2. Podczas wykonywania komendy wyswietlana jest zapisywana liczba zarówno w kodzie szesnastkowym jak i dziesietnym. W przypadku kodu dziesietnego brane sa pod uwage tylko pierwsze 4 bajty zapisywanej danej.
readblock nazwa_pliku.bin(.hex) adr_start adr_stop – powoduje odczytanie zawartosci pamieci od adresu adr_start (hex) do adresu adr_stop (hex) do pliku nazwa_pliku.bin (hex) (zob. writeblock). Instrukcja readblock wraca wartosc ostatnich 4 przeczytanych bajtów (zob. instrukcje na rejestrze statusowym)
readbyte adr_start [adr_stop] – powoduje odczytanie niewielkiej ilosci danych (maksymalnie 1024) spod wskazanej lokacji adresowej (zapisanej w formacie hex). Wartosc ta jest nastepnie wyswietlona na ekranie. W przypadku nie podania adresu koncowego odczytywany jest tylko jeden bajt danej.
baseadr adr – ustawienie adresu bazowego, instrukcja ta powoduje, ze instrukcje readblock, readbyte, writeblock, writebyte beda odwolywac sie do adresu adr+adr_start oraz adr+adr_stop. Przyklad: baseadr 200000, writebyte 5 FF powoduje zapisanie pod adres 200005 danej FF, aby uniewaznic instrukcje baseadr nalezy uzyc instrukcji baseadr 0.
ver – zwraca wersje programujaca uklad CPLD oraz rodzaj ukladu Virtex oraz stan nózek programujacych. Instrukcja ta jest zalecana w momencie wystapienia problemów z komunikacja z plyta XSV lub XSB poniewaz pozwala ona na przetestowanie tej komunikacji i ewentualne podanie bledów. Instrukcja ver automatycznie ustawia optymalna wartosc eppmode, ale w razie problemów nalezy recznie ustawic optymalny tryb pracy instrukcja eppmode.
eppmode [liczba] (hex) – ustawia tryb pracy portu EPP. Kiedy liczba>= 0x10 to program
komunikuje sie z plyta XSB w przeciwnym przypadku z plyta XSV. Dla plyty XSV znaczenie
liczby jest nastepujace: liczba= b3, b2, b1, b0 (wartosc poczatkowa: liczba= 3)
b0 – tryb zapisu, b0= 0 – zapis w trybie EPP, b0= 1 – software’owa emulacja zapisu
b1 – tryb odczytu, b1= 0 – odczyt w trybie EPP, b1= 1 – software’owa emulacja odczytu
b2 – tryb czterobajtowy magistrali EPP, b2= 0 – odczyt / zapis EPP w trybie jednobajtowym,
b2= 1 – odczyt / zapis w trybie czterobajtowym (komputer wykonuje tylko jedna
instrukcje aby wyslac cztery bajty poprzez magistrale EPP (kontroler portu równoleglego
samodzielnie wykonuje 4 niezalezne 1-bajtowe transfery na porcie EPP)
b3 – wylaczenie driveru, b3= 0 – komunikacja przy pomocy driver’u obslugujacego port
równolegly (opcja wymagana w Windowsach NT/2000 ze wzgledy na tryb ochrony
dostepu do portów we/wy) b3= 1 – dostep do portu równoleglego poprzez instrukcje
asemblera in, out (opcja mozliwa w Windowsach 98, nie wymaga kopiowania
dodatkowych plików oraz dzialajaca szybciej)
Uwaga 1: Emulacja softwar’owa polega na programowym wymuszeniu kazdej zmiany
sygnalów na porcie równoleglym w sposób podobny jak to robi kontroler EPP, wymaga wiec
ona szeregu zapisów do portu równoleglego wykonywanych przez software, wiec opcja ta jest
duzo wolniejsza od normalnej pracy. W przypadku bledów podczas transmisji zaleca sie
jednak uzycia trybu emulacji. W przypadku bledów transmisji wystepujacych nawet podczas
trybu emulacji zaleca sie przelaczenie w BIOSie trybu portu równoleglego na tryb SPP.
Instrukcja: ver automatycznie ustawia optymalny tryb eppmode w programie apsi, jednak
bardzo czesto ustawienie automatycznie nie wykrywa wszystkich bledów transmisji dlatego w
przypadku bledów nalezy uzyc instrukcji eppmode i recznie zadeklarowac wartosc: liczba.
Uwaga 2: Bit b2 przestaje miec znaczenie podczas pracy w trybie emulacji.
Uwaga 3: Aby zobaczyc aktualnie ustawiona wartosc eppmode nalezy wywolac funkcje bez
parametru lub z parametrem ujemnym. Zwrócona wartosc moze byc dalej wykorzystywana
do instrukcji warunkowych, np. gobitset.
Uwaga 4: W przypadku wykonywania instrukcji: run apsi.exe nazwa_skryptu tryb epp jest
ustawiany w nowo wykonywanym skrypcie w stan poczatkowy = 3 (parametr eppmode nie
jest przekazywany do nowego skryptu)
Przyklad 1: eppmode //wyswietla aktualny tryb pracy
Przyklad 2: eppmode C // tryb pracy bez driver’a w trybie EPP 4-ro bajtowym
Przyklad 3: eppmode 3 // (domyslny) praca z driver’em z softwar’owa emulacja zapisu i
odczytu.
sleep czas_ms – podaje czas uspienia wykonywania programu w ms.
run komenda – powoduje uruchomienie komendy w linii polecen systemu operacyjnego, w szczególnosci mozliwe jest uruchomienie innego skryptu poprzez komende: run apsi.exe nazwa_skryptu.
exit – powoduje bezwarunkowe zakonczenie wykonywania skryptu.
waitforkey – wstrzymaj wykonywanie skryptu do czasu nacisniecia jakiegos klawisza.
print tekst – powoduje wyswietlenie na ekranie napisu: tekst.
comment liczba– powoduje, ze jest (liczba!=0) lub nie jest (liczba=0) wyswietlana aktualnie wykonywana komenda.
goto etykieta – instrukcja skoku do etykiety.
label :etykieta– kazda etykieta jest poprzedzona znakiem dwukropka. Dwukropek musi byc pierwszym znakiem w linii (nie moze byc poprzedzony spacja lub tabulacja).
loop liczba_wykonanian etykieta – powoduje przejscie do etykieta przez (liczba_wykonan-1)
[hex] razy (instrukcje sa wykonywane liczba_wykonan razy). Uwaga: Petle nie moga byc
zagniezdzone – w jednym czasie moze byc wykonywana tylko jedna petla, w przeciwnym
wypadku instrukcja petli nie dziala poprawnie. W przypadku bardziej skomplikowanych petli
nalezy wiec uzywac operacji na rejestrze statusowym. Instrukcja petli ustawia rejestr
statusowy na aktualna wartosc licznika petli (ilosc skoków jeszcze do wykonania).
Przyklad:
:begin
readbyte 0
readbyte 1
loop 100 begin // powoduje 100 (hex) krotne wykonanie operacji readbyte 0 i readbyte 1
:read2
readbyte 2
loop 10 read2 // powoduje wykonywanie 10 (hex) razy readbyte2
goto begin //powoduje rozpoczecie calej instrukcji od poczatku (nie mozna tutaj zamiast instrukcji goto uzyc
instrukcji loop poniewaz powodowaloby to zagniezdzenie petli.
Instrukcje warunkowe sa wykonywane na podstawie rejestru statusowego, którego wartosci jest okreslona przez poprzedzajaca instrukcje zmieniajaca status. Do instrukcji zmieniajacych status naleza instrukcje: readbyte, readblock, filecomp, eppmode oraz stat. Instrukcje te nie musza bezposrednio poprzedzac instrukcje warunkowa a jedynie liczy sie ostatnio wykonana instrukcja zwracajaca wartosc. Wartosc poczatkowa rejestru statusowego wynosi 0.
waitbit0 maska_bitowa (hex) adres (hex) [timeout]waitbit0 maska_bitowa (hex) adres (hex) [timeout] – powoduje czekanie do momentu az dana odczytana spod adresu adres oraz po dokonaniu operacji bitowej AND z maska maska_bitowa bedzie równa zeru. Podczas wykonywania tej instrukcji gdy nie jest spelniony warunek jest podawana wlasnie przeczytana wartosc. Opcjonalnie mozna podac liczbe odczytów (jeden odczyt to okolo! 10µs) po którym program przejdzie do nastepnej instrukcji.
Przyklad:waitbit1 maska_bitowa (hex) adres (hex) – powoduje czekanie do momentu az dana odczytana spod adresu adres oraz po dokonaniu operacji bitowej AND z maska maska_bitowa bedzie rózna od zera.
gobit1 maska_bitowa (hex) etykieta –skok do etykiety jezeli wartosc rejestru statusowego programu apsi po dokonaniu operacji bitowej AND jest rózna od zera.
Przyklad:gobit0 maska_bitowa (hex) etykieta– instrukcja skoku do etykiety jezeli wartosc rejestru statusowego programu apsi po dokonaniu operacji bitowej AND jest równa zero (zaprzeczenie instrukcji gobit1).
go> wartosc (hex) etykieta– instrukcja skoku do etykiety jezeli wartosc rejestru statusowego programu apsi jest wieksza od wartosc. Uwaga nie wolno wstawiac spacji pomiedzy slowem go a znakiem '<'.
go< wartosc (hex) etykieta – instrukcja skoku do etykiety jezeli wartosc rejestru statusowego programu apsi jest mniejsza od wartosc.
go= wartosc (hex) etykieta – instrukcja skoku do etykiety jezeli wartosc rejestru statusowego programu apsi jest równa wartosc.
Rejestr statusowy programu apsi sluzy do lepszej mozliwosci kontroli nad biegiem programu. Jest to w ogólnie rzecz biorac rejestr 32-bitowy bez znaku, lecz w niektórych instrukcjach np. writebyte jest uzywana tylko jego najmlodszy bajt. Uwaga: w instrukcjach tych nie wolno wstawiac spacji pomiedzy instrukcja stat a odpowiednimi znakami np. '?'. Oprócz rejestru statusowego program posiada 256 pamiec rejestru statusowego, co pozwala na zapis i odczyt tych rejestrów spod indeksów 0÷FF.
stat?stat? – powoduje wyswietlenie aktualnej wartosci rejestru statusowego.
stat= wartosc (hex) – powoduje ustawienie rejestru statusowego zgodnie ze zmienna wartosc.
stat+= wartosc (hex) – powoduje dodanie do rejestru statusowego zmienna wartosc.
stat-= wartosc (hex) – powoduje odjecie od rejestru statusowego zmienna wartosc.
stat*= wartosc (hex) – powoduje pomnozenie rejestru statusowego przez zmienna wartosc.
stat/= wartosc (hex) – powoduje podzielenie rejestru statusowego przez zmienna wartosc.
stat&= wartosc (hex) – powoduje wykonanie bitowej operacji AND rejestru statusowego oraz zmienej wartosc.
stat|= wartosc (hex) – powoduje wykonanie bitowej operacji OR rejestru statusowego oraz zmienej wartosc.
stat^= wartosc (hex) – powoduje wykonanie bitowej operacji XOR rejestru statusowego oraz zmienej wartosc.
stat=>m index (hex)– powoduje zapisanie aktualnej wartosci rejestru statusowego w pamieci wewnetrznej programu pod adresem index. Uwaga na spacje pomiedzy m a indeksem.
stat<=m index (hex) – powoduje odtworzenie uprzednio zapisanej wartosci rejestru statusowego z pod adresu index.
stat<=>m index (hex) – powoduje zamiane wartosci rejestru statusowego i pamieci statusowej.
stat+=m index (hex) – powoduje dodanie do rejestru statusowego wartosci pamieci o adresie indeks.
stat-=m index (hex) – powoduje odjecie od rejestru statusowego wartosci pamieci o adresie indeks.
Przyklad:Wszystkie operacje na plikach sa wykonywane przy zalozeniu, ze format pliku jest Big Endian, czyli najstarszy bajt jest pod adresem 0. Nie ma to zadnych konsekwencji na prace programu apsi pod warunkiem, ze plik binarny wynikowy nie jest wykorzystywany dalej przez inny program na komputerze PC. W przeciwnym wypadku nalezy uruchomic instrukcje fileconv zamieniajaca format pliku binarnego lub tez skorzystac z instrukcji file2txt konwertujacej na postac tekstowa.
fileconv nazwa_zródla nazwa_przeznaczenia [nr_bit]fileconv nazwa_zródla nazwa_przeznaczenia [nr_bit] – powoduje utworzenie nowego pliku w formacie okreslonym na podstawie rozszerzenia: (.hex – plik w formacie hex, inne rozszerzenie plik w formacie binarnym). Komenda ta umozliwia np. edytowanie plików w postaci hex a nastepnie konwersje do plików *.bin. Jezeli fileappend=1 to umozliwia równiez dolaczenie jednego pliku do drugiego. Parametr nr_bit sluzy do konwersji formatu Big Endian na Little Endian i na odwrót. Parametr ten okresla wielkosc pojedynczego slowa w ramach którego dokonywana jest konwersja. Dla nr_bit<=8 konwersja nie jest dokonywana. Wartosc domyslna nr_bit= 0.
filecomp plik1 plik2 – porównuje dwa pliki (moga byc innego formatu i dlugosci) i zwraca numer bajtu na którym znaleziono pierwsza róznice (liczenie rozpoczyna sie od jeden) (zob. np. gobitset), jezeli pliki sa takie same to zwraca 0.
fileappend value– powoduje zmiane metody zapisu do plików. Od tej pory wszystkie zapisy do plików beda wykonywane w trybie stwarzania nowego pliku value= 0 (domyslnie) lub tez w trybie dolaczania do pliku value=1.
fileselect file_src file_dst start stop [sample_size record_size] – powoduje wybranie tylko czesci pliku zródlowego file_src i zapisanie go do pliku docelowego file_dst. W konsekwencji z pliku file_src do pliku file_dst zapisywane sa dane od bajtu start [hex] do bajtu stop [hex]. Liczenie zaczyna sie od wartosci 0.
Przyklad: aby zapisac bajty 17 do 32 z pliku a.bin do pliku b.hex (w formacie hex, zob. fileconv) nalezy uruchomic:file2txt file_src file_dst nr_bit nr_column – powoduje konwersje pliku binarnego (lub hex) file_src do pliku tekstowego file_dst. Plik tekstowy moze byc dalej wykorzystywany np. do przegladania (liczby zapisane w kodzie dziesietnym) lub wykreslania np. Excelu. Zmienna nr_bit [dec] okresla na ilu bitach zapisana jest pojedyncza dana binarna. Zmienna nr_column [dec] okresla w ilu kolumnach maja byc zapisywane dane zanim nastapi przejscie do nastepnej linii, zmienna ta moze byc uzyteczna w przypadku zapisywania wielu kanalów. Przyjmuje sie ze liczy sa zapisane w formacie BigEndian (czyli najstarszy bit jest zapisywany jako pierwszy).
file2raw file_src file_dst x_size y_size nr_bit [nr_channel [view_option]]- Instrukcja powoduje wygenerowanie pliku graficznego w formacie *.raw pokazujacego przebieg zarejestrowanych próbek. Parametr file_src okresla plik binarny, z którego beda czytane zarejestrowane próbki. Parametr file_dst okresla nazwe generowanego pliku graficznego (zaleca sie aby nazwa miala rozszerzenie *.raw). Parametry x_size oraz y_size okreslaja wielkosc generowanego obrazka. Parametr nr_bit oresla liczbe bitów na których jest prezentowana pojedyncza próbka. Parametr nr_channel okresla liczbe niezaleznych kanalów, które maja byc wyswietlane (domyslnie 1). Parametr view_option okresla opcje wyswietlania poszczególnych kanalów: 0- (domyslna wartosc) wszystkie kanaly sa rysowane w jednym miejscu, czyli kanaly moga sie pokrywac i zamazywac; 1- kanaly sa rysowane jeden pod drugim na niezaleznym miejscu, czyli nie moga sie nakladac, niestety skladkowa y przypadajaca na kazdy wykres ulega zmniejszeniu; >1 wykresy sa rysowane jeden pod drugim ale sa przesuniete w osi y o view_option pikseli. Dzieki temu wykresy moga sie pokrywac ale prawdopodobienstwo pokrywania maleje. Format *raw jest czytany przez wiekszosc programów graficznych, np. darmowy InfranView. Podczas wczytywania tego pliku w programie graficznym nalezy wybrac opcje: bez naglówka, obraz monochromatyczny 8 bitów/piksel.
filestatistic file_src nr_bit [nr_channel]- Powoduje wyswietlenie podstawowych danych statystycznych: wartosci minimalnej (min), maksymalnej (max), róznicy pomiedzy wartoscia maksymalna i minimalna, oraz podanie wartosci sredniej zapisanej w pliku. Parametr file_src okresla nazwe pliku wejsciowego, nr_bit [dec]– liczbe bitów na której jest zapisana dana (dozwolona wartosc to 16-bitów bez znaku). Parametr nr_channel [dec] okresla liczbe kanalów na których zapisane sa dane (domyslnie 1 kanal).
filehistogram file_src file_dst [nr_bit]- Powoduje obliczenie histogramy danego pliku
wejsciowego i zapisanie wyniku do pliku file_dst. Parametr nr_bit okresla liczbe bitów na
których jest zapisana pojedyncza próbka wejsciowa, domyslna wartosc to 8-bitów. W
przypadku kiedy nr_bit < 8 pojedyncza próbka musi zajmowac caly bajt (0 na najstarszych
bitach). Podobnie jest w przypadku nr_bit= 9..15 kiedy to pojedyncza próbka wejsciowa musi
zajmowac 2 bajty. Próbka wynikowa jest zapisywana w formacie 32-bitowym (big endian).
Przyklad: filehistogram lena.raw lena.his // obliczenie histogramu
file2raw lena.his histogram.raw 256 256 32 // narysowanie obliczonego histogramu do pliku
graficznego
vhdlsim – przejscie w tryb symulacji. Generacja pliku apsi.tst sluzacego do symulacji oraz odczytanie i przetworzenie pliku apsi.out, który zawiera wyniki symulacji vhdl odczytane przez port równolegly.
1, a – write address a (byte) – wystawienie na porcie EPP adresu do zapisu, 4 transfery sa wymagane aby
przeslac jeden adres
2, d – write data d (byte) – wystawienie danej do zapisu na porcie EPP.
3 – read – powoduje odczyt danej z portu EPP
10, t – sleep time – czas wstrzymania aktywnosci w ms (t < 256)
11, b, a3, a2, a1, a0, m, - waitbit0, waitbit1 – zob. instrukcje skryptu. b=0 waitbit0, b=1 waitbit1, ai –adres (4
transfery, m- maska)
255 – End Of File – zakonczenie, koniec pliku.
reset –modul opb_epp posiada wewnetrzny uklad umozliwiajacy ustawienie sygnalu reset w stan wysoki na krótki okres czasowy (okolo 10us). Aby tego dokonac mozna uzyc komendy reset lub tez komendy writebyte FFFF_FFFF 01 (ustaw reset w stan wysoki) i nastepnie writebyte FFFF_FFFF 00 (ustaw reset w stan niski).
LA – Internal Logic State Analyser – moduly opb_epp dla c_la_mwidth=4 lub opb_la. Dodatkowy opis tych instrukcji mozna znalezc w opisie modulu opb_la. Mozliwe jest równoczesne obslugiwanie wiecej niz jednego modulu analizatora stanów logicznych. Przy kazdym odwolaniu do innego modulu nalezy jednak odpowiednio ustawic parametry labaseadr (oraz laawidth tylko w przypadku symulacji VHDL).
labaseadr adr – powoduje ustawienie adresu adr bazowego analizatora stanów logicznych – instrukcja podobna do baseadr ale dotyczy tylko analizatora stanów logicznych. Dla projektów opb_epp wartosc ta powinna byc ustawiona na FFFF_0000. Dla modulu opb_la powinna ona miec wartosc c_baseaddr. Podczas wykonywania tej instrukcji program apsi.exe sprawdza czy pod podana lokacja adresowa znajduje sie analizator stanów logicznych i odczytuje jego parametry. Dlatego nie jest konieczne ustawianie jego parametrów za pomoca komend laawidth lub lahighadr. Jest to konieczne tylko podczas symulacji VHDL.
laawidth liczba (dec) – Komenda uzywana tylko podczas wstepnej symulacji VHDL gdy analizator nie zostal jeszcze poprawnie wykryty; normalnie komanda ta jest ignorowana – laawidth jest okreslone poprzez komunikacje z analizatorem stanów logicznych. Komenda ta okresla szerokosci magistrali adresowej analizatora – powinien to byc to ten sam parametr co dla entity log_anal generic adr_width. Dla modulu opb_epp nalezy ustawic laawidth= c_la_mwidth + log2(c_la_dwidth/8) + 1. Dla modulu opb_la nalezy ustawic log2(c_highaddr+1-c_baseaddr) lub uzyc instrukcji lahighadr. Instrukcja powinna byc uzyta przed instrukcja labaseadr.
lahighadr adr – Podobnie jak instrukcja laawidth, instrukcja ta jest uzywana tylko podczas wstepnej symulacji VHDL, kiedy nie ma poprawnej komunikacji z modulem analizatora stanów logicznych. Instrukcja ta powoduje ustawienie adresu koncowego analizatora stanów logicznych. Instrukcja ta powinna byc uzyta zamiennie z instrukcja laawidth. Parametr adr powinien byc taki sam jak parametr c_highaddr uzyty w parametrach modulu opb_la. Instrukcja powinna byc uzyta przed instrukcji labaseadr.
latvalue liczba (hex) – okresla wartosc triggera, czyli takiej sekwencji danych, która powoduje wyzwolenie analizatora. Miejsce wyzwolenia (w ogladanym przebiegu) okresla instrukcja lastart. Zob. lacare. Warto podkreslic, ze sygnal wyzwalajacy jest ignorowany do czasu kiedy nastapi wypelnienie bufora pamieci w czesci okreslonej przez miejsce sygnalu wyzwalajacego (np. jezeli trigger jest na koncu rejestrowanych próbek to najpierw musi byc wypelniony caly bufor pamieci a nastepnie dopiero stan sygnalu wyzwalajacego jest brany pod uwage). Nawet w momencie kiedy trigger jest na samym poczatku musi byc zarejestrowana co najmniej jedna dana. Jest to szczególnie wazny warunek w momencie kiedy uzywa sie logiki zezwolenia zegara dla rejestrowanych próbek.
latcare liczba (hex) – okresla czy dany bit triggera jest brany pod uwage (1) czy tez nie (0). Dla przykladu dla: latvalue 50 oraz latcare F0, dane zostana zarejestrowane jezeli na wejsciu triggera wystapi sekwencja 5X (gdzie x oznacza poziom dowolny).
lacevalue liczba (hex) – okresla wartosc sygnalu wejsciowego la_ce_Dbus (modul opb_la lub opb_epp), przy którym nastapi uaktywnienie sygnalu zezwolenia zegara (CE) dla rejestrowania próbek lub tez uaktywnienie dodatkowego triggera. Instrukcja jest wazna tylko wtedy kiedy zostal wybrany parametr c_la_ce_dtype>0. Instrukcja dziala podobnie jak instrukcja latvalue lecz dotyczy sygnalu CE lub dodatkowego triggera. Zob. latcare oraz lactr.
lacecare liczba (hex) – instrukcja podobna jak instrukcja lacevalue ale decyduje czy odpowiedni bit wartosci zadeklarowana instrukcja lacevalue jest brany pod uwage (1) lub nie jest brany pod uwage (0).
lacectr liczba (hex) – powoduje zapis do rejestru kontrolnego sterujacego funkcja CED (zezwolenia ze do rejestrowanych danych lub rejestru kontrolnego). Zapis jest wazny tylko wtedy kiedy parametr c_la_ce_dtype>0. liczba jest okreslana bitowo na podstawie ponizszych bitów. Domyslny wpis do wszystkich bitów to 0.
Bit # Opislastart liczba (hex) – okresla miejsce polozenia triggera wzgledem obserwowanych próbek. Liczba= 00 – trigger na poczatku, liczba= 20- trigger w srodku, liczba= 3F – trigger na koncu, 10xx_xxxx (bin) – wyzwól LA w chwili zapisu do rejestru – miejsce triggera jest okreslone przez 6 najmlodszych bitów. Instrukcja lastart jest równowazna zapisowi pod rejestr statusowy ukladu LA (zob. log_anal.doc(pdf))
laread [nazwa_pliku, [timeout]]– powoduje oczekiwanie az zostanie zakonczony proces akwizycji danych oraz powoduje zapis zarejestrowanych danych do pliku la_data.bin, który jest nastepnie czytany prze entity la_view.vhd. Plik la_view automatycznie wyswietla zapisane dane w pliku la_data.bin. Mozliwa jest zmiana domyslnej nazwy pliku la_data.bin, do którego zapisywane sa pobrane dane na plik nazwa_pliku. Po liczbie odczytów timeout (jeden odczyt to okolo! 10µs) po której analizator nie zakonczy akwizycji danych nastepuje zapis pod rejestr kontrolny ced o wartosci 0x20 – co powoduje wylaczenie logiki zezwolenia zegara, dodatkowego triggera oraz wylaczenie kompresji danych RLC. Nastepnie procedura zostanie powtórzona. Jezeli powtórnie po wykonaniu timeout odczytów nie zostanie zapelniony bufor pamieci analizatora, to program dokona odczytu pomimo tego, ze czesc bufora (ta na poczatku rejestracji) nie zawiera poprawnych danych. Podczas akwizycji po instrukcji la_read jest wyswietlana dana, rejestr stanu analizatora stanów logicznych zob, log_anal.doc. Jesli bit 0x80 jest równy zero to analizator nie zostal wyzwolony i dlatego proces akwizycji nie mógl przebiec poprawnie. W tym wypadku nalezy np. zmienic wartosc triggera. Jezeli bit 0x80 jest ustawiony to nastepuje proces akwizycji danych, zakonczy sie on kiedy zostanie wypelniona pamiec próbek czyli odczytana dana (rejestr statusowy) osiagnie wartosc 0xC0. Jesli jednak inkrementacja tego rejestru do wartosc 0xC0 przebiega zbyt wolno nalezy albo zmienic wartosc logiki zezwolenia zegara (CE) instrukcja la_cecare / la_cevalue lub tez zrezygnowac z kompresji danych RLC (zob. lacectr). Przyklad dla parametrów domyslnych opb_epp.
la_base_adr FF_0000i2cwrite sub_adr dana – powoduje zapisanie danej dana pod okreslony pod-adres urzadzenia ADC Video. Uwaga: Aby dana instrukcja zadzialala poprawnie nalezy okreslic adres bazowy urzadzenia I2C master instrukcja base_adr oraz okreslic czestotliwosc zegara i uaktywnic urzadzenie I2C master instrukcjami writebyte pod adres 0-2.
Przyklad:i2cread sub_adr– powoduje odczytanie danej spod sub-adresu sub_adr. Odczytana dana jest zapisana w rejestrze statutowym. Patrz równiez przyklad i2cwrite.