(1 bod) Procesor FRISC se sinkronizira s DMA-jedinicom pomou:
__BREQ_____ (navedite ime FRISC-ovog prikljuka) iji smjer je ___ulazni_____, __BACK_____ (navedite ime FRISC-ovog prikljuka) iji smjer je ___izlazni_____.
2. (2 boda) Na prazne crte upiite korake koje FRISC obavlja prilikom izvoenja naredbe STORE R1,(3000):
3. (1,5 bod) Odredite trajanje izvoenja sljedeeg programskog odsjeka (pretpostavite da je memorija brza): `ORG 0 0 MOVE 4, R0 1 x 1 = 1 POC SUB R0, 2, R0 2 x 1 = 2 JR_NZ POC 2 x 2 = 4 STORE R0, (1000) 1 x 2 = 2 HALT 1 x 2 = 2
Izvoenje traje _____ 11 _____ ciklusa . Mora se vidjeti postupak raunanja, tj. kraj svake naredbe mora se vidjeti koliko puta se izvodi i koliko je njeno trajanje
4. (0,5 boda) Uvjetna vanjska jedinica o odnosu na bezuvjetnu vanjsku jedinicu u svojoj unutranjosti mora imati _________bistabil stanja (ili status bistabil)_________________________ (koji dio). Uvjetna vanjska jedinica o odnosu na bezuvjetnu vanjsku jedinicu mora imati dodatne prikljuke za spajanje prema vanjskom svijetu. Ovi prikljuci nazivaju se prikljucima za ______sinkronizaciju (ili rukovanje)______.
5. (7 bodova) Na FRISC su spojeni DMA (adresa FFFF 1000 16 ), disk (adresa FFFF 2000 16 ) i CT (spojen na INT3, CT nema prikljuak IACK, adresa FFFF 3000 16 ).
Program treba slijedno pokretati DMA (zaustavljanje procesora, ne postavlja prekid) svakih 1 sekundu pomou CT sklopa (na CT-ov ulaz CNT spojen je signal frekvencije 25 kHz). U svakom DMA prijenosu se prenosi po jedan blok od 14 16 (20 10 ) 32-bitnih podataka s diska u memoriju, poevi slijedno od memorijske lokacije 1000 16 na dalje (1. blok na 1000 16 , 2. blok na 1050 16 , itd.). Nakon prijenosa 100 10 blokova treba zaustaviti procesor. Nakon inicijalizacije vanjskih jedinica, glavni program treba cijelo vrijeme izvoditi praznu petlju. Sa diska se podaci itaju bezuvjetno, a disk u sebi ima meuspremnik za podatke kapaciteta 20 10 rijei te zauzima 20 10 32-bitnih lokacija poevi od adrese FFFF 2000 16 .
Potprogrami trebaju uvati stanje registara osim onih koji se koriste za prijenos podataka.
6. (8 bodova) Na FRISC su spojene uvjetne ulazne vanjske jedinice VJ1 (adresa FFFF 1000 16 ) i VJ2 (adresa FFFF 2000 16 ), uvjetna izlazna vanjska jedinica VJ3 (adresa FFFF 3000 16 ) i PIO u prekidnom nainu rada (spojen na INT1, adresa FFFF 4000 16 ).
Napisati glavni program koji beskonano prima podatke s VJ1 i VJ2 (jedinice su meusobno nezavisne). Svaki primljeni podatak treba poslati na VJ3. Ako je podatak djeljiv s 4, treba poveati broja prenesenih podataka BROJAC4 pohranjen na memorijskoj lokaciji 1000 16 . Na primjer, ako su preneseni podaci 1 10 , 24 10 , 5 10 , 6 10 , 8 10 broja sadri vrijednost 2 jer su samo 24 10 i 8 10 djeljivi s 4.
Napisati prekidni potprogram za obradu prekida PIO, koji na PIO alje sadraj brojaa BROJAC4 i ponovno postavlja broja na 0. Pretpostavlja se da sadraj brojaa nee prijei opseg od 8 bita.
Potprogrami trebaju uvati stanje registara osim onih koji se koriste za prijenos podataka.
VJ1 `EQU 0FFFF1000 VJ1CL `EQU 0FFFF1004
VJ2 `EQU 0FFFF2000 VJ2CL `EQU 0FFFF2004
VJ3 `EQU 0FFFF3000 VJ3CL `EQU 0FFFF3004 ; sve tri VJ1, VJ2, VJ3
PIOC `EQU 0FFFF4000 PIOD `EQU 0FFFF4004 PIOIACK `EQU 0FFFF4008 PIOIEND `EQU 0FFFF400C ; konstante za PIO
`ORG 0 JP GLAVNI ; skok na glavni
`ORG 8 ; prekidni vektor DW IRQ ; adresa
GLAVNI MOVE 10000, SP ; stog
MOVE %B010, R0 ; izlazni, prekidi, bajt STORE R0, (PIOC) ; podesi PIO
MOVE %B10100000, SR ; GIE, EINT1
; ispravno prozivanje (slucaj da je VJ1 puno brza od VJ2)
PET1 LOAD R0, (VJ1CL) ; spremna prva? CMP R0, 0 ; usporedba i JP JP_EQ PET2 ; JP_EQ ili JP_Z
LOAD R1, (VJ1) ; ucitaj podatak u R1 STORE R1, (VJ1CL) ; obrisi spremnost
CALL OBRADI ; posalji R1 na VJ3
PET2 LOAD R0, (VJ2CL) ; spremna druga? CMP R0, 0 ; usporedba i JP JP_EQ PET1 ; JP_EQ ili JP_Z
LOAD R1, (VJ2) ; ucitaj podatak u R1 STORE R1, (VJ2CL) ; obrisi spremnost
CALL OBRADI ; posalji R1 na VJ3
JP PET1 ; petlja
; potprogram za prijenos na VJ3 ; R1 = podatak OBRADI PUSH R0 ; kontekst
PET3 LOAD R0, (VJ3CL) ; spremna treca? CMP R0, 0 ; usporedba i JP JP_EQ PET3 ; JP_EQ ili JP_Z
STORE R1, (VJ3) ; posalji podatak STORE R1, (VJ3CL) ; obrisi spremnost
AND R1, %B11, R1 ; ispitaj djeljivost JP_NZ NAZAD ; nije djeljiv s 4