Dariusz Chaberski Uniwersytet Mikołaja Kopernika w Toruniu Wydział Fizyki, Astronomii i Informatyki Stosowanej Regionalne Kółka Fizyczne Urząd Marszałkowski w Toruniu Program Operacyjny Kapitał Ludzki Włocławek, 27 lutego 2010
Ustalenia 2/55 email: rkf.chaberski@fizyka.umk.pl www: http://www.fizyka.umk.pl/~rkf.chaberski http://www.fizyka.umk.pl/rkf/rkfgrudziadz.html 20 godzin = 2 godziny + 6 3 godziny Luty 6, 13, 20, 27 Marzec 6, 13, 20, 27 Kwiecień 3, 10, 17, 24
Architektura 3/55 A mikroprocesor C D A D pamięć programu C BIOS dekoder adresów A C 1 C 2 C 3 A D pamięć danych C pamięć operacyjna karta graficzna magistrala adresowa magistrala danych sygnały sterujące A układy wejścia wyjścia D C klawiatura mysz stacja dyskietek
Architektura Komputer osobisty 4/55 mikroprocesor interfejsy komunikacyjne karta graficzna zestaw układów specjalizowanych CHIPSET 1 zestaw układów specjalizowanych CHIPSET 2 magistrale systemowe pamięć operacyjna interfejsy pamięci masowej
Architektura Komputer osobisty 5/55
Architektura Komputer osobisty 6/55
Architektura System kontrolny 7/55 magnes trwały Vcc wyświetlacz alfanumeryczny blok zasilacza z akumulatorem mikrokontroler moduł transmisji radiowej ultradźwiękowy czujnik ruchu klawiatura czytnik kart RFID
Architektura System kontrolny 8/55
Architektura System pomiarowy 9/55 czujnik głowica pomiarowa wyświetlacz alfanumeryczny mikrokontroler klawiatura blok zasilacza pamięć danych pomiarowych interfejs transmisji danych sygnały wzorcowe
Architektura Mikrokontroler - mikroprocesor porównanie 10/55 mikrokontroler mała moc obliczeniowa (30 MIPSów) na ogół brak instrukcji zmniennoprzecinkowych przetwarzanie jednopotokowe bogate peryferia (liczniki i układy czasowe, przetworniki A/C i C/A, duża liczba interfejsów) dostępne operacje bitowe brak układu zarządzania pamięcią MMU praca tylko w trybie rzeczywistym rzadko obsługiwany bezpośredni dostęp do pamięci DMA zastosowanie: aparatura kontrolno pomiarowa
Architektura Mikrokontroler - mikroprocesor porównanie mikroprocesor duża moc obliczeniowa (10000 MIPSów obecnie) wielordzeniowość oraz technologia HT przetwarzanie wielopotokowe dostępne instrukcje zmniennoprzecinkowe do działania wymaga dodatkowych peryferii (kontroler DMA, pamięć (programu i danych), kontroler przerwań) dostępny układ zarządzania pamięcią MMU adresowanie w trybie rzeczywistym i wirtualnym z reguły architektura Von-Neumana możliwość pracy w systemie wieloprocesorowym zastosowanie: komputery (stacje robocze - komputery osobiste, serwery) 11/55
Dwójkowe kody liczbowe Kod naturalny 12/55 n m A: a n 1 a n 2 a n 3 a 1 a 0 a 1 a 2 a 3 a 1 m a m L(A) = n 1 i= m 2 i L (a i )
Dwójkowe kody liczbowe Kod znak-moduł (ZM) 13/55 n 1 m A: a n 1 a n 2 a n 3 a n 4 a 1 a 0 a 1 a 2 a 3 a 1 m a m L(A) = ( 1) L(a n 1) n 2 i= m 2 i L (a i )
Dwójkowe kody liczbowe Kod uzupełnienie do 1 (U1) 14/55 n 1 m A: a n 1 a n 2 a n 3 a n 4 a 1 a 0 a 1 a 2 a 3 a 1 m a m L(A) = L(A)
Dwójkowe kody liczbowe Kod uzupełnienie do 2 (U2) 15/55 n 1 m A: a n 1 a n 2 a n 3 a n 4 a 1 a 0 a 1 a 2 a 3 a 1 m a m L(A) = L(A + L 1 (2 m ))
16/55 Systemy mikroprocesorowe Dwójkowe kody liczbowe Zapis zmiennoprzecinkowy n m A: a n znak a n 1 a n 2 a n 3 a 1 cecha - wykładnik C = A[n 1, 0] M = A[ 1, m] S = A[n] E = 2 n 1 1 L(A) = ( 1) L(S) L(M) 2 L(C) E 2 n 1 L(C) 0 1 L(M) < 2, normalizacja L(S) = 0, 1 a 0 a 1 a 2 a 3 a 1 m a m mantysa
Operacje na liczbach dwójkowych Suma 17/55 A: 1 1 0 1 0 1 1 1 0 0 B: 0 0 1 1 0 0 1 0 1 0 A+B: 0 0 0 0 1 0 0 1 1 0 C: 1 Z: 0 N: 0 V: 0 S: 0 H: 0
Operacje na liczbach dwójkowych Różnica 18/55 A: 1 1 0 1 0 1 1 1 B: 1 1 1 0 1 0 0 0 A-B: 1 1 1 0 1 1 1 1 C: 1 Z: 0 N: 1 V: 0 S: 1 H: 1
Operacje na liczbach dwójkowych Różnica 19/55 A: 1 1 0 1 0 1 1 1 B: 0 0 0 1 0 1 1 1 1 A-B: 1 1 1 0 1 1 1 1 C: 0 Z: 0 N: 1 V: 0 S: 1 H: 0
Operacje na liczbach dwójkowych Iloczyn 20/55 A: 1 1 0 1 0 1 1 1 B: 1 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 A B: 1 1 0 1 1 1 1 1 0 1 1 0 0 1 1 C: 0 Z: 0
Operacje na liczbach dwójkowych Iloraz 21/55 A % B: 0 0 0 1 0 1 0 1 A: 1 1 0 1 0 1 1 1 B: 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 C: 0 Z: 0 0 1 0 1
Operacje na liczbach dwójkowych Operacje logiczne 22/55 A: 0 0 0 1 0 1 0 1 B: 1 1 0 1 0 1 1 1 A B: A B: 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 A B: 1 1 0 0 0 0 1 0 A: 1 1 1 0 1 0 1 0
Adresowanie Adresowanie bezpośrednie 23/55 pamięć programu rejestry ogólnego przeznaczenia akumulator
Adresowanie Adresowanie pośrednie 24/55 pamięć programu rejestry ogólnego przeznaczenia lub pamięć akumulator
Adresowanie Wartość natychmiastowa 25/55 pamięć programu akumulator
Adresowanie Architektura Von Neumana 26/55 0x7ffff pamięć programu 0x50000 0x4ffff pamięć danych 0x00000 b m 1 b 0
Adresowanie Architektura harwardzka 27/55 0xffff 0x4ffff pamięć programu pamięć danych 0x0000 b n 1 b 0 0x00000 b m 1 b 0
Instrukcje Budowa 28/55 R: r k 1 r 0 O: o l 1 o 0 rodzaj operacji pierwszy operand O : o m 1 o 0 W: w n 1 w 0 drugi operand wynik R(W, F) = R(O, O, F) przykłady F [W] = [O] O F W = O [#O ]
Instrukcje Rodzaje instrukcji 29/55 pełniona funkcja przesłań arytmetyczne logiczne sterujące warunkowe specjalne typ danych stałoprzecinkowe zmiennoprzecinkowe bitowe blokowe DSP - Digital Signal Processing SIMD - Single Instruction Multiple Data poziom uprzywilejowania
Instrukcje Podział mikroprocesorów ze względu na listę instrukcji 30/55 RISC (ang. Reduced Instruction Set Computer) zbiór instrukcji jest ortogonalny mała liczba instrukcji CISC (ang. Complex Instruction Set Computer) rozbudowana liczba instrukcji wysoka specjalizacja instrukcji
Instrukcje Instrukcje przesłań 31/55 rejestry ogólnego przeznaczenia pamięć RD H RD L AD: RS AS: AS+1: [AD] = RS RD H RD L = [AS] [AS + 1]
Instrukcje Instrukcje przesunięcia 32/55 logiczne w prawo b N 1 b 0 C 0 w lewo 0 arytmetyczne w prawo b N 1 b 0 C
Instrukcje Instrukcje blokowe 33/55 DI: SI: pamięć CNT: DI: SI: licznik przesłań rejestr indeksowy przeznaczenia rejestr indeksowy źródła znacznik kierunku DIR
34/55 Systemy mikroprocesorowe Układ wykonawczy Cykl wykonywania instrukcji przetwarzanie sekwencyjne F D R E W F D E F F D E W F D R E przetwarzanie potokowe F D R E W F D E F F D E W F D R E F - pobranie kodu instrukcji D - dekodowanie instrukcji R - odczyt argumentów E - wykonanie instrukcji W - zapisanie wyniku - oczekiwanie
Układ wykonawczy Wielowątkowość 35/55 Standardowy procesor procesor fizyczny procesor logiczny UW1 UW2 UW3 Procesor z technologią HT procesor fizyczny procesor logiczny UW1 UW2 UW3
Układ wykonawczy Hiperskalarność 36/55 Standardowy układ wykonawczy akumulator rejestr tymczasowy rejestr znaczników rejestry ogólnego przeznaczenia wskaźnik stosu rejestr rozkazów licznik programu
Układ wykonawczy Hiperskalarność 37/55 Hiperskalarny układ wykonawczy rejestry ogólnego przeznaczenia FIFO sekwenser licznik programu
Urządzenia peryferyjne Magistrale 38/55 WR zapis CS OE odczyt D D 0 D 1 A A 0 A 1
Urządzenia peryferyjne Porty wejścia wyjścia 39/55 R LED VCC R P D 0 D 0 Q D C Q D C IN OE OUT IN OE OUT D A C dekoder adresów
Urządzenia peryferyjne Przetwornik analogowo cyfrowy mikrokontroler ANIN 0 ANIN 1 ANIN 7 przetwornik A/C (SAR) D 0... D 11 b 7 INT jednostka centralna CLK preskaler bajt konfiguracyjny ADRH ADRL b 1 b 0 40/55
Urządzenia peryferyjne Przetwornik cyfrowo analogowy mikrokontroler ANOUT 1 przetwornik C/A D 0... D 11 b 7 jednostka centralna ANOUT 2 przetwornik C/A D 0... D 11 VREF + b 1 b 0 VREF ADRH ADRL CLK 41/55
Urządzenia peryferyjne Bezpośredni dostęp do pamięci 42/55 drugi poziom mikroprocesor DACK pierwszy poziom szyna adresowa szyna danych DREQ kontroler DMA sygnały sterujące DACK DACK DREQ DREQ kontroler DMA DACK kontroler DMA DREQ układ zewnętrzny
Urządzenia peryferyjne Kontroler przerwań 43/55 magistrala danych magistrala sterująca magistrala adresowa przerwanie potwierdzenie A2-A0 W CS OE IO D7-D0 kontroler przerwań wejścia przerwań
Urządzenia peryferyjne Kontroler przerwań 44/55 skok skok skok instrukcja instrukcja instrukcja przerwanie instrukcja instrukcja instrukcja instrukcja powrót podprogramy obsługi przerwań kod przerwanego programu pełny kod podprogramu obsługi przerwania
8 bitowe mikrokontrolery rodziny AVR Podział 45/55 tinyavr megaavr XMEGA
8 bitowe mikrokontrolery rodziny AVR Rdzeń AVR 46/55 8 bitowa magistrala danych pamięć programu FLASH rejestr instrukcji licznik programu słowa kontrolno statusowe 32 8 rejestrów ogólnego przeznaczenia kontroler przerwań jednostka SPI dekoder instrukcji linie sterujące adresowanie bezpośrednie adresowanie pośrednie ALU pamięć danych SRAM Watchdog licznik czasomierz komparator analogowy Moduł 1 we/wy Moduł 2 we/wy EEPROM Moduł n we/wy porty wejścia wyjścia
8 bitowe mikrokontrolery rodziny AVR Rejestr statusowy numer bitu 7 0 nazwa I T H S V N Z C dostęp R/W R/W R/W R/W R/W R/W R/W R/W wartość początkowa 0 0 0 0 0 0 0 0 I - globalne zezwolenie na przerwania T - znacznik kopii H - znacznik przeniesienia połówkowego S - bit znaku S=V N V - znacznik przepełnienia N - znacznik wartości ujemnej Z - znacznik wartości zerowej C - znacznik przeniesienia lub pożyczki 47/55
8 bitowe mikrokontrolery rodziny AVR Rejestry ogólnego przeznaczenia 7 0 R0 R1 R2 adres 0x00 0x01 0x02... R13 R14 R15 R16 R17 0x0D 0x0E 0x0F 0x10 0x11... R26 R27 R28 R29 R30 R31 0x1A 0x1B 0x1C 0x1D 0x1E 0x1F młodszy bajt rejestru X starszy bajt rejestru X młodszy bajt rejestru Y starszy bajt rejestru Y młodszy bajt rejestru Z starszy bajt rejestru Z X, Y, Z - rejestry indeksowe/wskaźnikowe 48/55
8 bitowe mikrokontrolery rodziny AVR Mapa pamięci programu 49/55 15 0 wektory przerwań i resetu 0x0000 FLASH obszar aplikacji obszar programu modyfikującego pamięć programu 0x1FFF
8 bitowe mikrokontrolery rodziny AVR Budowa cyfrowego portu wejścia wyjścia 50/55 PUD DDxn Q D Q CLR RESET WDx RDx Pxn SLEEP PORTxn Q D Q CLR RESET WPx RRx synchronizator SYNC PINxn D L Q Q D Q Q RPx clk I/O magistrala danych
8 bitowe mikrokontrolery rodziny AVR Przykładowe instrukcje 51/55 mnemonik operandy opis znaczniki # uwagi ADD Rd, Rr Rd=Rd+Rr ZCNVSH 1 d,r=[0,31] ADC Rd, Rr Rd=Rd+Rr+C ZCNVSH 1 d,r=[0,31] ADIW Rd, K Rd+1:Rd=Rd+1:Rd+K ZCNVS 2 K=[0,63], d=24,26,28,30 COM Rd Rd=0xFF-Rd ZCNVS 1 d=[0,31] NEG Rd 0x00-Rd ZCNVSH 1 d=[0,31] CALL k [SP]=PC+2, PC=k - 4/5 k=[0,4m-1] RET - PC=[SP] - 4/5 - RETI - I=1, PC=[SP] I 4/5 - BREQ k if(z==1) PC=PC+1+k - 1/2 k=[-64,63] MOV Rd, Rr Rd=Rr - 1 r,d=[0,31] LDI Rd, K Rd=K - 1 d=[16,31], K=[0,255] LDS Rd, k Rd=[k] - 2 d=[0,31], k=[0,64k-1] LD Rd, X Rd=[X] - 2 d=[0,31] LPM - R0=[Z] - 3 -
Procesory rodziny x86 Adresowanie w trybie rzeczywistym 52/55 pamięć segment danych segment stosu segment programu segment dodatkowy rejestr segmentu danych rejestr segmentu stosu rejestr segmentu programu rejestr segmentu dodatkowego przesunięcie adres efektywny adres fizyczny
Procesory rodziny x86 Adresowanie w trybie chronionym 53/55 adres wirtualny selektor rejestr segmentowy adres efektywny adres fizyczny pamięć fizyczna deskryptor segmentu segment deskryptorów adres bazowy rozszerzenie rejestru segmentowego dana segment danych deskryptor segmentu
Procesory rodziny x86 Przełączanie zadań zadanie 1 zadanie 2 rozkaz rozkaz wywołanie rozkaz rozkaz stan rejestrów procesora segment stanu zadania 1 stan rejestrów procesora segment stanu zadania 2 rozkaz rozkaz powrót rozkaz stan rejestrów procesora stan rejestrów procesora segment deskryptorów selektor zadania deskryptor zadania 1 deskryptor zadania 2 segment deskryptorów zadań 54/55
Literatura 55/55 [1] 8-bit Microcontroller with 16K Bytes In-System Programmable Flash - ATmega16 ATmega16L. Atmel 2006. [2] Mikrokontrolery AVR w praktyce. Jarosław Doliński. BTC. Warszawa 2003. [3] Intel386 TM DX MICROPROCESSOR 32-BIT CHMOS MICROPROCESSOR WITH INTEGRATED MEMORY MANAGEMENT. Intel. 1995. [4] IA-32 Intel Architecture Software Developer s Manual Volume 1-3. Intel. 2004. [5] Mikrokomputery klasy IBM PC. Henryk Małysiak, Bolesław Pochopień, Eugeniusz Wróbel. WNT. Warszawa 1992. [6] Anatomia PC. Piotr Metzger, Adam Jełowicki. Helion. Wydanie czwarte lub nowsze. 1998.