diff --git a/KIV POT/10. Návrh paměti.md b/KIV POT/10. Návrh paměti.md new file mode 100644 index 0000000..236ca15 --- /dev/null +++ b/KIV POT/10. Návrh paměti.md @@ -0,0 +1,70 @@ +# Návrh paměti + +- požadované vlastnosti + - typ pamětí (SRAM, Flash, ...) + - velikost paměti (počet slov x délka slova) + - umístění pamětí v adresním prostoru +- rozložení pamětí v adresním prostoru = mapa adresního prostoru +- znalost mapy adresního prostoru je nutná při vytváření programového vybavení + +**Interpretace adresy** +- ve kterémkoli místě lze adresu rozdělit na číslo bloku a offset uvnitř bloku +- velikost bloku (= paměťového obvodu) určuje délku příslušné části adresy - offsetu +- poloha bloku v adresním prostoru je dána vyšší částí adresy +- počet bloků je dán délkou vyšší části adresy + +**Kapacita paměti** +- kapacita = počet slov x délka slov +- někdy v počtu bitů (např. 64 Mb) +- častěji s ohledem na organizaci jako součin (počet slov x délka slova) + - 256k x 8 + +**Základní počty** +- **1 byte** = 8 bitů +- **1 kbit** (kb) = 2^10 bitů = 1024 bitů ++ **1 kByte** (kB) = 2^10 bytů = 1024 bytů ++ **1 MByte** (MB) = 2^20 bytů = 2^10 kB = 1 048 576 bytů ++ **1 GByte** (GB) = 2^30 bytů = 2^20 kB = 2^10 MB = 1 073 741 824 bytů ++ má-li paměť kapacitu + - 1 kB (= 2^10 bytů), je k jejímu adresování potřeba 10 adresních bitů + - 2 kB (= 2^11 bytů), je k jejímu adresování potřeba 11 adresních bitů ++ $2^m \times 2^n = 2^{m+n}$ + +**Příklad** - připojení Flash 512 k x 8 k H8S +- **úkol**: připojit Flash 512 kB k H8S tak, aby byla umístěna v adresním prostoru od adresy 000 000 + - paměť má kapacitu 512 kB (= 2^19 kB) + - A18 – A0 adresují uvnitř paměti + - A23 – A19 musíme zavést do dekodéru adres ++ **úkol**: připojit Flash 512 kB k H8S tak, aby byla umístěna v adresním prostoru na adrese B00 000 – B7F FFF + - paměť má kapacitu 512 kB + - A18 – A0 adresují uvnitř paměti + - A23 – A19 musíme zavést do dekodéru adres + - musí na nich být hodnota 10110 + +**Interní dekóder adres v H8S** +- podle kombinace na A23-A21 aktivuje některý z /CS0-/CS7 +- paměť má kapacitu 512 kB + - A18-A0 adresují vnitřní paměti + - A23-A21 jsou dekódovány přímo v H8S + - musí na nich být kombinace 101, tedy bude aktivní /CS5 + - A20-A19 musí mít hodnotu 10 - dekódujeme je v externím dekodéru + +**Externí dekodér** +- je-li /Enable = H, jsou všechny výstupy H (tj. neaktivní) +- je-li /Enable = L, je aktivní některý z výstupů /Y0, ... , /Y3 + - podle kombinace na X1 X0 +- výstupy /Y0, /Y1, /Y2 a /Y3 z dekodéru adres lze použít pro připojení 4 ks Flash 512 kB (celkem 2 MB Flash) + +**Návrh paměti** +- sestavit SRAM 256 kB z obvodů 128 kB (128 k x 8) +- paměť má být v adresním prostoru umístěna od adresy 500 000 +- úvahy + - k dosažení potřebné kapacity jsou zapotřebí dva paměťové obvody + - paměťový obvod o kapacitě 128 kB má 17 adresních vodičů (A16 – A0) + - vodič A17 vybírá jeden ze dvou použitých obvodů + - vodiče A23 – A18 zavedeme do dekodéru adres – musí na nich být kombinace 010100 + +**Neúplné dekódování adresy** +- některé adresní vývody procesoru jsou nezapojeny + - jejich hodnota může být libovolná +- každá paměťová buňka má několik adres (zrcadlení), které se liší v adresních bitech odpovídajících nezapojeným adresním vývodům \ No newline at end of file