3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning.

Slides:



Advertisements
Liknande presentationer
EDA 480 – Maskinorienterad Programmering
Advertisements

Flynns taxonomi ● Single Instruction, Single Data (SISD) – en instruktion i taget opererar på ett värde i taget ● Single Instruction, Multiple Data (SIMD)
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
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
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)
IS1500 Datorteknik och komponenter
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.
Adressöversättning zRepetition av virtuellt minne zTLB - cacheminne för sidtabellinformation zVirtuellt eller fysiskt adresserat cacheminne zTricket -
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
IS1500 Datorteknik och komponenter
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.
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.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 1 De bifogade OH-bilderna är bara utkast till vad som kan vara.
Föreläsning 14 ”Enkel” Filhantering.
Digital och Datorteknik – EDA / Mikroprogrammering EDA Digital och Datorteknik 2009/2010 Mikroprogrammering Arbetsboken, avsnitt 28.
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.
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.
Frågor Allmän IT-kunskap avsnitt 1 kapitel 1 Repetition 3
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.
William Sandqvist Övning 8 Minnessystem Lokalitet Cacheminnen William Sandqvist
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.
2 April 2015 IS1200 Datorteknik o k, föreläsning CE - F31 IS1200 Datorteknik Föreläsning CE F3 Metoder / subrutiner Kursboken, delar av kapitel 4.
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.
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.
22 April 2015IS1200 Datorteknik, föreläsning 11 IS1200 Datorteknik Föreläsning 1 Introduktion.
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.
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.
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:

3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning

3 April 2015IS1200 Datorteknik, föreläsning 62 F1F2F3F4F5F7F8F9F10Ö2Ö1Ö3LAB-1Hemlab-1Ö4Ö7LAB-3Hemlab-2Ö8Hemlab-3Ö9TentamenÖ10 Assemblerkod 4 stegs pipeline Nios2time C-kod Nios2io Nios2int Cache-minnen CPU-scheduling IS1200 Datorteknik F6Ö5Ö6LAB-2

3 April 2015IS1200 Datorteknik, föreläsning 63 Föreläsning 6 Innehåll, rubriker  Bus Data Transfer, read/write  I/O-enheter, adressering  Parallellport, funktion, pollning  Serieport, funktion, pollning  Timer, funktion, pollning  Eko-program, Kommunikations-program  Paritetskontroll

3 April 2015IS1200 Datorteknik, föreläsning 64 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...

3 April 2015IS1200 Datorteknik, föreläsning 65 Programexekvering i två steg EXECUTE FETCH (update PC) (decode)

3 April 2015IS1200 Datorteknik, föreläsning 66 Viktiga delar i en dator CPU MEM BUS I/O program data

3 April 2015IS1200 Datorteknik, föreläsning 67 Bus Data Transfer viktiga aspekter MASTER SLAVE BUS MEMORY CPU

3 April 2015IS1200 Datorteknik, föreläsning 68 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 (Instruction)  Slave levererar kvittens (Acknowledge) (exempel Fetch Instruction och LOAD)

3 April 2015IS1200 Datorteknik, föreläsning 69 Bus Data Transfer Memory Read Address Read Vad händer om (Rd) Ack uteblir ? 1 2 Data (Rd) Ack 3 4

3 April 2015IS1200 Datorteknik, föreläsning 610 Bus Data Transfer Memory Write  Master - till exempel CPU  Slave - till exempel Memory  Master levererar Adress  Master levererar Data  Master ger skrivbegäran (Write Request)  Slave levererar kvittens (Acknowledge) (exempel STORE)

3 April 2015IS1200 Datorteknik, föreläsning 611 Bus Data Transfer Memory Write Address Write Vad händer om (Wr) Ack uteblir ? 2 Data (Wr) Ack

3 April 2015IS1200 Datorteknik, föreläsning 612 Bus Data Transfer Asynchronous Memory Read Address Read Data (Rd) Ack Asynkront ”any time” ”ingen klocka”

3 April 2015IS1200 Datorteknik, föreläsning 613 Bus Data Transfer Synchronous Memory Read Address Read Data (Rd) Ack clock address memory data transfer read transfer

3 April 2015IS1200 Datorteknik, föreläsning 614 Asynkron / synkron buss ¸Asynkron ¸klarar enheter med olika hastigheter ¸bra för långsamma och olika 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)

3 April 2015IS1200 Datorteknik, föreläsning 615 Flera SLAVE fungerar bra på olika adresser ! MASTER BUS SLAVE ?? Adress-avkodare

