Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik



Relevanta dokument
F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

HF0010. Introduktionskurs i datateknik 1,5 hp

Grundläggande datavetenskap, 4p

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Att använda pekare i. C-kod

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Det finns en hemsida. Adressen är

Föreläsning 2. Operativsystem och programmering

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Datorsystemteknik DAV A14 Föreläsning 1

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

A-del motsvarande KS1

LV6 LV7. Aktivera Kursens mål:

Övningsuppgifterna i kapitel F avser FLIS-processorn, vars instruktioner och motsvarande koder definieras i INSTRUKTIONSLISTA FÖR FLISP.

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Föreläsningsanteckningar 2. Mikroprogrammering I

Digitala System: Datorteknik ERIK LARSSON

ALU:n ska anslutas hur då?

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Så här fungerar datorer Baserad på T-J Hallbergs minimalmaskin Högskolan i Jönköping/JTH Ragnar Nohre

Digital- och datorteknik

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Programmeringsteknik med C och Matlab

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Kontrollskrivning Mikrodatorteknik CDT S2-704

Programmerbar logik. Kapitel 4

Mikroprogrammering I

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

VHDL och laborationer i digitalteknik

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

TDIU01 - Programmering i C++, grundkurs

Lathund. C för inbyggda system

Enkla datatyper minne

Föreläsning 6: Introduktion av listor

Datorsystem Laboration 2: Minnesmappade bussar

Kapitel 7 Systemexempel (forts.)

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

Föreläsning 1: Intro till kursen och programmering

CE_O1. Nios II. Enkla assembler-instruktioner.

Datorarkitektur. Informationsteknologi sommarkurs 5p, Agenda. Slideset 3

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Föreläsning 1: Intro till kursen och programmering

Datorsystemteknik DAV A14 Föreläsning 1

mikroicd Avbuggare Handbok

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Elektroteknik. Laboration Experiment med en mikrokontroller

Skizz till en enkel databas

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Grunderna i stegkodsprogrammering

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

Föreläsning 1 & 2 INTRODUKTION

TENTAMENSUPPGIFTER I ELEKTROTEKNIK

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Digitala Projekt (EITF11)

Tentamen PC-teknik 5 p Lösningar och kommentarer

Processor pipelining genom historien (Intel i9-intel i7)

EDA451 - Digital och Datorteknik 2010/2011. EDA Digital och Datorteknik 2010/2011

Stack och subrutiner Programmeringskonventionen

En kort text om programmering i C.

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Mål. Datorteknik. Repetition av avbrott. Innehåll. Mätning och styrning. Datorer för mätning och styrning. timer. Datorsystem A/D. Analog insignal D/A

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

In- och Utenheter. Fö 3: In/Ut matning och kopplingsstruktur. Några exempel. Egenskaper. In- och Utenheter. Styrning.

TSEA28 Datorteknik Y (och U)

Introduktion till arv

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Institutionen för datavetenskap 2014/15

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Datorarkitekturer med operativsystem ERIK LARSSON

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Lösningar till tentamen i EIT070 Datorteknik

Lösningsförslag till Tenta i Mikrodator

Föreläsning 3.1: Datastrukturer, en översikt

TDIU01 - Programmering i C++, grundkurs

Design av digitala kretsar

Uppgift 1: a) u= a c + a bc+ ab d +b cd

Effektpedal för elgitarr

DatorsystemteknikDAVA14 Föreläsning 9

Dataminne I/O Stack 0x005D 0x3D SP low byte 0x005E 0x3E SP high byte

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Twincat: PLC Control

Editering, Kompilering och Exekvering av Javaprogram

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

IT för personligt arbete F5

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Minnets komponenter. Digitala System: Datorteknik. Programexekvering. Programexekvering. Enhet för utdata. Enhet för indata CPU.

Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile.

DATORTEKNIK. Tangentbord, knappsatser och deras avkodning

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

Transkript:

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Inbyggda system - Analog till digital signal - Utvecklingssystem, målsystem - Labutrustningen - Uppbyggnad av mikrokontroller - Masinkod, assemblerkod - Högnivåkod Datorer och programvara i produkter som inte i sig är datorer kallas inbyggda system (embedded systems). Internet of things alla inbyggda system skall även vara uppkopplade. Inbyggda system måste ibland vara säkerhetskritiska. Man talar om säkerhetskritiska system. http://news.bbc.co.uk/2/hi/programmes/click_online/9755210.stm

