![]() |
![]() |
---|
(1) Programmi laadimiseks kontrollerisse minna kataloogi, kus on transleeritud programm. Sisestada MS-DOS-i käsurealt z180
Kogu eelnev ja ka järgnev monitorprogrammiga tutvumine salvestada käsuga view
Käivitada programm käsuga go
Testida käskudega xreg ja dump, kas tulemus vastab oodatule. Kui tulemus on oodatust erinev, s.t. programm ei tööta, siis laadida käsuloendurisse programmi algusaadress (xreg pc algusaadress). Käsuga trace või trace n asuda programmi siluma. Pikemate tsüklite või alamprogrammide korral, mis ei vaja silumist, seada paika katkestuspunktid (break set aadress) ja täita käsuga go programm kuni katkestuspunktideni.
Ülejäänud monitorprogrammi käske kasutada vastavalt vajadusele.
Püsimälus ROM olevate alamprogrammide tekstid on lisas 3 ja aadressid failis LKZ180.INC. Iga kasutaja võib endale teha suvalisi include-faile, ent monitorprogrammi alamprogrammide kasutamiseks peab ühes include-failis olema tekst failist LKZ180.INC
Kasutaja käsutuses on järgmised Toivo Vajakase koostatud alamprogrammid:
(1) Alamprogrammi MULT16 kasutades korrutada kaks 16-bitist märgita arvu. Esitada registrite sisu salvestus (käsud xreg ja view faili nimi)
(2) Võrrelda alamprogrammi CP_BC_HL kasutades eelmises harjutuses kasutatud tegureid. Esitada registrite sisu salvestus.
(3) Liita harjutuses (1) saadud korrutisele 5 ja jagada ta teguriga, mis harjutuse (2) põhjal oli väiksem. Esitada registrite sisu salvestus.
(4) Saata harjutuses (1) kasutatud tegurid ja saadud korrutis kuvarile kümnendsüsteemis.
(5) Saata harjutuses (3) kasutatud jagatav, jagaja, jagatis ja jääk kuvarile kümnendsüsteemis.
(6) Lugeda klaviatuurilt kaks arvu, korrutada need ja saata korrutis kuvarile,
(7) Koostada alamprogramm autorit ja programmi identifitseeriva logo kuvamiseks kasutajaprogrammi käivitamisel. Alamprogramm koostada nii, et seda saaks programmidega linkida nt. include-faili LKZ180.INC koosseisus.
(8) Koostada programm, mis kuvab logo, loeb klaviatuurilt kaks märgita kümnendarvu, saadab "kaja" kuvarile, võrdleb sisestatud arve ja saadab sõnalise tulemuse kuvarile, korrutab need arvud ja väljastab tulemuse kuvarile kümnend-, heksa- ja binaarkoodis.
Programmide silumisel, vigade avastamisel ja protsessori signaalide tundmaõppimisel loogikaanalüsaatori abil saadud ajadiagrammide alusel kontrollitakse signaalide vastavust koostatud programmi käskudele. Selleks on vaja õppida lugema ajadiagramme ja tundma ära masinatsükleid. Peab teadma käskude kirjeldusi ja koode.
Ajadiagrammide kaudu tundmatu programmi koostamisel ja silumisel on esmaseks ülesandeks koostada diagrammi kirjeldus järgmisel viisil:
Aluseks on graafik 3 lisas 2. Ajadiagrammil võivad esineda perioodilised tsüklid, mille aadress on eelmise tsükliga võrreldes ühe võrra suurem, andmed aga samad. Kirjeldatud tsükkel on dünaamilise mälu DRAM värskendamine. Kuigi kontrolleril ei kasutata dünaamilist mälu, teostab protsessor automaatselt mäluvärskendust, kui see pole keelatud. Värskenduse saab keelata, kui seada värskenduse juhtimisregistri RCR bitt 7 (REFE) seisu 0.
Näiteprogrammi ajadiagrammi lugemiseks kasutati loogikaanalüsaatori sisemist takti sagedusega
33 MHz. Trigersõna:
(2) Juhendajalt saadud ajadiagrammi järgi koostada programmi tekst . Mida programm teeb?
(3) Koostada juhendajalt saadud ajadiagrammi kirjeldus. Mida programm teeb?
(4) Koostada juhendajalt saadud ajadiagrammi kasutades programmi tekst, laadida programm kontrollerisse, siluda, käivitada programm samade algandmetega, mis olid ajadiagrammil esitatud programmil. Koos programmiga käivitada ka loogikaanalüsaator sama trigersõnaga, millega käivitati ajadiagrammil olev programm. Esitada trigersõna ja leida analüsaatori taktsagedus. Kontrollida saadud ajadiagrammi vastavust esialgsele. Erinevuste korral need esitada ja siluda programmi seni, kuni ajadiagrammid on identsed. Kui erinevusi ei õnnestu kõrvaldada, siis miks?
(5) Juhendajalt saadud ajadiagrammi põhjal koostada programmi tekst koos kommetaaridega. Koostada teksti järgi selle tegevuse algoritm, mida programm teeb.
Joonis 4.3.1: Muutmälu testimine
(2) Koostada programm rõõpvärati sisend- ja väljundpordi kontrollimiseks. Tulemused väljastada kuvarile. Ühendada A-port B-pordiga ja testida värati korrasolekut. Kui esineb viga, siis määrata port, mis on korrast ära.
Joonis 4.3.2: ASCI0-i testimine
(2) Koostada programm ja algoritm ASCI0-i testimiseks, kui viigud on ühendatud joonise 4.3.2 kohaselt. Tulemused esitada kuvaril. Ühendada viigud ja testida loogikaanalüsaatori abil erinevaid saatmiskiirusi, andmeformaate ja paarsusi. Esitada testide tulemused.
(a) CP_BC_HL - 16-bitiste märgita arvude võrdlemine. Arvud peavad olema registrites BC ja HL. Kui BC
(c) MULT16 - 16-bitiste märgita täisarvude korrutamine. Tegurid peavad olema BC- ja DE-registrite, korrutis on registrites DE, HL.
(d) PRINTF - ASCII-koodis arvu saatmine kuvarile. HL-registris peab olema teisendatav arv, A-registris arvu alus (2,10, või 16). Saab kasutada ka alamprogramme, kus A-registrisse laetakse vastav alus: PRINTX (alus 16), PRINTD (alus 10), PRINTB (alus 2).
(e) SCANF1 - Klaviatuurilt ASCII-koodis sisestatud stringi teisendamine täisarvuks. A-registris peab olema arvu alus (2, 8, 10 või 16). Sisestamisel võib kasutada "+"- ja "-"-märke. Alamprogrammist väljumisel on väärtus HL-registris. Sisestatavad arvud võivad olla 0...65535 (0000H...FFFFH) või
-32768...+32767. Nende piiride ületamist ei testita.
(f) KBHIT - Testitakse klaviatuuri olekut. Kui ühtegi sisestust pole, siis A=0, Zero=1, muidu A<>0, Zero=0.
(g) GETCH - Sümboli lugemine klaviatuurilt. Alamprogrammist väljumisel on sümbol A-registris.
(h) GETCHE - Sümboli lugemine klaviatuurilt ja saatmine "kajana" tagasi kuvarile. Loetud sümbol on A-registris.
(i) TOUPPER - A-registris oleva tähe teisendamine suurtäheks.
(j) GETCHEU - Sama, mis GETCHE, ent kuvarile saadetakse kajana suurtäht sisestatud tähest sõltumata.
(k) PUTCH - A-registris oleva baidi saatmine kuvarile.
(l) PUTS - Stringi saatmine kuvarile. Stringi algusaadress peab olema HL-registris.
4.2. Protsessori signaalide tundmaõppimine ja programmide silumine
4.2.1. Põhimõte
Monitorprogramm võimaldab tundma õppida protsessori registrite kasutamist ja valmiskirjutatud programme siluda, loogikaanalüsaatoriga saab uurida protsessori ja ka teiste seadmete signaale, tundma õppida masinatsükleid. Samuti võimaldab ta programme siluda.
Takt /M1 /MREQ /IORQ /WR /RD Andmed (D) Aadress (A) Kirjeldus
1-4 0 0 1 1 0 00110001 8230H Käsu LD SP,mn käsukoodi lugemine, A=käsukoodi aadress, D=käsukood
5 1 0 1 1 0 00110001 8230H
6 1 1 1 1 1 11111111 00B0H DRAM-i värskendus
7-8 1 0 1 1 1 11111111 00B0H
9 1 1 1 1 1 11111111 8231H
10-14 1 0 1 1 0 00000000 8231H Käsu LD SP,mn esimese operandi n lugemine, A=operandi aadress, D=operand
15 1 1 1 1 1 11111111 00B1H
16-17 1 0 1 1 1 11111111 00B1H DRAM-i värskendus
18 1 1 1 1 1 11111111 8232H
19-23 1 0 1 1 0 10110000 8232H Käsu LD SP,mn teise operandi m lugemine, A=operandi aadress, D=operand
... ... ... ... ... ... ... ... ...
Ajadiagrammi kirjeldamiseks vajalikud käskude kirjeldused ja käsukoodid on protsessori kirjelduses [6]. Nende alusel tuleb koostada programmi tekst assemblerkeeles:
8230H LD SP,B000H
LD IX,8246H
LD (IX+00),44H
LD A,2DH
ADD A,(IX+00)
LD BC,0100H
OUT (C),A
RST 8
8246H MEM: DS 1
Sellele tuleb lisada kommentaarid:
8230H LD SP,B000H ;Seada pinuviit
LD IX,8246H
LD (IX+00),44H ;Lugeda üks arv
LD A,2DH ;Lugeda teine arv
ADD A,(IX+00) ;Liita arvud
LD BC,0100H
OUT (C),A ;Saata tulemus DAC-ile
RST 8
8246H MEM: DS 1
Kommenteeritud programmi järgi koostada algoritm selle kohta, mida programm teeb:
X0000110 00100000 : kõrgemad baidid
1XXXXXXX XX0XX00X : madalamad baidid
Assemblerkeeles koostatud valmis programmi silumisel tuleks järgida järgmisi nõudeid:
4.2.2. Ülesanded
(1) Koostada mõnekäsuline programm, mis hõlmab mälust lugemist, mällu kirjutamist, sisend-väljundseadmetesse kirjutamist ja sealt lugemist, aritmeetika- ja loogikakäske. Käivitada koos programmiga loogikaanalüsaator. Saadud ajadiagrammi põhjal koostada käsukoodi lugemise ajadiagramm, operandide ja andmete lugemise ning kirjutamise ajadiagrammid, sisend-väljundseadmetesse kirjutamise ning sealt lugemise ajadiagrammid. Kõige lõpuks koostada käsu koodilugemise ja käsu täitmise terviklik ajadiagramm. Kontrollida koostatud diagrammide vastavust protsessori kirjelduses [6] toodule.
4.3. Kontrolleri koostisosade testimine
4.3.1. Põhimõte
Mikroprotsessorsüsteem koosneb paljudest koostisosadest. Võib juhtuda, et mingitel süsteemisisestel või süsteemist sõltumatutel põhjustel ei tööta mõni süsteemi komponentidest normaalselt. Kui rauas või tarkvaras pole korrasoleku kontrolli ette nähtud, võivad häired põhjustada andmete kaotsiminekut või isegi kontrolleri mittekäivitumist.
Komponentide riknemist võivad põhjustada nt. tugevad voolukõikumised ja ülepinged, samuti kasutaja hooletus (viikude lühistamine jne.).
Kontrolleril on võimalik testida asünkroonset jadaväratit, rööpväratit, muutmälu teatud osa, ADC-d ja DAC-i.
4.3.2. Muutmälu RAM testimine
4.3.2.1 Põhimõte
RAM-i on võimalik testida alates aadressist 8000H kuni aadressini EFFFH kaasa arvatud. Testimiseks kirjutatakse mälupessa arv 00H, loetakse pesast arv tagasi ja võrreldakse pessa kirjutatuga. Kui erinevust pole, korratakse sama arvuga FFH. Kui pesast loetud arv erines pessa kirjutatust, võib sellel hetkel testimise katkestada ja väljastada veateate koos vigase pesa aadressiga. Võib ka lihtsalt väljastada veateate ja vigase pesa aadressi, ent jätkata testimist, kuni kogu mälu on kontrollitud.
Antud algoritmi korral joonisel 4.3.1 väljastatakse vigase pesa aadress, ent mälu testitakse lõpuni. Algandmeteks on mälu algusaadress ja lõppaadress, loendur1 loendab korralike pesi, loendur2 aga vigaseid pesi.
4.3.2.2. Ülesanne
(1) Koostada algoritmi järgi joonisel 4.3.1 programm muutmälu testimiseks. Tulemuste väljastamiseks kasutada püsimälus olevaid alamprogramme. Väljastada teated testi tulemuste kohta, testitud baitide arv, korralike ja vigaste baitide arv. Kontrolleri mälu testida alates aadressist 8000H kuni EFFFH (kaasa arvatud) välja arvatud mäluosa, kus asub testprogramm ise.
4.3.3. Rööpvärati testimine
4.3.3.1. Põhimõte
Rööpväratil on võimalik testida andmeregistreid ning sisend- ja väljundviike. Registri korrasoleku kontrollimiseks initsialiseeritakse port väljundpordiks, kirjutatakse andmeregistrisse testsõna, initsialiseeritakse port sisendpordiks, loetakse andmeregistri sisu ja võrreldakse seda porti saadetud sõnaga. Kui on erinevusi, saadetakse kuvarile veateade koos vigase biti järjenumbriga. Sisendi ja väljundi kontrollimiseks ühendatakse A-port B-pordiga, A-port initsialiseeritakse väljundpordiks, B-port - sisendpordiks ja saadetakse A-porti testsõna, mida loetakse B-pordist. Loetud sõna võrreldakse saadetud sõnaga.
4.3.3.2. Ülesanded
(1) Koostada programm rööpvärati portide andmeregistrite testimiseks. Tulemused väljastada kuvarile. Testida andmeregistrite korrasolekut.
4.3.4. Analoog-digitaalmuunduri testimine
4.3.4.1. Põhimõte
ADC-l on olemas nii unipolaarne kui ka bipolaarne töömoodus. Mõlemas reziimis tuleb kontrollida muundamise täpsust. Selleks antakse signaaliallikast ADC sisendisse alalispinge, mis on muundamisvahemikus. Sisendpinget mõõdetakse digitaalvoltmeetriga. Seejärel käivitatakse muundur ja võrreldakse muundamisel saadud andmesõna tabelis oleva väärtusega [13, lk. 57].
4.3.4.2. Ülesanne
(1) Koostada programm, mis väljastab analoog-digitaalmuundi sisendis oleva pinge väärtuse kuvarile. Väärtused esitada andmesõnana. Muundist loetud andmesõna väljastada kuvarile siis, kui esineb muutus võrreldes eelneva andmesõnaga. Mõõta sisendpinge väärtused mõlema töömooduse korral vähemalt 10 erineva pingeväärtuse korral, kaasa arvatud ka minimaalne ja maksimaalne. Kas saadud tulemus vastab tabelile 2.5.1? Kui ei, siis miks? Koostada graafik, mis näitab andmesõna sõltuvust sisendpingest ja uus tabel. Kui suur sisendpinge muutus vastab ühele kvandile? Kas muundamine on lineaarne?
4.3.5. Digitaal-analoogmuunduri testimine
4.3.5.1. Põhimõte
DAC on seatud unipolaarsesse töömoodusesse. Tema testimiseks tuleb kontrollida sisestatud andmesõna ja saadud väljundpinge vastavust [13, lk.57].
4.3.5.2. Ülesanne
(1) Koostada programm, mis saadaks klaviatuurilt sisestatud andmesõna DAC-i. Kontrollida digitaalvoltmeetriga muunduri väljundpinge vastavust sisestatud andmesõnale vähemalt 10 eri väärtuse korral, kaasa arvatud ka minimaalne ja maksimaalne. Koostada graafik, mis näitaks väljundpinge sõltuvust andmesõnast. Kas muundamine on lineaarne? Kas tulemus vastab tabelile 2.6.1? Kui ei, siis miks? Koostada uus tabel. Kui suur väljundpinge muutus vastab ühele kvandile?
4.3.6. Asünkroonse jadavärati testimine
4.3.6.1. Põhimõte
Asünkroonse jadavärati kanalil ASCI0 saab kontrollida, kas saatmise andmeregister TDR0 on korras. Vastuvõtu andmeregistrit RDR0 ei saa kirjutamis-lugemismeetodil testida, sest RDR0 on vaid loetav register. Ühendades värati viigud joonise 4.3.2 kohaselt, saab testida värati sisendit ja väljundit. Selleks tuleb lubada saatja ja vastuvõtja, saata andmesõna käsuga OUT0 (TDR0),g TDR0 registrisse ja lugeda seejärel käsuga IN0 g,(RDR0) RDR0-registri sisu. Kui viimane on identne saadetud sõnaga, on värat korras. Saatmis- ja vastuvõtualgoritmid ning värati initsialiseerimise kirjeldus on punktis 4.7.2.
4.3.6.2. Ülesanded
(1) Koostada programm registri TDR0 kontrollimiseks andmesõnadega FFH ja 00H. Tulemus väljastada kuvarile.
Üles seatud Thu., 09.07.1998.
Viimati muudetud Sat., 06.11.1999 02:57 PM CEST
WWW-lehekülje kujundus, õigused, vastutus ©
Heiki Kasemägi, 1998-1999