Práce s vnější pamětí procesoru Hitachi H8S/2633F


Organizace adresního prostoru

Procesor H8S/2633F má rozsah adresního prostoru 16 MB. K adresování pamětí slouží 24 adresních vodičů. Část adresního prostoru je obsazena vnitřní pamětí Flash o kapacitě 128 kB, vnitřní 16 kB pamětí RAM a sadou SFR registrů. Zbývající část adresního prostoru může být obsazena vnějšími paměťmi, případně IO obvody mapovanými v paměťovém adresním prostoru.

Celý adresní prostor je rozdělen na 8 stejných bloků o velikosti 2 MB. Pro každý blok lze nezávisle nastavit šířku datové sběrnice na 8 nebo 16 bitů, délku zápisových a čtecích cyklů 2 nebo 3 takty hodin, počet vkládaných čekacích taktů (0 - 3 takty Tw) a povolit vkládání dalších čekacích taktů v závislosti na signálu /WAIT. Pro bloky č. 2, 3, 4 a 5 lze dále uzpůsobit časování přístupových cyklů pro dynamickou paměť, včetně automatického zotavování pamětí.

Paměťové bloky a jejich využití v EVB2633F


Signály /CSx

Tři nejvyšší adresní vodiče (A23, A22, A21) jsou dekódovány přímo v mikrokontroléru a výstup dekodéru je vyveden jako signály /CS0 - /CS7, které jsou aktivovány v případě generování čtecího nebo zápisového cyklu paměti s adresou odpovídající příslušnému paměťovému bloku. Z důvodů omezeného počtu vývodů pouzdra procesoru H8S/2633F jsou však vývody /CS0 - /CS7 využívány současně jako vývody portu PG resp. P7, případně mohou mít některou z dalších funkcí (viz podrobný manuál k procesorům H8S/2633F). Pro přepnutí daného vývodu procesoru do funkce /CSx je proto zapotřebí zapsat do různých SFR registrů příslušné hodnoty. Potřebné nastavení je shrnuto v následující tabulce:

 Rozsah adres 

 Aktivovaný vývod /CSx 

Potřebné nastavení SFR

 0x000000 - 0x1FFFFF /CS0  PGDDR: PG4DDR = 1
 0x200000 - 0x3FFFFF /CS1  PGDDR: PG3DDR = 1
 0x400000 - 0x5FFFFF /CS2  PGDDR: PG2DDR = 1
 0x600000 - 0x7FFFFF /CS3  PGDDR: PG1DDR = 1, BCRL: OES = 0
 0x800000 - 0x9FFFFF /CS4  P7DDR: P70DDR = 1
 0xA00000 - 0xBFFFFF /CS5  P7DDR: P71DDR = 1
 0xC00000 - 0xDFFFFF  /CS6  P7DDR: P72DDR = 1, TCSR0: OS3 - OS0 = 0 
 0xE00000 - 0xFFFFFF /CS7  P7DDR: P73DDR = 1, TCSR1: OS3 - OS0 = 0

Zápis PGDDR: PG4DDR = 1 v tabulce znamená, že bit PG4DDR v SFR registru PGDDR musí být nastaven na hodnotu 1 atd.

Ve vývojovém modulu EVB2633F jsou některé signály /CSx využívány v dekodérech adres připojených vnějších pamětí a dalších obvodů. Využití je shrnuto v následující tabulce:

 Vývod /CSx 

Využití

/CS0  -- (blok č. 0 je obsazen vnitřní pamětí Flash mikrokontroléru) 
/CS1  Vnější paměť 256 kB na základní desce EVB2633F
/CS2  Dekodér adres desky Mem_Com_2
/CS3  Obvod CPLD XC95108 na desce Disp_Kbd_1
/CS4  --
/CS5  --
/CS6  --
/CS7  -- (blok č. 7 je částečně obsazen vnitřní RAM
     a SFR registry mikrokontroléru) 

