1 / 28

EDA 480 – Maskinorienterad Programmering 2009/2010 Adressavkodning , ”Uppbyggnad.pdf”

EDA 480 – Maskinorienterad Programmering 2009/2010 Adressavkodning , ”Uppbyggnad.pdf” ” Skrivarporten ”, Arbetsbok MC12, avsnitt 2 Ur innehållet: Repetition FLEX adressavkodning Fullständig/Ofullständig avkodning Minnesavbildad/Direkt avkodning Vi ansluter en skrivare.

artie
Download Presentation

EDA 480 – Maskinorienterad Programmering 2009/2010 Adressavkodning , ”Uppbyggnad.pdf”

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EDA 480 – Maskinorienterad Programmering • 2009/2010 • Adressavkodning, ”Uppbyggnad.pdf” • ”Skrivarporten”, Arbetsbok MC12, avsnitt 2 • Ur innehållet: • Repetition FLEX adressavkodning • Fullständig/Ofullständig avkodning • Minnesavbildad/Direkt avkodning • Vi ansluter en skrivare Adressavkodning - Skrivarport

  2. Adressavkodning FLEX Adressavkodning - Skrivarport

  3. Adressavkodning FLEX Adressavkodning - Skrivarport

  4. CPU avkodnings-logik EXEMPEL: Adressavkodning Varje minnesblock (kapsel) tilldelas sin unika del av adressrummet Adressavkodning - Skrivarport

  5. D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 A8 A9 A10 CE A11 D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 A8 R/W A9 A10 CE A11 Minnet har 8-bitars ordbredd, precis som centralenheten Minnet innehåller 4 kBytes (212)bytes och har därmed 12 adress-ledningar Read/Write är en insignal till minneskapseln CE (Chip Enable) är en insignal till kapseln, denna måste aktiveras för åtkomst i detta minne D0 D1 D2 D3 D4 D5 D6 D7 CE D0 D1 D2 D3 D4 D5 D6 D7 CE CPU D0 A0 D1 A1 D2 A2 D3 A3 D4 A4 D5 A5 D6 A6 D7 A7 A8 A9 A10 A11 A12 A13 A14 A15 R/W Registren, med 8-bitars ordbredd och CE-ingång Databuss, 8 signaler, betecknas D0-D7 ut-port Adressbuss, 16 signaler, betecknas A0-A15 Styrsignal (Read/Write) del av styrbussen. Genereras av centralenheten Registren, med 8-bitars ordbredd och CE-ingång in-port ”Permanent” läs-minne, ROM ”Flyktigt” läs/skriv-minne, RWM 8-bitars ordbredd, 4 kBytes (212)bytes CE (Chip Enable) Adressavkodning - Skrivarport

  6. Specifikation • RWM-minnet ska aktiveras om centralenheten genererar någon av adresserna 0-0FFF. • ROM-minnet ska aktiveras om centralenheten genererar någon av adresserna C000-CFFF. • Inporten ska aktiveras om centralenheten genererar adress A000. • Utporten ska aktiveras om centralenheten genererar adress 8000. Adressavkodning - Skrivarport

  7. Realisering med NAND-logik Fullständig avkodning 0000-0FFF 1000-1FFF RWM: 0xxx ROM: Cxxx utport: 8000 inport: A000 & A15 2000-2FFF 3000-3FFF A14 CERWM 4000-4FFF A13 5000-5FFF A12 6000-6FFF 7000-7FFF 8000-8FFF & A15 9000-9FFF A14 A000-AFFF CEROM A13 B000-BFFF C000-CFFF A12 D000-DFFF E000-EFFF F000-FFFF Adressavkodning - Skrivarport

  8. Ofullständig avkodning 0000-0FFF 1000-1FFF RWM: 0xxx utport: 8xxx inport: Axxx ROM: Cxxx & A15 2000-2FFF & A15 3000-3FFF A14 A14 CERWM 4000-4FFF CEUT A13 A13 5000-5FFF A12 6000-6FFF A12 7000-7FFF & 8000-8FFF A15 & A15 9000-9FFF A14 A14 A000-AFFF CEIN CEROM A13 A13 B000-BFFF C000-CFFF A12 A12 D000-DFFF E000-EFFF F000-FFFF Adressavkodning - Skrivarport

  9. Adressavkodning - Skrivarport

  10. Minnesavbildad/Direkt avkodning • Vi har sett exempel på ”Minnesavbildad avkodning” där speciell avkodningslogik används då periferikretsar används. • Vid ”Direkt avkodning” används speciella instruktioner för att ange åtkomst i periferikrets. EXEMPEL: Intel 8086 IO-instruktioner: IN <16-bit konst> OUT <16-bit konst> Adressavkodning - Skrivarport

  11. IN <16-bit konst> OUT <16-bit konst> Adressavkodning - Skrivarport

  12. Arbetsbok, kap. 2 Skrivarport • Konstruktion av en Printer-Port • Synkroniseringsproblem • Villkorlig / ovillkorlig överföring ”Busy Wait” och ”Polling” • Handskakningssignaler Adressavkodning - Skrivarport

  13. ROM, Innehåller det inbyggda debugger-programmet DBG12. RWM, används för program och data. I detta adressintervall placeras gränssnitt mot externa enheter HCS12 interna register MC12 adressrum FFFF Beskrivande figur över hur minnesmoduler och IO-portar är placerade i minnet 4000 3FFF 1000 0FFF 0400 03FF 0000 Adressavkodning - Skrivarport

  14. Adress-avkodning CS CPU12 skrivare minne skrivarportens dataregister Det lilla fönstret visar innehållet i dataregistret tolkat som ASCII. ”pappersyta”, här visas utskriften Adressavkodning för skrivar-porten FFFF 4000 3FFF Med portdefinition PRINTER EQU $0800 och instruktionerna LDAA #$30 STAA PRINTER överförs hexadecimala värdet 30 till skrivaren 1000 0FFF 0800-0803 0400 03FF 0000 Adressavkodning - Skrivarport

  15. Förutsättningar Vår skrivare är från början en "dum" skrivare: • Den kan endast arbeta med ett tecken i taget. (hämtar ett tecken - skriv ut - hämta nästa) • Det finns inledningsvis inga handskaknings-signaler • Max utskriftshastighet: 4 tecken per sekund. Adressavkodning - Skrivarport

  16. Första programexemplet Text ($3000) H e j * Printer V1_0 ORG $1000 LDX #Text Pekare till textsträng -> X Loop LDAA 1,X+ Tecken -> A, peka på nästa STAA PRINTER Skriv ut till port BRA Loop Fortsätt med nästa tecken ; så här kan du använda assemblerdirektiv för att ; skapa textsträngen på adresss 3000: ORG $3000 Text FCS ”Hej Du Kalle!” D u K a l l e ! Adressavkodning - Skrivarport

  17. Inför specialtecken för strängslut * Printer V1_1 PRINTER EQU $0800 EOT EQU 4 ORG $1000 LDX #Text Loop: LDAA 1,X+ CMPA #EOT BEQ Stop STAA PRINTER BRA Loop Stop: NOP BRA Stop ORG $3000 Text: FCS "Hej Du Kalle!" FCB EOT Text ($3000) H e j D u K a l l e ! EOT Adressavkodning - Skrivarport

  18. Synkronisera arbetstakterna … Lösningen blir villkorlig överföring vilket kräver ett asynkront gränssnitt… Adressavkodning - Skrivarport

  19. Busy Wait Polling Villkorlig överföring Statustest, kräver asynkront gränssnitt… Adressavkodning - Skrivarport

  20. READY dator-system Skrivare Skrivarbuss Gränssnitt, version 2 • READY-signalen definieras enligt: • READY = 1 (Hög nivå) indikerar att skrivaren är klar att ta emot ett nytt • tecken. • READY = 0 (Låg nivå) indikerar att skrivaren är upptagen med att skriva ut ett tecken. Adressavkodning - Skrivarport

  21. ”Programmerarens bild” * Printer V2_1 PRINTER EQU $0800 PSTATUS EQU $0801 EOT EQU 4 ORG $1000 LDX #Text Loop: LDAA 1,X+ CMPA #EOT BEQ Exit LoopForReady: LDAB PSTATUS ANDB #4 BEQ LoopForReady STAA PRINTER LoopForNotReady: LDAB PSTATUS ANDB #4 BNEQ LoopForReady BRA Loop Exit: NOP BRA Exit ORG $3000 Text: FCS "Hej Du Kalle!" FCB EOT READY = 1 (Hög nivå): skrivaren är REDO READY = 0 (Låg nivå): skrivaren är UPPTAGEN Adressavkodning - Skrivarport

  22. Resultat Klarar nu situationen att centralenheten arbetar snabbare än skrivaren. Fortfarande problem då centralenheten är långsammare än skrivaren. Fortfarande problem med att få skrivaren att stoppa då sista tecknet skrivits ut. Vi behöver ytterligare handskakningssignal ”Tecken finns”… Adressavkodning - Skrivarport

  23. Dator-system READY Skrivare DAV Skrivarbuss Gränssnitt, version 3 DAV = 1 (Hög nivå) indikerar för skrivaren att giltigt tecken finns att hämta på skrivarbussen. DAV = 0 (Låg nivå) indikerar för skrivaren att skrivarbussen har ett ogiltigt värde. Adressavkodning - Skrivarport

  24. * Printer V3 PRINTER EQU $0800 PSTATUS EQU $0801 PCONTROL EQU $0802 EOT EQU 4 ORG $1000 LDX #Text Loop: LDAA 1,X+ CMPA #EOT BEQ Stop Ready: BRCLR PSTATUS,#4,Ready STAA PRINTER BSET PCONTROL,#2 NotReady: BRSET PSTATUS,#4, NotReady BCLR PCONTROL,#2 BRA Loop Stop: NOP BRA Stop ORG $3000 Text: FCS "Hej Du Kalle!" FCB EOT Adressavkodning - Skrivarport

  25. Resultat Klarar nu situationen att centralenheten arbetar snabbare än skrivaren. Klarar nu situationen då centralenheten är långsammare än skrivaren. Klarar nu situationen med att få skrivaren att stoppa då sista tecknet skrivits ut Lösningen är dock hopplöst ineffektiv med tanke på hur vi utnyttjar systemet… Verkligt "arbete" DAV Processorn väntar på DAV skall gå hög μs μs 250 ms Adressavkodning - Skrivarport

  26. Avbrottsrutinen utförs och ett tecken skickas till skrivaren IRQ IRQ Processorn utför annat viktigt arbete m s 100 ms m s Dator-system READY Skrivare DAV Skrivarbuss Introduktion till ”Undantagshantering” Interrupt ReQuest (IRQ), begäran om avbrott… IRQ Dator-system READY Skrivare DAV Skrivar buss Huvud-program Avbrotts- signal Avbrotts-rutin som skriver ut ett tecken Adressavkodning - Skrivarport

  27. Avbrott Minne 1) Huvudprogram exekveras när ett avbrott aktiveras 2) Hopp till avbrottsrutin 3) Avbrottsrutin startar 4) Avbrottsrutin avslutas med en speciell instruktion,return from interrupt (RTI) 5) Återhopp till huvudprogram 6) Huvudprogrammet fortsätter. FFF2 ”avbrottsvektor” FFF3 Avbrottsrutinens adress Adressavkodning - Skrivarport

  28. EXEMPEL, Skrivarporten Minne ”TextP” AH AL ”Text” H Printer_IRQ(H) FFF2 ”avbrottsvektor” e Printer_IRQ(L) FFF3 j D * Avbrottsrutin Printer_IRQ: LDX TextP ;Läs pekare till nästa LDAA 1,x+ ;Skriv nästa tecken STAA Printer STX TextP ;Spara nya pekare RTI u K a l l e ! EOT Adressavkodning - Skrivarport

More Related