uprocessorens hardware



Relaterede dokumenter
3. Computerens opbygning.

Eksamen dcomnet Q2/2010. Navn

// Definition af porte og funktioner

Intro til AVR. Mads Pedersen, OZ6HR

Introduktion til Microcontrollere Version

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

DM13-3. Obligatorisk opgave E.05 Håndoptimering af SPARC assembler-kode

up/ansi Eksamensspørgsmål

Arduino Programmering

Mikroprogrammering. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Indholdsfortegnelse :

program fibomain(input,output); var i, j,result : integer; var x, y: integer;

Microcontroller, Arduino

Introduktion til programmering. Af mikroprocessor Atmel ATmega328P i en Arduino Uno

Computerarkitektur Eksamen 2014Q3. Niels Olof Bouvin. Studienummer Navn

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

DATALOGI MASKINARKITEKTUR Blok 2 samt Reeksamination i DATALOGI MASKINARKITEKTUR Blok 1 og arkitekturdelen af DATALOGI 1E

Netværk & elektronik

dcomnet-nr. 8 Simpel aritmetik på maskinniveau Computere og Netværk (dcomnet)

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Lærer nye styresystemer Installerer programmer som kun kan bruges i ældre versioner

Niveauer af abstrakte maskiner

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

Maskinsprog. Martin Zachariasen, DIKU. Programmer og ordrer. Ordretyper. Operander og deres placering. Ordreformat. Procedurekald. Andre arkitekturer

CPUer og maskinkode DM534. Rolf Fagerberg

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

DATALOGI MASKINARKITEKTUR

Algorithms & Architectures II

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Introduktion til Microcontrollere Version

Start på Arduino og programmering

LCD Character display Intro

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Programmering i C Intro og grundlæggende C 5. marts 2007

Eksamen dcomnet Q2/2012. Studiekortsnummer Navn

DM13-1. Obligatoriske Opgave - Kredsløbs design

Start af nyt schematic projekt i Quartus II

Projekt - RoboNet Del Journal.

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

DATASKOLEN Postboks 62 Nordengen Kokkedal. Programmering i maskinkode på AMIGA

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Indhold

Index Indledning 2 WMI 3 Boot via netværk 4 Assembler 5 Mobil-stråling 6 Konklusion 7

Computeren inderst inde

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

Computerarkitektur Eksamen 2014Q2. Niels Olof Bouvin A. Studienummer Navn

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Microcontroller, Arduino

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Programmering i C. Lektion december 2008

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Lageradministration Paging og segmentering

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Programmering i C. Lektion september 2009

Processoren: Enkelt-cyklus implementation

Programmering i C. Lektion oktober 2008

Analoge indgange og A/D konvertering. Analoge udgange

Computerens Anatomi. Af Martin Arnetoft

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

COMPUTER ANATOMI klasse 23. FEBRUAR 2015 HTX - ROSKILDE

Journal JTAG: Udarbejde af: Benjamin Grydehøj I samarbejde med PDA Projektgruppen. Elektronikteknologafdelingen på Erhvervsakademi Fyn.

PMDK PC-Side Basic Function Reference (Version 1.0)

Netværksalgoritmer 1

Indhold. Download driver Find version af Windows Hent drivers til Windows Udpak driver... 6

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Hurtigt i gang med LinMot DeviceNet til Allen Bradley Logix Plc

DATALOGI 1E. Skriftlig eksamen fredag d. 16. januar 2004

Processer og tråde. dopsys 1

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Lær Python dag 1 - modul 1

Algoritmer og invarianter

Grådige algoritmer. Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

dcomnet-nr. 6 Talrepræsentation Computere og Netværk (dcomnet)

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Udvikling af DOTNET applikationer til MicroStation i C#

Introduktion til SAS macro language

Eksamen Computerarkitektur 2013Q4. Niels Olof Bouvin. Studienummer Navn

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

Arduino Programmering

PHP Crash course. Databaser

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Projekt Træningsmaskine

TinkerCad - Arduino simulator

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

TCP & UDP. - de transportansvarlige på lag 4. Netteknik 1

Boolsk algebra For IT studerende

danske karakterer på Lcd

Algoritmer og Datastrukturer 1

Pentium IA-32 Maskinarkitekturen

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Programmering i C. Lektion september 2009

Embedded controller, almen.

DDD Runde 2, 2015 Facitliste

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

Abstrakte datatyper C#-version

Transkript:

uprocessorens hardware

8080 Architecture Kernen i en processor er ALUen. Det er den som kan udfører simple regne operationer. De tal den arbejdermed gemmes i en række registre. Når et tal skal hentes eller gemmes i extern memory sker det vha adresse og data busserne. Den viste processor blev released i 1974. En 2MHz, 8 bits processor som max kan adresserer 64kB hukommelse. Ikke meget, men alligevel rigeligt til at styre en vaskemaskine, eller lignende.

Minimum system For at processoren kan arbejde skal der være noget ekstern hukommelse. I viste tilfælde har vi programhukommelse i ROM og arbejds hukommelse i RAM. ROM svarer til det i kender som BIOS fra jeres PCer.

