ORT2/K3 2018

Izvor: SI Wiki
< ОРТ2
Datum izmene: 30. januar 2021. u 18:28; autor: KockaAdmiralac (razgovor | doprinosi) (Postavka pretprošlogodišnjeg K3)
(razl) ← Starija izmena | Trenutna verzija (razl) | Novija izmena → (razl)
Pređi na navigaciju Pređi na pretragu

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.

  1. Nacrtati strukturu operacione jedinice bloka fetchaddr. Prikazati komponente relevantne samo za ovaj blok.
  2. 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.
  3. 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.
  4. Nacrtati strukturu upravljačke jedinice mikroprogramske realizacije i prikazati kako se generišu signali operacione i upravljačke jedinice na osnovu formata mikroinstrukcije.
  5. Prikazati sadržaj mikroprogramske memorije za prva četiri koraka.

Rešenje

Operaciona jedinica

Mikroprogram

Mikroinstrukcija

Mikromemorija