Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avSolveig Gustafsson
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 http://www.ict.kth.se/courses/IS1200 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 151-156 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 35 6 1 1 4
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 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 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 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 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 31 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 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 31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 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 31 16 15 8 7 6 0 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 = 0b10000000 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=0b01000000 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 = 0b10000000 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=0b01000000 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 program @ska 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 31 16 15 0
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 810-81Fde2_pio_redled18 840-84Fde2_pio_keys4 850-85Fde2_pio_toggles18 860-86Fuart_0 (”hyperterminal) 9F0-9FFde2_pio_hex_low28 920-93Ftimer_1 A00-A0Fde2_pio_hex_high28 A10-A1Fde2_pio_greenled9 80 0000-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)
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.