BL40A1810 & BL40A1820 Mikroprosessorit A/B Luento 6: Väylät ja keskeytykset 2 5.3.2012
Johdanto Sulautettua järjestelmää voidaan ajatella sen toiminnallisuuden kannalta: Prosessointi Tiedonkäsittelyoperaatiot Toteutetaan prosessoreilla Tiedon varastointi Datan säilytys Toteutetaan muistin avulla Tiedonsiirto Tiedonsiirto prosessorin ja muistin välillä Toteutetaan väylien avulla (osoite-, data- ja ohjausväylät) Kellosignaali Resetointi Keskeytykset Mikroprosessori Osoiteväylä Ohjausväylä Ohjelmamuisti Dataväylä Datamuisti Oheispiirit Lähdöt Tulot 5.3.2012 3
Yksinkertainen väylärakenne Johdotus: Yksisuuntaista tai kaksisuuntaista Väylä: Piirikaavioissa väylän leveys (johtimien lukumäärä ilmaistaan numerolla) Johtimia, joilla on yhteinen toiminnallisuus Osoiteväylä, dataväylä, jne. Prosessori rd'/wr enable addr[0-11] data[0-7] Muisti Tai laajempi kokonaisuus: Osoite-, data- ja ohjausväylät väylä Tiedonsiirtoon liittyvä protokolla - säännöt tietoliikenteelle (miten toimitaan tietoa vaihdettaessa, millaisia viiveitä, etc.) 5.3.2012 4
Portit portti Prosessori rd'/wr enable addr[0-11] Muisti data[0-7] Kytkee väylän prosessoriin tai muistiin Koostuu pinneistä: Jalka kotelossa, liittyy padiin piirilevyllä BGA-kotelon tapauksessa metallipallo pohjassa Nykyään myös metalliset padit, joilla esim. muisti ja prosessori liitetään toisiinsa saman kotelon sisällä Portti on joukko johtimia, joilla on yhtenäinen toiminnallisuus Esimerkiksi: 12-johtiminen osoiteportti 5.3.2012 5
Ajoituskaaviot Ajoituskaavio on normaali tapa kuvata tiedonsiirtoprotokollan toimintaa Ohjaussignaalit: alhalla / ylhäällä Datasignaali: ei validi / validi Protokollat voivat sisältää aliprotokollia Kutsutaan väyläjaksoksi: esim. luku ja kirjoitus Väyläjakso voi sisältää useita kellojaksoja Esimerkki muistin lukemisesta: rd/wr asetetaan alas, osoite kirjoitetaan osoiteväylälle vähintään ajaksi tsetup ennen enablesignaalin aktivointia. Enable-signaali liipaisee muistin kirjoittamaan muistipaikan sisällön dataväylälle tread ajan sisällä rd'/wr enable addr data rd'/wr enable addr data t setup t read Lukuprotokolla t setup t write Kirjoitusprotokolla 5.3.2012 6
Protokollien peruskonsepteja Master req Aikamultipleksattu tiedonsiirto Servant Master req Servant data(15:0) data(15:0) addr data addr data mux data(8) demux mux addr/data demux req req data 15:8 7:0 addr/data addr data Toimijat: Master (mestari) kontrolloi, Slave (orja) vastaa Suunnat: Lähettäjä, vastaanottaja Osoitteisto: erityistyyppistä dataa Määrittää paikan muistissa, oheislaitteessa, tai rekisterin oheislaitteessa Aikamultipleksaus: Datan sarjoitus Siirrettävä data jaetaan samalle joukolle johtimia aikatasossa Säästää johtimia, tuhlaa aikaa Osoitteen/datan multipleksaus 5.3.2012 7
Protokollien perusteet: Tiedonsiirron kontrollointi Master req Servant Master req Servant ack data data req data 1 2 3 4 req ack data 1 2 3 4 t access 1. Master asserts req to receive data 2. Servant puts data on bus within time t access 3. Master receives data and deasserts req 4. Servant ready for next request 1. Master asserts req to receive data 2. Servant puts data on bus and asserts ack 3. Master receives data and deasserts req 4. Servant ready for next request Strobe protocol Handshake protocol [Embedded System Design, Vahid/Givargis] 5.3.2012 8
Protokollien perusteet - Strobe/Handshake Master req wait data Servant req 1 3 req 1 4 wait wait 2 3 data 2 4 data 5 t access 1. Master asserts req to receive data 2. Servant puts data on bus within time t access (wait line is unused) 3. Master receives data and deasserts req 4. Servant ready for next request t access 1. Master asserts req to receive data 2. Servant can't put data within t access, asserts wait ack 3. Servant puts data on bus and deasserts wait 4. Master receives data and deasserts req 5. Servant ready for next request Fast-response case Slow-response case [Embedded System Design, Vahid/Givaris] 5.3.2012 9
ISA-väyläprotokolla ISA (Industry Standard Architecture): Sovellettiin yleisesti x86- prosessorien yhteydessä: 8086, 80286, 80386, jne. Muistit+oheislaitteet Ominaisuuksia: 20-bittinen osoiteväylä Strobe/handshake-protokollan kompromissi Luku/kirjoitus vie vakiona 4 väyläjaksoa CHRDY-signaalia alhaalla pitämällä voidaan lukua/kirjoitusta pitkittää 6 väyläjaksoon Mikroprosessori Muisti I/O-laite CYCLE CLOCK D[7-0] A[19-0] ALE /MEMR CHRDY CYCLE CLOCK D[7-0] A[19-0] ALE /MEMW CHRDY ISA-väylä Muistin lukusevenssi C1 C2 WAIT C3 C4 ADDRESS Muistin kirjoitussekvenssi C1 C2 WAIT C3 C4 ADDRESS DATA DATA [Embedded System Design, Vahid/Givaris] 5.3.2012 10
Mikroprosessorin ulkoinen I/O Mikroprosessorin kommunikointi oheispiirien kanssa voidaan jakaa: Porttipohjainen I/O (rinnakkainen I/O) Prosessorilla on yksi tai useampia N-bittisiä portteja Portit näkyvät prosessorin ohjelmoijalle rekistereinä, joita voi lukea ja kirjoittaa Tyypillinen toteutustapa mikrokontrollereissa Esimerkiksi: P0 = 0xFF; v = P1.2, jne (portit P0 ja P1 8-bittiä leveitä) Väyläpohjainen I/O Prosessorilla on osoite- data, ja ohjausväylät(portit), jotka muodostavat yhteisen väylän Väylällä käytettävä protokolla on sisällytetty prosessoriin Väylän lukemista ja kirjoittamista voidaan toteuttaa prosessorin käskykantaan kuuluvilla käskyillä Yleisprosessorit 5.3.2012 11
Kompromisseja/laajennuksia Rinnakkaismuotoinen porttipohjainen I/O oheispiirillä: Prosessoreille, jotka tukevat ainoastaan väyläpohjaista I/O:ta Jokainen oheislaitteen portti sisältää rekisterit portin lukemiseen, kirjoittamiseen ja konfigurointiin Laajennettu rinnakkaismuotoinen porttipohjainen I/O: Sovelletaan kun prosessori tukee porttipohjaista I/O:ta, mutta portit eivät riitä Yhteen porttiin liitetään laajdennusmoduli, jolla porttien määrää pystytään kasvattamaan Processor Memory Parallel I/O peripheral Port A System bus Port B Port C Adding parallel I/O to a busbased I/O processor Processor Port 0 Port 1 Port 2 Port 3 Parallel I/O peripheral Port A Port B Port C Extended parallel I/O [Embedded System Design, Vahid/Givaris] 5.3.2012 12
Väyläpohjaisen I/O:n tyypit Väyläpohjainen I/O Prosessori kommunikoi muistin ja oheispiirien kanssa, kommunikoinnissa kaksi tapaa Muistiavaruuteen sijoitettu I/O: Muistiavaruus ja oheislaitteet sijaitsevat samassa muistiavararuudessa Esim. 16-bittinen osoiteväylä; alimmat 32 k varattu muistille ja ylimmät 32 k varattu I/O:lle Standardi I/O: Oma avaruus muistille ja oheispiireille Avaruus valitaan M/IO-signaalilla Esim. 16-bittinen osoiteväylä; 64 k varattu muistille (M/IO = 1) ja 64 k varattu I/O:lle (M/IO = 0) 5.3.2012 13
Muistiavaruuteen sijoitettu I/O vs. Standardi I/O Muistiavaruuteen sijoitettu I/O: Ei vaadi erityisiä käskyjä Assembler-käskyt liittyen muistiin, kuten MOV ja ADD toimivat yhtälailla myös oheislaitteille Standardi I/O vaatii omat käskyt I/O-avaruuden käsittelyyn (esimerkiksi IN ja OUT) data liikuttelemiseksi oheislaitteiden rekisterien ja muistin välillä Standardi I/O: Ei tarvitse varata muistiosoitteita oheislaitteille Yksinkertaisempi osoitteen dekoodauslogiikka oheislaitteille Kun tarvittava osoiteavaruus on pieni, riittää osoitteistossa pieni osoitteen leveys -> päästää nopeaan osoitteen dekoodaukseen 5.3.2012 14
ISA-väylä ISA tukee standardia I/O:ta /IOR-signaalia käytetään /MEMR:n sijasta oheislaitteiden lukemiseen IOW oheislaitteiden lukemiseen 16-bittinen osoiteavaruus oheislaitteille vs. 20-bittinen muistille CYCLE CLOCK D[7-0] A[15-0] ISA I/O-väylän lukuprotokolla C1 C2 WAIT C3 C4 ADDRESS DATA Muuten muistin ja oheislaitteiden lukemiseen käytetään samanlaisia protokollia ALE /IOR CHRDY 5.3.2012 15
Muistiprotokolla: 8051 uc ja ulkoinen muisti P0 P2 Q ALE /RD Adr. 7..0 Adr. 15 8 Adr. 7 0 Data P0 D Q /CS ALE G 74373 8 P2 /WR /RD /PSEN 8051 [Embedded System Design, Vahid/Givargis] D<0...7> A<0...15> /OE /WE CS2 /CS1 HM6264 /CS D<0...7> A<0...14> /OE 27C256 8051 uc:n ominaisuuksia: Portit P0 ja P2 tukevat porttipohjaista I/O:ta kun 8051:n sisäistä ohjelma- ja datamuistia käytetään Portteja voidaan käyttää myös väyläpohjaisen I/O:n osoite- ja dataväylinä silloin kun prosessoriin on kytketty ulkoista muistia Osoiteväylä on 16-bittinen-> P0 on multipleksattu osoite- ja dataväylä -> tarvitaan pitopiiri osoitteen bittejä 0..7 varten ja ALE-signaali (address latch enable) 5.3.2012 16
Kompleksinen muistiprotokolla CLK /ADSP /ADSC Yksittäisen lukuoperaation toteutus S0 GO=0 ADSP=1, ADSC=1 ADV=1, OE=1, Addr = Z Tilakoneen kuvaus GO=1 GO=0 ADSP=0, ADSC=0 ADV=0, OE=1, Addr = Addr0 S1 /ADV addr <15 0> /WE GO=0 GO=1 Data is ready here! /OE /CS1 and /CS2 CS3 S2 ADSP=1, ADSC=0 ADV=1, OE=1, Addr = Z GO=1 ADSP=1, ADSC=1 ADV=0, OE=0, Addr = Z S3 data<31 0> GO=1 GO=0 Generoi ohjaussignaalin, jolla ajetaan TC55V2325FF piiriä purskemoodissa Addr0 on aloitusosoite muistille GO on enable/disable-signaali muistille 5.3.2012 17
Keskeytykset Periaate Mikroprosessoriin liitetty oheislaite vastaanottaa tietyin väliajoin dataa, johon vaaditaan prosessorilta reagointia: Prosessori voi tarkistaa oheislaitteen tilan säännöllisesti, ohjelmallisesti pollaamalla, useimmat tarkistuksista turhia kuluttaa prosessorin resursseja Oheislaite voi antaa prosessorille keskeytyksen silloin kun käsiteltävää dataa saapuu Vaatii ylimääräisen nastan (nastoja) INT prosessoriin: JOS INT = 1, prosessori suorittaa meneillään olevan käskyn ja siirtyy keskeytysaliohjelmaan (Interrupt Service Routine, ISR) Menettelyä kutsutaan keskeytyspohjaiseksi I/O:ksi Keskeytyssignaalien, pollaus on prosessorin rautaan sisäänrakennettu ominaisuus -> ei haaskaa prosessorin resursseja 5.3.2012 18
Keskeytykset Keskeytysaliohjelman ISR, (interrupt service routine) alkuosoite, toteutusvaihtoehtoja: Kiinteä keskeytysosoite (fixed interrupt): Prosessorin ohjelmamuistissa on tietty keskeytysosoite, jota ei voi muuttaa Keskeytysaliohjelma alkaa tästä osoitteesta tai osoite sisältää hyppykäskyn keskeytysaliohjelman osoitteeseen Vektoroitu keskeytys (vectored interrupt): Oheislaitteiden täytyy antaa keskeytysaliohjelman osoite Yleistä silloin kun mikroprosessorilla on useita oheislaitteita, jotka on kytketty järjestelmäväylään Kompromissi kiinteän keskeytyksen ja vektoroidun keskeytyksen välillä: Keskeytysosoitetaulukko 5.3.2012 19
Kiinteä keskeytysosoite: Microchip PIC16F87x [Microchip PIC16F87x, datasivu] 5.3.2012 20
Keskeytyspohjainen I/O kiinteällä keskeytysaliohjelman alkuosoitteella Aika 1(a): P suorittaa pääohjelmaa. 1(b): P1 vastaanottaa dataa rekisteriinsä, osoite 0x8000. 3: Kun käsky muistiosoitteessa 100 on suoritettu, P havaitsee, että (Int=1). Prosessori tanllentaa pinoon ohjelmalaskurin arvon ja asettaa laskuriin kiinteän keskeytysaliohjelmaosoitteen 16. 2: P1 aktivoi keskeytyspalvelupyynnön (Int=1) vaatien palvelua mikroprosessorilta 4(a): Keskeytysaliohjelma lukee datan rekisteristä 0x8000, muokkaa dataa ja kirjoittaa tuloksen rekisteriin 0x8001. 4(b): Kun keskeytys on luettu P1 deaktivoi palvelupyynnön (Int=0). 5: ISR:n suoritus loppuu, Ohjelmalaskurin arvoksi palautetaan 100+1=101, josta P jatkaa ohjelman suoritusta. 5.3.2012 21
Keskeytyspohjainen I/O kiinteällä keskeytysaliohjelman alkuosoitteella 1(a): Mikroprosessori suorittaa pääohjelmaansa. 1(b): Oheislaite P1 vastaanottaa dataa rekisteriinsä, osoite 0x8000. Ohjelmamuisti ISR 16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return... Pääohjelma... 100: 101: käsky käsky P PC Int P1 0x8000 Datamuisti Järjestelmäväylä P2 0x8001 [Embedded System Design, Vahid/Givargis] 5.3.2012 22
Keskeytyspohjainen I/O kiinteällä keskeytysaliohjelman alkuosoitteella 2: P1 aktivoi keskeytyspalvelupyynnön (Int=1) vaatien palvelua mikroprosessorilta Ohjelmamuisti ISR 16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return... Pääohjelma... 100: 101: käsky käsky P PC Int 1 P1 0x8000 Datamuisti Järjestelmäväylä P2 0x8001 [Embedded System Design, Vahid/Givargis] 5.3.2012 23
Keskeytyspohjainen I/O kiinteällä keskeytysaliohjelman alkuosoitteella 3: Kun käsky muistiosoitteessa 100 on suoritettu, P havaitsee, että (Int=1). Prosessori tanllentaa pinoon ohjelmalaskurin arvon ja asettaa laskuriin kiinteän keskeytysaliohjelmaosoitteen 16. Ohjelmamuisti ISR 16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return... Pääohjelma... 100: 101: käsky käsky P PC 100 Int P1 0x8000 Datamuisti Järjestelmäväylä P2 0x8001 [Embedded System Design, Vahid/Givargis] 5.3.2012 24
Keskeytyspohjainen I/O kiinteällä keskeytysaliohjelman alkuosoitteella 4(a): Keskeytysaliohjelma lukee datan rekisteristä 0x8000, muokkaa dataa ja kirjoittaa tuloksen rekisteriin 0x8001. 4(b): Kun keskeytys on luettu P1 deaktivoi palvelupyynnön (Int=0). Ohjelmamuisti ISR 16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return... Pääohjelma... 100: 101: käsky käsky P Int PC 100 0 P1 0x8000 Datamuisti Järjestelmäväylä P2 0x8001 [Embedded System Design, Vahid/Givargis] 5.3.2012 25
Keskeytyspohjainen I/O kiinteällä keskeytysaliohjelman alkuosoitteella 5: ISR:n suoritus loppuu, Ohjelmalaskurin arvoksi palautetaan 100+1=101, josta P jatkaa ohjelman suoritusta. Ohjelmamuisti ISR 16: MOV R0, 0x8000 17: # modifies R0 18: MOV 0x8001, R0 19: RETI # ISR return... Pääohjelma... 100: käsky 101: käsky P Int PC 100 +1 P1 0x8000 Datamuisti Järjestelmäväylä P2 0x8001 [Embedded System Design, Vahid/Givargis] 5.3.2012 26
Esimerkki: Keskeytykset Microchip PICkontrollerilla ja Assembly-kielellä #include "p16f876.inc ; Header-tiedosto, rekisterimakrot, yms. ORG 0 ; Ohjelman aloituspiste GOTO START ; Hypätään osoitteeseen START ORG 4 ; Ohjelma jatkuu osoitteesta 0x04 GOTO INTERRUPTSERVICE ; Keskeytysosoite (osoite 0x04) ORG 5 ; Ohjelma jatkuu osoitteesta 0x05 START ; ;***************************************************************************** ; Pääohjelma ;***************************************************************************** BSF INTCON,INTE ; Aktivoidaan ulkoinen keskeytys (RB0) BCF STATUS,RP0 ; Muistipankin vaihto BSF INTCON,GIE ; Aktivoidaan keskeytykset MAINLOOP ; Label: pääohjelmasilmukka NOP ; No operation GOTO MAINLOOP ; Hyppy ohjelmamuistin osoitteeseen MAINLOOP ;***************************************************************************** ; Keskeytysrutiini ;***************************************************************************** INTERRUPTSERVICE ; Keskeytysrutiinin alkuosoite ; Tähän asiat, jotka keskeytyksessä tehdään RETFIE ; Paluu keskeytyksestä, keskeytysten enablointi END 5.3.2012 27
Yhteenveto Sulautetussa järjestelmässä prosessorin väylällä siirretään dataa: Muistin ja prosessorin välillä Muistin ja oheispiirien välillä Prosessorin väylä on kokonaisuus, joka koostuu: osoiteväylästä, dataväylästä ja ohjausväylästä Signaloinnin lisäksi väylään liittyy protokolla periaattet ja signalointiin liittyvät ajoitukset, joilla: Väylä varataaraan Jolla tietoa siirretään väylällä Keskeytykset ovat mekanismi, joilla prosessori hoitaa sen väylään liittettyjen oheispiirien palvelupyyntöjä Mekanismi ei kuluta prosessorin resursseja vrt. pollaus 5.3.2012 28