Mikroprosessorit Tentti 12.5.2004



  1. Monivalinta ja pieniä hajakysymyksiä (14p). Älä käytä näihin liikaa aikaa.

    a) Kuinka paljon DRAM muistin kapasiteetti kasvaa vuosittain (10%, 20%, 40%, 60%, vai 80%)(1p)? Miksi DRAM muistia ei käytetä välimuistina (1p)?

    b) Desimaaliluku 337 on binaarisena 10011001, 10100011, 101010001, 111000101 vai 1010100001 (1p). Entä mitä on 337 heksalukuna (1p)?

    c) Kun desimaaliluvusta 20 vähennetään desimaaliluku 79 käyttäen kahden komplementtiesitystä, niin saadaan 01000101, 11000101, 1010001, 11100011, vai 0101101 ?(1p)

    d) Selitä muutamalla lauseella miten oheinen looginen piiri toimii? (1p)


    e) Kirjoita oheisen loogisen funktion F lauseke mintermien avulla ja minimoi lauseke (1p).


    f) Mikä on oheisen logiikan anto Y, kun i) A=B=C=0 ja kun ii) A=1, B=C=0 (1p).


    g) Selitä D-kiikun toiminta parilla lauseella tai kuvalla (1p). Miten yksittäisistä D-kiikuista saadaan kirjoitettava ja dataa pitävä 8-bitin rekisteri (1p)?

    h) Selitä lyhyesti mitä tarkoitetaan segmentoidulla muistilla (1p)?

    i) Mihin tarvitaan ei-maskattavia keskeytyksiä (1p)?

    j) Ohessa on keksitty assembler käskyjono. Prosessorissa on pino-osoitin SP, jonka arvo (SP)=6000. Pino kasvaa ylöspäin osoitteen/käskyjen verran (2 tavua) eli tässä kahdella kun pinoon lisätään tavaraa. Prosessori suorittaa ensin käskyn 1000. Mikä on pino-osoittimen arvo heti toisen CALL käskyn jälkeen ja mitä on pinossa (2p)?


  2. Muodosta 1-bitin kokonaissummaimesta, ja logiikkapiireistä AND, OR, MUX ja INVERT 1-bitin ALU, joka kykenee tekemään summauksen + ja AND ja OR operaatiot ja vähennyslaskun kahden komplementtina. Miten tästä saadaan 32-bitin ALU (6p)?

  3. Oheisessa kuvassa on yhden syklin prosessorin dataväylä. Kirjoita vastauspaperiisi väylän kontrollisignaalien tila/ja tarvittaessa muutaman sanan kuvaus siitä millainen ohjaus kussakin pisteessä tarvitaan oheisten käskyjen aikan (8 ohjausta/käsky).(6p).


  4. PIC:
    a) Millainen on PIC-prosessorin vaatimaton liukuhihna? Mikä periaatteellinen ero on monisyklisessä ja liukuhihnaprosessorissa? (3p)

    b) Listaa paperiisi oheiseen tyyliin, käsky käskyltä akun, lippujen Z ja C ja rekisterin store tila oheisten käskyjen suorituksen aikana PIC-prosessorissa. Anna akku heksa- tai binaarilukuna ja liput 0/1. Akkuun ladattava luku BIRTH on syntymävuotesi kaksi viimeistä numeroa. (Esim. 1988 -> 88 -> heksaluku BIRTH).(3p)


  5. PIC-ohjelmointi:
    Seuraava tehtävä on sanallisesti pitkä, mutta EI erityisen vaikea. Vastaa myös jos olet hajulla mitä tässä pitäisi tehdä, kuvaile ratkaisua. Selvennökseksi mainittakoon, että sarjamuotoisen datan lähetys tarkoittaa vain sitä, että antobittiin kirjoitetaan haluttu data eikä muuteta sitä 0,1 millisekuntiin. Pitoajan määrää baudinopeus.(8p)

    Prosessorin pääohjelmassa pyöritään silmukassa, jossa odotetaan ulkoista datan lähetyskäskyä /SEND/= yhden bitin tilanvaihtoa 1-> PIC-prosessorin PortB bitissä 7. Kun tilanvaihto tulee, prosessorin tehtävänä on lähettää rekisteristä STORE (jokin yleiskäyttöinen rekisteri PIC:ssä) data sarjamuotoisena ulos PortB nastasta/bitistä B0. Sarjamuotoinen data lähetetään oheisen kuvan formaatin mukaan: ensin aloitus=0 ja sitten STORE databittejä 8, pariteettibitti olkoon aina 0 ja lopetusbitti=1. Oletetaan, että datan siirtonopeus on 0,1ms/bitti (n. 9600 baudia). Prosessorin kellotaajuus on 4MHz, eli prosessorin ajastimella saadaan 1 us:n aikaresoluutio sisäisestä kellosta. Prosessorin käskyn suorittamiseen kuluu efektiivisesti myös tämä 1 us.

    a) Kuvaile ensin miten toteutat ohjelman (alustuksineen) joka /SEND/-käskyn saatuaan lähettää STORE-tavun sarjamuotoisena linjalle.

    b) Kirjoita vaadittava koodi --alustuksien kera. Voit käyttää joko ajastinta tai ohjelmasilmukkaa tarvittavan viiveen generoimiseen.

    Ajastuksissa sallitaan +-5% heitto, joten bittien pitoaikoja ei tarvitse viilata ihan tarkkaan esim. yksittäisten käskyjen suoritusajan suhteen tai ajastimen pikkuviiveiden suhteen.
    Huom! Tentissä voi kirjoittaa bittien lähettämiset erikseen suorana koodina ilman looppeja.
    Triviaalit koodintoistot voi merkitä "kuten edellä". Tyylistä ei siis sakoteta.