CME-M5 外部存儲器接口(EMIF)總線使用指南
2. 基于Data Banking的總線地址擴(kuò)展規(guī)則:
本文引用地址:http://www.ex-cimer.com/article/145142.htmCME的8051處理器為馮諾依曼結(jié)構(gòu),即程序總線和數(shù)據(jù)總線統(tǒng)一編址。EMIF地址總線的地址位為23位,對應(yīng)8M Bytes的地址空間。8051是通過Data Banking的方式實(shí)現(xiàn)地址總線的擴(kuò)展。8051每個bank的地址空間為32K Bytes,共有256個bank。地址空間的分布如下圖所示,這里僅對外部數(shù)據(jù)存儲空間做介紹:
與外部數(shù)據(jù)存儲空間有關(guān)的寄存器為:
D_PAGESEL(默認(rèn)初始值為0x01,即指向Bank 1地址空間)
因?yàn)镈_PAGESEL為8位寄存器,所以剛好對應(yīng)256個bank。D_PAGESEL的值對應(yīng)地址總線上的memaddr[22:15]的值,即地址總線的高8位地址總線。注意:D_PAGESEL的值不可為0,因?yàn)楫?dāng)為0時,將會與Common Bank的地址空間重疊(0-7FFFF)。
3. 邏輯地址空間與物理地址空間的對應(yīng)關(guān)系
邏輯地址空間(Logical Address): CME 8051每個bank的低16位邏輯地址的空間范圍為0x8000-0xFFFF,該值和C編譯器里面的地址定義相同。
物理地址(Physical Address):也叫實(shí)際地址或絕對地址,是出現(xiàn)在CPU外部地址總線上的尋址物理內(nèi)存的地址信號,是地址變換的最終結(jié)果。
邏輯地址空間:
- memaddr[22:15]:該物理地址段的值由D_PAGESEL寄存器的值決定,范圍為1-255,默認(rèn)初始化值為0x01;
- memaddr[14:0]:該物理地址段由C編譯器里面的變量分配的地址決定,注意:需拿C編譯器里面定義的地址(0x8000-0xFFFF)減去偏移地址0x8000,即0x8000對應(yīng)的物理地址實(shí)際是0x0000,0xFFFF對應(yīng)的物理地址為0x7FFF。
Keil C51編譯器支持的外部變量定義方法:
代碼片段1:
unsigned char xdata PORTA _at_ 0x9000;//對應(yīng)低16位物理地址:0x1000
unsigned char xdata DDRA _at_ 0x9001;//對應(yīng)低16位物理地址:0x1001
unsigned char xdata PORTB _at_ 0xa000;//對應(yīng)低16位物理地址:0x2000
unsigned char xdata DDRB _at_ 0xa001;//對應(yīng)低16位物理地址:0x2001
或者如下定義:
代碼片段2:
#define PORTA XBYTE[0x9000]
評論