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.

Slides:



Advertisements
Liknande presentationer
EDA 480 – Maskinorienterad Programmering
Advertisements

Talföljder formler och summor
Flynns taxonomi ● Single Instruction, Single Data (SISD) – en instruktion i taget opererar på ett värde i taget ● Single Instruction, Multiple Data (SIMD)
Många studenter använder en LCD-display till sin programmeringsuppgift
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.
Leif Håkansson’s Square Dancer Rotation
EDA Digital och Datorteknik
Persondatorer Datorns internminne (Kapitel 6)
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
EDA Digital och Datorteknik
IS1500 Datorteknik och komponenter
PC-Teknik © CAAK1 PC-teknik Anna-Karin Carstensen Plan 3 el/data tel:
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.
1 2G1518 Datorteknik Föreläsning 5, våren 2007 Bussar In- och utmatning – I/O Pollning Handskakning.
Distribuerade filsystem
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
1 Studieteknik Språkhandledningen. 2 Överblick över arbetet Kursplanen/målen Kursplanen/målen Litteraturlistan Litteraturlistan Terminen Terminen Delkurserna.
9 September 2014IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Pekare och speciell programstruktur i inbyggda system
Styrteknik: Programmering med MELSEC IL PLC2A:1
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: - Förening av dataströmmar - Signaler - Signalhantering.
Föreläsning 14 ”Enkel” Filhantering.
2G1510 Datorteknik fk Föreläsning 1, hösten 2003.
Styrteknik 7.5 hp distans: PLC-Program, kaffe-automat PLC7B:1
Datorsystem 1 & Datorarkitektur 1 – föreläsning 7 onsdag 7 november 2007.
UDP Pålitlig byteström TCP
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Processtruktur -Processklyvning och kodbyte -Avslutning av processer.
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.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
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.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
Cacheminnen: skrivning ● Träff ● Skrivbuffert ● Miss.
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
Emulatorkonstruktion Schema Inledning Andra metoder Mina metoder Demonstration av min C64-emulator Sammanfattning och frågor.
2 April 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.
William Sandqvist Övning 6 Seriekommunikation - serieport William Sandqvist
1 Föreläsning2 Operativsystem. 2 Talsystem Decimal (bas 10): 0,1,2,…,8,9 Binär talsystem (bas 2): endast 1 och 0 Hexadecimal talsystem (bas 16): 0,1,…9,A,…,E,F.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( ) Innehåll: - Förening av dataströmmar -Blockerande I/O multiplexering -Icke blockerande.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
Föreläsning2 Operativsystem.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
1 June G1518, Förel 10, ht2005 (D3/CLMDA)1 2G1518 Datorteknik, ht 2005 version för D3 och CLMDA Föreläsning Processorkonstruktion 2. DMA, Direct.
1 June G1502, Föreläsning 9, vt2004 för IT1 2G1502 Datorteknik allmän kurs Föreläsning 9 1. Processorkonstruktion 2. DMA, Direct Memory Access 3.
2 June G1518, Föreäsning 7, vt 2007 (D2)1 2G1518 Datorteknik Föreläsning 7 Exceptions ht vt 2006 (period 2-3) för D2.
2G1502 Datorteknik allmän kurs
2 June G1502, Föreläsning 8, vt2004 för E och I1 2G1502 Datorteknik allmän kurs Föreläsning 8 Processorkonstruktion DMA, Direct Memory Access.
6/3/2015© Mats Brorsson1 Hur mycket snabbare blir det med PC133 SDRAM jämfört med PC100 SDRAM?... blir det med en 1,4 GHz Athlon- processor jämfört.
13 June 2015 IS1200/2G1518 Datorteknik, föreläsning 7, vt2008 (Kista)1 IS1200 Datorteknik Föreläsning 7 Exceptions vt 2008 (period 3) för IT/ME och Hing/Kand.
14 July 2015 IS1200/2G1518 Datorteknik, föreläsning 2, ht2007 (D2)1 IS1200 Datorteknik Föreläsning 2 Vi bygger en processor Kursboken, valda delar av kapitel.
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.
31 July 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
13 October 2015 IS1200 Datorteknik ht2009, föreläsning 7, (D2)1 IS1200 Datorteknik Föreläsning 7 Exceptions ht 2009 – vt 2010 (period 2-3) för D-2.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

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 övningsgrupper denna vecka ● onsdag 5 oktober kl 10–12 – L42, L43, L44 (Drottning Kristinas väg 30) ● torsdag 6 oktober kl 10–12 – Q21, Q22, Q23

