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所示。
在本规划中,共需求得到设备挑选信号如SRAM芯片M68AF127B的片选CS_RAM,2个FLASH ROM芯片SST29SF040的片选CS_ROM0,CS_ROM1,模仿多路挑选器SN74LV4052的使能信号线CS_4052,别的还有一些操控信号线,这儿就不逐个介绍。
实际上,P2口引进CPLD,就P89C669的23 b地址线而言,用来地址译码和少数的操控信号等主要是运用最高的几位,在本规划中,因为SST29SF040用到地址线A0~A18,所以CPLD的地址译码处理只能是运用剩余的A19~A22,这将在下文的CPLD的译码单元能够看到。
A0~A7低地址选用74HC573进行锁存,A16~A18地址内容选用74HC574进行锁存,如图3所示。
M68AF127B,SST29SF040,74HCA052的功用衔接图如图4所示,74HC4052用于UART口的扩展,如图5所示。
3 EPM7032S的逻辑规划
CPLD的规划选用原理图的办法进行规划,简洁便利,如图6所示,选用74374模块锁存P2口的输入信号,ALE反向后得到_ALE作为74374的锁存时钟线输入。
对高位的地址线A19~A22进行地址译码,取得各芯片的片选线,如图7所示。
假如不是对SST29SF040进行读写,则高位地址线A16~A18依然能够运用,这儿将其作为74HC4052的3个输入操控线A,B,INH,即图8中的A_4052,B_4052,CS_4052。
4 KeilC51渠道的外部设备测验
编写设备驱动程序是在KeilC51的渠道上,因为运用了P89C669的23 b地址线,在C51的渠道上选用指针读写设备很便利,这儿给出读写SRAM芯片M68AF127B的C源代码比如,以供参阅。
以上3句为测验SRAM的测验代码,START_EX-TRAM为SRAM芯片的开始地址(可根据CPLD的内部规划进行相应的修正),第2,3句分别是写、读数据的宏。
5 结 语
运用P89C669的23 b的线性地址并选用CPLD扩展外部设备资源能够说是不错的一个办法,对外部设备的拜访将显得愈加简洁,当然,在本钱方面体系规划工程师也要加以考虑,并终究寻觅一个性价比最高的计划。