EZ-USB开发笔记(三)——内存安排

来源:互联网 发布:mac口红吧怎么看真假 编辑:程序博客网 时间:2024/06/05 02:51

一、概述

EZ-USB C51内核用内部RAM存储运行的程序和数据。而不是基于FLASH

EZ-USB的内存分为独立的三个部分:内部数据区域,外部数据区域和外部程序区域。注意,这里的“外部”是相对于CPU访问来说,而并不一定要做在芯片的外部。即内部存储区指增强的51核内部的存储区,外部指51核外部。

二、内部数据存储区

内部数据存储区为0x00~0xFF,共512*8bit。内部数据存储区被分为三个区域:lower 128upper 128SFR空间(特殊功能寄存器空间)。Lower 128Upper 128是通用RAMSFR空间安排的是EZ-USB的控制和状态寄存器。


2.1 Lower 128

Lower 128地址空间为0x00~0x7FCPU可以通过直接或间接寻址访问lower 128的空间。

两段特殊的地址空间可以通过其他方式访问:

0x00~0x1F包括4bank,每个bank包括R0R78个寄存器。通过PSW寄存器的register-select bitsRS1RS0)来选择当前正在使用的bank。当代码访问R0R7寄存器时,访问的是正在使用的bank中的寄存器组。

0x20~0x2F是比特访问空间。该空间的128bit16字节)是可以按bit访问的。访问时可以用0x20.00x2F.7的方式,也可以用该bit本身的地址0x00~0x7F

2.2 Upper 128

Upper 128地址空间为0x80~0xFFCPU只能通过间接寻址访问该空间。

由于EZ-USB的堆是在内部通过间接寻址访问的,所以最好将堆安排在Upper 128空间处。而Lower 128可以存放对访问更为频繁的数据。

2.3 特殊功能寄存器空间

特殊功能寄存器(Special Function Register——SFR)空间,被安排在0x80~0xFF地址处。该地址空间与Upper 128地址空间重合。EZ-USB通过不同的寻址方式来区分这两部分:SFR空间只能使用直接寻址,而Upper 128只能使用间接寻址。

SFR空间包括16个寄存器,每个寄存器都是bit可访问的。访问时可以用0x80.00xC8.7的方式,也可以用该bit本身的地址0x80~0xFF

三、外部程序存储区和外部数据存储区

3.1 标准8051处理器外存安排

标准51的外部存储区采用哈弗总线结构,外部数据和外部程序存储区是物理上完全独立分开的。两块区域地址重合,0x00000xFFFF,均为64KB。外部程序存储区是只读的,外部数据存储区是可读可写的。

CPU通过两套不同的总线进行访问。程序存储区的读使能是PSEN#,而数据存储区的读写使能是RD#WR#。当CPU取指和执行MOVC指令时,将拉低PSEN#,当访问数据存储区时将使能RD#WR#

3.2 EZ-USB处理器外存安排

EZ-USB对此进行了改进:芯片外的外部存储区域采用哈弗结构,而做在芯片上的外部存储区域采用冯诺依曼结构。这样,EZ-USB就可以从外部(USB HOUST或者I2C)加载程序到芯片上的外部存储区,并执行。

3.2.1 芯片上的外存

EZ-USB芯片上的外存安排如下:

地址大小(字节)名称读写位置0x0000~0x3FFF16KBMain RAM可写芯片上0x0000~0x3FFF   芯片上0xE000~0xE1FF512BScratch RAM可写芯片上0xE200~0xFFFF7.5KBSFR&endpoint可写芯片上


如果一个设计只是用芯片内部的外存,而不使用芯片外部的外存。那么,当访问main RAM时,RD#PSEN#将联合起来,作为main RAM的访问使能;当访问scratch RAM时,RD#PSEN#将独立分开。Main RAM作为数据和程序存储器,而scratch RAM仅作为数据存储区。

EZ-USB同样保留了7.5KB的数据存储区作为USB的控制和状态寄存器以及endpoint buffers。注意,这里的7.5KB空间为芯片内部的数据存储区,当使用芯片外部的存储器时,在芯片外部的程序存储区的0xE2000~0xFFFF地址仍然可用。

3.2.2 芯片外的外存

对于56-pin 100-pin的芯片,不提供片外存储器接口。因此芯片内部的main RAM将作为程序和数据存储区。PSEN#RD#信号将做逻辑或后,形成main RAM的访问使能。程序员必须保证程序的大小不超过main RAM的大小。

对于128-pin的芯片,可以挂载片外存储器。

片外存储器的安排由芯片的EA管脚决定。注意,这里的EA管脚的状态,是指整个阶段的状态,而不仅仅是芯片复位时的状态。

·EA = 0时:

Main RAM被当做程序和数据存储区,这与56-pin100-pin相同。

当访问0x000~0x3FFF区域时,PSEN#RD#在芯片内部相或,作为使能信号,而在芯片外的这两个管脚无效,这样,EZ-USB访问的是芯片内部的存储区。

当访问外部存储区时,由PSEN#管脚来选择访问的是数据存储区还是程序存储区。


EA = 1时:

所有的片上存储区被安排做数据存储区,片外存储区被安排做程序存储区。芯片复位上电后,如果I2C上没有有效加载程序,则EZ-USB从片外程序存储器的0x0000地址处开始执行。


四、扩展总线接口

128-pin的芯片拥有扩展总线接口,用来访问片外存储器。

扩展总线接口包括非复用的16位地址总线和数据总线,以及引出的PSEN#RD#WR#信号控制访问时序。此外,EZ-USB还将这三个信号进行逻辑组合后,形成附加的CS#OE#信号,已进行辅助控制。

PSEN#为程序存储区使能信号,当CPU访问的地址是程序存储区时,该信号将拉低。RD#为读使能信号。WR#为写使能信号。CS# = PSEN# or RD# or WR#OE# = PSEN# or RD#

当系统设计片外存储器作为程序和数据存储器时,可用OE#信号作为读使能。

五、片上0xE000~0xFFFF地址

EZ-USB同样保留了0xE000~0xE1FF512字节的数据存储区作为Scratch RAM,同时保留了0xE000~0xFFFF7.5KB的数据存储区作为USB的控制和状态寄存器以及endpoint buffers。如下图所示: