P89C669是PHILIPS半导体一款51MX(存储器扩展)内核的微处理器,其指令执行速度2倍于标准的80C51器件,线性地址经扩展后可支持高达8 MB的程序存储器和8 MB的数据存储器,这是他相对于标准51内核的最大优点。目前的单片系统越来越复杂,扩展的外部设备也更多,如果能充分利用P89C669的丰富的线性地址资源,将能大大增强系统能力。在一个嵌入式系统开发中,笔者采用ALTERA公司的CPLD芯片EPM7032利用这款单片机的线性地址扩展了丰富的外部设备资源。
1 P89C669的存储器结构
1.1 存储结构
P89C669的存储器结构为哈佛结构,地址分配如表1所示。
从表1可见,P89C669对传统的51内核的3部分存储结构进行了相应的扩展,各个部分的片内存储空间也增加了,如内部数据空间有1 280 B在片内,外部数据空间有768 B在片内,有96 kB的片内程序存储空间等。
寻址指令除了传统的MOV,MOVX,MOVC外,EMOV指令与24位的通用指针寄存器EPTR可寻址16MB的全部空间,但是所占用的指令周期也较长。
扩展外部数据存储空问HDATA除了768 B在片内外,其余地址空间可以用来扩展外部设备(其实只要把片内的768 B通过指令将其屏蔽,也可以用来扩展外部设备)。
1.2 P2口的读写时序分析
寻址8 MB的数据存储空间,需要有23 b的地址寻址能力,P89C669将传统51内核的P2高位地址时分复用,从而得到23 b地址寻址能力,时序图如图1所示,即当使用23 b地址时,ALE为高时,地址位A16~A22输出到P2.0~P2.6;ALE为低时,地址位A8~A14输出到P2.0~P2.6。无论ALE为何值,位地址A15都从P2.7输出。
2 系统外部设备扩展需求
在某产品的控制系统中,扩展的外部设备比较丰富,利用P89c669的23 b地址寻址能力进行设备地址编码,所以需要对23 b地址的时序逻辑进行处理,处理单元交给一块ALTERA公司的CPLD(EPM7032)。
EPM7032具有32个逻辑单元,约600个门级单元,可用IO口36个,内置IEEE std.1149.1 JTAG,方便可编程下载。
在满足系统资源的前提下,选用EPM7032,将P89C669的P2口作为处理单元输入信号,经过CPLD的内部逻辑进行译码或数据锁存,以获得各个外部设备资源的选择信号及少量的控制信号,如图2所示。