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



Relevanta dokument
General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

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

Kontrollskrivning Mikrodatorteknik CDT S2-704

Programräknaren visar alltid på nästa instruktion som skall utföras. Så fort en instruktion har hämtats så visar programräknaren på nästa instruktion.

A-del motsvarande KS1

Läsminne Read Only Memory ROM

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

Digital- och datorteknik

Det finns en hemsida. Adressen är

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

Det finns en handledning till kortet på hemsidan. AVR STK500.

Digital- och datorteknik

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

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

AVRStudio på tre minuter. Micke Josefsson, 2005

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

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

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

LEU240 Mikrodatorsystem

Minnessystem. Minneshierarki. Flyktigt eller icke flyktigt huvudsakliga egenskaper. Minneshierarki

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

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

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

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

Exempeltentamen Datorteknik, EIT070,

Grundläggande datavetenskap, 4p

Styrteknik distans: Minneselement, register, räknare, AD-omv D4:1

Digital- och datorteknik

MIKRODATORTEKNIK 2012 INNEHÅLLSFÖRTECKNING

Digital- och datorteknik

Digital- och datorteknik

Programmering i maskinspråk (Maskinassemblering)

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

HF0010. Introduktionskurs i datateknik 1,5 hp

Minnen. Informationsteknologi sommarkurs 5p, Agenda. Slideset 4

Högskolan i Halmstad Digital- och Mikrodatorteknik 7.5p. Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

Digital- och datorteknik

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

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

Digital- och datorteknik

CE_O3. Nios II. Inför lab nios2time

Programmering i maskinspråk (Maskinassemblering)

2 UPPBYGGNAD OCH FUNKTION

Digital Design IE1204

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

F9: Minne. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden.

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

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Datorsystemteknik DAV A14 Föreläsning 1

TSIU50 Mikrodatorprojekt. LAB1 AVR-introduktion och logikanalysator

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

Övning2 Datorteknik, HH vt12 - Programmering

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

Föreläsningsanteckningar till Konstruktionsmetoder

Laboration 2 i Datorteknik- Assemblerprogrammering II

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.

Laboration 3 i Digital- och Mikrodatorteknik. Utvecklingssystemet MPLAB IDE Grundläggande assemblerprogrammering för PIC

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

F9: Minne. Minneskonfiguration. Sammansättning av minnesgrupper Ansluta minne till Interface till olika typer av minnen Användningsområden

Random Access Memory. Amare Reda Jenny Holmberg Henrik Kreipke Gaylord Kaya

LV6 LV7. Aktivera Kursens mål:

Digitala System: Datorteknik ERIK LARSSON

Övningsuppgifter i Mikrodatorteknik 4p/5p

En Von Neumann-arkitektur ( Von Neumann-principen i föreläsning 1) innebär:

Assemblerprogrammering del 1

Exempel 4. Användning av en timer

Stack och subrutiner Programmeringskonventionen

Per Holm Lågnivåprogrammering 2014/15 24 / 177. int och double = = 2, 147, 483, 647

Föreläsning 2. Operativsystem och programmering

EDA Digital och Datorteknik

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

CPU. Carry/Borrow IX. Programräknare

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tentamen PC-teknik 5 p

Digital Design IE1204

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

F8: Undantagshantering

Avkodning av minnen (och I/O)

Lågnivåprogrammering. Föreläsning 2 Lågnivåprogrammering. Binära tal. En enkel modell av datorns inre

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

TSEA28 Datorteknik Y (och U)

Tentamen PC-teknik 5 p Lösningar och kommentarer

Tenta i Digitalteknik

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

Till assemblersystemet Zuper 80 Assembler krävs en SPECTRAVIDEO 328/318+minst 16K ram extra.

Digital- och datorteknik

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Digitala Projekt(EITF40) - Larm

Datorsystem Laboration 2: Minnesmappade bussar

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

Digitala System: Datorteknik ERIK LARSSON

TSEA28 Datorteknik Y (och U)

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Lösningsförslag till Tenta i Mikrodator

IT för personligt arbete F6

ALU:n ska anslutas hur då?

Hantering av begränsat antal skrivningar på Solid State diskar

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

7) Beskriv tre sätt att överföra parametrar mellan huvudprogram och subrutin.

Transkript:

CT3760 Mikrodatorteknik Föreläsning 2 Tisdag 2005-08-30 Minnestyper. Atmega 16 innehåller följande minnestyper: SRAM för dataminne FLASH för programminne EEPROM för parametrar och konstanter. Minnen delas in i två huvudgrupper, permanenta och icke permanenta. Non-volatile and volatile. Det finns många varianter av pemanenta minnen. De vanligaste är ROM, EEPROM och FLASH. För icke-permanenta minnen finns två huvudgrupper. Statiska och dynamiska. SRAM statiskt minne för att läsa och för att skriva till. Varje minnescell kan ses som en vippa. Informationen ligger kvar så länge som det finns matningsspänning. Varje cell byggs av 4 6 transistorer. Cellerna blir ganska stora. DRAM dynamiskt minne. Informationen lagras i en liten kondensator. Närvaro av laddning är samma som ett, frånvaro av laddning är noll. En kondensator blir aldrig ideal, utan laddningen läcker ut. För att behålla informationen så måste innehållet i minnet läsas ut ocj skrivas in igen. Detta sker med ett intervall på c:a 50 millisekunder. Fördelen med minnestypen är att det endast går åt en transistor per cell. DRAM kan byggas för mycket större kapacitet är ett SRAM. SRAM har lägre strömförbrukning än DRAM och är generellt snabbare. Accesstid i storleksordning 20 ns. De enskillda cellerna organiseras i block, exempelvis 8 celler för att forma en byte. 11 st adressledningar 11 Minne 2k x 8 8 st dataledningar 8 CS OE WE 2005-08-30 H:\CT3760\Period1_2005\F2.doc 1/7