Memorymap Memorymappen viser hvilke dele af hukommelsen som ligger på de forskellige adresser. Her vist et system med 1 ROM og 3 RAM kredse hver på 16k byte. Det viste tilfælde dækker fra adresse 0000 til FFFF svarende til det som processoren kan adresseres med sine adresse 16 bit. Når RAM og ROM er på 16K betyder det at de har 14 adresseben hver. Det er derfor nødvendigt at lave et kredsløb som ud fra de to sidste holder styr på hvilken kreds der skal skrives til.

Kontakt til omverdenen Hvis processoren skal anvendes til at styrer noget elektronik eller andet, skal vi have en portkreds på. Eksemplet her viser en 8255 som har 3 bi-directionale porte hver på 8 bit. At porten er bi-directional betyder at den frit kan anvendes som input eller output. Porten har 2 adresseben (A0 og A1) hvilket giver 4 adresser. De tre laveste knyttes til hver sin port, medens den sidste forbindes til kontrol registeret. Ved at skrive til kontrol registeret kan vi bestemme om porten skal være input eller output. En portkreds indgår i systemets memorymap på lige fod med RAM og ROM, og skal altså have en fysisk adresse i memorymappen.

Instruction register Mnemo nic Machine Code 8080 Mnemonic Machine Code Operation 8080 Operation Move Increment/Decrement MOV A,B 78 A <- B INR A 3C A <- A + 1 MOV A,C 79 A <- C INR B 4 B <- B + 1 MOV A,H 7C A <- H DCR A 3D A <- A - 1 MOV A,L 7D A <- L DCR B 5 B <- B - 1 MOV A,M 7E A <- (HL) Rotate LDAX B 0A A <- (BC) RLC 7 --- LDAX D 1A A <- (DE) RRC 0F --- LDA word 3Aword A <- (word) RAL 17 --- ADD RAR ADD A 87 A <- A + A Logiske ADD B 80 A <- A + B ANA B A0 A <- A AND B ADD M 86 A <- A + (HL) XRA B A8 A <- A XOR B --- DD86index A <- A + (IX+index) ORA B B0 A <- A OR B ADI byte C6byte A <- A + byte CMP B B8 A - B Substract Branch SUB A 97 A <- A - A JMP address C3address PC <- address SUB B 90 A <- A - B JNZ address C2address If NZ, PC <- address SUB M 96 A <- A - (HL) JZ address CAaddress If Z, PC <- address --- DD96index A <- A - (IX+index) Stack Operation Instructions SUI byte D6byte A <- A - byte PUSH B C5 (SP-2) <- C; (SP-1) <- B; SP <- SP - 2 PUSH D D5 (SP-2) <- E; (SP-1) <- D; SP <- SP - 2 POP B C1 B <- (SP+1); C <- (SP); SP <- SP + 2 POP D D1 D <- (SP+1); E <- (SP); SP <- SP + 2 De operationer som processoren kan udfører er begrænset til nogle meget simple funktioner. Alle funktioner er knyttet til en bestem HEX kode (Machine code) http://nemesis.lonestar.org/computers/tandy/software/apps/m4/qd/opcodes.html

Code example Her er et simpelt eksempel på maskinkode. Bemærk at det er programmøren selv der skal holde styr på hvor i memory koden skal lægge, og også hvor de forskellige variable ligger.

Assembler include "emu8086.inc" org 100h mov al, 25 ; set al to 25. mov bl, 10 ; set bl to 10. cmp al, bl ; compare al - bl. je equal ; jump if al = bl (zf = 1). putc 'n' ; if it gets here, then al <> bl, jmp stop ; so print 'n', and jump to stop. equal: ; if gets here, putc 'y' ; then al = bl, so print 'y'. stop: ret ; gets here no matter what. Assembler er en mere venlig måde at skrive maskikode på. Her er alle koderne erstattet af ord, og man har mulighed for at oprette variable navne m.m. http://www.itipacinotti.it/pagine/sistemi2008/documentation_ emulator/asm_tutorial_01.html

Ansi C #include "stm32f10x.h" // Device header #include <stdio.h> #include "LED.h" // Keil::Board Support:MCBSTM32C:LED int main1 (void) { int32_t num = 0; //Anvendes til at angive hvilken LED der tændes/slukkes int32_t max_num = LED_Num() - 1; //LED_Num kommer fra LED.h og angiver antallet af LEDs int32_t i = 0; //En tæller til vores wait loop } LED_Initialize();//Init LED kommer fra LED.h while (1){ //Kør evigt LED_On (num);//tænd LED angivet af num for (i = 0; i < 1000000; i++){} //Vent LED_Off (num); //Sluk LED if (++num > max_num) num = 0; } return 0; Med C bevæger vi os lidt længere væk fra maskinkoden, men hvis vi vil skrive til computerens hardware skal vi stadig have styr på hvilke adresser det ligger på. Heldigvis indeholder vores IDE en række biblioteker som hjælper med dette. I det viste eksempel skrives til nogle LEDs, men det er kun muligt fordi bibliotekerne kender adressen på de porte som hver LED er forbundet til.