CME-M5 外部存儲器接口(EMIF)總線(xiàn)使用指南
2. 基于Data Banking的總線(xiàn)地址擴展規則:
本文引用地址:http://dyxdggzs.com/article/145142.htmCME的8051處理器為馮諾依曼結構,即程序總線(xiàn)和數據總線(xiàn)統一編址。EMIF地址總線(xiàn)的地址位為23位,對應8M Bytes的地址空間。8051是通過(guò)Data Banking的方式實(shí)現地址總線(xiàn)的擴展。8051每個(gè)bank的地址空間為32K Bytes,共有256個(gè)bank。地址空間的分布如下圖所示,這里僅對外部數據存儲空間做介紹:

與外部數據存儲空間有關(guān)的寄存器為:
D_PAGESEL(默認初始值為0x01,即指向Bank 1地址空間)
因為D_PAGESEL為8位寄存器,所以剛好對應256個(gè)bank。D_PAGESEL的值對應地址總線(xiàn)上的memaddr[22:15]的值,即地址總線(xiàn)的高8位地址總線(xiàn)。注意:D_PAGESEL的值不可為0,因為當為0時(shí),將會(huì )與Common Bank的地址空間重疊(0-7FFFF)。
3. 邏輯地址空間與物理地址空間的對應關(guān)系
邏輯地址空間(Logical Address): CME 8051每個(gè)bank的低16位邏輯地址的空間范圍為0x8000-0xFFFF,該值和C編譯器里面的地址定義相同。
物理地址(Physical Address):也叫實(shí)際地址或絕對地址,是出現在CPU外部地址總線(xiàn)上的尋址物理內存的地址信號,是地址變換的最終結果。
邏輯地址空間:

- memaddr[22:15]:該物理地址段的值由D_PAGESEL寄存器的值決定,范圍為1-255,默認初始化值為0x01;
- memaddr[14:0]:該物理地址段由C編譯器里面的變量分配的地址決定,注意:需拿C編譯器里面定義的地址(0x8000-0xFFFF)減去偏移地址0x8000,即0x8000對應的物理地址實(shí)際是0x0000,0xFFFF對應的物理地址為0x7FFF。
Keil C51編譯器支持的外部變量定義方法:
代碼片段1:
unsigned char xdata PORTA _at_ 0x9000;//對應低16位物理地址:0x1000
unsigned char xdata DDRA _at_ 0x9001;//對應低16位物理地址:0x1001
unsigned char xdata PORTB _at_ 0xa000;//對應低16位物理地址:0x2000
unsigned char xdata DDRB _at_ 0xa001;//對應低16位物理地址:0x2001
或者如下定義:
代碼片段2:
#define PORTA XBYTE[0x9000]
評論