CS står för Chip Select. Strecket ovanför står för aktivt låg. Funktionen är inkopplad då man har en nolla på ledningen. OE står för Output Enable. Då man har en etta på ledningen är dataledningarna inaktiva. Det är detsamma som om de vore bortkopplade. WE står får Write Enable. För att kunna skiva in data till minnet måste denna ledning vara noll. Vanligen består CS av flera ledningar. Detta för att man skall kunna koppla ihop flera minnen. Hanteringen av kontrollsignaler sker internt i microcontrollern, det är något som vi inte behöver ägna oss åt. EEPROM ROM är en förkortning av Read Only Memory. Utvecklingen ledde fram till att man kunde lagra information i en fälteffekttransistor med flytande styre. Laddningar kunde låsas fast i styret, och på så sätt programmerades minnescellen. Skillnaden mellan att lagra laddningar i en kondensator och att lagra i ett flytande styre är att urladdningen tar mycket längre tid. Storleksordingen 10 år. Programmeringen går till så att man lägger en hög spänning på den minnescell som skall ha en etta. ( 12,75 V i c:a 100 µs. Senare fann man att urladdningen kunde ske om man exponerade chipet med UV-ljus. Minneskapslarna fick ett kvartsfönster. Vanligen med en svart tejpbit över. Utvecklingen ledde senare till att man klarade av att göra en elektrisk radering istället för att radera med UV-ljus. Naturligtvis har EEPROM begränsningar. Antalet läs/skrivcykler begränsas till 100000 gånger. Tioårsgränsen gäller fortfarande. Men nästan all elektronik är gammalmodig och ersatt innan tio år. FLASH Att bara använda EEPROM till minnet i en microcontroller går alldeles utmärkt. Ett litet problem är att minnet är ganska dyrt. I ett EEPROM kan man radera enskillda minnesceller. Detta är inte möjligt i ett FLASH-minne. Istället raderas hela block, eller hela minnet på en gång. Om man sedan sänker kvaliteskravet till att minnet bara skall kunna programmeras om 10 000 gånger, kan man tillverka billigare minnen. En microcontroller som sitter inbyggt i ett system omprogrammeras bara några få gånger, eller kanske inte alls. Det som i dag kallas FLASH-minne hette först Flash-EEPROM. 2005-08-30 H:\CT3760\Period1_2005\F2.doc 2/7

En Atmega 16 innehåller 512 byte EEPROM 1kb = 1024 byte SRAM 16 kb =16 384 byte FLASH Interna register och SRAM ligger inom samma minnesområde. Minnesadr. Hex 0000 R0 0001 R1 000F R15 0010 R16 0019 R25 001A R26 X-reg Low byte 001B R27 X-reg High byte 001C R28 Y-reg Low byte 001D R29 Y-reg High byte 001E R30 Z-reg Low byte 001F R31 Z-reg High byte 0020 Här börjar I/O-register 64 st. 0030 PIND 10 0031 DDRD 11 0032 PORTD 12 0036 PINB 16 0037 DDRB 17 0038 PORTB 18 003C EECR Hantering av EEPROM 1C 003D EEDR 1D 003E EEARL 1E 003F EEARH!F 005D SPL Stackpekare low byte 3D 005E SPH Stackpekare high byte 3E 005F SREG Statusregister 3F 0060 Här börjar SRAM 045F SRAM slut Adress i Register Summary. Hex 00 Läses i register Kan läsas i Memory I/O Kan läsas i Memory Data 2005-08-30 H:\CT3760\Period1_2005\F2.doc 3/7

Hur maskinkod lagras i minnet. En port kan fungera som ingång eller som en utgång till processorn. För att ange hur porten skall fungera, skriver man ett värde till Data Direction Register. Man anger att PORTB skall vara inport genom att skriva noll till registret DDRB. Skall porten fungera som en ut-port skriver man ettor till DDRB. Registret DDRB finns på ardess =0x17. Antag att man vill skriva ut innehållet i register R16 till port B. Maskinkoden för detta blir: 1011 1011 0000 1000 uttryckt som hexadecimalt tal BB08. Detta är två byte och minnet är på en byte. Maskinkoden BB08 sparas på två minnesplatser. Börjar man med att skriva den mest sigifikanta byten, så hamnar den på den lägsta adressen. Nästa byte ( den minst sigifikanta byten) hamnar på en adress högre upp. MS Byte LS Byte adress adress +1 Detta sätt att spara två byte kallas Big Endian. Gör man tvärtom, lagras LS Byte först kallas sättet att lagra för Little Endian. Motorolas processorer och de flesta RISC-processorer använder Big Endian som lagringsprincip. Intels Pentiumprocessorer använder Little Endian. Allt detta innebär att när man läser av maskinkodsfilen så hittar man 08BB som kod för att skriva ut innehållet i register 16 till port B. Start av processorn Vid start ( eller vid reset ) kommer den istruktion som finns på adress noll att utföras. Vanligtvis är denna instruktion ett hopp till den plats där själva programmet startar. Programräknaren håller reda på var i programmet man befinner sig. Arbetsgången är sedan: Instuktion hämtas Programräknaren pekar på nästa instruktion. Instuktionen tolkas, avkodas. Instruktionen utförs. Programräknaren pekar alltid på nästa instruktion som står i tur att utföras. 2005-08-30 H:\CT3760\Period1_2005\F2.doc 4/7

Assembler. Maskinkoden för att skriva ut innehållet i register R16 till port B visades ovan, så här stod det: (Antag att man vill skriva ut innehållet i register R16 till port B. Maskinkoden för detta blir: 1011 1011 0000 1000 uttryckt som hexadecimalt tal BB08. ) Masskinkoden kan man hitta genom att läsa i AVR Instruction Set. Assembler innebär att man får hjälp med översättningen till hexadecimal form. En del annat ingår också i assemblatorn. Viktigt är att komma ihåg. Varje processor har sitt assemblerspråk. Vi skall skriva ett program som simulerar en binärräknare. Utången, PORTB skall ökas med en ehet i taget. Först bör man göra en liten skiss över hur programmet skall fungera. Flödesschema. Start Initieringar Utgång Port B Läs in ettor i ett register Läs ut till Port B Öka reg med 1 ; Program för att simulera en räknare ; Semikolon gör att resten av raden är en kommentar. ;.include "8515def.inc".def temp = r16.cseg.org 0 rjmp RESET RESET: ldi temp, low(ramend) out SPL, temp ldi temp, high(ramend) out SPH, temp ser temp out DDRB, temp loop: out PORTB, temp inc temp rjmp loop Hoppa tillbaka 2005-08-30 H:\CT3760\Period1_2005\F2.doc 5/7

När man skriver program skall man se till att man kommenterar hur man gjort. Ett semikolon gör att resten av raden är en kommentar. Asemblerdirektiv. Detta är upplysningar till assemblatorn. Det har inget med själva programmet att göra. I programmet ovan finns några direktiv. Direktiv börjar med en punkt. Första direktivet är.include "8515def.inc" En fil med namnet 8515def.inc skall inkluderas. I denna fil finns upplysningar om förkortningar och vad register har för adress osv. Man kan söka reda på filen, och öppna den med programmers notepad. Se bara till att inte ändra något i filen. Exempelvis:.equ SREG = 0x3f.equ SPH = 0x3e.equ SPL = 0x3d.equ PORTB = 0x18.equ DDRB = 0x17.equ PINB = 0x16.def innebär att vi sätter ett eget namn på R16 Registret heter i fortsättningen temp..cseg anger att start på avsnittet skall placeras i programminnet. (.dseg anger att avsnittet skall placeras i SRAM och.eseg att avsnittet skall finnas i EEPROM ).org 0 anger att programmet skall starta på minnesadress noll. Assemblerprogramm har tre avsnitt. Label Mnemonic Operand. Label är en etikett, en symbolisk adress. Mnemonic är förkortning för en instruktion. Denna förkortning ger en antydan om vad som skall göras Exempelvis står AND för och-funktionen ADD står för addition. Operand är de eller den ariabel som skall bearbetas.. Första instruktionen är: rjmp RESET Programräknaren ställs om så att den pekar på den adress där vi har Label RESET Observera kolon efter reset. Genom att använda labels så slipper man att själv räkna ut adressen dit man skall hoppa. Den beräkningen gör assemblatorprogrammet. Ldi temp, low(ramend) Det värde som skall läggas in i registret temp hämtas från 8515def.inc Värdet är 5F 2005-08-30 H:\CT3760\Period1_2005\F2.doc 6/7

Nästa instruktion läser in detta i SPL. Detta minne finns på 3D. Ldi temp high(ramend) Värdet är 02. Läses sedan in i SPH, som finns på 5E Stackpekare börjar att peka på 0x25F I det här lilla programmet används inte stacken, men man bör ta som vana att definiera en stack. När vi sedan skriver program i C så kommer kompilatorn att se till att det finns en stack. Instruktionen ser ettställer samtliga bitar i registret. Alla ettor läses ut till DDRB. Detta gör att hela porten B blir en ut-port. Inc ökar innehållet i temp med en enhet. Till slut så hoppar man tillbaka till den plats som anges av labeln loop. Programmet går sedan runt i en evig loop. 2005-08-30 H:\CT3760\Period1_2005\F2.doc 7/7