1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.

Slides:



Advertisements
Liknande presentationer
EDA 480 – Maskinorienterad Programmering
Advertisements

Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
MS Excel 2010 – Dag 2 Mahmud Al Hakim
1 Medarbetarenkät 2011 • 573 svar. 2 Kön 3 Jag är knuten till en klass, undervisningsgrupp eller barngrupp.
Konstföreningen Dragning På sista sidan finns konstnärerna för respektive tavla.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Hela Sverige ska leva Totalrapport. Regeringens bidrag har medverkat till kunskapsförmedling?
Leif Håkansson’s Square Dancer Rotation
EDA Digital och Datorteknik
Projektföljeforskning
MS Excel 2007 Dag 1 Lärare: Mahmud Al Hakim. Agenda 1.Börja arbeta med Excel Hantera arbetsböcker 3.Formler 4.Formatera 5.Diagram Att läsa: sid.
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
EDA Digital och Datorteknik
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
2G1502 Datorteknik allmän kurs Föreläsning 4 Programutveckling Något om bussar.
LANDSTINGSDIREKTÖRENS STAB Regional utveckling BILD 1 Resultat av enkät till landstingspolitiker
Skånedatabasen & Region Skånes tillgänglighetsmodell
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
| Trycksår Kommun/Områdes-skillnader (inklusive könsdimensionen) Dennis Nordvall Statistiker/Datamanager,
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Avgiftsstudie Nils Holgersson år 2007 Bild 1 Baserat på rapportversion
Finländarnas uppfattningar om äldrevården Kirsi Markkanen Utvecklingschef Tehy rf.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Hittarps IK Kartläggningspresentation år 3.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
TÄNK PÅ ETT HELTAL MELLAN 1-50
Greppa Näringen Medlemsundersökning, kvartal 1. 1.
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
Enkätresultat för Fritidshem Elever 2014 Skola:Fritidselever, Gillberga skola.
Best pictures on the internet 2007 Awards 1http:// (s), (v), och (mp) i Norrköping, gillar inte att vi använder grundlagarna.
Resultat sammanhållen vård och omsorg om de mest sjuka äldre i Örebro län Västra länsdelen mätperiod 2014.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
SDDB hösten 2003 Preliminära resultat Svensk Njurmedicinsk Förening Riksstämman Stockholm KG Prütz Verksamhetsområde Internmedicin Helsingborgs.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Regional handlingsplan ”Det goda livet för sjuka äldre” RESULTAT i VG+Skaraborg.
Lågnivåprogrammering Översikt av I/O-mekanismer i hårdvara Olika språkkrav och modeller för komponent- hantering(device driving) Modeller för komponent-hantering.
Smittspårarutbildning
Kartminne En serie bilder som ger övning av ”rutinen” Tänk på: –Vart är jag på väg? –Varifrån är kontrollen lättast att ta? –Vilken är sista säkra? –Förenkla.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
31 March 2015 IS1500 Datorteknik o k, föreläsning CE - F61 IS1500 Datorteknik och komponenter Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd.
31 March 2015 IS1200 Datorteknik ht2009 föreläsning 2, (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
IS1200 Datorteknik Föreläsning CE F2 Vi bygger en processor Kursboken, delar av kapitel 7 31 March IS1200 Datorteknik föreläsning CE – F2.
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Kartminne En serie bilder som ger övning av ”rutinen” Tänk på: –Vart är jag på väg? –Varifrån är kontrollen lättast att ta? –Vilken är sista säkra? –Förenkla.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
2G1518 Datorteknik Föreläsning 5 Bussar In- och utmatning (Input/Output, I/O) Programstyrd pollning hösten 2005 för D3 och CLMDA m fl.
3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.
2G1502 Datorteknik allmän kurs
16 July 2015 IS1500 Datorteknik och komponeneter, föreläsning DC-F2 1 IS1500 Datorteknik och komponenter Föreläsning DC F2 Kretsar med återkoppling Minnen.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning

2 F1F2F3 F4 F5F6F7F8F9F10Ö2Ö1 Ö3 Ö4Ö5 LAB-1 LAB-2Hemlab-1Ö6 Ö7LAB-3 Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time Nios2io C-kod Nios2int Cache-minnen CPU-scheduling 2G1518 Datorteknik

3 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O- mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

4 Att läsa ● Kursboken, avsnitt:  1.4 Maskinvara  2.6 Bussar och enkel I/O-hantering  5.2 Koppling till omvärlden, sida 151–156  9.4 Kommunikation mellan processor och I/O-enheter

5 Programexekvering i två steg EXECUTE FETCH (update PC) (decode)

6 Programmerarens datormodell... cell 0 cell 1 cell 2 cell 3 cell 4... r0 r31 r1 program counter register CPU minne

7 Viktiga delar i en dator CPU MEM BUS I/O program data

8 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O- mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

9 Bussöverföring MASTER SLAVE BUS

10 Exempel: memory read ● Master – till exempel processorn (CPU) ● Slave – till exempel minnet (MEM) ● Master levererar adress (Address) ● Master ger läsbegäran (Read Request) ● Slave levererar data ● Slave levererar kvittens (Acknowledge)

11 Exempel: memory read Adress (flera ledningar) Data (flera ledningar) Read Request Acknowledge

12 Exempel: memory write ● Master – till exempel processorn (CPU) ● Slave – till exempel minnet (MEM) ● Master levererar adress (Address) och Data ● Master ger skrivbegäran (Write Request) ● Slave levererar kvittens (Acknowledge)

13 Exempel: memory write Adress (flera ledningar) Data (flera ledningar) Write Request Acknowledge

14 Asynkron buss ”any time” Adress (flera ledningar) Data (flera ledningar) Read Request Acknowledge

15 Synkron buss Adress (flera ledningar) Data (flera ledningar) Read Request Acknowledge address memrd data Clock

16 Asynkron eller synkron buss? ● Asynkron  klarar enheter med olika hastighet  bra för blandade och långsamma (äldre) system ● Synkron  kan ge högre hastighet  kan överföra adress och data separat, tiden mellan kan utnyttjas till annat  bra för snabba, likadana enheter

17 Flera slave-enheter inkopplade på olika adresser MASTER SLAVE ?? Adress-avkodare

18 Flera slave-enheter inkopplade på olika adresser MASTER MEM ?? Adress-avkodare

19 Flera slave-enheter inkopplade på olika adresser MASTER SLAVEMEM ?? Adress-avkodare

20 Flera Master går bra – Arbiter väljer mellan dem Master MEM I/O Adress dittenAdress datten ?? Adress-avkodare Master Arbiter

21 Bussledningar ● Adressledningar: 8–64 stycken  för att kunna peka ut varje byte ● Dataledningar: 8–128 bitar ● Kontrolledningar för styrning  Read, Write (eller RD/WR och Strobe)  Acknowledge (eller motsatsen, Hold)  Bus Request, Bus Grant – för Arbiter  IRQ – Interrupt ReQuest ● Övrigt: Vcc, GND, Clock, Reset,...

22 Bussledningar (forts.) ● Långsam Slave behöver extra tid vid läsning/skrivning ● Långsam Slave fördröjer ACK (eller aktiverar HOLD) ● Tidsövervakning, Time-Out, om Acknowledge aldrig kommer ● Bus Error – ingen ACK kom innan Time-Out

23 Bussledningar (forts.) ● Varje Slave måste ha adressavkodare med olika adresser så att bara en enhet svarar på varje request ● Läsning/skrivning av oanvänd adress medför Time-Out (och Bus Error) eftersom ingen enhet aktiverar Acknowledge

24 Bus Error: extra signal på bussen MASTER SLAVE BUS Time-Out Bus Error

25 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O-mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

26 Inkoppling av in- och utenheter ● Antingen memory-mapped...  in- och utenheter kopplas in på samma sätt som minne  LOAD och STORE för läsning och skrivning ●...eller I/O-mapped  in- och utenheter kopplas in med speciella, extra bussledningar  Nya instruktioner IN och OUT för läsning och skrivning

27 Inkoppling av in- och utenheter ● Memory-mapped ● Minne och I/O måste ha olika adresser ● Minne och I/O har samma kontrollsignaler ● Load, Store för I/O ● I/O-mapped ● Minne och I/O kan ha samma adresser ● Minne och I/O har olika kontrollsignaler ● Speciella in- och ut- instruktioner:  IN R1,117  OUT R2,118

28 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O- mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

29 Parallellport ● Brukar ha 8, 16, eller 32 bitar (anslutningar) ● Signalriktning: in eller ut kan vara inställbar för varje bit ● Inport består normalt av grindar ● Utport består normalt av register ● Handskakningssignaler kan finnas

30 Parallell IN-port & RD IN-PORT IN-DATA RD Adress Data Kontroll CPU-BUSS IN 0 IN n DnDn D0D0 IN 1 D1D1 grindar &&

31 IN-port ● Läsning öppnar grindarna ● Det värde som finns på inporten just då hämtas in till programmet  som resultat av LOAD- eller IN-instruktion ● Lämpligt för tryckknappar (till exempel)

32 IN-porten kopplad till annan dator ● IN-porten på min dator kan kopplas till UT-porten på en annan dator ● Filöverföring?

33 Exempel ● Texten "SOPPA" ska överföras ● Mottagaren ser värdet extra länge ● Mottagaren kan inte veta om det är ett eller två "P" ● Resultat: "SOPA" S O P P A

34 IN-port med handskakning ● Extra signaler, förutom data ● Till datorn: skrivsignal för inporten (WRITE) ● Från datorn: "Har ännu inte läst indata" = Input Buffer Full, IBF

35 IN-port med handskakning RD IN-PORT IBFWRIN-DATA RD IBF Adress Data Control CPU-BUSS IN 0 IN n DnDn D0D0 IN 1 D1D1 Q Q’ set clear IBF WR RD vippa grindar &&&......

36 Handskakning ● IBF = Input Buffer Full ● Puls på WR ettställer IBF-vippan ● Utanför datorn finns något (någon?) som ger en puls på WR när det finns nya data ● När datorn läser inporten nollställs IBF-vippan av läs-signalen RD

37 Parallell UT-port UT-PORT UT-DATA WR Adress Data Control CPU-BUSS Q Q’ D clk Q Q’ D Q D clk DnDn D0D0 D1D1 UT 0 UT n UT 1 WR Q Q’ set clear OBE RD WR register (vippor) clk

38 UT-port ● UT-porten innehåller vippor (till exempel 8, 16, 32 stycken) som tillsammans blir ett UT-register ● Datorn skriver till UT-registret ● Utanför datorn kan senaste värdet avläsas ● Lämpligt för lysdioder, motorer (till exempel)

39 UT-port med handskakning ● Extra signaler ● Till datorn: lässignal för utdata, READ ● Från datorn: "Finns ännu inga nya utdata" = Output Buffer Empty, OBE

40 UT-port med handskakning UT-PORT OBERDUT-DATA WR OBE Adress Data Control CPU-BUSS Q Q’ D clk Q Q’ D Q D clk DnDn D0D0 D1D1 UT 0 UT n UT 1 WR Q Q’ set clear OBE RD WR register (vippor) vippa clk

41 Parallellport Handskakningssignaler ● IBF = Input Buffer Full ● OBF = Output Buffer Empty ● IBF och OBE är tillgängliga för program ● IBF och OBE är tillgängliga för hårdvaran

42 Handskakningssignaler (forts.) ● IBF = Input Buffer Full ● Aktiv signal IBF (full inport)  begäran om åtgärd, från omvärlden till program  "Hallå där, nu finns nya indata" ● Samma signal IBF (full inport)  varning till omvärlden, från datorn  "Stopp, datorn har ännu inte läst senaste indata"

43 Handskakningssignaler (forts.) ● OBE = Output Buffer Empty ● Aktiv signal OBE (tom utport)  begäran om åtgärd, från omvärlden till program  "Hallå där, leverera nya utdata" ● Samma signal OBE (tom utport)  varning till omvärlden, från datorn  "Stopp, datorn har ännu inte levererat nya utdata"

44 Handskakningssignaler: IBF ● IBF – Input Buffer Full ● IBF ettställs normalt av hårdvaran när omgivningen levererar nya data till inporten ● IBF nollställs (kvitteras) av program ● Två konstruktionstyper: nollställning kan ske  vid läsning av inport (implicit bieffekt), eller  med egen instruktion (explicit)

45 Handskakningssignaler: OBE ● OBE – Output Buffer Empty ● OBF ettställs normalt av hårdvaran när omgivningen har tagit hand om utdata ● OBE nollställs (kvitteras) av program ● Två konstruktionstyper: nollställning kan ske  vid skrivning av utport (implicit bieffekt), eller  med egen instruktion (explicit)

46 0x840 0x844 0x848 0x84C SW7 SW6 SW5 SW4 SW5 SW4 SW6SW GLOBAL RESET Delar av Nios2-kortet Nios2 button_pio Memory-mapped

47 0x850 0x854 0x858 0x85C SW5 SW4 SW6SW GLOBAL RESET Delar av Nios2-kortet Nios2 dip_pio Memory-mapped

48 0x810 0x814 0x818 0x81C D3 D4 D5 D6 SW5 SW4 SW6SW GLOBAL RESET Delar av Nios2-kortet D6 D5 D4 D3 Nios2 led_pio Memory-mapped

49 Minnesliknande beteende ● Så här ska minne fungera: ● Ett värde som skrivs till en viss adress kan sedan läsas från samma adress ● Skrivning till en adress påverkar inte innehållet på andra adresser ● Läsning från en adress påverkar inte innehållet på någon adress

50 Icke minnesliknande beteende ● Så här kan in- och utenheter fungera: ● Ett värde som skrivs till en viss adress går inte att få tillbaka vid läsning från samma adress ● Skrivning till en adress kan påverka innehållet på flera andra adresser ● Läsning från en adress kan påverka innehållet på en eller flera adresser

51 Program för handskakning Invänta READY (blockerande I/O) PÅHOPP AVHOPP IBF==1? Nollställ IBF LÄS INDATA LÄS IBF JA NEJ INHOPP UTHOPP OBE==1? Nollställ OBE SKRIV UTDATA LÄS OBE JA NEJ Wait for READY Action & Acknowledge !

52 Program för handskakning Direkt retur (icke-blockerande I/O) PÅHOPP AVHOPP IBF==1? Nollställ IBF RETVAL= DATAIN LÄS IBF JA NEJ RETVAL=–1 PÅHOPP AVHOPP OBE==1? Nollställ OBE SKRIV DATAUT Nollställ RETVAL LÄS OBE JA NEJ RETVAL= –1

31 januari 20072G1518, föreäsning 5, vht2006 (D2)53 getdata från Inport rutin med pollning av statusbit (blockerande I/O) #int in_data(reg) definedatain 0x... definestatus 0x... defineibfmask 0x... in_data:loadreg1 <-- status andireg1 <-- ibfmask beqin_data loadreg <-- datain return

31 januari 20072G1518, föreäsning 5, vht2006 (D2)54 #put_data(data) definedataut 0x... definestatus 0x... defineobemask 0x... put_data:loadreg1 <-- status andireg1 <-- obemask beqput_data storedataut <-- data return putdata till Utport rutin med pollning av statusbit (blockerande I/O)

55 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O- mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

56 Serieport ● Bit för bit i stället för flera bitar samtidigt ● Asynkron kommunikation vanligt  en byte kan komma när som helst  överföringslinjen är i vila mellan två data-bytes ● Synkron kommunikation – mera speciellt  det kommer alltid en ström av bitar  utfyllnadskoder sänds mellan två data-bytes

57 Seriell kommunikation skiftregister parallella data in parallella data ut skiftregister seriell kabel Sändare Mottagare

58 Synkron seriell kommunikation ● Klocksignalen överförs på en extrasladd ● Synkroniseringskoder skickas då och då så att skiftregistren börjar på samma bit seriell kabel clock klocksignal

59 Asynkron seriell kommunikation ● Varje byte (tecken, bokstav) sänds för sig ● Ett tecken kodas ofta med ISO men på labbarna använder vi 7-bits ASCII ● Dessutom tillkommer  1 startbit (alltid 0:a)  1 paritetsbit (tillval) – udda eller jämn paritet  1, 1½ eller 2 stoppbitar (alltid 1:or)

60 Asyknron seriell kommunikation 0x x xxxxxP1 1 7-bitars ASCII en startbit (0) en Paritetsbit (P) Stoppbit(ar) (1:or) Synkroniseringsflank – övergång från 1:a till 0:a Avkänningstidpunkter

61 Serieport med asynkron kommunikation ● Bithastighet – antal bitar per sekund  kallas felaktigt för baud-rate ● Teckenlängd – behöver inte vara 1 byte  kan vara 5, 6, 7 eller 8 bitar ● Paritetsbit (räknas inte in i teckenlängden)  av/på, jämn eller udda – enkel felkontroll ● Antal stoppbitar – minst en  flera stoppbitar ger längre vila mellan två bytes

62 Paritetskontroll ● Jämn paritet = jämnt antal ettor i ordet/byten ● Udda paritet = udda antal ettor i ordet/byten ● Feldetektering  upptäcker om 1 bit ändrat värde ● Sändaren kompletterar data med extra bit, värdet sätts så att pariteten blir rätt ● Mottagaren kontrollerar att pariteten är rätt

31 januari 20072G1518, föreäsning 5, vht2006 (D2)63 in_char från serieport rutin med pollning av statusbit #int in_char(void) definedata... definestatus... defineibfmask... in_char:loadtmpreg <-- status anditmpreg <-- ibfmask beqin_char loadoutreg <-- data return

31 januari 20072G1518, föreäsning 5, vht2006 (D2)64 putchar till serieport rutin med pollning av statusbit #out_char(data in inreg) definedataout... definestatus... defineobemask... out_char:loadtmpreg <-- status anditmpreg <-- obemask beqout_char storedataout <-- inreg return

65 Nios2 uart_0 Memory-mapped 0x860 0x864 0x868 uart_00x860-86F uart_1 0x880-88F uart_0 STATUS RxRdy (IBF) TxRdy (OBE) RxDATA (RD) TxDATA (WR)

31 januari 20072G1518, föreäsning 5, vht2006 (D2)66 getchar från Serieport syntetisk Nios-2-kod (blocking) #int returvärde = in_char(void).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equibfmask, 0x80# 0x80 = 0b in_char: MOVIAr8, datain LDWr9, 8(r8)# status=datain+8 ANDIr9, r9, ibfmask BEQ r9, r0, in_char LDWr2, 0(r8) RET

31 januari 20072G1518, föreäsning 5, vht2006 (D2)67 #void out_char(parameter).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equobemask, 0x40# 0x40=0b out_char: MOVIAr8, datain LDWr9, 8(r8)#status=datain+8 ANDIr9, r9, obemask BEQ r9, r0, out_char STWr4, 4(r8)# dataut=datain+4 RET out_char från Serieport syntetisk Nios-2-kod (blocking)

68 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O- mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

69 Laboration 2: eko-program ● Skriv ett program som ekar tillbaka bytes från tangentbordet till hyperterminalfönstret ● main:callinitserie# vid behov ● loop:callin_char# läs en byte movr4,r2# kopiera callout_char# sänd tillbaka ● br loop# loopa

70 Flödesschema för eko-program START in_charout_char initserie

71 Flödesschema för korsvis kommunikation START in_charx? send_char NEJ JA rec_charx? out_char JA NEJ nytt tecken från tangentbord? om ja: sänd ut tecknet på länken nytt tecken från länken? om ja: skriv tecknet till skärmen

72 Program för korsvis kommunikation ● start:callinitserie# initera serieportar vid behov ● gettst:callin_charx# tecken från tangentbord ? bltr2, r0, rectst# om inte: hopp till rectst ● send:movr4, r2 ● callsend_char# sänd ett tecken ● rectst:callrec_charx# tecken mottaget ? bltr2, r0, gettst# om inte: hopp till gettst ● put:movr4, r2 ● call out_char# och skriv ut mottaget tecken ● brgettst# loopa

73 Korsvis kommunikation med paritetskontroll START get_charx? parmake NEJ JA  nytt tecken från tangentbord?  om ja: beräkna checksumma simulera slumpmässiga fel sänd ut tecknet på länken  nytt tecken från länken?  om ja: kolla checksumma skriv tecknet till skärmen send_char errmake rec_charx? partest NEJ JA put_char

74 Korsvis kommunikation med paritetskontroll ● start:callinitserie# initera serieportar vid behov ● gettst:callget_charx# tecken läst från tangentbord? bltr2, r0, rectst# om inte: hopp till rectst ● movr4, r2# annars: beräkna checksumma callparmake movr4, r2# och simulera slumpmässiga fel callerrmake movr4, r2 ● callsend_char# sänd sedan ett tecken ● rectst:callrec_charx# tecken mottaget från kommunikationslänk? bltr2, r0, gettst# om inte: hopp till gettst ● movr4, r2# annars: kontrollera checksumma callpartst movr4, r2 ● call put_char# skriv slutligen ett tecken till skärmen ● brgettst# och loopa

75 Rubriker ● Bussöverföring – läsning och skrivning ● Adressering – memory-mapped, I/O- mapped ● Parallellport – uppbyggnad och funktion ● Handskakning ● Serieport – funktion, paritetskontroll ● Eko-program, kommunikationsprogram ● Timer

76 Timer ● Används för exaktare tidmätning ● Har en räknare (counter), stegar 1 steg varje klockcykel  kan stega från 0 upp till inställt värde  eller stega från inställt värde ner till 0 ● När räknaren har tickat klart: Time-Out  precis som en äggklocka

77 Timer: Time-Out ● Vid Time-Out ettställs en vippa ● Värdet i vippan är tillgängligt för program ● Värdet i vippan är tillgängligt elektriskt ● Innan nästa tidmätning ska vippan återställas  HUR?

78 Flödesschema för subrutin som väntar på Time-Out entry return TimeOut==1? Read TimeOut YES NO Clear TimeOut Wait for READY Action & Acknowledge !

79 Flödesschema DELAY med program-loop N = start N = N - 1 N == 0 ? IN-hopp UT-hopp JA NEJ K = msekK = K - 1K == 0 ? IN-hopp UT-hopp JA NEJ Byt ut program-loop mot timer-loop Program-loop 1 millisekund Laboration 1 IN-parameter i r4

80 Flödesschema DELAY med timer K := K - 1K = 0 ? IN-hopp UT-hopp JA NEJ entry return TimeOut=1? Clear TimeOut Read TimeOut YES NO Timer-loop 1 millisekund K := msek Laboration 2 IN-parameter i r4

81 Timer – räknare som räknar ned ● Räknaren laddas med önskad periodtid  tiden väljs med program ● Räknarinnehållet minskas med 1 varje klockcykel ● När räknaren kommit ner till noll så ettställs Time-Out ● Räknaren kan laddas om av hårdvaran (med samma värde igen) vid Time-Out

82 Timer – statusvippa Time-Out ● Time-Out kan läsas med program ● Time-Out finns också tillgänglig som elektrisk signal ● ettställs vid Time-Out ● ska nollställas av program

83 Timer – statusvippa Run ● Run ettställs av program  annars startar inte timern ● Kan nollställas av program

84 Timer – skiss på hårdvaran counter clock period copy write (by program) run start time-out Q Q’ D cl set clear stop zero snap-shot read (by program) copy load Q Q’ D cl from program read from program

85 Nios2 Timer Memory-mapped 0x820 0x824 0x828 0x82C 0x830 0x834 0x838 0x83C

86 Timerns register är halvbreda ● Alla Timer-register kan läsas och skrivas med LDW (Load Word, 32 bitar) ● Bara de 16 bitarna till höger används

87 Nios2 Timer 0x820 status 0x824 control 0x828 periodl 0x82C periodh 0x830 snapl 0x834 snaph run TO Time-Out ITO cont start stop 15 0

88 Nios2 Timer ● Time-Out = TO, bit 0 på adress 0x820 ● Run = bit 1 på adress 0x820 ● Återställning av Time-Out: skriv valfritt värde till 0x820  värdet ignoreras, men bussöverföringen (skrivning till 0x820) gör att Timern återställer Time-Out ● Start = kör igång, ettställ bit 2 på adress 0x824 ● Stop = stoppa, ettställ bit 3 på adress 0x824

89 Minneskarta Nios2 Alla adresser är hexadecimala ● 0 - 7FFboot_monitor_rom ● Fled_pio ● Ftimer_0 ● Fbutton_pio ● Fdip-pio ● Fuart_0 (”hyperterminal) ● Fuart_1 (”annat labkort”) ● FFFFsram, 256 kByte