引言
随着通信技术的迅速发展,各种新业务层出不穷,电信运营商对通信设备的功能需求日益增多,因此,通信设备经常需要升级软件版本,而随着功能的日趋完善,软件版本所需的存储空间越来越大。电信级的通信设备对实时性的要求很高,往往需要较大的内存来存储实时数据,因此,通信设备中往往配置尽可能多的内存。另一方面,激烈的竞争促使各通信设备制造商尽可能采用物美价廉的器件以降低设备成本。一些廉价而高性能的处理器获得了广泛的应用,然而这一类处理器的寻址空间往往是有限的。AM186EM处理器由于其低成本、高性能,在基于x86架构的嵌入式系统及通信设备中获得了广泛应用。
1AM186EM处理器及通用设计
AM186EM处理器只有20位地址的寻址空间,即存储器的寻址范围只有1M空间,包括内存RAM、程序存储器FLASH以及外围存储器(如双口RAM等)映射到存储器的寻址范围。
图1是AM186EM处理器的寄存器设置图,可以分别设置高端存储器片选(Upper Memory Chip Select,UMCS)寄存器、低端存储器片选(Lower Memory Chip Select,LMCS)寄存器、中端存储器片选(Midrange Memory Chip Select,MMCS)寄存器以及辅助(PCS and MCS Auxiliary,MPCS)寄存器这4个寄存器的地址范围,而且UMCS、LMCS和MMCS寄存器可以针对不同设备的读写速率分别设置不同的等待状态。
图1 AM186EM处理器的寄存器设置图
UMCS寄存器中LB2~LB0指定了UCS选通的高端存储器的容量,容量大小可以为64K、128K、256K或512K;LMCS寄存器中UB2~UB0指定了LCS选通的低端存储器的容量,容量大小可以为64K、128K、256K或512K;MMCS寄存器中的BA19~BA13指定了MCS选通的中端存储器的起始地址;MPCS寄存器中的M6~M0指定了MCS选通的中端存储器的容量。
另外,UMCS、LMCS和MMCS寄存器中的R2分别指定了UCS、LCS和MCS选通的存储器是否引入外部Ready信号延时;UMCS、LMCS和MMCS寄存器中的R1和R0分别指定了UCS、LCS和MCS选通的存储器引入的等待状态。
AM186EM处理器提供了3个片选信号:高端存储器选通信号UCS用于FLASH片选;低端存储器选通信号LCS用于RAM片选;中端存储器选通信号MCS用于外围存储器的片选。
图2是采用AM186EM处理器的通信设备的设计框图。硬件上分别将AM186EM处理器的UCS、LCS和MCS分别作为FLASH、RAM和外围存储器的片选信号。软件上分别设置UMCS寄存器确定UCS访问的FLASH的容量和等待状态,无须外部Ready信号;设置LMCS寄存器确定LCS访问的RAM容量和等待状态,无需外部Ready信号;设置MMCS和MPCS寄存器确定MCS访问的外围存储器的起始地址、容量和等待状态,无须外部Ready信号。
图2 采用AM186EM处理器的通信设备的设计框图
这种设计的缺点是:假设通信设备对RAM的需求很大,需要设置LMCS寄存器的选通范围为处理器允许设置的最大RAM容量,即512K内存。因此,FLASH和外围存储器共用另外的512K的地址范围。但是设置UMCS寄存器时只能选择64K、128K、256K或512K的地址范围,而外围存储器的地址范围一般用不到256K的地址范围(例如只使用了64K)。这样,系统的FLASH容量往往受限于256K的空间,因此系统若要增加新的业务处理程序,却则会受到很大限制,而另一方面,AM186EM处理器的1M寻址空间中有些地址空间未使用。
同样,对于另一类通信设备,如果系统最初的地址空间分配已经设置UMCS寄存器的选通范围为处理器允许设置的最大FLASH容量(即512K FLASH),则内存和外围存储器共用另外的512K的地址范围。但是设置LMCS寄存器时只能选择64K、128K、256K或512K的地址范围,而外围存储器的地址范围一般用不到256K的地址范围(例如只使用了64K)。这样,系统的RAM容量往往受限于256K的空间,因此系统若因新的业务处理程序需要更大的内存,则会受到很大限制,而另一方面AM186EM处理器的1M寻址空间中有些地址空间也未使用。
2基于AM186EM的地址空间优化应用
针对AM186EM处理器,提供了一种地址空间优化的应用,可以扩展FLASH或者内存的可用空间,最大化利用处理器提供的地址空间范围。以采用了最大RAM容量(512K)的通信设备为例,对扩展该设备FLASH容量的情况进行详细说明。对于采用了最大FLASH容量(512K)的通信设备,如何扩展该设备的RAM容量,其实现原理是类似的。
图3 基于AM186EM处理器的采用地址空间优化的通信设备的设计框图
图3是基于AM186EM处理器的采用地址空间优化的通信设备的设计框图。对于采用最大RAM容量的通信设备,设置对应选通RAM地址范围的低端寄存器,使处理器能够选通允许设置的最大RAM容量(512K)。接下来,使FLASH和外围存储器(如双口RAM等)共享处理器高端寄存器允许设置的最大容量(512K),这样,除去外围存储器所需的容量外,剩余的空间可以全部作为FLASH的寻址空间。
硬件上,除了利用高端地址选择信号UCS对FLASH和外围存储器进行选通外,还要利用地址译码器来区分FLASH和外围存储器的片选:用地址译码器产生外围存储器的地址选通范围,然后将AM186EM处理器的UCS和外围存储器的地址范围,经过与门相与后作为外围存储器的片选信号;将UCS和除去外围存储器的地址范围,经过与门相与后作为FLASH的片选信号;将LCS作为RAM的片选信号。这样,FLASH和外围存储器实现了共用UCS选通的地址范围。
FLASH和外围存储器的访问速率不同,为了避免处理器访问FLASH或内存时与访问外围存储器时采用同样的等待周期(以访问速率低的为标准)从而影响到系统的性能,不能通过设置UMCS寄存器引入统一的等待状态。可以采用在可编程器件CPLD中产生两个不同的Ready信号,针对FLASH和外围存储器的访问引入不同的延时,两个Ready信号通过一个二选一的算法(根据是FLASH的地址范围,还是外围存储器的地址范围)输入到AM186EM处理器的异步Ready信号输入端(ARDY)。
软件上设置UMCS寄存器确定UCS访问的容量(可达512K),不需要等待状态,引入外部Ready信号。由于外部输入的Ready信号不同,因而访问FLASH或内存的速度和访问外围存储器的速度也不同。
图4是输入到AM186EM处理器的ARDY输入端的Ready信号的产生时序图。对于AM186EM处理器而言,一般情况下,一个指令周期等于4个时钟周期。引入外部Ready信号后,处理器会从指令的第三个时钟周期开始采样Ready信号的状态,若Ready信号有效(高电平),则在下一个时钟周期操作相应的设备;若Ready信号无效(低电平),则不执行任何操作,在下一个时钟周期再次采样Ready信号的状态。因此,Ready信号产生的原理是针对不同的设备通过低电平产生合适的延时后,再通过高电平使信号有效,这样,处理器在下一个时钟周期就可以操作该设备了。
图4 ARDY输入端的Ready信号的产生时序图
结语
以AM186EM处理器为例,提出一种地址空间优化应用方法,共用处理器的UCS选通信。这样实现了FLASH或RAM和外围存储器可以共用尽可能大的地址空间,因而克服了传统的FLASH或RAM与外围存储器使用不同的地址选择信号所带来的、FLASH或RAM地址空间扩展受限而外围存储器地址空间有剩余的弊端。对于其他寻址空间有限的处理器,其实现原理是类似的。