Föreläsning 5 Innehåll, rubriker ● Bussöverföring (Bus Data Transfer) ● Read/Write ● I/O-enheter, adressering ● Parallellport, funktion, pollning ● Serieport, funktion, pollning ● Timer, funktion, pollning ● Eko-program, Kommunikations-program ● Paritetskontroll

Litteraturhänvisningar Kursbokens avsnitt  1.4 Maskinvara  2.6 Bussar och enkel I/O-hantering  5.2 Koppling till omvärlden, sid  9.4 Kommunikation mellan processor...

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

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

Bus Data Transfer viktiga aspekter MASTER SLAVE BUS

Bus Data Transfer Memory Read ● Master - till exempel CPU ● Slave - till exempel Memory ● Master levererar adress (t. ex. PC-value) ● Master ger läsbegäran (Read Request) ● Slave levererar data (t. ex. en instruktion) ● Slave levererar kvittens (Acknowledgement) ● Används vid Fetch Instruction och LOAD

Bus Data Transfer Memory Read Address Read Vad händer om (Rd) Ack uteblir ? 12 Data (Rd) Ack 34

Bus Data Transfer Memory Write ● Master - till exempel CPU ● Slave - till exempel minne ● Master levererar adress ● Master levererar data ● Master ger skrivbegäran (Write Request) ● Slave levererar kvittens (Acknowledgement) ● Används vid STORE

Bus Data Transfer Memory Write Address Write Vad händer om (Wr) Ack uteblir ? 2 Data (Wr) Ack

Bus Data Transfer Asynchronous Memory Read Address Read Data (Rd) Ack Slave kvitterar (med ACK) först när Slave levererar data

Bus Data Transfer Synchronous Memory Read Address Read Data (Rd) Ack clock address memrd data

Asynkron / synkron buss ● Asynkron – klarar enheter med olika hastigheter – bra för långsamma och blandade enheter (I/O) ● Synkron – kan ge högre hastighet – kan överföra adress och data separat, och utnyttja tiden mellan dem till annat (split-transaction bus) – bra för snabba, likadana enheter (minne)

Flera SLAVE fungerar bra - på olika adresser ! MASTER BUS SLAVE ?? Adress-avkodare

Flera minnen - på olika adresser ! CPU MEM BUS MEM Adress dittenAdress datten ?? Adress-avkodare

Flera Slave - på olika adresser ! CPU MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare

Flera Master fungerar - en Arbiter behövs för att välja mellan dem Master MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare Master Arbiter

Bussledningar Adressledningar 8-64 stycken, för att kunna peka ut varje byte Dataledningar, minst 8 bitar, upp till 128 bitar eller mer Kontrolledningar Read + Write, eller RD/WR och Data Strobe Ack, gemensam för läs och skriv Bus Request, Bus Grant – vid flera Masters IRQ - Interrupt ReQuest Övrigt Jord (Gnd), spänningsmatning (Vcc), clock, reset, m fl

Bussledningar (forts.) ● Långsam Slave kan bromsa läsning/skrivning ● fördröj Acknowledge, eller ● inför speciell Hold-signal ● Tidövervakning, Time-Out ● om Acknowledge aldrig kommer ● Bus Error – ingen Acknowledge kom

Bussledningar (forts.) ● Om det finns mer än en Master så behövs en Bus Arbiter (fördelare) ● Varje Slave måste ha adressavkodare så att max. en enhet svarar på Request ● Läsning/skrivning till oanvänd adress medför... – Time-out eftersom ingen enhet svarar med Acknowledgement

Bus Data Transfer Bus Error MASTER SLAVE (svarar ej) BUS Time-Out BusErrror X Adress-avkodare

