Mikroprosessorit Tentti 24.5.2004
Laita nimesi kaikkiin palauttamiisi papereihin. Teht. 3. kannattaa varmaan piirtää tehtäväpaperiin.
Maksimi pistemäärä 40p.
- Monivalinta ja pieniä hajakysymyksiä (14p). Älä käytä näihin liika aikaa.
a) Miksi nykyisissä prosessoreissa on ryhdytty käyttämään välimuistia ja miksi DRAM muisti ei sovellu välimuistiksi? (2p)
b) Desimaaliluku 137 on binaarisena 10001001, 10100011, 10101001, 100101 vai 100001 (1p). Entä mitä on 137 heksalukuna? (1p)
c) Tarkastellaan lukujen 40 ja 79 summaamista ja vähentämistä. Kuinka monta bittiä tarvitaan, jotta lukuja voisi laskea turvallisesti kahden komplementtiesityksessä? (1p).
Kun 79 vähennetään 40:stä saadaan siis 01000101, 11011011, 101001, 1101101011, vai 0101101? (1p)
d) Oheinen looginen piiri on NAND, AND, OR, NOR vai XOR? (1p)

e) Ohessa on D-lukkopiiri. Piirrä ajastuskuva (anto Q kellon C ja oton D funktiona) ja selitä lyhyesti piirin toiminta (2p).

f) Ohessa on kuva 1-bitin ALU-piiristä. Mihin toimintoon liittyy Binvert (1p)? Mitä signaali Operation tekee (1p)?

g) Piirrä kuva liukuhihnasuorituksesta, kun käsky koostuu osista Fetch, Exe, Mem, Store. (2p)
h) Prosessorin pinoa tarvitaan rekisterisiirroissa, aritmetiikassa, väylän kontrollilogiikassa, aliohjelmakutsuissa, vai muistin ohjauksessa (segmentointi)? (1p)
- Selitä staattisen ja dynaamisen RAM muistin ero. Millainen on DRAM muistin muistisolu?
Selitä oheisesta kuvasta SRAM muistin toiminta. Kuvassa olevassa D-lukkopiirissä (latch) on 3-tila anto. (6p)

- Oheisesta kuvasta -- monisteen yhden syklin prosessori-- on poistettu monta tarpeellista väyläkytkentää. Muutama viite on jätetty jäljelle vähän helpottamaan tehtävää. Täydennä kuva, niin että ainakin LOAD-operaatio voidaan suorittaa. Merkkaa kuvaan myös väylien leveydet.
Selvitä paperiin missä tilassa kontrollisignaalit ALUSrc ja W_Src ovat käskyn aikana. (6p)

- PIC:
a) Selvitä lyhyesti ja lohkotasolla (piirrä esim. laatikot, osoitteita, muistin kokoja jne, ei tarvitse muistella) PIC-prosessorin muistin rakenne. (3p)
b) Listaa käsky käskyltä akun, lippujen Z ja C ja storen tila oheisten käskyjen suorituksen aikana PIC-prosessorissa. Anna akku ja heksa- tai binaarilukuna ja liput 0/1. Huom. default taulussa TABLE 9-1. (3p).

- 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 tässä 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->0 PIC-prosessorin PortB bitissä 0. Kun tilanvaihto tulee, prosessorin tehtävänä on lähettää rekisteristä STORE (jokin yleiskäyttöinen rekisteri PIC:ssä) data sarjamuotoisena ulos PortA nastasta/bitistä A0. 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 4 MHz, eli prosessorin ajastimella saadaan 1 us:n aikaresoluutio sisäisestä kellosta. Prosessorin 1 syklin käskyn suorittamiseen kuluu siis tämä 1 us. Syklit saat käskytaulusta jokaiselle käskylle.

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ää ohjelmasilmukkaa (helpoin) 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.