3 April 2015IS1200 Datorteknik, föreläsning 616 Flera minnen på olika adresser ! CPU MEM BUS MEM Adress dittenAdress datten ?? Adress-avkodare

3 April 2015IS1200 Datorteknik, föreläsning 617 Flera Slave på olika adresser ! CPU MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare

3 April 2015IS1200 Datorteknik, föreläsning 618 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

3 April 2015IS1200 Datorteknik, föreläsning 619 DUAL-CORE CPU MEM BUS I/O Adress dittenAdress datten ?? Adress-avkodare CPU

3 April 2015IS1200 Datorteknik, föreläsning 620 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 DS Ack, kan vara gemensam Bus Request, Bus Grant – vid flera Masters IRQ - Interrupt ReQuest  Övrigt Gnd, Vcc, Clock, Reset, ev. flera

3 April 2015IS1200 Datorteknik, föreläsning 621 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

3 April 2015IS1200 Datorteknik, föreläsning 622 Bussledningar (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... ... Time-Out eftersom ingen enhet ger Acknowledge

3 April 2015IS1200 Datorteknik, föreläsning 623 Bus Data Transfer Bus Error MASTER SLAVE BUS Time-Out BusErrror

3 April 2015IS1200 Datorteknik, föreläsning 624 Två typer av adressering  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  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

3 April 2015IS1200 Datorteknik, föreläsning 625 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  Utport består normalt av register  Handskakningssignaler kan finnas

3 April 2015IS1200 Datorteknik, föreläsning 626 IN-port utan handskakning & EN IN-PORT IN-DATA EN/RD Adress Data Control CPU-BUSS IN 0 IN n DnDn D0D0 IN 1 D1D1 grindar &&

3 April 2015IS1200 Datorteknik, föreläsning 627 IN-port med handskakning EN IN-PORT IBFWRIN-DATA EN/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 &&&......

3 April 2015IS1200 Datorteknik, föreläsning 628 UT-port utan handskakning UT-PORT UT-DATA WR 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 WR register (vippor)

3 April 2015IS1200 Datorteknik, föreläsning 629 UT-port med handskakning UT-PORT OBERDUT-DATA WR 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 WR Q Q’ set clear OBE RD WR register (vippor) vippa

3 April 2015IS1200 Datorteknik, föreläsning 430 serieport parallellport MEM ”CPU” DE2-board: komponenter USB Blaster Port

3 April 2015IS1200 Datorteknik, föreläsning 631 de2_pio_redled18 Memory Mapped Addresses 0x810 0x814 0x818 0x81C LEDR3 LEDR2 LEDR1 LEDR0 Delar av Lab-kortet LEDR4 LEDR5 LEDR6 LEDR7 LEDR8 LEDR17

3 April 2015IS1200 Datorteknik, föreläsning 632 de2_pio_keys4 Memory Mapped Addresses 0x840 0x844 0x848 0x84C KEY3 KEY2 KEY1 KEY0 Delar av Lab-kortet

3 April 2015IS1200 Datorteknik, föreläsning 633 de2_pio_toggles18 Memory Mapped Addresses 0x850 0x854 0x858 0x85C SW3 SW2 SW1 SW0 Delar av Lab-kortet SW14 SW15 SW16 SW17

3 April 2015IS1200 Datorteknik, föreläsning 634 de2_pio_greenled9 Memory Mapped Addresses 0xA10 0xA14 0xA18 0xA1C LEDG3 LEDG2 LEDG1 LEDG0 Delar av Lab-kortet LEDG4 LEDG5 LEDG6 LEDG7 LEDG8

3 April 2015IS1200 Datorteknik, föreläsning 635

3 April 2015IS1200 Datorteknik, föreläsning 636 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

3 April 2015IS1200 Datorteknik, föreläsning 637 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)

3 April 2015IS1200 Datorteknik, föreläsning 638 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 bieffekt) eller med egen instruktion (explicit)

3 April 2015IS1200 Datorteknik, föreläsning 639 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 bieffekt) eller med egen instruktion (explicit)

3 April 2015IS1200 Datorteknik, föreläsning 640 Minnesliknande beteende vid läsning och skrivning  Ett värde som skrivs till en viss adress kan sedan läsas från samma adress  Skrivning till en adress påverkar ej innehåll på andra adresser  Läsning från en adress påverkar ej innehåll på någon adress  Annat beteende vid minnesreferenser kallas för icke minnesliknade och bör undvikas