Två sätt att ansluta I/O  Memory Mapped  Memory och I/O har olika adresser  Samma kontroll-signaler för minne och I/O  Vanliga Load och Store används för I/O, inga specialinstruktioner behövs  I/O Mapped  Memory och I/O kan ha samma adresser  Olika kontroll-signaler för minne och I/O  Speciella instruktioner används för I/O IN R1,117 OUT R2,118

Parallell-port ● Parallellport brukar ha en multipel av 8 signaler/anslutningar ● Signalriktning kan vara programmerbar separat för varje signal/pinne ● Inport består normalt av grindar – läsning ger värdet just då ● Utport består normalt av register – skrivning sätter nytt värde, gäller till nästa skrivning ● Handskakningssignaler kan finnas

IN-port & IN-PORT IN-DATA RD + adress- avkodning Adress Data Control CPU-BUSS IN 0 IN n DnDn D0D0 IN 1 D1D1 grindar & & RD + adressavkodning

IN-port IN-PORT IBFWR + adressavkodningIN-DATA IBF Adress Data Control CPU-BUSS IN 0 IN n DnDn D0D0 IN 1 D1D1 Q Q’ set clear IBF WR RD vippa grindar & & & RD + adress- avkodning RD + adressavkodning

UT-port UT-PORT OBERD + adressavkodningUT-DATA OBE Adress Data Control CPU-BUSS Q Q’ D cl Q Q’ D cl Q Q’ D cl DnDn D0D0 D1D1 UT 0 UT n UT 1 Q Q’ set clear OBE RD WR register (vippor) vippa WR + adress- avkodning WR + adressavkodning

Nios2 button_pio Memory Mapped Addresses 0x840 0x844 0x848 0x84C SW7 SW6 SW5 SW4 SW5 SW4 SW6SW GLOBAL RESET Delar av Lab-kortet D6 D5 D4 D3

D6 D5 D4 D3 Nios2 dip_pio Memory Mapped Addresses 0x850 0x854 0x858 0x85C SW5 SW4 SW6SW GLOBAL RESET Delar av Lab-kortet

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

Parallell-port Handskakningssignaler  IBF - Input Buffer Full  OBE - Outport Buffer Empty  IBF och OBE är tillgängliga för program  IBF och OBE är tillgängliga för hårdvara

Parallell-port (forts.) Handskakningssignaler  IBF - Input Buffer Full  OBE - Outport Buffer Empty  Aktiv signal IBF (full inport) begäran om åtgärd, från omvärlden till CPU/program betyder: “hallå där, nu finns nya indata”  Aktiv signal OBE (tom utport) begäran om åtgärd, från omvärlden till CPU/program betyder: “hallå där, leverera nya utdata” (Klarsignal = Readysignal)

Parallell-port (forts.) Handskakningssignaler  IBF - Input Buffer Full  IBF ettställs normalt då omgivningen levererar nya data till inporten  IBF nollställs/kvitteras av program, t.ex. vid läsning av inport (implicit sidoeffekt) eller med egen instruktion (explicit)

Parallell-port (forts.) Handskakningssignaler  OBE, Output Buffer Empty  OBE ettställs normalt då omgivningen har tagit hand om utdata  OBE nollställs/kvitteras av program, t.ex. vid skrivning av utport (implicit sidoeffekt) eller med egen instruktion (explicit)

Minnesliknande beteende vid läsning och skrivning 1. Ett värde som skrivs till en viss adress kan sedan läsas från samma adress 2. Skrivning till en adress påverkar ej innehåll på andra adresser 3. Läsning från en adress påverkar ej innehåll på någon adress  Annat beteende vid minnesreferenser kallas för "icke minnesliknade"  I/O-enheter bryter oftast mot (1), ibland mot (2), men ska helst inte bryta mot (3)

Handskakning med IBF/OBE Flödes-schema, invänta ready (blockerande I/O) INHOPP UTHOPP 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 !

Handskakning med IBF/OBE Flödes-schema, direkt retur (icke blockerande I/O) INHOPP UTHOPP IBF=1? Nollställ IBF PAR:= INDATA LÄS IBF JA NEJ PAR:= -1INHOPP UTHOPP OBE=1? Nollställ OBE och PAR SKRIV UTDATA LÄS OBE JA NEJ PAR:= -1

