TENTAMEN D1/E1/Mek1/Ö1 0900-1300 Hjälpmedel: Häfte" ARM-instruktioner", A4-format, 17 sidor Maxpoäng: Betyg 3 Betyg 4 Betyg 5 60p 24p 36p 48p Frågor under tentamen: Bör j e Delistrand tel. 16 7122 alt. 0702-98 63 58 Bilaga (som skall återlämnas): PortO control register In terruptregister l
1. (2p+2p+2p) a) Flyttalet X lagras som l 1000 0100 000 1101 0000 0000 0000 0000. Bit 31 är längst till vänster. Ange värdet av X i decimal fmm. b) Hur lagras talet Y= 17,625 i flyttalsformatet enligt ovan? Ledning: Flyttalet är kodat i IEEE-standarden för enkel precision. För denna gäller (-l) s. l. M. 2 E-127 där bitarna fördelar sig enligt nedan. E M l bit 8 bitar 23 bitar c) Hur lagras talen +50 och -50 som 8-bitars heltal? 2-komplementsrepresentation används för negativa tal. 2. (Sp) (O,Sp/rätt, felaktigt alternativ = -O,Sp. Dock lägst noll poäng. Max Sp) Kombinera en term i den vänstra kolumnen med tillhörande fras( er) i den högra kolumnen. l. Assemblator 2. RISC 3. Refresh 4. Baud 5. Random accessminne 6. Programräknare 7. PROM 8. Paritetsbit 9. ASCII 10. PCON A. asynkron seriell överföring B. synkroniseringsmetod C. datariktningsregister D. översättningsprogram E. alfanumerisk kod F. förenklad instruktionsuppsättning G. alltid samma åtkomsttid H. krävs för dynamiska minnen I. enhet för signaleringshastighet J. generella register K. pekar på nästa instruktion L. kan ej raderas M. här sker beräkningar N. 4 bitar 3. (4p) Figuren visar en A/D-omvandlare. Ange namn, fördelar och nackdelar. Beskriv också utgående från figuren hur omvandling sker. v_ E,el Kodomvandla ro MSB x, x, x, LSB R 2
4. (4p) I ett minnessystem ingår läsminne och läs/skrivminne. Läsminnet ska byggas upp med minneskapslar 4M (512k x 8), se symbol nedan. Minnessystemet adresseras med 24 adressbitar AO - A23. Läsminnet ska ha kapaciteten l Mord x 24 bitar och vara placerat i adressområdet Ox600000 till Ox6FFFFF. Chipselect tillläsminnet ska genereras med en AVK 8-1 (74LS138), till vilken ska anslutas adressbitarna Al9-A23 så att den kan generera chip-select i hela adressområdet Ox400000-0x7FFFFF. Rita schema. Avkoda re A 1-8 B c EN G1 & G2A G2B o 1 2 3 4 5 6 7 ~... A1a ROM 5. (3p) 7-bitars ASCII-kod används för att sända data via ett RS-232 gränssnitt (seriell kommunikation). Följande gäller: 19200 bit/s, 7 databitar, l startbit, l stoppbit och en paritetsbit (udda paritet). a) Hur många ASCII-tecken kan överföras per sekund? b) Beskriv hur överföringen ser ut bitvis. Använd tecknet "a", ASCII-kod Ox61, i din beskrivning. Rita ett tidsdiagram och förklara. 6. (6p) Skriv ett väl kommenterat program i ARM-assembler som ger rinnande ljus på PortO (lysdioderna ska kopplas till PortO, 8 bitar) enl. ex. nedan. Programmet ska vara komplett med portinitiering. En subrutin DELA Y med lämplig tidsfördröjning finns tillgänglig (behöver ej skrivas). Ex. Rinnande ljus med 8 bitar: 00000000, l 0000000, 11000000, 11100000, 11110000, 11111000, 11111100, 1111110, 11111111, 01111111, 00111111, 00011111,00001111, 00000111,00000011,00000001,00000000,... 3
7. (Sp) Anta att vi har ett ARM-kort där PortO är ansluten till 8 insignaler (knappar där en nedtryckt knapp ger en etta). Förutom PortO har vi en minnescell VISA (8 bitar). MAIN ON SLUT VISA LDR LDRb ANDS EORS BEQ LDR B MOV STRb B DS8 RO, =rpdato Rl, [RO] Rl, Rl, #OX70 Rl, Rl, #OX70 ON Rl, =OXO SLUT Rl, #OX20 Rl, VISA MAIN l Anta att ovanstående program körs om och om igen. Här kommer fem påståenden om vad som händer då. Ange för varje påstående, vilket som är sant och vilket som är falskt! (lp/rätt, felaktigt alternativ= -lp. Dock lägst noll poäng. Max Sp) l. Om alla knappar trycks ner, så kommer en bit i VISA att vara l-ställd. 2. Om man trycker ner flera än tre knappar, så kommer alltid en bit i VISA att vara l-ställd. 3. Man kan aldrig få mer än en bit i VISA att vara l-ställd. 4. Det finns inget sätt att l-ställa fler än två bitar i VISA. 5. Om man inte trycker på någon knapp, så l-ställs ändå en bit i VISA. 8. (2p) a) Hur många byte programminne tas i anspråk av programmet i uppgift 7? Motivera! b) På vilken adress (hexadecimal form) hamnar resultatet i uppgift 7 om programmets stmiadress är OxOOOO l 000? Motivera! 9. (4p) Skriv en väl kommenterad avbrottshanterare (handler) för ARM, som tar hand om avbrott från EINTO (knappavbrott, bito) samt från TimerO (bit8). Anta att avbrottskoden för knappavbrottet kallas ALARM och den för TimerO kallas TIMER (koden för subrutinerna ALARM och TIMER behöver ej skrivas). Lokala variabler sparas undan. A v brottshanteraren ska: Läsa av vilket avbrott som skett samt anropa rätt avbrottskod K vittera rätt avbrott Återgå från avbrottet 4
lo. (4p) Följande program ska summera 10 siffror lagrade i en sträng TEXT samt lagra summan på platsen SV AR. Koden innehåller ett antal fel. Ange var i koden felet är och korrigera alternativt lägg till salmade delar. Ledning: Se bilaga ASCII -tabell. Rad1: RAM_START EQU OX00001000 Rad2: ORG RAM_START Rad3: LDR R2, TEXT Rad4: MOV R1,#10 Rad5: LOOP SUB R1,R1,#1 Rad6: CMP R1, #O Rad?: BEQ FINISH Rad8: LDR RO, [R2] Rad9: ADD R4,R4,RO Rad10: ADD R2, R2, #1 Rad11: B LOOP Rad12: FINISH STRh R4, [R3] Rad13: QUIT B QUIT Rad14: TEXT DC8 "13128571983758134612846182746" Rad15: SVAR DS16 1 11. (3p+4p+3p) I denna uppgift ska du skriva välkommenterad assemblerkod för ARM. Lokala variabler sparas undan. a) Skriv en subrutin bitset, som ettställer en angiven bit i en operand. Vid anrop av subrutinen finnsinparametrar i R4 och R5. Register R4 innehåller den operand som ska bearbetas, och register R5 innehåller index (0-31) för den bit som ska ettställas. Den minst signifikanta biten har index noll. Det nya värdet ska vid returen från subrutinen återfinnas i register R2. b) Skriv i välkommenterad assemblerkod subrutin rightmostzero, som undersöker en angiven operand. Vid anrop av subrutinen finns operanden i register R4. Vid returen ska register R2 innehålla index för den minst signifikanta nollan i operanden. Den allra minst signifikanta biten har index noll. Om alla bitar i operanden är ettställda ska värdet OXFFFF FFFF returneras i register R2. c) Sicriv i välkommenterad assemblerkod en subrutin Is b_ set, som ettställer den minst signifikanta nollan i det 32-bitars tal som finns i den minnescell vars adress finns i register R4. Du måste använda subrutinerna ovan. Vid retur ska register R2 innehålla index för den nolla som har ettställts, eller värdet OXFFFF FFFF om ingen nolla fanns att nollställa. 5
12. (7p) Pelle behöver en sorteringsmaskin för LEGO-bitar. Du ska i den här uppgiften programmera den ingående styrenheten, som är baserad på ARM-processorn. LEGO-bitarna kommer på ett transportband, som passerar förbi tre fotoceller PI, P2 och P3 placerade med 5 cm mellanrum (se fig.). Tre olika typer av LEGO-bitar förekommer: Små bitar med längden 4 cm, mellanstora bitar med längden 8 cm samt stora med längden 12 cm. De små bitarna ska knuffas av bandet och ner i en låda, så fort de har passerat P2. Detta sker genom att styrsignalen KNUFF l aktiveras. De mellanstora bitarna ska på samma sätt knuffas av bandet, när de har passerat P3, ( styrsignal KNUFF2). De stora bitarna ska fotisätta framåt på bandet. Avståndet mellan LEGO-bitarna är alltid minst l O cm. Insignaler till styrenheten: P l (P0:2), P2 (PO: l) och P3 (PO:O) (aktivt höga). Utsignaler från styrenheten: KNUFFl (P0:7) och KNUFF2 (P0:6) (aktivt höga) Uppgift: Skriv ett komplett, väl kommenterat, ARM-program för styrningen. ll nc l små mellanstora stora 6