MMK, KTH Elektroteknik Föreläsning 7 - Analog till digital signal Exempel på olika koder 1 byte = 8 bitar. 1 byte kan ha olika betydelse i olika sammanhang, Vi använder olika koder. Binärt Hexadecimalt Decimal 2-komplement Ascii 1111 1111 F F 255-001 ÿ 1000 0000 8 0 128-128 0111 1111 E F 127 127 Delete 0000 0000 0 0 000 000 NUL

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 - Utvecklingssystem, målsystem Ofta ingår även editorn i utvecklingsystemet. På labben är det så.

MMK, KTH Elektroteknik Föreläsning 7 - Labutrustningen mbed-modulen som används i laborationen. Nedan ses MCU-lådan med mbed-modulen monterad i mitten. Diverse signaler till/från mbed-modulen är utdragna till 2mm-hylsor. De som är tillgängliga i denna laboration är indikerade nedan.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Högnivåprogrammet skrivs som vanlig text i en editor. Högnivåprogrammet som även kallas källkod. Kompilatorn översätter, genom så kallad kompilering, högnivåprogrammet till maskinkod som innehåller den sekvens av ettor och nollor som ska skrivas in i mikrokontrollerns minne, med början på minnesadress noll. Högnivåprogrammet är relativt oberoende av den aktuella processorn. Högnivåprogrammeringsspråket är ofta C då det gäller inbyggda system. En vits med att använda ett högnivåprogram är att programmeringen är relativt oberoende av vilken processor som används. Även så kallad assemblerprogrammering kan användas, men varje processortillverkare har sitt eget assemblerspråk. Assemblern är egentligen en läsbar variant av den maskinkod (ettor och nollor) som ska ligga i processorns minne. Nedan visas hur kompilering gör av programmeraren. Resultatet blir en maskinkodsfil.h som med drag and drop kan flyttas till den USB-anslutna mbed-modulen som om den vore ett USB-minne. För att starta programmet trycks på reset och programräknaren nollställs och exekveringen startar.

MMK, KTH Elektroteknik Föreläsning 7 - Uppbyggnad av mikrokontroller http://courses.cs.vt.edu/~csonline/machinearchitecture/lessons/cpu/lesson.html RAM: Minnet som innehåller både instruktioner och data. Detta är något som kännetecknar den så kallade von Neumann arkitekturen. Register: En speciell typ av minnen, I detta fall tre stycken instruktionsregistret (IR), programräknaren (PC) och Accumulatorn (Acc). Bussar: Det finns tre bussar, databussen, adressbussen och kontrollbussen. De kan även tillsammans kallas systembussen. Vardera buss består av ett antal ledare. ALU: Aritmetisk logisk enhet. Kan utföra ett antal operationer, t ex addition. Vilken typ av operation kan väljas med kontrollbussen. Kontrollenheten eller styrenhet: I vårt exempel består den av två delar, en instruktionstolk (decoder) och en multiplexer dvs en vägväljare eller omkopplare Instruktionsavkodaren avkodar den instruktion som för tillfället ligger i instruktionsregistret och påverkar via kontrollbussen bla vilken operation ALU skall göra och om läsning från minnet eller skrivning till minnet skall ske.

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Varje arbetscykel består av två faser, hämtfasen och utförandefasen. I hämtfasen hämtas en instruktion från minnet och läggs i instruktionsregistret. Detta följs av utförandefasen där instruktionen som nyligen placerades i instruktionsregistret avkodas och utförs. Typiskt kan en instruktion innebära att data hämtas från minnet till accumulatorn. Varje instruktion består av en operationskod och en operand och en bit som talar om om operanden ska tolkas som data eller adress. Vid reset nollställs programräknaren och innehållet i programräknarregistret läggs ut på adressbussen (i detta fall adress noll). Via kontrollbussen beordras läsning från minnet (read) och strax därefter skivning till instruktionsregistret.

MMK, KTH Elektroteknik Föreläsning 7 - Masinkod, assemblerkod Maskinkoden är de ettor och nollor som ligger i Flashminnet ovan (ROM Read Only Memory innehållet ändras ej under program körning = exekvering) Uppgift: Skriv ett program som läser från ingång 14, adderar 2 till detta värde och skriver till utgång 12. (Se instruktionslista på webblänken ovan). Lösning: # Machine code Assembly code Description Kopiera heltalet i 14 till accumulatorn. (Heltalet är till exempel 0 LOAD 14 proportionellt mot en insignal) 1 ADD #2 Addera 2 till innehållet i accumulatorn och lägg i accumulatorn 2 STORE 12 Kopiera heltalet i accumulatorn till 12 som är en utgång. - Högnivåkod Här kan du köra ett C program för att testa: http://codepad.org Du kan till exempel klippa ut nedanstående C-program och exekvera det. #include <stdio.h> //deklarationer och initieringar int a=1, b=1, c, t=20; int main(void) //Här börja tidsnedräkningen while (t>0) if ((a==1)&&(b==1))c=1; else c=0; // Beräkning av utsignal //i detta fall AND-funktion printf("tid kvar=%i c=%i \n",t,c); //skriv utsignal //tiden som är kvar minskas t=t-1; }//while slutar här } //main slutar här Ovanstående prog finns redan skrivet på: http://codepad.org/pfehgt8o

Ett annat exempel: Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 När man arbetar med inbyggda system eller med styrsystem brukar begreppet tillstånd användas. Detta begrepp passar bra ihop med switch case i programmering För att träna på att skriva sådana program kan vi först titta på nedanstående program. #include <stdio.h> //deklarationer och initieringar int tillstand=1, t=7; int main(void) while (t>0) switch (tillstand) case 1: printf("måndag\n"); break; case 2: printf("tisdag\n"); break; } //switch slutar här t=t-1; } //while slutar här } //main slutar här 1. Kör programmet och se vad det skriver ut. Använd följande länk: http:// http://codepad.org/iecqwxqs 2. Ändra i programmet så att det skriver ut tisdag istället (går att göra i codepad genom att använda länken ovan och ändra i programmet). 3. Ändra i programmet så att godtycklig veckodag kan skrivas ut.

MMK, KTH Elektroteknik Föreläsning 7 #include <stdio.h> //deklarationer och initieringar int tillstand=1, t=7; int main(void) while (t>0) switch (tillstand) case 1: if (t>6) tillstand=2; } printf("måndag\n"); break; } case 2: if (t>5) tillstand=3; printf("tisdag\n"); break; } //switch slutar här t=t-1; } //while slutar här return 0; } //main slutar här Ovanstående finns på http://codepad.org/bpdw8qki

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Nedanstående program kan inte köras i codepad. Det kan däremot fyllas med lämpligt innehåll och köras på vår mikrokontroller. Programskalet nedan innehåller det som alltid skall vara med och som inte ändras från program till program (endast variabeln ver ska ökas med ett efter varje ändring i programmet ver är versionsnummer). // Långlab Mikro, Kurs Elektroteknik #include "mik.h" char prog[] = "Mikro-lab"; // Textsträng med programmets namn int ver = 1; // *** ÖKA gärna numret för varje version ni testkör! *** int main(void) init_mik(); // Själva programslingan // Initiera hårdvaran move_cursor( 1, 5 ); // Displaymarkören till rad 1, kolumn 5 dprintf( "%s v.%i", prog, ver ); // Skriv ut programmets namn och version /******************************************************************** ** ** ** Deklarera variabler här nedanför vartefter som ni behöver dem ** ** ** ********************************************************************/ int state = 0; /******************************************************************** ** ** ** Konfigurera GPIO som in- och utgångar här nedanför med init_pin ** ** ** ********************************************************************/ while( 1 ) // Evighetsloop } } // Programslingans slut

MMK, KTH Elektroteknik Föreläsning 7 // grind.c, ett program för MET-kontrollern // Långlab Mikro, Kurs Elektroteknik // MG & TL 2002 // Modifierad för ATmega128 PK 2009 och 2012 HJ #include "mik.h" // Infogar bibliotek medfunktioner char * prog = "Grind"; // Textsträng med programmets namn int ver = 0; // ÖKA numret för varje version ni // flashar! *** int a, b, c; int main(void) init_met(); // Deklaration av variablerna // Själva programslingan // Initierar MET-kontrollern move_cursor(1,1); // Displaymarkören till rad 1, //kolumn 1 dprintf("%s v.%i", prog, ver); // Skriv ut programmets //namn/version init_pe(0,"in"); init_pe(1,"in"); init_pe(2,"out"); while(1) a = GET_BIT(pe,0); b = GET_BIT(pe,1); if ((a==1)&&(b==1))c=1; else c=0; // Initierar pe.0 som inpinne // Initierar pe.1 som inpinne // Initierar pe.2 som utpinne // Evighetsloop! // Läser av pe.0 // Läser av pe.1 // Beräkning av utsignal //i detta fall AND-funktion if(c == 1) SET_BIT(pe,2); // Utsignal beroende på c else CLR_BIT(pe,2); } } // Programslingans slut

2015-10-03/HJ Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7