getdata från inport – subrutin med pollning av statusbit (blockerande I/O) #int returvärde = getdata(void) defineindata 0x... definestatus 0x... defineibfmask 0x... getdata:loadreg1 <-- status andireg1, reg1,ibfmask beqreg1, zero, getdata loadreturvärde <-- indata return

putdata till utport – rutin med pollning av statusbit (blockerande I/O) #void putdata(parameter) defineutdata 0x... definestatus 0x... defineobemask 0x... putdata:loadreg1 <-- status andireg1, reg1, obemask beqreg1, zero, putdata storeutdata <-- parameter return

Serie-port ● Används för seriell kommunikation ● Vanligt är asynkron kommunikation, ett tecken kan komma när som helst ● Synkron kommunikation finns även, det kommer alltid en ström av bitar

Serieport Parallella data in Parallella data ut skiftregister Seriell kabel skiftregister SändareMottagare

Serie-port Asynkron kommunikation  Varje tecken (bokstav) sänds för sig  Ett tecken kodas ofta med 7 bitars ASCII  Dessutom tillkommer 1 startbit 1 paritetsbit (opt) udda eller jämn paritet 1 eller 2 stoppbitar

Serie-port Asynkron kommunikation 0x x xxxxxP1 1 7-bitars ASCII 1 startbit (0) 1 Paritetsbit (P) Stoppbit(ar) (1) Synkroniseringsflank Avkänningstidpunkter

Synkronisering ● Bit-synkronisering mottagare måste polla mitt i prick ● Byte-synkronisering När börjar nytt tecken (SYN) ● Block-synkronisering När börjar ett nytt block/paket (SOH...)

Serie-port Asynkron kommunikation ● Bithastighet (kallas felaktigt för baudrate) ● Teckenlängd (5, 6, 7, 8, …) ● Paritet On/Off, Even/Odd ● Antal Stoppbitar (1, 1½, 2) (antal perioder mellan sända tecken) (baudrate = signaleringshastighet)

getchar från serieport rutin med pollning av statusbit ;int returvärde = getchar(void) defineindata0x... definestatus0x... defineibfmask0x... getchar:loadtmpreg <-- status anditmpreg, tmpreg, ibfmask beqtmpreg, zero, getchar loadreturvärde <-- indata return

putchar till serieport rutin med pollning av statusbit #void putchar(parameter) defineutdata0x... definestatus0x... defineobemask0x... putchar:loadtmpreg <-- status anditmpreg, tmpreg, obemask beqtmpreg, zero, putchar storeutdata <-- parameter return

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

#int returvärde = getchar(void).equindata,0x860;0x880.equutdata,0x864;0x884.equstatus,0x868;0x888.equibfmask,0x80;0x80 getchar: MOVIAr8, indata LDWr9, 8(r8)# status = indata + 8 ANDIr9, r9, ibfmask BEQ r9, r0, getchar LDWr4, 0(r8) RET getchar från serieport, Nios2-kod (blocking)

putchar från serieport, Nios2-kod (blocking) #void putchar(parameter).equindata,0x860;0x880.equutdata,0x864;0x884.equstatus,0x868;0x888.equobemask,0x40;0x40 putchar: MOVIAr8, indata LDWr9, 8(r8)# status = indata + 8 ANDIr9, r9, obemask BEQ r9, r0, putchar STWr4, 4(r8)# utdata = indata + 4 RET

Laboration 2 EKO-program ● Skriv ett progam som ekar tecken från tangentbord till terminalfönster start:callinitserie# VID BEHOV main:callgetchar movr2, r4 callputchar brmain

Flödesschema för EKO-program START getcharputcharinit

Flödesschema för korsvis kommunikation START getcharx? sendchar NEJ JA reccharx? putchar 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

EKO-program med korsvis kommunikation start:callinitserie# initera serieportar vid behov gettst:callgetcharx# tecken läst från tangentbord? bltr2, r0, rectst# om inte: hopp till rectst movr4, r2# annars: sänd callsendchar# ett tecken rectst:callreccharx# tecken mottaget från kommunikationslänk? bltr2, r0, gettst# om inte: hopp till gettst movr4, r2# annars: skriv till skärm call putchar# ett tecken brgettst# och loopa

