ORT2/K3 2018
Postavka
Posmatra se deo računara koji čine memorija i procesor. Memorija je kapaciteta 216 bajtova. Širina memorijske reči je 1 bajt. Procesor je sa jednoadresnim formatom instrukcija. Adrese i podaci su dužine 16 bita i zauzimaju po dve susedne memorijske lokacije, pri čemu se stariji bajt nalazi na višoj lokaciji, a mlađi bajt na nižoj adresi.
U procesoru postoji registar programskog brojača PC dužine 2 bajta, adresni registar memorije MAR dužine 2 bajta, prihvatni registar podatka memorije MDR dužine 1 bajt, prihvatni registar instrukcije IR dužine 4 bajta, akumulator A dužine 2 bajta, prihvatni registar podatka B dužine 2 bajta, registri opšte namene R0 do R15 dužine 2 bajta, programska statusna reč PSW dužine 1 bajt. Instrukcije su dužine 1, 2, 3 ili 4 bajta.
Bitovi 7 i 6 prvog bajta instrukcije su 00 za sve instrukcije skoka. Kod instrukcija uslovnog skoka bitovi 5 i 4 prvog bajta instrukcije su 00, dok kod instrukcija bezuslovnog skoka bitovi 5 i 4 prvog bajta instrukcije su 01. Instrukcija uslovnog skoka je instrukcija uslovnog skoka ukoliko rezultat nije nula (JNZ), a instrukcije bezuslovnog skoka su instrukcija bezuslovnog skoka (JMP) i instrukcija skoka na potprogram (JSR). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije i na osnovu toga su za instrukcije JNZ, JMP i JSR usvojeni kodovi operacije 00000000, 00010000 i 00010001, respektivno. Instrukcije JNZ i JMP se realizuju kao apsolutni skokovi, pri čemu je adresa data drugim i trećim bajtom instrukcije. Dužina instrukcija je 3 bajta.
Bitovi 7 i 6 prvog bajta instrukcije su 01 za sve adresne i bezadresne instrukcije.
Bitovi 5 i 4 prvog bajta instrukcije su 00 za bezadresne instrukcije. Bezadresne instrukcije su instrukcije stavljanja sadržaja akumulatora na stek (PUSH), punjenja akumulatora sadržajem sa steka (POP) i povratka iz potporgrama (RTS). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za bezadresne instrukcije. Na osnovu toga su za instrukcije PUSH, POP i RTS usvojeni kodovi operacija 01000000, 01000001 i 01000010, respektivno. Dužina instrukcija je jedan bajt.
Bitovi 5 i 4 prvog bajta instrukcije su 01 za adresne instrukcije. Adresne instrukcije su instrukcija prenosa u akumulator (LD), instrukcija prenosa iz akumulatora (ST), aritmetička instrukcija inkrementiranja operanda koja rezultat smešta u akumulator (INC), logička instrukcija ekskluzivno ili (XOR) i instrukcija bezuslovnog skoka na sračunatu adresu (JADR). Bitovima 3 do 0 prvog bajta instrukcije specificira se kod operacije za adresne instrukcije. Na osnovu toga su za instrukcije LD, ST, INC, XOR i JADR usvojeni kodovi operacija 01010000, 01010001, 01010010, 01010011 i 01010100 respektivno. Dužina instrukcija je 2 ili 4 bajta i zavisi od specificiranog načina adresiranja.
Načini adresiranja su specificirani bitovima 7, 6 i 5 drugog bajta instrukcije i to na sledeći način: 000-memorijsko direktno adresiranje (memdir), 001-registarsko indirektno adresiranje (regind), 010-registarsko indirektno sa pomerajem (regindpom), 011-relativno adresiranje sa pomerajem (pcrel) i 100-neposredno adresiranje (immed). Kod memorijskog direktnog adresiranja 16 bitna adresa memorijske lokacije je data trećim i četvrtim bajtom instrukcije. Bitovi od 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Registarsko indirektno adresiranje koristi neke od registara opšte namene R0 do R15 specificirane bitovima od 3 do 0 drugog bajta instrukcije. Bit 4 drugog bajta se ne koristi. Dužina instrukcije je 2 bajta. Kod registarskog indirektnog adresiranja sa pomerajem, treći i četvrti bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina bez znaka. Jedan od registara opšte namene R0 do R15 specificiran je bitovima od 3 do 0 drugog bajta instrukcije. Bit 4 drugog bajta se ne koristi. Dužina instrukcije je 4 bajta. Kod relativnog adresiranja sa pomerajem treći i četvrti bajt instrukcije sadrže 16 bitni pomeraj koji je dat kao celobrojna veličina bez znaka. Bitovi 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta. Kod neposrednog adresiranja 16 bitni operand je dat trećim i četvrtim bajtom instrukcije. Bitovi od 4 do 0 drugog bajta instrukcije se ne koriste. Dužina instrukcija je 4 bajta.
Stek raste prema višim adresama u memoriji, a registar SP pokazuje na prvu slobodnu memorijsku lokaciju. Procesor nema mogućnost obrade prekida.
Potrebno je projektovati blok FETCHADDR procesora. Blok fetchaddr kreće sa čitanjem instrukcije operanda i/ili formiranjem adrese i čitanjem operanda. Ovaj blok se pokreće ukoliko se u flip - flopu FETCHADDR nalazi vrednost 1 i startuje blok fetchaddr, dok se upisivanjem vrednosti 0 u flip - flop FETCHADDR zaustavlja blok fetchaddr.
Operaciona jedinica treba da bude realizovana direktnim povezivanjem prekidačkih mreža, a upravljačka jedinica mikroprogramiranjem. Smatrati da su se pri čitanju instrukcije bajtovi IR registra popunjavali od viših ka nižim bajtovima.
- Nacrtati strukturu operacione jedinice bloka fetchaddr. Prikazati komponente relevantne samo za ovaj blok.
- Dati sekvencu upravljačkih signala (po koracima - step) operacione i upravljačke jedinice u slučaju da se koristi mikroprogramska realizacija upravljačke jedinice. Navesti izraze svih signala uslova koji su korišćeni u sekvenci.
- Dati format mikroinstrukcije u kome su kodirani signali operacione i upravljačke jedinice, uslovi skokova i adrese skoka. Popunjavati isključivo priložene tablice datog formulara.
- Nacrtati strukturu upravljačke jedinice mikroprogramske realizacije i prikazati kako se generišu signali operacione i upravljačke jedinice na osnovu formata mikroinstrukcije.
- Prikazati sadržaj mikroprogramske memorije za prva četiri koraka.