Zakres przedmiotu 1. Wstęp do systemów mikroprocesorowych. 2. Współpraca procesora z pamięcią. Pamięci półprzewodnikowe. 3. Architektura systemów mikroprocesorowych. 4. Współpraca procesora z urządzeniami peryferyjnymi. 5. Przykładowy system mikroprocesorowy. 6. Architektura procesorów 32-bitowych na przykładzie układów Freescale 68k/ColdFire. 7. Architektura mikrokontrolerów 8-bitowych. 1
Przestrzeń pamięci. Układy dekoderów adresowych 2
Przestrzeń adresowa procesora 68k 0x00.0000 0 0xFF.FFFF 16777216 B UDS = 0 LDS = 0 D15..D8 D7..D0 Byte 0 Byte 1 Byte 2 Byte 3 Byte FFFFFC Byte FFFFFD Byte FFFFFE Byte FFFFFF 16 bit 2^24 = 8 M words = 16 M bytes 3
Przestrzeń adresowa procesora ColdFire 0x0000.0000 BS3 = 0 BS2 = 0 BS1 = 0 BS0 = 0 D31..D24 D23..D16 D15..D8 D7..D0 Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte FFFFFFF8 Byte FFFFFFF9 Byte FFFFFFFA Byte FFFFFFFB 0xFFFF.FFFF 4294967296 B Byte FFFFFFFC Byte FFFFFFFD Byte FFFFFFFE Byte FFFFFFFF 32 bit 2^32 = 2 G words = 4 G bytes 4
Architektura systemu komputerowego Architektura polega na ścisłym podziale komputera na trzy podstawowe części: procesor, pamięć (zawierająca dane oraz program), urządzenia wejścia/wyjścia (I/O). PAMIĘĆ PODSTAWOWA URZĄDZENIA ZEWNĘTRZ. PROCESOR 5
Pamięć stała A0-A19-1MB D0-D7 6
Współpraca procesora z pamięcią zewnętrzną ColdFire magistrala wewnętrzna sterownik DRAM SDRAM / DDR sterownik magistrali zewnętrznej SRAM moduł chip select FLASH / EEPROM 7
Moduł sterujący pamięcią procesora Motorola ColdFire \CS \BS \TS Dane ColdFire Adres A0-A23 Moduł Chip Select Dane Adres \W/R \WR \TA \OE Pamięć: SRAM, FLASH, urządzenia zewnętrzne \TA Transfer Acknowledge, potwierdzenie transmisji \TS Transfer Strobe, ważne dane oraz adresy na magistralach \TIP Transfer In Progres, utrzymywany w stanie niskim do zakończenia transmisji \TEA Transfer Error, wejście sygnalizacji błędu zewnętrznego 8
Przykładowa mapa pamięci 9
Przykład 1 10
Pełny dekoder adresowy przykład 1 M1: 0x0000-0x0FFE 2^12 = 4 kb M2: 0x1000-0x1FFE 2^12 = 4 kb 11
Przykład 2 12
Pełny dekoder adresowy - przykład 2 0x00.0000 2 kwords 0x00.1000 2 kwords 0x00.4000 8 kwords 0x00.8000 2 Words 0x00.8000 2 Words 13
Przykład 3 14
Niepełny dekoder adresowy - przykład 3 M1: 0x00.0000-0x00.0FFE 2^12 = 4 kb M2: 0x00.1000-0x00.1FFE 2^12 = 4 kb M1: 0x00.0000-0x7F.FFFE 2^12 = 4 kb M2: 0x80.0000-0xFF.FFFE 2^12 = 4 kb 15
Niepełny dekoder adresowy przykład 3? 16
Niepełny dekoder adresowy - przykład 2 17
Niepełny dekoder adresowy - przykład 2 18
Dekoder/demultiplekser 4 => 16 (1) 74 LS 154 19
Dekoder/demultiplekser 4 => 16 (2) 20
Dekoder/demultiplekser 4 => 16 (3) 21
Dekoder/demultiplekser 3 => 8 (1) 74 LS 138 22
Dekoder/demultiplekser 3 => 8 (2) 23
Dekoder 5 na 32 24
Podwójny dekoder 2 na 4 74 LS 139 25
Niepełny dekoder adresowy 1Mw A23 A22 A21 AS* 0 1 74 LS 138 M1 M2 M3 M4 M5 M6 M7 M8 8 x 1M słów w przestrzeni adresowej 0x00.0000-0xFF.FFFF 26
Niepełny dekoder adresowy 256 kw A23 A22 A21 AS* A19 A20 74 LS 138 M1 M2 M3 M4 M5 M6 M7 M8 8 x 256 k słów w przestrzeni adresowej 0x40.0000-0x7F.FFFF (2 Mw) 27
Przypomnienie... 1. Dekoder adresowy: RAM_CS: 0x00.0000-0x00.1fff ROM_CS: 0x80.0000-0x00.ffff 2. Dekoder adresowy: Dekoder niewykonalny: RAM_CS: 0x00.0000-0x00.1fff 2^13=8 kb ROM_CS: 0x00.2000-0x01.1fff 2^16=64 kb Pełny dekoder adresowy: RAM_CS: 0x00.0000-0x00.FFFF 2^16=64 kb ROM_CS: 0x01.FFFF-0x01.FFFF 2^16=64 kb 28
Niepełny dekoder adresowy, cd... 1 M-word 29
Niepełny dekoder adresowy, cd... 30
Pełny dekoder adresowy przykład 4 31
Tablica adresów pamięci przykład 4 32
Pełny dekoder adresowy przykład 4 0x00.0000-0x1FFF 0x00.2000-0x3FFF 0x00.4000-0x5FFF 0x00.6000-0x7FFF 2^13= 8 kb A16 = 0, A17 = 1 0x02.0000-0x02.07FF 0x02.0800-0x02.0FFF... 2^11= 2 kb A16 = 1, A17 = 0 0x01.0000-0x01.000E 0x01.200F-0x01.001E 2^4= 16 B 33
PROM jako dekoder adresowy (1) 34
PROM jako dekoder adresowy (2) Aktywny stanem niskim 35
PROM jako dekoder adresowy (3) 36
Dekoder PROM - przykład 5 Możliwość rozszerzenia pamięci ROM do 8 kbx8, RAM? 37
Tablica adresów pamięci przykład 5? 38
Tablica adresów pamięci przykład 5 4 kb 39
PROM jako programowalny dekoder adresowy 40
Dekoder adresowy przykład 5 Możliwość rozbudowy CS_PERIs* 41
Dekoder adresowy procesora motorola 68k adres bazowy: 0x00. 0000 przestrzeń adresowa: 0x00.0000-0x00.FFFF 2^5 = 32 obszary po 2 kb Możliwość obsługi pamięci ROM maksymalnie: 3 x 16 kb 0xC000 = 49152 (48 kb) BERR* Write = Bus Error 42
Transfery 8- i 16-to bitowe 43
Dekoder aktywujący pamięci 8-bitowe w systemach 32-bitowych 44
Dekoder PROM Zalety: Możliwość wyboru pamięci o różnych wielkościach (RAM/ROM 1, 2, 4, 8 kb), Możliwość łatwej rozbudowy oraz modyfikacji (zamiana pamięci ROM 4 kb na mak. 16 kb). Wady: W celu zdekodowania całej przestrzeni należy wykorzystać pamięci PROM o dużych rozmiarach (2^24 = 16 Mb, 2^32 = 4 GB!), Potrzeba stosowania dekoderów pomocniczych, Wielopoziomowe dekodery mogą zwiększyć czas dostępu do pamięci (cykle oczekiwania, wait state). Czy można użyć pamięci EPROM do budowy dekodera adresowego? 45
Zastosowanie układów programowalnych do budowy dekoderów adresowych 46
Schemat blokowy pamięci PROM 47
Funkcje opisujące dekoder adresowy Adres bazowy pamięci Rozmiar pamięci = maska 48
Schemat układu programowalnego PAL (Programmable Array Logic) 49
Struktura układu PAL16V8 50
Układ sekwencyjny GAL16V8 (Generic Array Logic) 51
Układ sekwencyjny GAL16V8 52
Dekoder adresowy opisany w języku ABEL-HDL 53
Wynik kompilacji programu dekodera adresowego 54
Sygnały przypisane do wyprowadzeń układu P16V8 55
Wykorzystanie układu P16V8 56
Wykorzystanie matrycy programowalnej 57
Porty I/O układu programowalnego 58
Wektory testowe 59
Wynik kompilacji program w formacie JEDEC 60
Dekoder adresowy procesora MC68020 61
Przestrzenie adresowe procesora Motorola z rodziny 68k CPU space przestrzeń adresowa procesora (obsługa rejestrów specjalnych RAMBAR, FLASHBAR, konfiguracja pamięci cache, kooprocesor, itp...), instrukcja MOVES 62
Zastosowanie układów programowalnych do budowy dekoderów adresowych ColdFire Układ programowalny CPLD/FPGA sterownik DRAM sterownik magistrali zewnętrznej magistrala wewnętrzna SDRAM / DDR SRAM Rejestry konfiguracyjne moduł chip select FLASH / EEPROM 63
Dekoder adresowy w języku VHDL Entity AddressDecoder is port ( Address : in std_logic_vector(19 downto 0); CS_RAM1, CS_RAM2, CS_ROM1, CS_ROM2 CS_PER1, CS_PER2 : out std_logic ); end AddressDecoder; Architecture behavior of AddressDecoder is begin CS_RAM1 <= '0' when address<0x1000 else '1'; CS_RAM1 <= '0' when (address>=0x1000 and address<0x2000) else '1'; CS_ROM1 <= '0' when (address>=0x2000 and address<0x3000) else '1'; CS_ROM1 <= '0' when (address>=0x3000 and address<0x4000) else '1'; CS_PER1 <= '0' when (address>=0x4000 and address<0x4100) else '1'; CS_PER2 <= '0' when (address>=0x4100 and address<0x6102) else '1'; End behavior; 64
Praca domowa Zaprojektować pełny dekoder adresowy zapewniający obsługą następującej przestrzeni adresowej: RAM1 RAM2 I/O_1 I/O_2 00.0000-00.FFFF 01.0000-01.FFFF E0.0000-E0.001F E0.0020-E0.003F 65
Bezpośredni dostęp do pamięci DMA (ang. Direct Memory Access) 66
Współpraca urządzeń peryferyjnych z pamięcią i procesorem 67
Urządzenia peryferyjne mapowane na przestrzeń pamięci Magistrala łącząca procesor z pamięcią może się okazać wąskim gardłem systemu. Ograniczona szybkość transmisji pomiędzy procesorem, a pamięcią w porównaniu z ilością dostępnej pamięci nazywana jest wąskim gardłem von Neumanna (ang. von Neumann bottleneck). Jak można przeciwdziałać? 1. Pamięć cache, 2. Układ DMA. 68
Bezpośredni dostęp do pamięci (1) Zadanie Napisać program w języku asembler kopiujący blok danych o wielkości 512 B z bufora interfejsu sieciowego (eth0) do pamięci danych (pod adres 0x1000). Urządzenie eth0 mapowane jest pod adresem 0xFFC0.0100. 69
Bezpośredni dostęp do pamięci (2) DMA request DMA ack 70
Układ DMA procesora ColdFire 71
Układ DMA procesora ColdFire Cechy modułu DMA: Cztery niezależne programowalne kanały DMA Automatyczne wyrównywanie podczas dostępu do przestrzeni adresowej obu urządzeń, Transfer danych 8-, 16-, 32-, or 128-bitowych, Transfer jednokrotny lub ciągły, Transfer z urządzeń o różnych szerokościach magistral, Niezależne rejestry adresowe dla obu urządzeń między, którymi wykonywany jest transfer Zgłaszanie przerwań w przypadku nieprawidłowego odczytu 72
Sterowniki DMA 73
Motorola MC 68000 74
Sygnały procesora Motorola (2) 75
Motorola MC 68020 76
Obudowa procesora MC 68020 77
Dynamic Bus Sizing 78
Zależności pomiędzy ilością przesyłanych bajtów, a magistralą 79
Dynamic Bus Sizing 80
Transfer danej spod nieparzystego adresu przez 16-bitową magistralę 16 bit Próba odczytu 4 bajtów Próba odczytu rozkazu umieszczonego pod nieparzystym adresem w pamięci programu powoduje wystąpienie wyjątku (Address Error Exception). Rozwiązanie problemu: Rozkazy powinny być wyrównane do granicy 2 bajtów lub 4 bajtów (dyrektywa asemblera ALIGN). 81
Przebiegi obrazujące zapis danych pod nieparzysty adres 82
Współpraca procesora z urządzeniami o różnych magistralach danych 83
Współpraca procesora 68020 z pamięcią z magistralą 16 bitową A31 - A1 84
Zależności pomiędzy ilością przesyłanych bajtów, a magistralą 85