Jak vyplývá z tabulky, je signál /CS1 využíván v dekodéru adres vnější paměti RAM na základní desce EVB2633F. Povolení jeho funkce je standardně prováděno monitorem ve vnitřní Flash mikrokontroléru zápisem 1 do bitu PG3DDR. Tuto skutečnost je nutné respektovat v případě, že potřebujeme povolit funkci /CS2 nebo /CS3 (pro desku Mem_Com_2 nebo Disp_Kbd_1). Registr PGDDR je totiž typu WO tj. pouze pro zápis a není proto možné zjistit jeho okamžitou hodnotu. Při zápisu nové hodnoty (např. pro povolení funkce /CS2 nebo /CS3) nelze postupovat tak, že je nejprve přečtena původní hodnota registru, potom je nastaven příslušný bit a nová hodnota zapsána do registru. Nelze tedy např. použít příkaz

PGDDR = PGDDR | 0x04;

Nastavení celého registru musí být provedeno "natvrdo" a přitom musí být nastaven i bit PG3DDR. Povolení funkce /CS2 může být provedeno příkazem

PGDDR = 0x0C;

a podobně povolení funkce /CS3 příkazem

PGDDR = 0x0A;        .

 


Poznámky

k nastavení některých dalších SFR registrů pro připojení desek Mem_Com_2 a Disp_Kbd_1:

Počet taktů v paměťových cyklech

Pro připojení desky Mem_Com_2 i Disp_Kbd_1 je vhodné používat 3taktové čtecí a zápisové cykly. Příslušné nastavení je možné provést nastavením bitů ASTCR: AST2 resp. ASTCR: AST3 na hodnotu 1. Toto nastavení je provedeno standardně po RESETU mikrokontroléru a obvykle není nutné jej v aplikačním programu opakovat.

Počet programově vkládaných čekacích taktů

Bus Controller lze zápisem do registru WCRH a WCRL nastavit na programové vkládání 0 - 3 čekacích taktů. Po RESETU jsou oba registry nastaveny na vkládání 3 čekacích taktů. Toto nastavení vyhovuje i pro připojení desek Mem_Com_2 a Disp_Kbd_1.

Vkládání čekacích taktů signálem /WAIT

Kromě programově vkládaných čekacích taktů lze povolit i vkládání čekacích taktů na základě aktivity signálu /WAIT. Standardně je toto vkládání čekacích taktů zakázáno. Pro práci s deskou Disp_Kbd_1 v konfiguraci pro připojení alfanumerického LCD displeje (konfigurace DK_2) musí být vkládání čekacích taktů signálem /WAIT povoleno zápisem 1 do bitu BCRL: WAITE.

Šířka adresní sběrnice

Mikrokontrolér H8S/2633F má vyvedenou 24 bitovou adresní sběrnici. Podobně jako další vývody mohou i adresní vývody mít řadu dalších funkcí. Pokud není všech 24 adresních vývodů využito pro dekódování adresy, lze nepotřebné adresní vodiče uvolnit pro využití v jiné funkci. Ve vývojovém modulu EVB2633F jsou využívány jen adresní vodiče A0 - A19. Vodiče A20 - A23 lze proto využít v jiné funkci, např. jako port P1.0 - P1.3 . Pro odpojení vodičů A20 - A23 od adresní sběrnice je nutné zapsat do bitů PFCR: AE3 - PFCR: AE0 hodnotu 1100.


Adresy potřebných SFR registrů

 SFR registr 

 Adresa 

 PGDDR  0xFFFE3F      
 P7DDR  0xFFFE36
 WCRL  0xFFFED3
 ASTCR  0xFFFED1
 BCRL  0xFFFED5
 PFCR  0xFFFDEB
 TCSR0  0xFFFF6A
 TCSR1  0xFFFF69

 


K dispozici je následující:

Rozšiřující desky pro EVB2633F:


Poslední změna stránky byla provedena 23.03.2005