Korsvis kommunikation med paritetskontroll START getcharx? 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 sendchar errmake reccharx? partest NEJ JA putchar

Korsvis kommunikation med paritetskontroll start:callinitserie# initera serieportar vid behov gettst:callgetcharx# 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 callsendchar# sänd sedan ett tecken rectst:callreccharx# tecken mottaget från kommunikationslänk? bltr2, r0, gettst# om inte: hopp till gettst movr4, r2# annars: kontrollera checksumma callpartest movr4, r2 call putchar# skriv slutligen ett tecken till skärmen brgettst# och loopa

Hardware Timer ● Används för exaktare tidmätning ● alt1: Counter räknar upp från 0 till value ● alt2: Counter räknar ner från value till 0 ● när Counter räknat klart kallas det Time-Out ● Vid Time-Out ettställs en vippa vars värde finns tillgängligt för program och elektriskt ● Vippan kan nollställas (hur?)

Counter som räknar Flödesschema för väntan entry return TimeOut=1? Read TimeOut YES NO Clear TimeOut Wait for Time-Out Action & Acknowledgement !

Flödesschema DELAY med PROGRAM-LOOP N := startN := N - 1 N = 0 ? IN-hopp UT-hopp JA NEJ K := millisek K := K - 1 K = 0 ? IN-hopp UT-hopp JA NEJ Byt ut program-loop mot timer-loop Program-loop 1 millisekund Laboration 1 IN-parameter i r4

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

Timer med Counter som räknar ner  Counter laddas med period  Counter minskas med ett vid klockflank  Counter=0 medför ettställ Time-Out  Counter laddas om vid Time-Out  period kan väljas med program

Timer Statusvippa Time-Out Statusvippa som kallas Time-Out ● ettställs vid Time-Out kan pollas av program ● ska nollställas av program tillgänglig som elektrisk signal

Timer Statusvippa Run  Statusvippa som kallas Run ettställs av program nollställs av program kan pollas av program tillgänglig som elektrisk signal ?

Nios Timer Hårdvaru-figur counter clock period copy write from program run start time-out Q Q’ D cl set clear stop zero snap-shot read from program copy load Q Q’ D cl from program read from program

Nios Timer Memory Mapped Addresses 0x820 0x824 0x828 0x82C 0x830 0x834 0x838 0x83C

0x820 status 0x824 control 0x828 periodl 0x82C periodh 0x830 snapl 0x834 snaph Nios Timer Status / Control etc run TO Time-Out ITO cont start stop 15 0

Nios Timer Hokus Pokus  TO - Time Out, bit 0 på adress 0x820  run, bit 1 på adress 0x820  Clear Time Out, Write anything to 0x820  Continous Counting, ”set” bit 1 at 0x824  Start run,”set” bit 2 at 0x824  Stop Counting, ”set” bit 3 at 0x824  WR to snapshot, copy Counter to SnapShot (ej komplett information)

Serieport Parallella data in Parallella data ut skiftregister Seriell kabel skiftregister SändareMottagare

Paritet i ett n-bitars ord jämn eller udda paritet ● Jämn paritet = jämnt antal ettor i ordet ● Udda paritet = udda antal ettor i ordet ● Feldetektering Detekterar alla ”udda-bits-fel” dvs om ett udda antal bitar har växlat värde ● Felkorrigering, hur då ??? ● Omsändning !!!

Paritetskontroll vid kommunikation ● 1-bits checksumma för varje 7-bits tecken ● Sändaren – kompletterar med en extra bit – bitens värde sätts så att det blir rätt paritet i det ord som sänds ● Mottagaren – kontrollerar att det är rätt paritet i det mottagna ordet

Kartbild av minnet ● AdressMEM / IO ● 0 - 7FFboot_monitor_rom ● Fled_pio ● Ftimer_0 ● Fbutton_pio ● Fdip-pio ● Fuart_0 (”main”) ● Fuart_1_debug ● FFFFsram, 256 kByte

Macro för en ny syntetisk instruktion.macroLOAD reg, addr MOVIA\reg, \addr LDW\reg, [\reg].endm Effekten av detta är att man kan använda en ny instruktion, LOAD %L0, 0x470 för att kopiera 32 bitar till %L0 från minnet på adress 0x470