Laboration Datorteknik D 1. IR-länk Michael Josefsson version 1.3
Innehåll 1. Inledning 5 2. Hårdvara 7 2.1. IR-sändare................................... 7 2.2. IR-mottagare.................................. 8 2.3. Seriell signal................................... 9 2.4. Oscilloskop................................... 10 3. Laborationsuppgifter 11 3.1. Bestäm insignalen............................... 12 3.2. Avkodarprogrammet.............................. 13 3.2.1. In- och utmatning........................... 13 3.2.2. Finn rätt bitlängd........................... 14 3.2.3. Avkoda signalen............................ 15 4. Diskussion 17 A. Fördröjningsrutinen DELAY 19 3
4
1. Inledning I den här laborationen skall du tillverka en avkodare för en infraröd länk. Sändarsidan är redan uppkopplad och består av ett hexadecimalt tangentbord som skickar en fyra-bitars parallell signal till en kodare som gör om denna till en seriell signal innan den skickar bitarna vidare till en infraröd sändare. Din del är att med hjälp av processorn 68008 läsa av den mottagna signalen och omvandla den till den ursprungliga siffran för visning på Tutorns terminal. I handledningen finns färdigskrivna rutiner för att vänta ett antal millisekunder (rutinen DELAY) och konfigurera PIA:n (rutinen PIAINIT). Laborationsmiljön består av IR-sändare, IR-mottagare samt Tutorkort med PIA. Dessutom kommer du att använda ett oscilloskop för att mäta upp den mottagna signalen. 5
6
2. Hårdvara Till den här laborationen hör en del hårdvara som beskrivs nedan. Utöver de beskrivna modulerna kommer du att använda den normala laborationshårdvaran dvs processorn 68000 på labkortet Tutor med PIA:n 6821. 2.1. IR-sändare IR-sändaren är redan tillverkad och klar. Den består av ett tangentbord som vid tryck på en tangent skickar en seriell bitström med tangentinformationen till en modulator som modulerar bitströmmen med en 38 khz ton. Det som slutligen skickas ut med infrarött ljus är ton -stötar 1 om 38 khz, där ton betyder logisk etta och frånvaro av ton logisk nolla. IR-sändaren är inrymd i ett hexadecimalt tangentbord. En knappnedtryckning medför att knappens fyrabitars binära värde moduleras med 38 khz innan det seriellt påförs en IR-diod. IR-dioden är den glasklara komponenten längst upp till höger. IR-dioden sänder med för oss osynliga 980 nm:s våglängd, varför också en lysiod med synligt ljus blinkar samtidigt. 1 Det hörs förstås ingenting eftersom det är ljus som skickas ut, och man ser förstås inget heller eftersom det är infrarött ljus. Men liknelsen med ton får duga i alla fall. 7
Anledningen till att signalen moduleras är att den på så sätt kan göras okänsligare för annat infallande ljus, exempelvis lysrörens blinkningar. 2.2. IR-mottagare Mottagaren är en enhet som enbart lyssnar efter 38 khz-modulerat infrarött ljus. Det räcker alltså inte med att enbart infrarött ljus träffar mottagaren. Ljuset måste också vara modulerat med frekvensen 38 khz för att mottagaren ska lägga märke till det. När mottagaren detekterat detta ljus integreras det under en bråkdel av en millisekund och om tillräckligt mycket ljus mottagits anser mottagaren att en logisk etta föreligger. IR-mottagarmodul överst. Den egentliga mottagarkretsen är den stående komponenten med tre ben. Dess schema anges i den undre figuren. Den innehåller all elektronik som behövs för att känna av enbart 38 khz-modulerat ljus samt integrera och tröskla detta. Kretsen skickar ut logisk nolla så länge den känner av närvaron av en korrekt insignal och logisk etta för övrigt. IR-mottagarmodulen innehåller dock en avslutande inverterare så att närvaron av insignal ger en logiskt hög utsignal. 8
2.3. Seriell signal Den seriella signal som emanerar från IR-sändaren och som IR-mottagaren tar emot är i princip uppbyggd enligt figuren nedan: T/2 T IDLE IDLE s d 0 d 1 d 2 d 3 Den seriella signalen består av en startbit, s, som alltid är logiskt hög och fyra databitar, d 0, d 1, d 2, d 3, vars värde förstås varierar beroende på nedtryckt knapp. Före och efter informationen antar kanalen tillståndet IDLE. För avkodning kan det vara lämpligt att känna av signalen vid pilarna. När ingen korrekt modulerad insignal är för handen är kanalen i vila (eng. idle) och mottagaren ger en låg utsignal. Ett sänt tecken inleds med en startbit. Startbiten är 1 tidsenhet lång och signalerar för avkodaren att ett tecken är på gång. Därefter kommer de fyra databitarna som innehåller den egentliga informationen. Även databitarna är 1 tidsenhet långa. När databitarna sänts återgår signalen till tillståndet IDLE. 9
2.4. Oscilloskop Elektronikkonstrukto rens traditionella arbetsha st a r oscilloskopet. Med ett oscilloskop kan man analysera kurvformer pa spa nningar pa en ska rm. Det finns insta llningsmo jligheter fo r tidsskala (X-axeln) och spa nningsskala (Y-axeln). Dessutom kan oscilloskopet visa tva signaler samtidigt pa tva s.k. kanaler. Ska rmen kan dock inte frysa bilden varfo r det kra vs att fo rloppet a terkommer tillra ckligt ofta fo r att det skall visa sig utan att blinka. I bilden visas oscilloskopet med en signal ansluten till ena kanalen, CH1. Man kan se att det a r en trekantssignal med amplituden 2 enheter och periodtiden 4 enheter. Insta llningarna 1 volts/div (det va nstra, nedre, mindre vredet) och 0.2 ms time/div (det o vre stora vredet) ger att amplituden i figuren a r 2 V (2 1) och periodtiden 0.8 ms (4 0.2).2 Kanal 2, CH2, a r inte ansluten, dess inspa nning a r da noll volt vilket resulterar i det horisontella strecket pa ska rmen. Signalen ansluts vis en s.k. prob och oscilloskopet visar signalens potential relativt 0 volt. Detta medfo r att probens ena anslutningen, den svarta sladden, ma ste anslutas till 0 V. A r du osa ker pa oscilloskopets insta llningar? Fra ga handledaren. 2 Da frekvensen a r 1/periodtiden blir frekvensen i detta fall 1.25 khz. 10
3. Laborationsuppgifter Förberedelseuppgift 1 Rita ett tillståndsdiagram eller flödesschema som visar hur avkodningen av signalen kan gå till. Som ledning har du början av ett tillståndsdiagram nedan. Insignalen kallas i och speciella bubblor 1 används för att markera tidfördröjning med längden T : i=0 IDLE i=1 T/2 1 Den fyrkantiga varianten! 11
3.1. Bestäm insignalen Även om signalens utseende har beskrivits ovan är inget känt om vilka tider som gäller. Första uppgiften är alltså att bestämma längden i millisekunder av en digital bit. Obs! Rör inte tongeneratorns inställning efter denna mätning. Anslut oscilloskopet till IR-mottagaren. Glöm inte GND-sladden. Välj oscilloskopinställningar så att samtliga bitar i signalen får plats på en skärm. För att ha något att mäta på måste du samtidigt trycka på en godtycklig siffra på tangentbordet. Uppgift 1 Rita av oscilloskopbilden. Glöm inte att ange tidsskalan. Identifiera och ange de olika bitarnas funktion. Vilken är bitlängden i millisekunder? I vilken ordning skickas bitarna? Jämför med figuren på sidan 9. Är d 0 minst signifikant eller mest signifikant bit? 12
3.2. Avkodarprogrammet 3.2.1. In- och utmatning Du skall själv skriva det program som avkodar mottagarens inkomna bitföljd. För att läsa av bitarna används en yttre komponent, en s.k. PIA (Peripheral Interface Adapter). En PIA används för att kommunicera med omvärlden. Den kan läsa in yttre signaler eller skicka ut signaler till omgivningen. Den PIA som är ansluten till tutorkortet hanterar totalt 2 8 + 4 = 20 signaler. Vi ska här bara använda sex av dessa signaler: En insignal för bitströmmen, en utsignal till oscilloskopet och, fyra utsignaler till displayen. PIA PIAA0 till tutor 6821 PIAB0 PIAB1 PIAB2 PIAB3 A B C D Display PIAB7 För att PIA:n skall fungera som förväntat måste den konfigureras. Det program, PIAINIT som behövs för konfigurationen återges här och förutsätter att insignalen anslutes till PIAA 0 och att utsignaler är PIAB 7 och PIAB 3-0: PIAINIT CLR.B $10084 ; Nollställ CRA MOVE.B #$00,$10080 ; Hela port A insignal MOVE.B #$04,$10084 ; CRA slutvärde CLR.B $10086 ; Nollställ CRB MOVE.B #$FF,$10082 ; Hela port B utsignal MOVE.B #$04,$10086 ; CRB slutvärde 13
3.2.2. Finn rätt bitlängd Ur tidigare mätning vet du hur lång en bit är. För att kunna känna av bitarna i rätt position måste du kunna vänta T och T/2 tidsenheter. Det är således viktigt att programmet skall kunna vänta dessa tidsrymder. Till din hjälp har du rutinen DELAY, som återfinns i bilagorna, och som väntar det antal millisekunder som anges i registret D1. Uppgift 2 Använd först rutinen PIAINIT i ett litet program för att testa att PIA:n fungerar som du förväntar dig. Låt programmet upprepat ändra tillstånd på någon av PIA:ns utgångsbitar och använd oscilloskopet för att verifiera att PIA:n fungerar. PIATEST Uppgift 3 Bestäm ett lämpligt värde för D1. DELAY inleds med instruktioner för att ett-ställa utgången PIAB 7 och avslutas med instruktioner som nollställer denna utgång. På så sätt kan du på oscilloskopskärmen se hur lång tid din fördröjning tar. Vilket värde är lämpligt att använda för en fördröjning på T tidsenheter? 14
3.2.3. Avkoda signalen Förberedelseuppgift 2 Skriv ett program, AVKODA, som avkodar den inkommande signalen enligt förberedelseuppgift 1. Lägg de fyra mottagna bitarna i registret D0, och skicka ut dem till displaymodulen för visning. Tänk på i vilken ordning bitarna kommer. AVKODA Uppgift 4 Använd tutorsystemet för att avkoda signalen. Hur många siffror per sekund blir den resulterande hastigheten? 15
16
4. Diskussion Laborationen skulle alltså likaväl kunnat handla om seriell överföring mellan tangentbord eller mus och dator, mellan fjärrkontroll och TV eller mellan två modem. För att överföra stora mängder data användes parallella seriella kanaler i en s.k. buss. Detta är fortfarande den vanligaste metoden att ansluta hårddiskar m.m. Svårigheter med parallella signaler vid höga hastigheter har medfört en återgång till en seriell kanal även för höga datahastigheter. Det är nämligen enklare att känna av korrekta flanker på en signal än på flera parallella. Speciellt då flankerna är så täta att till och med en enkel knyck på kabeln kan medföra att några av flankerna skulle komma för sent, med oläsliga data som följd. På senare tid har seriell kommunikation även fått ett uppsving i och med USB-standarden för datorkomponenter. Där överförs datat i små kompakta paket av flanker med någon millisekunds mellanrum. Flanktätheten inuti dessa paket är naturligtvis åtskilligt mycket högre. Seriell kommunikation är mycket vanlig mellan datorer och mellan datorer och kringkomponenter. Traditionellt har denna typ av kommunikation förekommit mellan exempelvis dator och skrivare, men även muspekdonet och tangentborden använder seriell kommunikation. -o-o-o- 17
18
A. Fördröjningsrutinen DELAY ; Rutinen nedan utför en vänteloop och avger samtidigt en skvallersignal till PIA ; som kan avläsas på dess port B, bit 7. ; Med angivet värde i D1 väntar rutinen *ungefär* en millisekund. ; Mät själv upp det exakta värdet. ; Innehållet i D1 förstörs. Inga andra register påverkas. ; PIA:n måste vara konfigurerad sedan tidigare. DELAY MOVE.L #57,D1 DEL2 BSET #7,$10082 SUB.L #1,D1 BNE.S DEL2 BCLR #7,$10082 19