2G1502 Datorteknik allmän kurs

Slides:



Advertisements
Liknande presentationer
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Advertisements

Funktioner och programorganisation
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
William Sandqvist System Management functions S Burd, Systems Architecture ISBN Figure 11-2 CPU Management Memory Management.
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
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.
February 8, 2008 IS1200/2G1518 Datorteknik, föreläsning 4 vt2008 (E)1 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel.
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.
Programmeringsteknik K och Media
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
Styrteknik: Programmering med MELSEC IL PLC2A:1
William Sandqvist C:s minnesmodell.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
UDP Pålitlig byteström TCP
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.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
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.
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
F. Drewes, Inst. f. datavetenskap1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
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.
3 April 2015 IS1500 Datorteknik o k, föreläsning CE - F41 IS1500 Datorteknik och komponenter Föreläsning CE F4 Programutveckling & Intro till lab 1, nios2time.
William Sandqvist Övning 6 Seriekommunikation - serieport William Sandqvist
Lennart Edblom & Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 2: Variabler och datatyper Variabler Bindning Typkontroll Några viktiga datatyper.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
1 June 20152G1502, föreläsning 3, vt G1502 Datorteknik allmän kurs Föreläsning 3 Metoder och subrutiner Kursboken, valda delar av kapitel 4 version.
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.
2 June G1518, föreläsning 4, ht2006 (D2)1 2G1518 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8 ht.
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.
10 June G1518, föreläsning 3, vt2007 (E/I/CLMDA)1 2G1518 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4 vt 2007.
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.
Anders Sjögren Enkelt program med funktion /* two_func.c - a program that uses two functions in one file */ /* from Stephen Prata C Primer Plus ISBN
Styrteknik 7.5 hp distans: Tidskretsar, räknare PLC4B:1 Bilder Olika exempel med Timers och Counters En Enkel Timer med MELSEC IL Om BTN_DGVG.
1 2G1502 Datorteknik allmän kurs Föreläsning 3 Programmering med hopp Programmering av Nios.
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.
1 IS1200 Datorteknik, övning 4 Maskinnära programmering med C Förberedelser till hemlaboration 1.
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.
William Sandqvist Datorteknik övning 3 stackhantering subrutin som anropar subrutin programutveckling.
3 August 2015IS1200 Datorteknik föreläsning 71 IS1200 Datorteknik Föreläsning 7 Exceptions Interrupts - Traps.
4 August 2015 IS1200 Datorteknik föreläsning CE - F91 IS1200 Datorteknik Övning 10.
11 August 2015IS1200 Datorteknik, föreläsning 41 IS1200 Datorteknik Föreläsning 4 Programutveckling, Intro till lab 1 Kursboken, kapitel 1, 4, 5 och 8.
3 October 2015 IS1200 Datorteknik ht2009 föreläsning 3, (D2)1 IS1200 Datorteknik Föreläsning 3 Metoder / subrutiner Kursboken, valda delar av kapitel 4.
12 October 2015 IS1200 Datorteknik föreläsning CE - F71 IS1200 Datorteknik och komponenter Föreläsning 7 Exceptions Interrupts - Traps.
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.
Anders Sjögren Funktioner något in och något annat ut.
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Kombinatoriska byggblock
Kombinatoriska byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

2G1502 Datorteknik allmän kurs 16 apr -17 2G1502 Datorteknik allmän kurs Föreläsning 5 In- och utmatning, I/O Programstyrd pollning 16 April 2017 2G1502, föreläsning 5, ht2003

Föreläsning 5 Innehåll, rubriker I/O-enheter allmänt read och write, adressering Parallellport, funktion, pollning Serieport, funktion, pollning Timer, funktion, pollning Eko-program Kommunikations-program Paritetskontroll 16 April 2017 2G1502, föreläsning 5, ht2003

Litteraturhänvisningar Kursbokens avsnitt 1.4 Maskinvara 2.6 Bussar och enkel I/O-hantering 5.2 Koppling till omvärlden, sid 151-156 9.4 Kommunikation mellan processor ... 4.5 Subrutiner och stack 4.6 Praktisk assemblerprogrammering 16 April 2017 2G1502, föreläsning 5, ht2003

Viktiga delar i en dator CPU BUS I/O MEM 16 April 2017 2G1502, föreläsning 5, ht2003

Programexekvering i två steg EXECUTE FETCH (update PC) (decode) 16 April 2017 2G1502, föreläsning 5, ht2003

Bus Data Transfer Memory Read Master t.ex. CPU Slave t.ex. Memory Master levererar Adress Master levererar Rd-Request Slave levererar Data Slave levererar en Rd-Acknowledge 16 April 2017 2G1502, föreläsning 5, ht2003

Bus Data Transfer Memory Read Address Rd Data RdAck Vad händer om RdAck uteblir ? 16 April 2017 2G1502, föreläsning 5, ht2003

Bus Data Transfer Memory Write Master t.ex. CPU Slave t.ex. Memory Master levererar Adress Master levererar Data Master levererar Wr-Request Slave levererar en Wr-Acknowledge 16 April 2017 2G1502, föreläsning 5, ht2003

Bus Data Transfer Memory Write Address Wr Data WrAck Vad händer om WrAck uteblir ? 16 April 2017 2G1502, föreläsning 5, ht2003

Två minnen kan man ha ! På olika adresser ! CPU BUS MEM MEM Adress ditten Adress datten 16 April 2017 2G1502, föreläsning 5, ht2003

Två minnen kan man ha ! På olika adresser ! CPU BUS ? ? MEM MEM Adress ditten Adress datten Adress-avkodare 16 April 2017 2G1502, föreläsning 5, ht2003

Flera Slave kan man ha ! På olika adresser ! CPU BUS ? ? I/O MEM Adress ditten Adress datten Adress-avkodare 16 April 2017 2G1502, föreläsning 5, ht2003

Flera Master kan man ha ! På olika vadådå! BUS ? ? I/O MEM Adress ditten Adress datten Adress-avkodare 16 April 2017 2G1502, föreläsning 5, ht2003

Bus-ledningar Adress, för att kunna peka ut varje byte Data, lagom bred minst 8 bitar Kontroll Read och Write eller RD/WR och DS Ack för Rd och Write, kan vara gemensam Övrigt som jord, Vcc, Reset etc. 16 April 2017 2G1502, föreläsning 5, ht2003

Bus-ledningar (forts.) Långsam Slave kan bromsa Fördröj Acknowledge eller Inför speciell Hold-signal Inför tidövervakning, Time-Out Time-Out för Ack är Bus Error (el.dyl.) 16 April 2017 2G1502, föreläsning 5, ht2003

Bus-ledningar (forts.) Om det finns fler än en Master krävs Bus Arbiter (bus-fördelare) Varje Slave måste ha adressavkodare så att högst en enhet svarar på request Referens av oanvänd adress medför ??? 16 April 2017 2G1502, föreläsning 5, ht2003

Två typer av adressering Memory Mapped Memory och I/O har olika adresser Samma kontroll-signaler används till minne och I/O I/O Mapped Memory och I/O kan ha samma adresser Olika kontroll-signaler används till minne och I/O 16 April 2017 2G1502, föreläsning 5, ht2003

Parallell-port Parallellport brukar vara multipel av 8 signaler/pinnar Signalriktning kan vara programmerbar separat för varje signal/pinne Inport består normalt av grindar Utport består normalt av register Handskakningssignaler kan finnas 16 April 2017 2G1502, föreläsning 5, ht2003

IN-port & & & . . . IN-DATA IBF WR IBF WR RD INn Dn RD IN-PORT IBF IN1 Q Q’ set clear IBF WR RD INn & Dn RD IN-PORT . . . IBF IN1 & D1 Data IN0 & D0 Control CPU-BUSS Adress RD 16 April 2017 2G1502, föreläsning 5, ht2003

UT-port . . . OBE RD WR UT-DATA OBE RD Dn UTn WR UT-PORT D1 UT1 OBE Q Q’ set clear OBE RD WR UT-DATA OBE RD Dn Q Q’ D cl UTn . . . WR UT-PORT D1 Q Q’ D cl UT1 OBE Data Control CPU-BUSS D0 Q Q’ D cl UT0 Adress WR 16 April 2017 2G1502, föreläsning 5, ht2003

Nios button_pio Memory Mapped Addresses Read only SW7 SW6 SW5 SW4 DIP 1..8 0x470 0x474 0x478 0x47C 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Text som beskriver button_pio 0x470-0x47F 16 April 2017 2G1502, föreläsning 5, ht2003

släppt knapp ger värdet 1 Nios button_pio Memory Mapped Addresses SW4 SW5 SW6 SW7 1 2 3 4 5 6 7 8 SW7 SW6 SW5 SW4 SW3 SW2 0x470 Read only släppt knapp ger värdet 1 DIP 1..8 0x470 0x474 0x478 0x47C 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Adresser: button_pio 0x470-0x47F (ej komplett information) 16 April 2017 2G1502, föreläsning 5, ht2003

Nios seven_seg_pio Memory Mapped Addresses 1 2 3 4 5 6 7 5 3 4 2 1 6 . 7 5 3 4 2 1 6 . 7 Write only0 tänder ett segment 0x420 0x424 0x428 0x42C 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Adresser: seven_seg_pio 0x420-0x42F (ej komplett information) 16 April 2017 2G1502, föreläsning 5, ht2003

Parallell-port (forts.) Handskakningssignaler IBF - Input Buffer Full OBE - Output Buffer Empty IBF och OBE är tillgängliga för program IBF och OBE är tillgängliga för hårdvara 16 April 2017 2G1502, föreläsning 5, ht2003

Parallell-port (forts.) Handskakningssignaler IBF - Input Buffer Full OBE - Output Buffer Empty Aktiv signal IBF (full inport) är en begäran om åtgärd av CPU/program Aktiv signal OBE (tom utport) är en begäran om åtgärd av CPU/program 16 April 2017 2G1502, föreläsning 5, ht2003

Parallell-port (forts.) Handskakningssignaler IBF ettställs normalt då omgivningen levererar nya data till inporten IBF nollställs/kvitteras av program, t.ex. vid läsning av inport 16 April 2017 2G1502, föreläsning 5, ht2003

Parallell-port (forts.) Handskakningssignaler OBE ettställs normalt då omgivningen har tagit hand om utdata OBE nollställs/kvitteras av program, t.ex. vid skrivning av utport 16 April 2017 2G1502, föreläsning 5, ht2003

Handskakning med IBF/OBE Flödes-schema, 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 16 April 2017 2G1502, föreläsning 5, ht2003

Handskakning med IBF/OBE Flödes-schema, direkt retur (icke blockerande I/O) PÅHOPP AVHOPP IBF=1? Nollställ IBF PAR:= INDATA LÄS IBF JA NEJ PAR:= -1 PÅHOPP AVHOPP OBE=1? Nollställ OBE och PAR SKRIV UTDATA LÄS OBE JA NEJ PAR:= -1 16 April 2017 2G1502, föreläsning 5, ht2003

getdata från Inport rutin med pollning av statusbit (blockerande I/O) ; getdata(reg) define indata 0x... define status 0x... define ibfmask 0x... getdata: load reg1 <-- status and reg1 <-- ibfmask beq getdata load reg <-- indata return 16 April 2017 2G1502, föreläsning 5, ht2003

putdata till Utport rutin med pollning av statusbit (blockerande I/O) ; putdata(data) define utdata 0x... define status 0x... define obemask 0x... putdata:load reg1 <-- status and reg1 <-- obemask beq putdata store utdata <-- data return 16 April 2017 2G1502, föreläsning 5, ht2003

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 16 April 2017 2G1502, föreläsning 5, ht2003

Serieport Sändare Mottagare Parallella data in skiftregister Seriell kabel skiftregister Parallella data ut 16 April 2017 2G1502, föreläsning 5, ht2003

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 16 April 2017 2G1502, föreläsning 5, ht2003

Avkänningstidpunkter Synkroniseringsflank Serie-port Asynkron kommunikation Avkänningstidpunkter x x x x x x x P 1 1 1 1 7-bitars ASCII 1 startbit (0) 1 Paritetsbit (P) Stoppbit(ar) (1) Synkroniseringsflank 16 April 2017 2G1502, föreläsning 5, ht2003

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) 16 April 2017 2G1502, föreläsning 5, ht2003

getchar från serieport rutin med pollning av statusbit ; int getchar(void) define data ... define status ... define ibfmask ... getchar: load* tmpreg <-- status andi* tmpreg <-- ibfmask beq* getchar load* outreg <-- data return* ;* betyder macro 16 April 2017 2G1502, föreläsning 5, ht2003

putchar till serieport rutin med pollning av statusbit ; putchar(data in inreg) define data ... define status ... define obemask ... putchar:load* tmpreg <-- status andi* tmpreg <-- obemask beq* putchar store* data <-- inreg return* 16 April 2017 2G1502, föreläsning 5, ht2003

Nios uart_0 Memory Mapped Addresses TxDATA (WR) RxDATA (RD) uart_0 31 16 15 8 7 6 0 0x4000x404 0x408 STATUS TxRdy (OBE) RxRdy (IBF) uart_1_debug 0x4C0-4DF uart_serialport 0x4E0-4EF 16 April 2017 2G1502, föreläsning 5, ht2003

getchar från serieport syntetisk Nios-kod ; getchar(data) .equ indata, 0x400 ;0x4C0 .equ outdata, 0x404 ;0x4C4 .equ status, 0x408 ;0x4C8 .equ ibfmask, 0x80 ;0x80 getchar: SAVE %sp, 0 LOAD* %L0, status ANDIP* %L0, ibfmask BEQ* getchar LOAD* %i0, indata RET RESTORE 16 April 2017 2G1502, föreläsning 5, ht2003

putchar till serieport syntetisk Nios-kod ; putchar(data) .equ indata, 0x400 ;0x4C0 .equ outdata, 0x404 ;0x4C4 .equ status, 0x408 ;0x4C8 .equ obemask, 0x40 ;0x40 putchar: SAVE %sp, 0 LOAD* %L0, status ANDIP* %L0, obemask BEQ* putchar STORE* outdata, %i0 RET RESTORE 16 April 2017 2G1502, föreläsning 5, ht2003

Föreläsning 5 Sammanfattning Pollning av Parallell-port Pollning av Serieport Eko-program Kommunikation 16 April 2017 2G1502, föreläsning 5, ht2003

Laboration 2 EKO-program Skriv ett progam som ekar tecken från tangentbord till terminalfönster start: bsr initserie main: bsr getchar bsr putchar bra main ; och en del NOP:ar 16 April 2017 2G1502, föreläsning 5, ht2003

Flödesschema för EKO-program START init getchar putchar 16 April 2017 2G1502, föreläsning 5, ht2003

Flödesschema för korsvis kommunikation START getcharx ? JA senchar NEJ reccharx ? JA putchar NEJ 16 April 2017 2G1502, föreläsning 5, ht2003

EKO-program fast korsvis kommunikation start: bsr initserie ;initera serieportar gettst: bsr getcharx ;tecken från tangentbord ? ifnrz %o0 ;i så fall br send ;hopp till send rectst: bsr reccharx ;tecken mottaget ? ifrz %o0 ;om inte br gettst ;hopp till gettst put: bsr putchar ;annars skrivut motaget tecken br gettst ;loopa send: bsr sendchar ;sänd ett tecken br rectst ;och tillbaka in i loopen ; nop är utelämnade,ska skrivas till ... 16 April 2017 2G1502, föreläsning 5, ht2003

Flödesschema för korsvis kommunikation med paritetskontroll START getcharx ? JA parmake errmake senchar NEJ reccharx ? JA partest putchar NEJ 16 April 2017 2G1502, föreläsning 5, ht2003

Korsvis kommunikation med paritetskontroll start: bsr initserie ;initera ev. serieportar gettst: bsr getcharx ;tecken från tangentbord ? ifnrz %o0 ;i så fall br send ;hopp till send rectst: bsr reccharx ;tecken mottaget ? ifrz %o0 ;om inte br gettst ;hopp till gettst put: bsr partest ;kolla paritet bsr putchar ;skriv ut motaget tecken br gettst ;loopa send: bsr parmake ;inför paritet bsr errmake ;inför error bsr sendchar ;sänd ett tecken br rectst ;och tillbaka in i loopen ; nop är utelämnade,ska skrivas till ... 16 April 2017 2G1502, föreläsning 5, ht2003

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 Counter framme kallas 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?) 16 April 2017 2G1502, föreläsning 5, ht2003

Counter som räknar upp Flödesschema för väntan arrive Read TimeOut TimeOut=1? NO YES Clear TimeOut return 16 April 2017 2G1502, föreläsning 5, ht2003

Flödesschema DELAY med PROGRAM-LOOP IN-hopp K := msek inparameter Program-loop 1 millisekund N := start IN-hopp K = 0 ? N = 0 ? Byt ut program-loop mot timer-loop JA JA NEJ NEJ K := K - 1 N := N - 1 Laboration 1 UT-hopp UT-hopp 16 April 2017 2G1502, föreläsning 5, ht2003

Flödesschema DELAY med TIMER arrive return TimeOut=1? Clear TimeOut Read TimeOut YES NO K := msek inparameter Timer-loop 1 millisekund IN-hopp K = 0 ? JA NEJ K := K - 1 Laboration 2 UT-hopp 16 April 2017 2G1502, föreläsning 5, ht2003

Timer med Counter som räknar ner Counter laddas med period Counter minskas med ett vid clockflank Counter=0 medför ettställ Time-Out Counter laddas om vid Time-Out period kan väljas med program 16 April 2017 2G1502, föreläsning 5, ht2003

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 16 April 2017 2G1502, föreläsning 5, ht2003

Timer Statusvippa Run Statusvippa som kallas Run ettställs av program nollställs av program kan pollas av program tillgänglig som elektrisk signal ? 16 April 2017 2G1502, föreläsning 5, ht2003

Nios Timer Hårdvaru-figur write from program load period start load zero counter Q Q’ D cl run set -1 load clock Q Q’ D cl time-out snap-shot stop clear read from program 16 April 2017 2G1502, föreläsning 5, ht2003

Nios Timer Memory Mapped Addresses 31 16 15 0 0x440 0x444 0x448 0x44C 0x450 0x454 0x458 0x45C 31 16 15 0 16 April 2017 2G1502, föreläsning 5, ht2003

Nios Timer Status / Control etc Run TI Time-Out 0x440 status 0x444 control 0x448 periodl 0x44C periodh 0x450 snapl 0x454 snaph ITO cont start stop 15 0 16 April 2017 2G1502, föreläsning 5, ht2003

Nios Timer Hokus Pokus TI - Time Out, bit 0 på adress 0x440 Run, bit 1 på adress 0x440 Clear Time Out, Write anything to 0x440 Continous Counting, ”set” bit 1 at 0x444 Start Run,”set” bit 2 at 0x444 Stop Counting, ”set” bit 3 at 0x444 WR to snapshot, copy Counter to SnapShot (ej komplett information) 16 April 2017 2G1502, föreläsning 5, ht2003

Serieport Sändare Mottagare Parallella data in skiftregister Seriell kabel skiftregister Parallella data ut 16 April 2017 2G1502, föreläsning 5, ht2003

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 !!! 16 April 2017 2G1502, föreläsning 5, ht2003

Paritetskontroll vid kommunikation Sändaren kompletterar med en extra bit vars värde sätts så att man får rätt paritet i det ord som sänds Mottagaren kontrollerar att det är rätt paritet i det mottagna ordet 16 April 2017 2G1502, föreläsning 5, ht2003

Kartbild av minnet Adress MEM / IO 0 - 3FF boot_monitor_rom 400-41F uart_0 (”main”) 420-42F seven_seg_pio 440-45F timer_0 460-46F led-pio 470-47F button_pio 480-48F lcd-pio 4A0-4BF dma 16 April 2017 2G1502, föreläsning 5, ht2003

Kartbild av minnet 4C0-4DF uart_1_debug (debug) 4E0-4FF uart_serialport (komm) 500-5FF memory_mapped_io ?-? ext_ram_bus 40000-7FFFF ext_ram, 256 kByte 7FF00-7FFFF ”int. vector_table” 100000-1FFFFF ext_flash, 1 Mbyte 16 April 2017 2G1502, föreläsning 5, ht2003

4.5 Subrutiner och stack Gränssnitt mot funktion/subrutin placering av parametrar till rutinen placering av lokala variabler placering av returvärden 16 April 2017 2G1502, föreläsning 5, ht2003

Variabler i minnet (register) Viktiga aspekter att ta med Allokering av minne vid kompilering at compile-time Allokering av minne vid exekvering at run-time global / lokal variabel code-area, data-area, heap-area, stack-area push och pop för stacken malloc och free för heapen 16 April 2017 2G1502, föreläsning 5, ht2003

Allokering av minne at compile time Vid kompilering allokeras minne för Programkoden - code eller text Globala data initialized (.data) uninitialized (.bss) Heaparea Stackarea 16 April 2017 2G1502, föreläsning 5, ht2003

Allokering av minne at execution/run time Vid exekvering allokeras minne från stacken och används för Parametrar vid funktionsanrop Returadress vid funktionsanrop Lokala variabler i anropad funktion Skydd av register vid registerbrist 16 April 2017 2G1502, föreläsning 5, ht2003

Allokering av minne at execution/run time Vid exekvering allokeras minne från heapen och används för Static variables i instanser av objects Dynamiska data-strukturer 16 April 2017 2G1502, föreläsning 5, ht2003

Kartbild av minnet code data heap stack 7 0 adress 0 adressrymd 7 0 adress 0 PC +2 code (fetch-execute) data (load-store) heap (malloc-free) adressrymd SP +2 -2 stack adress 2n -1 (push-pop) 16 April 2017 2G1502, föreläsning 5, ht2003

STACK operationer PUSH och POP PUSH op: SP <- sp - n mem(sp) <- op POP dst: dst <- mem(sp) SP <- sp + n n = antal bytes - Stack Pointer SP + före funktionsanrop 16 April 2017 2G1502, föreläsning 5, ht2003

Funktionsanrop Parametrar på stacken PUSH paramk … PUSH param2 PUSH param1 CALL funk ADDI #n*k, SP - param1 param2 ... paramk Stack Pointer SP + efter lagring av parametrar 16 April 2017 2G1502, föreläsning 5, ht2003

Funktionsanrop Returadress på stacken … ret return param1 param2 ... paramk - Stack Pointer SP + efter funktionsanrop 16 April 2017 2G1502, föreläsning 5, ht2003

Funktionsanrop frame pointer funk: save %sp,0 … ret restore Stack Pointer return param1 param2 ... paramk - SP Frame Pointer FP + efter funktionsanrop och save %sp,0 16 April 2017 2G1502, föreläsning 5, ht2003

Funktionsanrop Lokala variabler på stacken locvar2 locvar1 return param1 param2 ... paramn funk: save %SP,-2 … ret restore Stack Pointer - SP Frame Pointer FP + efter save %sp,-2 16 April 2017 2G1502, föreläsning 5, ht2003

Funktionsanrop Lokala variabler på stacken locvar2 locvar1 return param1 param2 ... paramn funk: save %SP,-2 … ret restore Stack Pointer - SP + efter ret/restore 16 April 2017 2G1502, föreläsning 5, ht2003

Adressering adress relativt frame pointer locvar2 locvar1 return param1 param2 … paramn param1 = 1n(fp) param2 = 2n(fp) paramk = kn(fp) ... locvar1 = -1n(fp) locvar2 = -2n(fp) Stack Pointer - SP Frame Pointer FP + 16 April 2017 2G1502, föreläsning 5, ht2003

Editering Exempel på C-kod /* typexempel på program skrivet i c-kod */ #include ”nios.h” #define plussa = sum /* macrodefinition */ int TIME = 0x5959; /* globala initierade variabler, placeras i .data */ int a, b, c; /* globala oinitierade variabler, placeras i .bss */ int sum (int par1, par2) /* functions definition */ int tmp; /* lokal variabel, placeras på stack */ { tmp = par1 + par 2; return (tmp) } /* returadress på stack */ main () int talA talB, talC; /* lokala variabler i main, placeras på stack */ { /* själva programkoden i huvudprogrammmet /* ... talC = plussa (talA, talB) /* anrop av function, parametrar på stack */ printf(…) } 16 April 2017 2G1502, föreläsning 5, ht2003