3 April 2015IS1200 Datorteknik, föreläsning 641 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 Wait for READY Action & Acknowledge !

3 April 2015IS1200 Datorteknik, föreläsning 642 Handskakning med IBF/OBE Flödes-schema, direkt retur (icke blockerande I/O) PÅHOPP AVHOPP IBF=1? Nollställ IBF PAR:= DATAIN LÄS IBF JA NEJ PAR:= -1PÅHOPP AVHOPP OBE=1? Nollställ OBE och PAR SKRIV DATAUT LÄS OBE JA NEJ PAR:= -1

3 April 2015IS1200 Datorteknik, föreläsning 643 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

3 April 2015IS1200 Datorteknik, föreläsning 644 #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)

3 April 2015IS1200 Datorteknik, föreläsning 645 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

3 April 2015IS1200 Datorteknik, föreläsning 646 Serieport Sändare Mottagare Parallella data ut Parallella data in skiftregister Seriell kabel Internet skiftregister error(s)

3 April 2015IS1200 Datorteknik, föreläsning 647 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, 1,5 eller 2 stoppbitar

3 April 2015IS1200 Datorteknik, föreläsning 648 Serie-port Asynkron kommunikation 0x x xxxxxP1 1 7-bitars ASCII 1 startbit (0) 1 Paritetsbit (P) Stoppbit(ar) (1) Synkroniseringsflank Avkänningstidpunkter

3 April 2015IS1200 Datorteknik, föreläsning 649 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...)

3 April 2015IS1200 Datorteknik, föreläsning 650 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)

3 April 2015IS1200 Datorteknik, föreläsning 651 Serieport med buffertar Sändare Mottagare Parallella data ut Parallella data in skiftregister Seriell kabel Internet skiftregister error(s) En eller flera platser TxRdy RxRdy TxEmpty

3 April 2015IS1200 Datorteknik, föreläsning 652 läs från serieport rutin med pollning av statusbit (blockerande I/O) #int in_char(void) definedata... definestatus... defineibfmask... in_char:loadtmpreg <-- status anditmpreg <-- ibfmask beqin_char loadoutreg <-- data return

3 April 2015IS1200 Datorteknik, föreläsning 653 skriv till serieport rutin med pollning av statusbit (blockerande I/O) #out_char(data in inreg) definedataout... definestatus... defineobemask... out_char:loadtmpreg <-- status anditmpreg <-- obemask beqout_char storedataout <-- inreg return

3 April 2015IS1200 Datorteknik, föreläsning 654 Nios-II 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)

3 April 2015IS1200 Datorteknik, föreläsning 655 Läs 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 LDWIOr9, 8(r8)# status=datain+8 ANDIr9, r9, ibfmask BEQ r9, r0, in_char LDWIOr2, 0(r8) RET

3 April 2015IS1200 Datorteknik, föreläsning 656 #void out_char(parameter).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equobemask, 0x40# 0x40=0b out_char: MOVIAr8, datain LDWIOr9, 8(r8)#status=datain+8 ANDIr9, r9, obemask BEQ r9, r0, out_char STWIOr4, 4(r8)# dataut=datain+4 RET Skriv till Serieport syntetisk Nios-2-kod (blocking)

3 April 2015IS1200 Datorteknik, föreläsning 657 Laboration 2 EKO-program # Skriv ett progam som ekar tecken från tangentbord till terminalfönster main:callinitserie# VID BEHOV loop:callin_char movr4, r2# kopiera tecken callout_char brloop

3 April 2015IS1200 Datorteknik, föreläsning 658 Flödesschema för EKO-program START in_char out_char init

3 April 2015IS1200 Datorteknik, föreläsning 659 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

3 April 2015IS1200 Datorteknik, föreläsning 660 EKO-program med korsvis kommunikation start:callinitserie#initera serieportar vid behov gettst:callin_charx#tecken från tangentbord ? b”cond”r2, rectst#om ej: hopp till rectst send:movr4, r2 callsend_char# sänd ett tecken rectst:callrec_charx#tecken mottaget ? b”cond”r2, gettst#om ej: hopp till gettst put:movr4, r2 call out_char#och skriv ut mottaget tecken brgettst#loopa

3 April 2015IS1200 Datorteknik, föreläsning 661 Läs från Serieport syntetisk Nios-2-kod (non-blocking) #int returvärde = in_char(void).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equibfmask, 0x80# 0x80 = 0b in_char: MOVIr2, -1# ”no-char” MOVIAr8, datain LDWIOr9, 8(r8)# status=datain+8 ANDIr9, r9, ibfmask BEQ r9, r0, no_char LDWIOr2, 0(r8) no_char: RET

