Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "3 April 2015IS1200 Datorteknik, föreläsning 61 IS1200 Datorteknik Föreläsning 6 Bushantering In- och utmatning, I/O Programstyrd pollning."— Presentationens avskrift:

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

2 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 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

4 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...

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

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

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

8 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)

9 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

10 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)

11 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

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

13 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

14 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)

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

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

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

18 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

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

20 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

21 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

22 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

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

24 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

25 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

26 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 &&

27 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 &&&......

28 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)

29 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

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

31 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

32 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

33 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

34 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

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

36 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

37 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)

38 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)

39 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)

40 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

41 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 !

42 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

43 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

44 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)

45 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

46 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)

47 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

48 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

49 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...)

50 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)

51 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

52 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

53 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

54 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)

55 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

56 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)

57 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

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

59 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

60 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

61 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

62 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)

63 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?)

64 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

65 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

66 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

67 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

68 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

69 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 ?

70 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

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

72 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

73 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 !

74 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)

75 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 !!!

76 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

77 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 ?

78 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)


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

Liknande presentationer


Google-annonser