3 April 2015IS1200 Datorteknik, föreläsning 662 #void out_char(parameter).equdatain, 0x860# 0x880.equdataut, 0x864# 0x884.equstatus, 0x868# 0x888.equobemask, 0x40# 0x40=0b out_char: MOVIr2, -1# error MOVIAr8, datain LDWIOr9, 8(r8)#status=datain+8 ANDIr9, r9, obemask BEQ r9, r0, not_obe STWIOr4, 4(r8)# dataut=datain+4 MOVIr2, 0# yes !!! not_obe: RET Skriv till Serieport syntetisk Nios-2-kod (non-blocking)

3 April 2015IS1200 Datorteknik, föreläsning 663 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  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?)

3 April 2015IS1200 Datorteknik, föreläsning 664 Counter som räknar Flödesschema för väntan arrive return TimeOut=1?Read TimeOut YES NO Clear TimeOut Wait for READY Action & Acknowledge ! Blocking

3 April 2015IS1200 Datorteknik, föreläsning 665 Flödesschema DELAY med PROGRAM-LOOP N := startN := N - 1N = 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

3 April 2015IS1200 Datorteknik, föreläsning 666 Flödesschema DELAY med TIMER K := K - 1K = 0 ? IN-hopp UT-hopp JA NEJ arrive return TimeOut=1? Clear TimeOut Read TimeOut YES NO Timer-loop 1 millisekund K := msek Laboration 2 IN-parameter i r4

3 April 2015IS1200 Datorteknik, föreläsning 667 Nios II 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

3 April 2015IS1200 Datorteknik, föreläsning 668 Nios II Timer Statusvippa Time-Out Statusvippa som kallas Time-Out 6ettställs vid Time-Out kan pollas av nollställas av program tillgänglig som elektrisk signal

3 April 2015IS1200 Datorteknik, föreläsning 669 Nios II Timer Statusvippa Run  Statusvippa som kallas Run ettställs av program nollställs av program kan pollas av program tillgänglig som elektrisk signal ?

3 April 2015IS1200 Datorteknik, föreläsning 670 Nios II 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

3 April 2015IS1200 Datorteknik, föreläsning 671 Nios II Timer-1 Memory Mapped Addresses 0x920 0x924 0x928 0x92C 0x930 0x934 0x938 0x93C

3 April 2015IS1200 Datorteknik, föreläsning 672 0x920 status 0x924 control 0x928 periodl 0x92C periodh 0x930 snapl 0x934 snaph Nios II Timer-1 Status / Control etc run TO Time-Out ITO cont start stop 15 0

3 April 2015IS1200 Datorteknik, föreläsning 673 Nios II Timer-1 Hardware ”Hokus Pokus”  TO - Time Out, bit 0 på adress 0x920  run, bit 1 på adress 0x920  Clear Time Out, Write anything to 0x920  Continous Counting, ”set” bit 1 at 0x924  Start run,”set” bit 2 at 0x924  Stop Counting, ”set” bit 3 at 0x924  WR to any snapshot => copy Counter to SnapShot  (ej komplett information)  ”One-Shot” is possible !

3 April 2015IS1200 Datorteknik, föreläsning 674 Serieport Sändare Mottagare Parallella data ut Parallella data in skiftregister Seriell kabel Internet skiftregister error(s)

3 April 2015IS1200 Datorteknik, föreläsning 675 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 !!!

3 April 2015IS1200 Datorteknik, föreläsning 676 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

3 April 2015IS1200 Datorteknik, föreläsning 677 Kartbild av minnet  AdressMEM / IO  0 - 7FFboot_monitor_rom  Fde2_pio_redled18  Fde2_pio_keys4  Fde2_pio_toggles18  Fuart_0 (”hyperterminal)  9F0-9FFde2_pio_hex_low28  Ftimer_1  A00-A0Fde2_pio_hex_high28  A10-A1Fde2_pio_greenled9  FF FFFFext_ram, 8 Mbyte ?

3 April 2015IS1200 Datorteknik, föreläsning 678 Timerkretsen tidmätnig Exempel på hur man kan mäta tid för exekvering av t.ex. Puttime Kopiera ett snapshot till time0 Kör Puttime Kopiera ett snapshot till time1 Skriv ut skillnad (time0-time1)